From 14ac3f29c26a92ce52ca32aaf5848eeb84b54d9d Mon Sep 17 00:00:00 2001 From: Raven Szewczyk Date: Sat, 25 May 2024 14:59:04 +0100 Subject: Relocate KubaTech mixins --- src/main/java/gregtech/mixin/Mixin.java | 50 +++++++++ src/main/java/gregtech/mixin/MixinPlugin.java | 113 ++++++++++++++++++++ .../java/gregtech/mixin/MixinsVariablesHelper.java | 6 ++ src/main/java/gregtech/mixin/TargetedMod.java | 43 ++++++++ .../mixins/minecraft/LanguageRegistryMixin.java | 27 +++++ .../mixin/mixins/minecraft/LocaleMixin.java | 47 +++++++++ .../mixins/minecraft/StringTranslateMixin.java | 33 ++++++ .../mixin/mixins/minecraft/WorldMixin.java | 23 +++++ src/main/java/kubatech/mixin/Mixin.java | 50 --------- src/main/java/kubatech/mixin/MixinPlugin.java | 114 --------------------- .../java/kubatech/mixin/MixinsVariablesHelper.java | 6 -- src/main/java/kubatech/mixin/TargetedMod.java | 43 -------- .../mixins/minecraft/LanguageRegistryMixin.java | 27 ----- .../mixin/mixins/minecraft/LocaleMixin.java | 47 --------- .../mixins/minecraft/StringTranslateMixin.java | 33 ------ .../mixin/mixins/minecraft/WorldMixin.java | 23 ----- 16 files changed, 342 insertions(+), 343 deletions(-) create mode 100644 src/main/java/gregtech/mixin/Mixin.java create mode 100644 src/main/java/gregtech/mixin/MixinPlugin.java create mode 100644 src/main/java/gregtech/mixin/MixinsVariablesHelper.java create mode 100644 src/main/java/gregtech/mixin/TargetedMod.java create mode 100644 src/main/java/gregtech/mixin/mixins/minecraft/LanguageRegistryMixin.java create mode 100644 src/main/java/gregtech/mixin/mixins/minecraft/LocaleMixin.java create mode 100644 src/main/java/gregtech/mixin/mixins/minecraft/StringTranslateMixin.java create mode 100644 src/main/java/gregtech/mixin/mixins/minecraft/WorldMixin.java delete mode 100644 src/main/java/kubatech/mixin/Mixin.java delete mode 100644 src/main/java/kubatech/mixin/MixinPlugin.java delete mode 100644 src/main/java/kubatech/mixin/MixinsVariablesHelper.java delete mode 100644 src/main/java/kubatech/mixin/TargetedMod.java delete mode 100644 src/main/java/kubatech/mixin/mixins/minecraft/LanguageRegistryMixin.java delete mode 100644 src/main/java/kubatech/mixin/mixins/minecraft/LocaleMixin.java delete mode 100644 src/main/java/kubatech/mixin/mixins/minecraft/StringTranslateMixin.java delete mode 100644 src/main/java/kubatech/mixin/mixins/minecraft/WorldMixin.java (limited to 'src/main/java') diff --git a/src/main/java/gregtech/mixin/Mixin.java b/src/main/java/gregtech/mixin/Mixin.java new file mode 100644 index 0000000000..347dec2c5e --- /dev/null +++ b/src/main/java/gregtech/mixin/Mixin.java @@ -0,0 +1,50 @@ +package gregtech.mixin; + +import static gregtech.mixin.TargetedMod.VANILLA; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; + +import cpw.mods.fml.relauncher.FMLLaunchHandler; + +public enum Mixin { + + // Minecraft + WorldMixin("minecraft.WorldMixin", VANILLA), + StringTranslateMixin("minecraft.StringTranslateMixin", VANILLA), + LanguageRegistryMixin("minecraft.LanguageRegistryMixin", VANILLA), + LocaleMixin("minecraft.LocaleMixin", Side.CLIENT, VANILLA), + + ; + + public final String mixinClass; + public final List targetedMods; + private final Side side; + + Mixin(String mixinClass, Side side, TargetedMod... targetedMods) { + this.mixinClass = mixinClass; + this.targetedMods = Arrays.asList(targetedMods); + this.side = side; + } + + Mixin(String mixinClass, TargetedMod... targetedMods) { + this.mixinClass = mixinClass; + this.targetedMods = Arrays.asList(targetedMods); + this.side = Side.BOTH; + } + + public boolean shouldLoad(List loadedMods) { + return (side == Side.BOTH || side == Side.SERVER && FMLLaunchHandler.side() + .isServer() + || side == Side.CLIENT && FMLLaunchHandler.side() + .isClient()) + && new HashSet<>(loadedMods).containsAll(targetedMods); + } + + enum Side { + BOTH, + CLIENT, + SERVER + } +} diff --git a/src/main/java/gregtech/mixin/MixinPlugin.java b/src/main/java/gregtech/mixin/MixinPlugin.java new file mode 100644 index 0000000000..074eeb81aa --- /dev/null +++ b/src/main/java/gregtech/mixin/MixinPlugin.java @@ -0,0 +1,113 @@ +package gregtech.mixin; + +import static gregtech.mixin.TargetedMod.VANILLA; +import static java.nio.file.Files.walk; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import net.minecraft.launchwrapper.Launch; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.spongepowered.asm.lib.tree.ClassNode; +import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; +import org.spongepowered.asm.mixin.extensibility.IMixinInfo; + +import com.gtnewhorizon.gtnhmixins.MinecraftURLClassPath; + +import kubatech.Tags; + +public class MixinPlugin implements IMixinConfigPlugin { + + private static final Logger LOG = LogManager.getLogger(Tags.MODID + " mixins"); + private static final Path MODS_DIRECTORY_PATH = new File(Launch.minecraftHome, "mods/").toPath(); + + @Override + public void onLoad(String mixinPackage) {} + + @Override + public String getRefMapperConfig() { + return null; + } + + @Override + public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { + return false; + } + + @Override + public void acceptTargets(Set myTargets, Set otherTargets) {} + + @Override + public List getMixins() { + final boolean isDevelopmentEnvironment = (boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment"); + + List loadedMods = Arrays.stream(TargetedMod.values()) + .filter(mod -> mod == VANILLA || (mod.loadInDevelopment && isDevelopmentEnvironment) || loadJarOf(mod)) + .collect(Collectors.toList()); + + for (TargetedMod mod : TargetedMod.values()) { + if (loadedMods.contains(mod)) { + LOG.info("Found " + mod.modName + "! Integrating now..."); + } else { + LOG.info("Could not find " + mod.modName + "! Skipping integration...."); + } + } + + List mixins = new ArrayList<>(); + for (Mixin mixin : Mixin.values()) { + if (mixin.shouldLoad(loadedMods)) { + mixins.add(mixin.mixinClass); + LOG.debug("Loading mixin: " + mixin.mixinClass); + } + } + return mixins; + } + + private boolean loadJarOf(final TargetedMod mod) { + try { + File jar = findJarOf(mod); + if (jar == null) { + LOG.info("Jar not found for " + mod); + return false; + } + + LOG.info("Attempting to add " + jar + " to the URL Class Path"); + if (!jar.exists()) { + throw new FileNotFoundException(jar.toString()); + } + MinecraftURLClassPath.addJar(jar); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + public static File findJarOf(final TargetedMod mod) { + try (Stream stream = walk(MODS_DIRECTORY_PATH)) { + return stream.filter(mod::isMatchingJar) + .map(Path::toFile) + .findFirst() + .orElse(null); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } + + @Override + public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {} + + @Override + public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {} +} diff --git a/src/main/java/gregtech/mixin/MixinsVariablesHelper.java b/src/main/java/gregtech/mixin/MixinsVariablesHelper.java new file mode 100644 index 0000000000..96cc2ee115 --- /dev/null +++ b/src/main/java/gregtech/mixin/MixinsVariablesHelper.java @@ -0,0 +1,6 @@ +package gregtech.mixin; + +public class MixinsVariablesHelper { + + public static String currentlyTranslating = null; +} diff --git a/src/main/java/gregtech/mixin/TargetedMod.java b/src/main/java/gregtech/mixin/TargetedMod.java new file mode 100644 index 0000000000..0f402d1947 --- /dev/null +++ b/src/main/java/gregtech/mixin/TargetedMod.java @@ -0,0 +1,43 @@ +package gregtech.mixin; + +import java.nio.file.Path; + +import com.google.common.io.Files; + +public enum TargetedMod { + + VANILLA("Minecraft", "unused", true), + + ; + + public final String modName; + public final String jarNamePrefixLowercase; + public final boolean loadInDevelopment; + + TargetedMod(String modName, String jarNamePrefix, boolean loadInDevelopment) { + this.modName = modName; + this.jarNamePrefixLowercase = jarNamePrefix.toLowerCase(); + this.loadInDevelopment = loadInDevelopment; + } + + @SuppressWarnings("UnstableApiUsage") + public boolean isMatchingJar(Path path) { + final String pathString = path.toString(); + final String nameLowerCase = Files.getNameWithoutExtension(pathString) + .toLowerCase(); + final String fileExtension = Files.getFileExtension(pathString); + + return nameLowerCase.startsWith(jarNamePrefixLowercase) && "jar".equals(fileExtension); + } + + @Override + public String toString() { + return "TargetedMod{" + "modName='" + + modName + + '\'' + + ", jarNamePrefixLowercase='" + + jarNamePrefixLowercase + + '\'' + + '}'; + } +} diff --git a/src/main/java/gregtech/mixin/mixins/minecraft/LanguageRegistryMixin.java b/src/main/java/gregtech/mixin/mixins/minecraft/LanguageRegistryMixin.java new file mode 100644 index 0000000000..ee98a11f88 --- /dev/null +++ b/src/main/java/gregtech/mixin/mixins/minecraft/LanguageRegistryMixin.java @@ -0,0 +1,27 @@ +package gregtech.mixin.mixins.minecraft; + +import static gregtech.mixin.MixinsVariablesHelper.currentlyTranslating; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import cpw.mods.fml.common.ModContainer; +import cpw.mods.fml.common.registry.LanguageRegistry; +import cpw.mods.fml.relauncher.Side; + +@SuppressWarnings("unused") +@Mixin(value = LanguageRegistry.class) +public class LanguageRegistryMixin { + + @Inject(method = "loadLanguagesFor", at = @At(value = "HEAD"), remap = false, require = 1) + private void kubatech$loadLanguagesForHEAD(ModContainer container, Side side, CallbackInfo callbackInfo) { + currentlyTranslating = container.getModId(); + } + + @Inject(method = "loadLanguagesFor", at = @At(value = "RETURN"), remap = false, require = 1) + private void kubatech$loadLanguagesForRETURN(ModContainer container, Side side, CallbackInfo callbackInfo) { + currentlyTranslating = null; + } +} diff --git a/src/main/java/gregtech/mixin/mixins/minecraft/LocaleMixin.java b/src/main/java/gregtech/mixin/mixins/minecraft/LocaleMixin.java new file mode 100644 index 0000000000..3a1864534a --- /dev/null +++ b/src/main/java/gregtech/mixin/mixins/minecraft/LocaleMixin.java @@ -0,0 +1,47 @@ +package gregtech.mixin.mixins.minecraft; + +import static gregtech.mixin.MixinsVariablesHelper.currentlyTranslating; + +import java.util.regex.Matcher; + +import net.minecraft.client.resources.Locale; +import net.minecraft.util.ResourceLocation; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.Redirect; + +import kubatech.Tags; + +@SuppressWarnings("unused") +@Mixin(value = Locale.class) +public class LocaleMixin { + + @ModifyArg( + method = "loadLocaleDataFiles", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/resources/IResourceManager;getAllResources(Lnet/minecraft/util/ResourceLocation;)Ljava/util/List;"), + index = 0, + require = 1) + private ResourceLocation kubatech$loadLocaleDataFiles(ResourceLocation resourceLocation) { + currentlyTranslating = resourceLocation.getResourceDomain(); + return resourceLocation; + } + + @Redirect( + method = "loadLocaleData(Ljava/io/InputStream;)V", + at = @At( + value = "INVOKE", + target = "Ljava/util/regex/Matcher;replaceAll(Ljava/lang/String;)Ljava/lang/String;", + remap = false), + require = 1) + private String kubatech$replaceAll(Matcher matcher, String replace) { + if (currentlyTranslating != null && currentlyTranslating.equals(Tags.MODID) && matcher.find()) { + return matcher.replaceFirst(matcher.group()); + } + return matcher.replaceAll(replace); + } + +} diff --git a/src/main/java/gregtech/mixin/mixins/minecraft/StringTranslateMixin.java b/src/main/java/gregtech/mixin/mixins/minecraft/StringTranslateMixin.java new file mode 100644 index 0000000000..d9b80a0f52 --- /dev/null +++ b/src/main/java/gregtech/mixin/mixins/minecraft/StringTranslateMixin.java @@ -0,0 +1,33 @@ +package gregtech.mixin.mixins.minecraft; + +import static gregtech.mixin.MixinsVariablesHelper.currentlyTranslating; + +import java.util.regex.Matcher; + +import net.minecraft.util.StringTranslate; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import kubatech.Tags; + +@SuppressWarnings("unused") +@Mixin(value = StringTranslate.class) +public class StringTranslateMixin { + + @Redirect( + method = "parseLangFile", + at = @At( + value = "INVOKE", + target = "Ljava/util/regex/Matcher;replaceAll(Ljava/lang/String;)Ljava/lang/String;", + remap = false), + remap = false, + require = 1) + private static String kubatech$replaceAll(Matcher matcher, String replace) { + if (currentlyTranslating != null && currentlyTranslating.equals(Tags.MODID) && matcher.find()) { + return matcher.replaceFirst(matcher.group()); + } + return matcher.replaceAll(replace); + } +} diff --git a/src/main/java/gregtech/mixin/mixins/minecraft/WorldMixin.java b/src/main/java/gregtech/mixin/mixins/minecraft/WorldMixin.java new file mode 100644 index 0000000000..1d99287659 --- /dev/null +++ b/src/main/java/gregtech/mixin/mixins/minecraft/WorldMixin.java @@ -0,0 +1,23 @@ +package gregtech.mixin.mixins.minecraft; + +import net.minecraft.block.Block; +import net.minecraft.world.World; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +import com.llamalad7.mixinextras.injector.ModifyReturnValue; + +import kubatech.loaders.BlockLoader; + +@SuppressWarnings("unused") +@Mixin(value = World.class) +public class WorldMixin { + + @SuppressWarnings("ConstantConditions") + @ModifyReturnValue(method = "getBlock", at = @At("RETURN"), require = 1) + private Block kubatech$getBlockDetector(Block block, int x, int y, int z) { + if (block == BlockLoader.kubaBlock) BlockLoader.kubaBlock.setLastBlockAccess((World) (Object) this, x, y, z); + return block; + } +} diff --git a/src/main/java/kubatech/mixin/Mixin.java b/src/main/java/kubatech/mixin/Mixin.java deleted file mode 100644 index 52f7671faa..0000000000 --- a/src/main/java/kubatech/mixin/Mixin.java +++ /dev/null @@ -1,50 +0,0 @@ -package kubatech.mixin; - -import static kubatech.mixin.TargetedMod.VANILLA; - -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; - -import cpw.mods.fml.relauncher.FMLLaunchHandler; - -public enum Mixin { - - // Minecraft - WorldMixin("minecraft.WorldMixin", VANILLA), - StringTranslateMixin("minecraft.StringTranslateMixin", VANILLA), - LanguageRegistryMixin("minecraft.LanguageRegistryMixin", VANILLA), - LocaleMixin("minecraft.LocaleMixin", Side.CLIENT, VANILLA), - - ; - - public final String mixinClass; - public final List targetedMods; - private final Side side; - - Mixin(String mixinClass, Side side, TargetedMod... targetedMods) { - this.mixinClass = mixinClass; - this.targetedMods = Arrays.asList(targetedMods); - this.side = side; - } - - Mixin(String mixinClass, TargetedMod... targetedMods) { - this.mixinClass = mixinClass; - this.targetedMods = Arrays.asList(targetedMods); - this.side = Side.BOTH; - } - - public boolean shouldLoad(List loadedMods) { - return (side == Side.BOTH || side == Side.SERVER && FMLLaunchHandler.side() - .isServer() - || side == Side.CLIENT && FMLLaunchHandler.side() - .isClient()) - && new HashSet<>(loadedMods).containsAll(targetedMods); - } - - enum Side { - BOTH, - CLIENT, - SERVER - } -} diff --git a/src/main/java/kubatech/mixin/MixinPlugin.java b/src/main/java/kubatech/mixin/MixinPlugin.java deleted file mode 100644 index cdbc0ddf60..0000000000 --- a/src/main/java/kubatech/mixin/MixinPlugin.java +++ /dev/null @@ -1,114 +0,0 @@ -package kubatech.mixin; - -import static java.nio.file.Files.walk; -import static kubatech.mixin.TargetedMod.VANILLA; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import net.minecraft.launchwrapper.Launch; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.spongepowered.asm.lib.tree.ClassNode; -import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; -import org.spongepowered.asm.mixin.extensibility.IMixinInfo; - -import com.gtnewhorizon.gtnhmixins.MinecraftURLClassPath; - -import kubatech.Tags; - -@SuppressWarnings("unused") -public class MixinPlugin implements IMixinConfigPlugin { - - private static final Logger LOG = LogManager.getLogger(Tags.MODID + " mixins"); - private static final Path MODS_DIRECTORY_PATH = new File(Launch.minecraftHome, "mods/").toPath(); - - @Override - public void onLoad(String mixinPackage) {} - - @Override - public String getRefMapperConfig() { - return null; - } - - @Override - public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { - return false; - } - - @Override - public void acceptTargets(Set myTargets, Set otherTargets) {} - - @Override - public List getMixins() { - final boolean isDevelopmentEnvironment = (boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment"); - - List loadedMods = Arrays.stream(TargetedMod.values()) - .filter(mod -> mod == VANILLA || (mod.loadInDevelopment && isDevelopmentEnvironment) || loadJarOf(mod)) - .collect(Collectors.toList()); - - for (TargetedMod mod : TargetedMod.values()) { - if (loadedMods.contains(mod)) { - LOG.info("Found " + mod.modName + "! Integrating now..."); - } else { - LOG.info("Could not find " + mod.modName + "! Skipping integration...."); - } - } - - List mixins = new ArrayList<>(); - for (Mixin mixin : Mixin.values()) { - if (mixin.shouldLoad(loadedMods)) { - mixins.add(mixin.mixinClass); - LOG.debug("Loading mixin: " + mixin.mixinClass); - } - } - return mixins; - } - - private boolean loadJarOf(final TargetedMod mod) { - try { - File jar = findJarOf(mod); - if (jar == null) { - LOG.info("Jar not found for " + mod); - return false; - } - - LOG.info("Attempting to add " + jar + " to the URL Class Path"); - if (!jar.exists()) { - throw new FileNotFoundException(jar.toString()); - } - MinecraftURLClassPath.addJar(jar); - return true; - } catch (Exception e) { - e.printStackTrace(); - return false; - } - } - - public static File findJarOf(final TargetedMod mod) { - try (Stream stream = walk(MODS_DIRECTORY_PATH)) { - return stream.filter(mod::isMatchingJar) - .map(Path::toFile) - .findFirst() - .orElse(null); - } catch (IOException e) { - e.printStackTrace(); - return null; - } - } - - @Override - public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {} - - @Override - public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {} -} diff --git a/src/main/java/kubatech/mixin/MixinsVariablesHelper.java b/src/main/java/kubatech/mixin/MixinsVariablesHelper.java deleted file mode 100644 index 1875be6efc..0000000000 --- a/src/main/java/kubatech/mixin/MixinsVariablesHelper.java +++ /dev/null @@ -1,6 +0,0 @@ -package kubatech.mixin; - -public class MixinsVariablesHelper { - - public static String currentlyTranslating = null; -} diff --git a/src/main/java/kubatech/mixin/TargetedMod.java b/src/main/java/kubatech/mixin/TargetedMod.java deleted file mode 100644 index 65717c7e12..0000000000 --- a/src/main/java/kubatech/mixin/TargetedMod.java +++ /dev/null @@ -1,43 +0,0 @@ -package kubatech.mixin; - -import java.nio.file.Path; - -import com.google.common.io.Files; - -public enum TargetedMod { - - VANILLA("Minecraft", "unused", true), - - ; - - public final String modName; - public final String jarNamePrefixLowercase; - public final boolean loadInDevelopment; - - TargetedMod(String modName, String jarNamePrefix, boolean loadInDevelopment) { - this.modName = modName; - this.jarNamePrefixLowercase = jarNamePrefix.toLowerCase(); - this.loadInDevelopment = loadInDevelopment; - } - - @SuppressWarnings("UnstableApiUsage") - public boolean isMatchingJar(Path path) { - final String pathString = path.toString(); - final String nameLowerCase = Files.getNameWithoutExtension(pathString) - .toLowerCase(); - final String fileExtension = Files.getFileExtension(pathString); - - return nameLowerCase.startsWith(jarNamePrefixLowercase) && "jar".equals(fileExtension); - } - - @Override - public String toString() { - return "TargetedMod{" + "modName='" - + modName - + '\'' - + ", jarNamePrefixLowercase='" - + jarNamePrefixLowercase - + '\'' - + '}'; - } -} diff --git a/src/main/java/kubatech/mixin/mixins/minecraft/LanguageRegistryMixin.java b/src/main/java/kubatech/mixin/mixins/minecraft/LanguageRegistryMixin.java deleted file mode 100644 index 02546dd258..0000000000 --- a/src/main/java/kubatech/mixin/mixins/minecraft/LanguageRegistryMixin.java +++ /dev/null @@ -1,27 +0,0 @@ -package kubatech.mixin.mixins.minecraft; - -import static kubatech.mixin.MixinsVariablesHelper.currentlyTranslating; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import cpw.mods.fml.common.ModContainer; -import cpw.mods.fml.common.registry.LanguageRegistry; -import cpw.mods.fml.relauncher.Side; - -@SuppressWarnings("unused") -@Mixin(value = LanguageRegistry.class) -public class LanguageRegistryMixin { - - @Inject(method = "loadLanguagesFor", at = @At(value = "HEAD"), remap = false, require = 1) - private void kubatech$loadLanguagesForHEAD(ModContainer container, Side side, CallbackInfo callbackInfo) { - currentlyTranslating = container.getModId(); - } - - @Inject(method = "loadLanguagesFor", at = @At(value = "RETURN"), remap = false, require = 1) - private void kubatech$loadLanguagesForRETURN(ModContainer container, Side side, CallbackInfo callbackInfo) { - currentlyTranslating = null; - } -} diff --git a/src/main/java/kubatech/mixin/mixins/minecraft/LocaleMixin.java b/src/main/java/kubatech/mixin/mixins/minecraft/LocaleMixin.java deleted file mode 100644 index e903a3e139..0000000000 --- a/src/main/java/kubatech/mixin/mixins/minecraft/LocaleMixin.java +++ /dev/null @@ -1,47 +0,0 @@ -package kubatech.mixin.mixins.minecraft; - -import static kubatech.mixin.MixinsVariablesHelper.currentlyTranslating; - -import java.util.regex.Matcher; - -import net.minecraft.client.resources.Locale; -import net.minecraft.util.ResourceLocation; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.ModifyArg; -import org.spongepowered.asm.mixin.injection.Redirect; - -import kubatech.Tags; - -@SuppressWarnings("unused") -@Mixin(value = Locale.class) -public class LocaleMixin { - - @ModifyArg( - method = "loadLocaleDataFiles", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/resources/IResourceManager;getAllResources(Lnet/minecraft/util/ResourceLocation;)Ljava/util/List;"), - index = 0, - require = 1) - private ResourceLocation kubatech$loadLocaleDataFiles(ResourceLocation resourceLocation) { - currentlyTranslating = resourceLocation.getResourceDomain(); - return resourceLocation; - } - - @Redirect( - method = "loadLocaleData(Ljava/io/InputStream;)V", - at = @At( - value = "INVOKE", - target = "Ljava/util/regex/Matcher;replaceAll(Ljava/lang/String;)Ljava/lang/String;", - remap = false), - require = 1) - private String kubatech$replaceAll(Matcher matcher, String replace) { - if (currentlyTranslating != null && currentlyTranslating.equals(Tags.MODID) && matcher.find()) { - return matcher.replaceFirst(matcher.group()); - } - return matcher.replaceAll(replace); - } - -} diff --git a/src/main/java/kubatech/mixin/mixins/minecraft/StringTranslateMixin.java b/src/main/java/kubatech/mixin/mixins/minecraft/StringTranslateMixin.java deleted file mode 100644 index 6a0bc4af62..0000000000 --- a/src/main/java/kubatech/mixin/mixins/minecraft/StringTranslateMixin.java +++ /dev/null @@ -1,33 +0,0 @@ -package kubatech.mixin.mixins.minecraft; - -import static kubatech.mixin.MixinsVariablesHelper.currentlyTranslating; - -import java.util.regex.Matcher; - -import net.minecraft.util.StringTranslate; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -import kubatech.Tags; - -@SuppressWarnings("unused") -@Mixin(value = StringTranslate.class) -public class StringTranslateMixin { - - @Redirect( - method = "parseLangFile", - at = @At( - value = "INVOKE", - target = "Ljava/util/regex/Matcher;replaceAll(Ljava/lang/String;)Ljava/lang/String;", - remap = false), - remap = false, - require = 1) - private static String kubatech$replaceAll(Matcher matcher, String replace) { - if (currentlyTranslating != null && currentlyTranslating.equals(Tags.MODID) && matcher.find()) { - return matcher.replaceFirst(matcher.group()); - } - return matcher.replaceAll(replace); - } -} diff --git a/src/main/java/kubatech/mixin/mixins/minecraft/WorldMixin.java b/src/main/java/kubatech/mixin/mixins/minecraft/WorldMixin.java deleted file mode 100644 index 42c71cadbd..0000000000 --- a/src/main/java/kubatech/mixin/mixins/minecraft/WorldMixin.java +++ /dev/null @@ -1,23 +0,0 @@ -package kubatech.mixin.mixins.minecraft; - -import net.minecraft.block.Block; -import net.minecraft.world.World; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; - -import com.llamalad7.mixinextras.injector.ModifyReturnValue; - -import kubatech.loaders.BlockLoader; - -@SuppressWarnings("unused") -@Mixin(value = World.class) -public class WorldMixin { - - @SuppressWarnings("ConstantConditions") - @ModifyReturnValue(method = "getBlock", at = @At("RETURN"), require = 1) - private Block kubatech$getBlockDetector(Block block, int x, int y, int z) { - if (block == BlockLoader.kubaBlock) BlockLoader.kubaBlock.setLastBlockAccess((World) (Object) this, x, y, z); - return block; - } -} -- cgit