aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/rosegoldaddons/mixins
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/rosegoldaddons/mixins')
-rw-r--r--src/main/java/rosegoldaddons/mixins/MixinEntityPlayer.java33
-rw-r--r--src/main/java/rosegoldaddons/mixins/MixinRenderString.java11
-rw-r--r--src/main/java/rosegoldaddons/mixins/MixinRendererLivingEntity.java14
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 = "";