aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kubatech/mixin/mixins/minecraft
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/kubatech/mixin/mixins/minecraft')
-rw-r--r--src/main/java/kubatech/mixin/mixins/minecraft/LanguageRegistryMixin.java27
-rw-r--r--src/main/java/kubatech/mixin/mixins/minecraft/LocaleMixin.java47
-rw-r--r--src/main/java/kubatech/mixin/mixins/minecraft/StringTranslateMixin.java33
-rw-r--r--src/main/java/kubatech/mixin/mixins/minecraft/WorldMixin.java23
4 files changed, 130 insertions, 0 deletions
diff --git a/src/main/java/kubatech/mixin/mixins/minecraft/LanguageRegistryMixin.java b/src/main/java/kubatech/mixin/mixins/minecraft/LanguageRegistryMixin.java
new file mode 100644
index 0000000000..02546dd258
--- /dev/null
+++ b/src/main/java/kubatech/mixin/mixins/minecraft/LanguageRegistryMixin.java
@@ -0,0 +1,27 @@
+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
new file mode 100644
index 0000000000..e903a3e139
--- /dev/null
+++ b/src/main/java/kubatech/mixin/mixins/minecraft/LocaleMixin.java
@@ -0,0 +1,47 @@
+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
new file mode 100644
index 0000000000..6a0bc4af62
--- /dev/null
+++ b/src/main/java/kubatech/mixin/mixins/minecraft/StringTranslateMixin.java
@@ -0,0 +1,33 @@
+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
new file mode 100644
index 0000000000..42c71cadbd
--- /dev/null
+++ b/src/main/java/kubatech/mixin/mixins/minecraft/WorldMixin.java
@@ -0,0 +1,23 @@
+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;
+ }
+}