diff --git a/build.gradle b/build.gradle index 7fcff79..d04899d 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { classpath 'net.minecraftforge.gradle:ForgeGradle:3.+' } } - + apply plugin: 'net.minecraftforge.gradle' // Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. apply plugin: 'eclipse' @@ -45,18 +45,18 @@ dependencies { jar { manifest { attributes([ - "Specification-Title": "UntranslatedItems-AlsoFluids", - "Specification-Vendor": "Katatsumuri.pan", - "Specification-Version": "1", // We are version 1 of ourselves - "Implementation-Title": project.name, - "Implementation-Version": "${version}", - "Implementation-Vendor" :"Katatsumuri.pan", - "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") + "Specification-Title" : "UntranslatedItems-AlsoFluids", + "Specification-Vendor" : "Katatsumuri.pan", + "Specification-Version" : "1", // We are version 1 of ourselves + "Implementation-Title" : project.name, + "Implementation-Version" : "${version}", + "Implementation-Vendor" : "Katatsumuri.pan", + "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") ]) } } -jar.finalizedBy('reobfJar') +jar.finalizedBy('reobfJar') // However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing //publish.dependsOn('reobfJar') @@ -73,25 +73,31 @@ publishing { } } //*****************Start Basic***************** -//mcmod.infoのversionを解決 -version = loadProperties("/src/main/resources/version.properties").getProperty('untranslateditems_alsofluids.version') +//mcmod.info等のversionを解決 +def majorVersion = loadProperties("/version.properties").getProperty('majorVersion') +def minorVersion = loadProperties("/version.properties").getProperty('minorVersion') +def patchVersion = loadProperties("/version.properties").getProperty('patchVersion') +version = "${majorVersion}.${minorVersion}.${patchVersion}" processResources { // this will ensure that this task is redone when the versions change. - //inputs.property "version", project.version //comment out to always update + inputs.property "version", project.version //comment out to always update - // replace stuff in mcmod.info, nothing else + // resourcesの中のmcmod.infoとversion.propertiesが対象(処理後のファイルがjarに格納される) from(sourceSets.main.resources.srcDirs) { include 'mcmod.info' - + include 'version.properties' + // replace version and mcversion - expand 'version':project.version, 'mcversion':"1.12.2" + expand 'version': project.version, 'mcversion': "1.12.2" } - - // copy everything else except the mcmod.info + + // mcmod.info以外が対象(特に編集せずにそのままコピー) from(sourceSets.main.resources.srcDirs) { exclude 'mcmod.info' + exclude 'version.properties' } } + def loadProperties(filename) { def props = new Properties() file(filename).withInputStream { @@ -99,14 +105,31 @@ def loadProperties(filename) { } return props } +//libs内にjarを入れればそれも使ってコンパイル +//compileは非推奨に、implementationを使う +dependencies { + implementation fileTree(dir: 'libs', include: '*.jar') + //implementation fg.deobf("curse.maven:ModNameInCurseForgeModUrl-ProjectId:FileIdInUrl") +} +//template内のソースコードを編集したうえでコピー +//バージョン情報の埋め込み等に +task generateJava(type: Copy) { + def templateContext = [version: project.version, majorVersion: majorVersion, minorVersion: minorVersion, patchVersion: patchVersion] + inputs.properties templateContext // for gradle up-to-date check + from 'src/template/java' + into "$buildDir/generated/java" + expand templateContext +} +sourceSets.main.java.srcDir "$buildDir/generated/java" // add the extra source dir +compileJava.dependsOn generateJava // wire the generateJava task into the DAG //*****************End Basic***************** //*****************Start Basic Intellij***************** //Fix resources dir not loaded with Intellij debug. apply plugin: 'idea' sourceSets { main { - output.resourcesDir = java.outputDir - } + output.resourcesDir = java.outputDir + } } idea.module.outputDir file("out/production/classes") //*****************End Basic Intellij***************** @@ -114,7 +137,7 @@ idea.module.outputDir file("out/production/classes") jar { manifest { attributes FMLCorePlugin: 'kpan.uti_alsofluids.asm.core.AsmPlugin' - attributes FMLCorePluginContainsFMLMod : 'true' + attributes FMLCorePluginContainsFMLMod: 'true' } } //*****************End Coremod***************** diff --git a/src/main/java/kpan/uti_alsofluids/ModMain.java b/src/main/java/kpan/uti_alsofluids/ModMain.java index eaab2be..6ddad75 100644 --- a/src/main/java/kpan/uti_alsofluids/ModMain.java +++ b/src/main/java/kpan/uti_alsofluids/ModMain.java @@ -20,10 +20,10 @@ //.langをちゃんと使うのを推奨 @Mod(modid = ModReference.MOD_ID, name = ModReference.MOD_NAME - , guiFactory = ModReference.SRC_DIR + ".config.ModGuiFactory" - , acceptableRemoteVersions = "1.3" + , dependencies = "" + , acceptableRemoteVersions = BuildInfo.MAJOR_VERSION + "." + BuildInfo.MINOR_VERSION // -//,serverSideOnly = true, acceptableRemoteVersions = "*"//この2つによりサーバーのみのModにできる(デバッグ時は消す必要あり) +//, serverSideOnly = true //サーバーのみにする場合に必要(acceptableRemoteVersionsを*に変えないとダメ)、デバッグ時はオフにする ) public class ModMain { diff --git a/src/main/java/kpan/uti_alsofluids/asm/core/ASMTransformer.java b/src/main/java/kpan/uti_alsofluids/asm/core/ASMTransformer.java index e66bcfe..290d672 100644 --- a/src/main/java/kpan/uti_alsofluids/asm/core/ASMTransformer.java +++ b/src/main/java/kpan/uti_alsofluids/asm/core/ASMTransformer.java @@ -6,6 +6,7 @@ import kpan.uti_alsofluids.asm.tf.integration.ae2.TF_GuiFluidSlot; import kpan.uti_alsofluids.asm.tf.integration.ae2.TF_GuiFluidTank; import kpan.uti_alsofluids.asm.tf.integration.ae2.TF_GuiFluidTerminal; +import kpan.uti_alsofluids.asm.tf.integration.gregtech.TF_MaterialFluid; import kpan.uti_alsofluids.asm.tf.integration.gregtech.TF_MetaTileEntityFluidHatch; import kpan.uti_alsofluids.asm.tf.integration.gregtech.TF_MetaTileEntityQuantumTank; import kpan.uti_alsofluids.asm.tf.integration.gregtech.TF_PhantomFluidWidget; @@ -58,6 +59,7 @@ public byte[] transform(String name, String transformedName, byte[] bytes) { cv = TF_GuiFluidTank.appendVisitor(cv, transformedName); cv = TF_GuiFluidTerminal.appendVisitor(cv, transformedName); cv = TF_LanguageMapUs.appendVisitor(cv, transformedName); + cv = TF_MaterialFluid.appendVisitor(cv, transformedName); cv = TF_MetaTileEntityQuantumTank.appendVisitor(cv, transformedName); cv = TF_MetaTileEntityFluidHatch.appendVisitor(cv, transformedName); cv = TF_TankWidget.appendVisitor(cv, transformedName); diff --git a/src/main/java/kpan/uti_alsofluids/asm/hook/HK_Fluid.java b/src/main/java/kpan/uti_alsofluids/asm/hook/HK_Fluid.java index e265f6c..b8bc678 100644 --- a/src/main/java/kpan/uti_alsofluids/asm/hook/HK_Fluid.java +++ b/src/main/java/kpan/uti_alsofluids/asm/hook/HK_Fluid.java @@ -6,10 +6,8 @@ import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; -@SuppressWarnings("deprecation") public class HK_Fluid { - public static boolean setThreadAlready = false; public static String getLocalizedName(Fluid fluid, FluidStack stack) { if (ModMain.proxy.hasClientSide()) { @@ -31,8 +29,6 @@ public static String getLocalizedName(Fluid fluid) { String s = fluid.getUnlocalizedName(); if (s == null) return ""; - if (setThreadAlready) - return I18n.translateToLocal(s); synchronized (langmapus.getDisplayNameLock) { try { if (langmapus.getDisplayNameThread != null) { diff --git a/src/main/java/kpan/uti_alsofluids/asm/hook/HK_FluidRegistry_LAVA.java b/src/main/java/kpan/uti_alsofluids/asm/hook/HK_FluidRegistry_LAVA.java index 36e7601..da9c2a0 100644 --- a/src/main/java/kpan/uti_alsofluids/asm/hook/HK_FluidRegistry_LAVA.java +++ b/src/main/java/kpan/uti_alsofluids/asm/hook/HK_FluidRegistry_LAVA.java @@ -6,13 +6,10 @@ import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; -@SuppressWarnings("deprecation") public class HK_FluidRegistry_LAVA { public static String getLocalizedName(Fluid fluid, FluidStack stack) { String s = "tile.lava.name"; - if (HK_Fluid.setThreadAlready) - return I18n.translateToLocal(s); if (ModMain.proxy.hasClientSide()) return ClientOnly.getLocalizedName(s); else diff --git a/src/main/java/kpan/uti_alsofluids/asm/hook/HK_FluidRegistry_WATER.java b/src/main/java/kpan/uti_alsofluids/asm/hook/HK_FluidRegistry_WATER.java index 68eefcb..c6d34cc 100644 --- a/src/main/java/kpan/uti_alsofluids/asm/hook/HK_FluidRegistry_WATER.java +++ b/src/main/java/kpan/uti_alsofluids/asm/hook/HK_FluidRegistry_WATER.java @@ -6,13 +6,10 @@ import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; -@SuppressWarnings("deprecation") public class HK_FluidRegistry_WATER { public static String getLocalizedName(Fluid fluid, FluidStack stack) { String s = "tile.water.name"; - if (HK_Fluid.setThreadAlready) - return I18n.translateToLocal(s); if (ModMain.proxy.hasClientSide()) return ClientOnly.getLocalizedName(s); else diff --git a/src/main/java/kpan/uti_alsofluids/asm/hook/HK_FluidStack.java b/src/main/java/kpan/uti_alsofluids/asm/hook/HK_FluidStack.java index f2c0c74..3bb6c64 100644 --- a/src/main/java/kpan/uti_alsofluids/asm/hook/HK_FluidStack.java +++ b/src/main/java/kpan/uti_alsofluids/asm/hook/HK_FluidStack.java @@ -26,7 +26,6 @@ public static String getLocalizedName(FluidStack stack) { recursion++; } else { langmapus.getDisplayNameThread = Thread.currentThread(); - HK_Fluid.setThreadAlready = true; } return stack.getFluid().getLocalizedName(stack); } catch (Exception e) { @@ -35,7 +34,6 @@ public static String getLocalizedName(FluidStack stack) { } finally { if (recursion == 0) { langmapus.getDisplayNameThread = null; - HK_Fluid.setThreadAlready = false; } else { recursion--; } diff --git a/src/main/java/kpan/uti_alsofluids/asm/hook/LocalizedName.java b/src/main/java/kpan/uti_alsofluids/asm/hook/LocalizedName.java index 4e1dbf3..be77689 100644 --- a/src/main/java/kpan/uti_alsofluids/asm/hook/LocalizedName.java +++ b/src/main/java/kpan/uti_alsofluids/asm/hook/LocalizedName.java @@ -3,7 +3,7 @@ import bre.nti.LanguageMapUs; import kpan.uti_alsofluids.config.ConfigHolder; import net.minecraft.client.Minecraft; -import net.minecraft.util.text.translation.I18n; +import net.minecraft.client.resources.I18n; import net.minecraftforge.fluids.FluidStack; public class LocalizedName { @@ -35,13 +35,14 @@ public static String getLocalizedName(FluidStack fluidStack) { } public static String getUsLocalizedName(String unlocalizedName) { - return I18n.translateToLocal(unlocalizedName); + return I18n.format(unlocalizedName); } public static String getLocalizedName(String unlocalizedName) { synchronized (langmapus.localizedLock) { try { - return I18n.translateToLocal(unlocalizedName); + langmapus.localizedThread = Thread.currentThread(); + return I18n.format(unlocalizedName); } catch (Exception e) { e.printStackTrace(); return ""; diff --git a/src/main/java/kpan/uti_alsofluids/asm/hook/integration/gregtech/HK_MaterialFluid.java b/src/main/java/kpan/uti_alsofluids/asm/hook/integration/gregtech/HK_MaterialFluid.java new file mode 100644 index 0000000..faff6c4 --- /dev/null +++ b/src/main/java/kpan/uti_alsofluids/asm/hook/integration/gregtech/HK_MaterialFluid.java @@ -0,0 +1,65 @@ +package kpan.uti_alsofluids.asm.hook.integration.gregtech; + +import bre.nti.LanguageMapUs; +import gregtech.api.fluids.MaterialFluid; +import kpan.uti_alsofluids.ModMain; +import net.minecraft.client.resources.I18n; +import net.minecraftforge.fluids.FluidStack; + +public class HK_MaterialFluid { + + public static String getLocalizedName(MaterialFluid self, FluidStack stack) { + if (ModMain.proxy.hasClientSide()) { + return ClientOnly.getLocalizedName(self); + } else { + return getLocalizedName(self); + } + } + + private static class ClientOnly { + + private static LanguageMapUs langmapus = LanguageMapUs.getInstanceUs(); + private static int recursion = 0; + + public static String getLocalizedName(MaterialFluid materialFluid) { + String s = materialFluid.getUnlocalizedName(); + if (s == null) + return ""; + synchronized (langmapus.getDisplayNameLock) { + try { + if (langmapus.getDisplayNameThread != null) { + recursion++; + } else { + langmapus.getDisplayNameThread = Thread.currentThread(); + } + return HK_MaterialFluid.getLocalizedName(materialFluid); + } catch (Exception e) { + e.printStackTrace(); + return s; + } finally { + if (recursion == 0) { + langmapus.getDisplayNameThread = null; + } else { + recursion--; + } + } + } + } + } + + private static String getLocalizedName(MaterialFluid materialFluid) { + String localizedName; + String customTranslationKey = "fluid." + materialFluid.getMaterial().getUnlocalizedName(); + + if (I18n.hasKey(customTranslationKey)) { + localizedName = I18n.format(customTranslationKey); + } else { + localizedName = I18n.format(materialFluid.getUnlocalizedName()); + } + + if (materialFluid.getFluidType() != null) { + return I18n.format(materialFluid.getFluidType().getLocalization(), localizedName); + } + return localizedName; + } +} diff --git a/src/main/java/kpan/uti_alsofluids/asm/tf/integration/gregtech/TF_MaterialFluid.java b/src/main/java/kpan/uti_alsofluids/asm/tf/integration/gregtech/TF_MaterialFluid.java new file mode 100644 index 0000000..daa328d --- /dev/null +++ b/src/main/java/kpan/uti_alsofluids/asm/tf/integration/gregtech/TF_MaterialFluid.java @@ -0,0 +1,22 @@ +package kpan.uti_alsofluids.asm.tf.integration.gregtech; + +import kpan.uti_alsofluids.asm.core.AsmTypes; +import kpan.uti_alsofluids.asm.core.AsmUtil; +import kpan.uti_alsofluids.asm.core.adapters.MyClassVisitor; +import kpan.uti_alsofluids.asm.core.adapters.ReplaceRefMethodAdapter; +import org.objectweb.asm.ClassVisitor; + +public class TF_MaterialFluid { + + private static final String TARGET = "gregtech.api.fluids.MaterialFluid"; + private static final String HOOK = AsmTypes.HOOK + "integration/gregtech/" + "HK_" + "MaterialFluid"; + + public static ClassVisitor appendVisitor(ClassVisitor cv, String className) { + if (TARGET.equals(className)) { + MyClassVisitor newcv = new ReplaceRefMethodAdapter(cv, HOOK, TARGET, "getLocalizedName", AsmUtil.toMethodDesc(AsmTypes.STRING, AsmTypes.FLUIDSTACK)); + newcv.setSuccessExpectedMin(0);//サーバーだと見つからない + return newcv; + } + return cv; + } +} diff --git a/src/main/resources/changelog.txt b/src/main/resources/changelog.txt index 27aba6a..c672ab4 100644 --- a/src/main/resources/changelog.txt +++ b/src/main/resources/changelog.txt @@ -1,3 +1,5 @@ +version 1.4.0 : + Fix GTCEu fluid localized bug. version 1.3.2 : Fix bug that prevented clients from joining to servers with different patch versions. version 1.3.1 : diff --git a/src/main/resources/version.properties b/src/main/resources/version.properties index 68ff2de..eb1c48a 100644 --- a/src/main/resources/version.properties +++ b/src/main/resources/version.properties @@ -1 +1 @@ -untranslateditems_alsofluids.version=1.3.2 \ No newline at end of file +te.version=${version} diff --git a/src/template/java/kpan/uti_alsofluids/BuildInfo.java b/src/template/java/kpan/uti_alsofluids/BuildInfo.java new file mode 100644 index 0000000..9e23ad4 --- /dev/null +++ b/src/template/java/kpan/uti_alsofluids/BuildInfo.java @@ -0,0 +1,8 @@ +package kpan.uti_alsofluids; + +public class BuildInfo { + public static final String VERSION = "${version}"; + public static final String MAJOR_VERSION = "${majorVersion}"; + public static final String MINOR_VERSION = "${minorVersion}"; + public static final String PATCH_VERSION = "${patchVersion}"; +} diff --git a/version.properties b/version.properties new file mode 100644 index 0000000..57d6ece --- /dev/null +++ b/version.properties @@ -0,0 +1,3 @@ +majorVersion=1 +minorVersion=4 +patchVersion=0