diff options
Diffstat (limited to 'src/main/java/rosegoldaddons/mixins')
3 files changed, 55 insertions, 3 deletions
diff --git a/src/main/java/rosegoldaddons/mixins/MixinEntityPlayer.java b/src/main/java/rosegoldaddons/mixins/MixinEntityPlayer.java new file mode 100644 index 0000000..1584dac --- /dev/null +++ b/src/main/java/rosegoldaddons/mixins/MixinEntityPlayer.java @@ -0,0 +1,33 @@ +package rosegoldaddons.mixins; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.IChatComponent; +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.CallbackInfoReturnable; +import rosegoldaddons.Main; + +import java.util.Map; + +@Mixin(EntityPlayer.class) +public class MixinEntityPlayer { + @Inject(method = "getDisplayName", at = @At(value = "RETURN"), cancellable = true) + public void getFormattedText(CallbackInfoReturnable<IChatComponent> cir) { + if(Main.pauseCustom) return; + if (Main.init && Main.configFile.alchsleep != 63 || Main.configFile.skiblock != 263) { + IChatComponent ict = new ChatComponentText(""); + ict.setChatStyle(cir.getReturnValue().getChatStyle()); + String text = cir.getReturnValue().getFormattedText(); + for (Map.Entry<String, String> entry : Main.nameCache.entrySet()) { + String key = entry.getKey(); + String value = entry.getValue(); + + text = text.replace(key, value); + } + ict.appendText(text); + cir.setReturnValue(ict); + } + } +} diff --git a/src/main/java/rosegoldaddons/mixins/MixinRenderString.java b/src/main/java/rosegoldaddons/mixins/MixinRenderString.java index e4888e0..d7a80b8 100644 --- a/src/main/java/rosegoldaddons/mixins/MixinRenderString.java +++ b/src/main/java/rosegoldaddons/mixins/MixinRenderString.java @@ -14,6 +14,7 @@ public abstract class MixinRenderString { @ModifyVariable(method = "drawString(Ljava/lang/String;FFIZ)I", at = @At(value = "FIELD")) private String replaceName(String text) { if (Main.mc.theWorld == null || Main.mc.thePlayer == null) return text; + if(Main.pauseCustom) return text; if (Main.configFile.wydsi && text.contains("727")) { text = text.replace("727", "726"); } @@ -21,6 +22,7 @@ public abstract class MixinRenderString { String[] words = stripString(text).replace(":"," ").replace("'"," ").split(" "); String[] formatteds = text.replace(":"," ").replace("'"," ").split(" "); for (String word : words) { + if(word.equals("")) continue; if (Main.hashedCache.contains(word)) continue; if(Main.rankCache.containsKey(word)) { String rank = getRank(text, word); @@ -39,6 +41,7 @@ public abstract class MixinRenderString { } } for (String word : words) { + if(word.equals("")) continue; if (Main.hashedCache.contains(word)) continue; if (Main.nameCache.containsKey(word)) { String[] replaces = Main.nameCache.get(word).split(" "); @@ -84,9 +87,13 @@ public abstract class MixinRenderString { } private String stripString(String s) { - char[] nonValidatedString = StringUtils.stripControlCodes(s).toCharArray(); + char[] nonValidatedString; + try { + nonValidatedString = StringUtils.stripControlCodes(s).toCharArray(); + } catch (Exception e) { + return ""; + } StringBuilder validated = new StringBuilder(); - for (char a : nonValidatedString) { if ((int) a < 127 && (int) a > 20) { validated.append(a); diff --git a/src/main/java/rosegoldaddons/mixins/MixinRendererLivingEntity.java b/src/main/java/rosegoldaddons/mixins/MixinRendererLivingEntity.java index 25f1a2e..dc06069 100644 --- a/src/main/java/rosegoldaddons/mixins/MixinRendererLivingEntity.java +++ b/src/main/java/rosegoldaddons/mixins/MixinRendererLivingEntity.java @@ -8,6 +8,7 @@ import net.minecraft.util.StringUtils; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import org.apache.commons.codec.digest.DigestUtils; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -29,13 +30,17 @@ public abstract class MixinRendererLivingEntity { ci.cancel(); } + /* @Redirect(method = "renderName(Lnet/minecraft/entity/EntityLivingBase;DDD)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/IChatComponent;getFormattedText()Ljava/lang/String;")) public String redirectGetFormattedText(IChatComponent instance) { + if(!Main.configFile.customNames) return instance.getFormattedText(); if (Main.init && Main.configFile.alchsleep == 63 && Main.configFile.skiblock == 263) return instance.getFormattedText(); String unformatted = stripString(instance.getUnformattedText()).replace(":"," ").replace("'"," "); String[] words = unformatted.split(" "); String[] formatteds = instance.getUnformattedText().replace(":"," ").replace("'"," ").split(" "); for(String word : words) { + if (Main.hashedCache.contains(word)) continue; + if(word.equals("")) continue; if (Main.nameCache.containsKey(word)) { String[] replaces = Main.nameCache.get(word).split(" "); for(String replace : replaces) { @@ -45,11 +50,18 @@ public abstract class MixinRendererLivingEntity { } String color = getColorBeforeIndex(instance.getUnformattedText(), instance.getUnformattedText().indexOf(word)); return instance.getUnformattedText().replace(word, Main.nameCache.get(word) + color); + } else { + String hashed = DigestUtils.sha256Hex(word + word); + if (Main.names.containsKey(hashed)) { + Main.nameCache.put(word, Main.names.get(hashed)); + } else { + Main.hashedCache.add(word); + } } } return instance.getFormattedText(); } - + */ private String getColorBeforeIndex(String str, int index) { String lastColor = ""; |