From e04950263cbf651232304476dbc1d0cb75a4a0be Mon Sep 17 00:00:00 2001 From: ChasmSolacer <46286197+ChasmSolacer@users.noreply.github.com> Date: Sat, 7 Jun 2025 16:59:07 +0200 Subject: [PATCH 1/8] Somehow Gradle upgraded --- build.gradle | 4 ++-- gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 0 3 files changed, 3 insertions(+), 3 deletions(-) mode change 100644 => 100755 gradlew diff --git a/build.gradle b/build.gradle index 0d7fd1a..55827d0 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '1.6-SNAPSHOT' + id 'fabric-loom' version '1.10-SNAPSHOT' id 'maven-publish' } @@ -91,7 +91,7 @@ processResources { } tasks.withType(JavaCompile).configureEach { - // Minecraft 1.18 (1.18-pre2) upwards uses Java 17. + // Minecraft 1.20.5 (24w14a) upwards uses Java 21. it.options.release = 21 } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a8e0cb4..5c5daa8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,4 +1,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 From cc77fff0488b9b162effd7718f880f1f966e57be Mon Sep 17 00:00:00 2001 From: ChasmSolacer <46286197+ChasmSolacer@users.noreply.github.com> Date: Fri, 13 Jun 2025 23:20:15 +0200 Subject: [PATCH 2/8] Migrate mappings to 1.21.6-rc1 --- gradle.properties | 9 +++++---- .../villagernames/mixin/item/NameTagItemMixin.java | 2 +- .../villagernames/mixin/item/SpawnEggItemMixin.java | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/gradle.properties b/gradle.properties index d4278e7..327c734 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,12 +3,13 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use -minecraft_version=1.21 -yarn_mappings=1.21+build.2 -loader_version=0.15.11 +minecraft_version=1.21.6-rc1 +yarn_mappings=1.21.6-rc1+build.1 +loader_version=0.16.14 +loom_version=1.10-SNAPSHOT # Fabric API -fabric_version=0.100.1+1.21 +fabric_version=0.126.1+1.21.6 # Mod Properties diff --git a/src/main/java/io/github/overlordsiii/villagernames/mixin/item/NameTagItemMixin.java b/src/main/java/io/github/overlordsiii/villagernames/mixin/item/NameTagItemMixin.java index cd4805c..c382e60 100644 --- a/src/main/java/io/github/overlordsiii/villagernames/mixin/item/NameTagItemMixin.java +++ b/src/main/java/io/github/overlordsiii/villagernames/mixin/item/NameTagItemMixin.java @@ -21,7 +21,7 @@ @Mixin(NameTagItem.class) public abstract class NameTagItemMixin extends Item { - public NameTagItemMixin(Settings settings) { + public NameTagItemMixin(net.minecraft.item.Item.Settings settings) { super(settings); } diff --git a/src/main/java/io/github/overlordsiii/villagernames/mixin/item/SpawnEggItemMixin.java b/src/main/java/io/github/overlordsiii/villagernames/mixin/item/SpawnEggItemMixin.java index e7e86b8..2afb38d 100644 --- a/src/main/java/io/github/overlordsiii/villagernames/mixin/item/SpawnEggItemMixin.java +++ b/src/main/java/io/github/overlordsiii/villagernames/mixin/item/SpawnEggItemMixin.java @@ -24,7 +24,7 @@ @Mixin(SpawnEggItem.class) public abstract class SpawnEggItemMixin extends Item { - public SpawnEggItemMixin(Settings settings) { + public SpawnEggItemMixin(net.minecraft.item.Item.Settings settings) { super(settings); } From f73059159f5c46d3def3c0e19885c7edae484bd2 Mon Sep 17 00:00:00 2001 From: ChasmSolacer <46286197+ChasmSolacer@users.noreply.github.com> Date: Tue, 17 Jun 2025 18:29:51 +0200 Subject: [PATCH 3/8] Migrate mappings to 1.21.6 --- gradle.properties | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index 327c734..6ec362f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,13 +3,13 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use -minecraft_version=1.21.6-rc1 -yarn_mappings=1.21.6-rc1+build.1 +minecraft_version=1.21.6 +yarn_mappings=1.21.6+build.1 loader_version=0.16.14 loom_version=1.10-SNAPSHOT # Fabric API -fabric_version=0.126.1+1.21.6 +fabric_version=0.127.0+1.21.6 # Mod Properties @@ -18,7 +18,7 @@ maven_group = io.github.overlordsiii archives_base_name=villagernames-1.21 # Dependencies -mod_menu_version=11.0.0-beta.1 +mod_menu_version=15.0.0-beta.1 cloth_config_version=15.0.127 cca_version=6.1.0 midnightlib_version=1.5.7-fabric From 9fa458d7d01f6878df73f2084725ad8fc1a40e91 Mon Sep 17 00:00:00 2001 From: ChasmSolacer <46286197+ChasmSolacer@users.noreply.github.com> Date: Mon, 23 Jun 2025 23:00:00 +0200 Subject: [PATCH 4/8] 4.5.4_1+1.21.6 - Update to 1.21.6 and manage to run the game. - Remove support for Guard Villagers. BUGS: - Villager profession names display as very long code string. - Names list don't expand. - Commands not yet tested. --- build.gradle | 3 +- gradle.properties | 12 ++--- .../villagernames/VillagerNames.java | 4 +- .../command/VillagerNameCommand.java | 41 +++++++------- .../cca/RavagerCounterComponent.java | 30 +++-------- .../GuardVillagersIntegration.java | 3 ++ .../mixin/AbstractPiglinEntityMixin.java | 34 +++++------- .../mixin/VillagerEntityMixin.java | 53 +++++++++---------- .../mixin/ZombieEntityMixin.java | 5 +- .../mixin/ZombieVillagerEntityMixin.java | 39 ++++++-------- .../mixin/guard/GuardEntityMixin.java | 37 ++++++------- .../mixin/illager/RaiderEntityMixin.java | 40 ++++++-------- .../mixin/item/SpawnEggItemMixin.java | 4 +- .../villagernames/util/VillagerUtil.java | 12 ++--- src/main/resources/fabric.mod.json | 5 +- src/main/resources/villagernames.mixins.json | 3 +- 16 files changed, 140 insertions(+), 185 deletions(-) diff --git a/build.gradle b/build.gradle index 55827d0..70471db 100644 --- a/build.gradle +++ b/build.gradle @@ -71,7 +71,8 @@ dependencies { modApi include("org.ladysnake.cardinal-components-api:cardinal-components-level:${project.cca_version}") - modImplementation 'curse.maven:guardvillagers-571503:5427036' + // Guard Villagers mod is out-of-date + //modImplementation 'curse.maven:guardvillagers-571503:5427036' modImplementation "maven.modrinth:midnightlib:${project.midnightlib_version}" diff --git a/gradle.properties b/gradle.properties index 6ec362f..d168a33 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,12 +13,12 @@ fabric_version=0.127.0+1.21.6 # Mod Properties -mod_version = 4.5.4 +mod_version = 4.5.4_1+1.21.6-fabric maven_group = io.github.overlordsiii -archives_base_name=villagernames-1.21 +archives_base_name=villagernames-1.21.6-fabric # Dependencies -mod_menu_version=15.0.0-beta.1 -cloth_config_version=15.0.127 -cca_version=6.1.0 -midnightlib_version=1.5.7-fabric +mod_menu_version=15.0.0-beta.3 +cloth_config_version=19.0.147 +cca_version=7.0.0-beta.1 +midnightlib_version=1.7.5+1.21.6-fabric diff --git a/src/main/java/io/github/overlordsiii/villagernames/VillagerNames.java b/src/main/java/io/github/overlordsiii/villagernames/VillagerNames.java index ea4c8c8..aed29e1 100644 --- a/src/main/java/io/github/overlordsiii/villagernames/VillagerNames.java +++ b/src/main/java/io/github/overlordsiii/villagernames/VillagerNames.java @@ -6,7 +6,7 @@ import io.github.overlordsiii.villagernames.config.VillagerConfig; import io.github.overlordsiii.villagernames.integration.cca.IntComponent; import io.github.overlordsiii.villagernames.integration.cca.RavagerCounterComponent; -import io.github.overlordsiii.villagernames.integration.guardvillagers.GuardVillagersIntegration; +//import io.github.overlordsiii.villagernames.integration.guardvillagers.GuardVillagersIntegration; import io.github.overlordsiii.villagernames.util.NamesLoader; import io.github.overlordsiii.villagernames.util.VillagerUtil; import io.github.overlordsiii.villagernames.util.dev.NameDebugger; @@ -92,7 +92,7 @@ public void onInitialize() { } else if (CONFIG.villagerGeneralConfig.illagerEntityNames && entity instanceof RavagerEntity ravagerEntity) { VillagerUtil.createRavagerNames(serverWorld, ravagerEntity); } else if (FabricLoader.getInstance().isModLoaded("guardvillagers")) { - GuardVillagersIntegration.createGuardVillagerNames(entity); + //GuardVillagersIntegration.createGuardVillagerNames(entity); } else if (entity instanceof CatEntity catEntity) { VillagerUtil.createCatNames(catEntity); VillagerUtil.updateCatNames(catEntity); diff --git a/src/main/java/io/github/overlordsiii/villagernames/command/VillagerNameCommand.java b/src/main/java/io/github/overlordsiii/villagernames/command/VillagerNameCommand.java index e02d801..eb31e07 100644 --- a/src/main/java/io/github/overlordsiii/villagernames/command/VillagerNameCommand.java +++ b/src/main/java/io/github/overlordsiii/villagernames/command/VillagerNameCommand.java @@ -138,11 +138,12 @@ private static int executeSetFormatting(CommandContext ctx, ctx.getSource().sendFeedback(() -> Text.literal(String.format(displayText , FormattingDummy.fromFormatting(newFormatting))) .formatted(newFormatting == Formatting.OBFUSCATED ? Formatting.WHITE : newFormatting).styled(style -> - style.withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND + /*style.withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND , "/villagername set villagerTextFormat " + + FormattingDummy.fromFormatting(newFormatting).toString()))*/ + style.withClickEvent(new ClickEvent.RunCommand("/villagername set villagerTextFormat " + FormattingDummy.fromFormatting(newFormatting).toString())) - .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, - Text.literal(FormattingDummy.fromFormatting(newFormatting) + .withHoverEvent(new HoverEvent.ShowText(Text.literal(FormattingDummy.fromFormatting(newFormatting) .toString()).formatted(newFormatting)))) , true); VillagerNames.CONFIG_MANAGER.save(); @@ -161,11 +162,9 @@ private static int executeSetString(CommandContext ctx, Str } String text = String.format(displayedText, newvalue); ctx.getSource().sendFeedback( () -> Text.literal(text).formatted(Formatting.LIGHT_PURPLE) - .styled(style -> style.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT - , Text.literal( + .styled(style -> style.withHoverEvent(new HoverEvent.ShowText(Text.literal( "/villagername set " + literal + " " + newvalue))) - .withClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND - , "/villagername set " + literal))), true); + .withClickEvent(new ClickEvent.SuggestCommand("/villagername set " + literal))), true); VillagerNames.CONFIG_MANAGER.save(); try { broadCastConfigChangeToOps(ctx, ConfigChange.SET, VillagerGeneralConfig.class.getDeclaredField(literal), ctx.getSource().getPlayer(), null); @@ -191,10 +190,8 @@ private static int executeToggle(CommandContext ctx, String ctx.getSource().sendFeedback(() -> Text.literal(text).formatted(Formatting.YELLOW) .styled(style -> style.withClickEvent( - new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND - , "/villagername toggle " + literal)) - .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT - , Text.literal("Toggle the " + literal + " rule")))), true); + new ClickEvent.SuggestCommand("/villagername toggle " + literal)) + .withHoverEvent(new HoverEvent.ShowText(Text.literal("Toggle the " + literal + " rule")))), true); VillagerNames.CONFIG_MANAGER.save(); try { broadCastConfigChangeToOps(ctx, ConfigChange.TOGGLE, VillagerGeneralConfig.class.getDeclaredField(literal), ctx.getSource().getPlayer(), null); @@ -210,11 +207,9 @@ private static int executeAdd(CommandContext ctx, List Text.literal(text).formatted(Formatting.AQUA) - .styled(style -> style.withHoverEvent(new HoverEvent( - HoverEvent.Action.SHOW_TEXT - , Text.literal("Add an item to the villager or golem list"))) - .withClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND - , "/villagername add " + literal + " " + toAdd))), true); + .styled(style -> style.withHoverEvent(new HoverEvent.ShowText( + Text.literal("Add an item to the villager or golem list"))) + .withClickEvent(new ClickEvent.SuggestCommand("/villagername add " + literal + " " + toAdd))), true); } else{ ctx.getSource().getPlayer().sendMessage( @@ -246,9 +241,9 @@ private static int executeRemove(CommandContext ctx, List Text.literal(text) .formatted(Formatting.GOLD) - .styled(style -> style.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT - , Text.literal("Remove a name from the villager or golem name list"))) - .withClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/villagername remove " + name + " " + toRemove))) + .styled(style -> style.withHoverEvent(new HoverEvent.ShowText( + Text.literal("Remove a name from the villager or golem name list"))) + .withClickEvent(new ClickEvent.SuggestCommand("/villagername remove " + name + " " + toRemove))) , true); } else{ @@ -281,8 +276,8 @@ private static int executeInfo(CommandContext ctx) throws C Text.literal(field.getName() + " = " + field.get(VillagerNames.CONFIG.villagerGeneralConfig).toString()) .styled(style -> style.withClickEvent( FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT ? - new ClickEvent(ClickEvent.Action.OPEN_FILE, FabricLoader.getInstance().getConfigDir() + "\\VillagerNames\\" + "villagerRules.json") - : new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/villagername info"))), false); + new ClickEvent.OpenFile(FabricLoader.getInstance().getConfigDir() + "\\VillagerNames\\" + "villagerRules.json") + : new ClickEvent.SuggestCommand("/villagername info"))), false); } @@ -327,8 +322,8 @@ private static void addConfigText(MutableText text){ .formatted(Formatting.ITALIC, Formatting.GRAY)) .append(Text.literal(" Would you like to restart the server?") .formatted(Formatting.BOLD, Formatting.GOLD).styled(style -> - style.withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/stop")) - .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, + style.withClickEvent(new ClickEvent.RunCommand("/stop")) + .withHoverEvent(new HoverEvent.ShowText( Text.literal("⚠ WARNING! YOU HAVE TO RESTART THE SERVER BY YOURSELF! ⚠").formatted(Formatting.RED))))); } diff --git a/src/main/java/io/github/overlordsiii/villagernames/integration/cca/RavagerCounterComponent.java b/src/main/java/io/github/overlordsiii/villagernames/integration/cca/RavagerCounterComponent.java index 5b4d164..0625cbc 100644 --- a/src/main/java/io/github/overlordsiii/villagernames/integration/cca/RavagerCounterComponent.java +++ b/src/main/java/io/github/overlordsiii/villagernames/integration/cca/RavagerCounterComponent.java @@ -1,8 +1,7 @@ package io.github.overlordsiii.villagernames.integration.cca; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.registry.RegistryWrapper; -import net.minecraft.world.WorldProperties; +import net.minecraft.storage.ReadView; +import net.minecraft.storage.WriteView; public class RavagerCounterComponent implements IntComponent { @@ -19,30 +18,13 @@ public void setValue(int value) { this.value = value; } - /** - * Reads this component's properties from a {@link NbtCompound}. - * - * @param tag a {@code NbtCompound} on which this component's serializable data has been written - * @param registryLookup access to dynamic registry data - * @implNote implementations should not assert that the data written on the tag corresponds to any - * specific scheme, as saved data is susceptible to external tempering, and may come from an earlier - * version. - */ @Override - public void readFromNbt(NbtCompound tag, RegistryWrapper.WrapperLookup registryLookup) { - if (tag.contains("ravagerValue")) { - this.value = tag.getInt("ravagerValue"); - } + public void readData(ReadView view) { + view.getOptionalInt("ravagerValue").ifPresent(value -> this.value = value); } - /** - * Writes this component's properties to a {@link NbtCompound}. - * - * @param tag a {@code NbtCompound} on which to write this component's serializable data - * @param registryLookup access to dynamic registry data - */ @Override - public void writeToNbt(NbtCompound tag, RegistryWrapper.WrapperLookup registryLookup) { - tag.putInt("ravagerValue", this.value); + public void writeData(WriteView view) { + view.putInt("ravagerValue", this.value); } } diff --git a/src/main/java/io/github/overlordsiii/villagernames/integration/guardvillagers/GuardVillagersIntegration.java b/src/main/java/io/github/overlordsiii/villagernames/integration/guardvillagers/GuardVillagersIntegration.java index 785460b..4e8b2e5 100644 --- a/src/main/java/io/github/overlordsiii/villagernames/integration/guardvillagers/GuardVillagersIntegration.java +++ b/src/main/java/io/github/overlordsiii/villagernames/integration/guardvillagers/GuardVillagersIntegration.java @@ -1,3 +1,5 @@ +// Guard Villagers mod is out-of-date +/* package io.github.overlordsiii.villagernames.integration.guardvillagers; import static io.github.overlordsiii.villagernames.VillagerNames.CONFIG; @@ -45,3 +47,4 @@ private static Text getFullNameAsText(GuardEntity entity, boolean configFormatti } +*/ diff --git a/src/main/java/io/github/overlordsiii/villagernames/mixin/AbstractPiglinEntityMixin.java b/src/main/java/io/github/overlordsiii/villagernames/mixin/AbstractPiglinEntityMixin.java index 47e10fc..7945b61 100644 --- a/src/main/java/io/github/overlordsiii/villagernames/mixin/AbstractPiglinEntityMixin.java +++ b/src/main/java/io/github/overlordsiii/villagernames/mixin/AbstractPiglinEntityMixin.java @@ -5,6 +5,8 @@ import java.util.Objects; import io.github.overlordsiii.villagernames.api.PiglinNameManager; +import net.minecraft.storage.ReadView; +import net.minecraft.storage.WriteView; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -84,35 +86,27 @@ public String getFullName() { return fullName; } - @Inject(method = "writeCustomDataToNbt", at = @At("TAIL")) - private void serializeData(NbtCompound tag, CallbackInfo ci) { + @Inject(method = "writeCustomData", at = @At("TAIL")) + private void serializeData(WriteView view, CallbackInfo ci) { if (firstName != null) { - tag.putString("firstName", firstName); + view.putString("firstName", firstName); } if (fullName != null) { - tag.putString("fullName", fullName); + view.putString("fullName", fullName); } if (lastName != null) { - tag.putString("lastName", lastName); + view.putString("lastName", lastName); } if (playerName != null) { - tag.putString("playerName", playerName); + view.putString("playerName", playerName); } } - @Inject(method = "readCustomDataFromNbt", at = @At("TAIL")) - private void deserializeData(NbtCompound tag, CallbackInfo ci) { - if (tag.contains("firstName")) { - this.firstName = tag.getString("firstName"); - } - if (tag.contains("fullName")) { - this.fullName = tag.getString("fullName"); - } - if (tag.contains("lastName")) { - this.lastName = tag.getString("lastName"); - } - if (tag.contains("playerName")) { - this.playerName = tag.getString("playerName"); - } + @Inject(method = "readCustomData", at = @At("TAIL")) + private void deserializeData(ReadView view, CallbackInfo ci) { + view.getOptionalString("firstName").ifPresent(value -> this.firstName = value); + view.getOptionalString("fullName").ifPresent(value -> this.fullName = value); + view.getOptionalString("lastName").ifPresent(value -> this.lastName = value); + view.getOptionalString("playerName").ifPresent(value -> this.playerName = value); } } diff --git a/src/main/java/io/github/overlordsiii/villagernames/mixin/VillagerEntityMixin.java b/src/main/java/io/github/overlordsiii/villagernames/mixin/VillagerEntityMixin.java index 2452976..1583c20 100644 --- a/src/main/java/io/github/overlordsiii/villagernames/mixin/VillagerEntityMixin.java +++ b/src/main/java/io/github/overlordsiii/villagernames/mixin/VillagerEntityMixin.java @@ -10,7 +10,10 @@ import net.minecraft.entity.passive.MerchantEntity; import net.minecraft.entity.passive.VillagerEntity; import net.minecraft.nbt.NbtCompound; -import net.minecraft.text.Text; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.storage.ReadView; +import net.minecraft.storage.WriteView; import net.minecraft.village.VillagerData; import net.minecraft.village.VillagerDataContainer; import net.minecraft.village.VillagerProfession; @@ -21,6 +24,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; import static io.github.overlordsiii.villagernames.VillagerNames.CONFIG; @@ -47,16 +51,16 @@ private void changeText(VillagerData villagerData, CallbackInfo ci){ if (!this.hasCustomName()) { VillagerUtil.createVillagerNames((VillagerEntity) (Object) this); } - if (villagerData.getProfession() != VillagerProfession.NONE && this.hasCustomName()) { + if (villagerData.profession() != VillagerProfession.NONE && this.hasCustomName()) { VillagerUtil.addProfessionName((VillagerEntity) (Object) this); } - if (this.hasCustomName() && villagerData.getProfession() == VillagerProfession.NONE){ + if (this.hasCustomName() && villagerData.profession() == VillagerProfession.NONE){ VillagerUtil.updateLostVillagerProfessionName((VillagerEntity)(Object)this); } } - @Redirect(method = "onStruckByLightning", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/mob/WitchEntity;setCustomName(Lnet/minecraft/text/Text;)V")) - private void redirectWitchConversion(WitchEntity witchEntity, Text name) { + @Inject(method = "method_63666", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/mob/WitchEntity;setPersistent()V"), locals = LocalCapture.CAPTURE_FAILHARD) + private void redirectWitchConversion(ServerWorld serverWorld, WitchEntity witchEntity, CallbackInfo ci) { RaiderNameManager.setFirstName(witchEntity, getFirstName()); if (CONFIG.villagerGeneralConfig.surNames) { @@ -66,6 +70,7 @@ private void redirectWitchConversion(WitchEntity witchEntity, Text name) { if (this.playerName != null) { RaiderNameManager.setPlayerName(witchEntity, this.playerName); } + //return null; } @Redirect(method = "onDeath", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;info(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V")) @@ -86,42 +91,32 @@ private void updateBabyText(CallbackInfo ci){ VillagerUtil.updateGrownUpVillagerName((VillagerEntity)(Object)(this)); } - @Inject(method = "writeCustomDataToNbt", at = @At("TAIL")) - private void serializeData(NbtCompound tag, CallbackInfo ci) { + @Inject(method = "writeCustomData", at = @At("TAIL")) + private void serializeData(WriteView view, CallbackInfo ci) { if (firstName != null) { - tag.putString("firstName", firstName); + view.putString("firstName", firstName); } if (fullName != null) { - tag.putString("fullName", fullName); + view.putString("fullName", fullName); } if (lastName != null) { - tag.putString("lastName", lastName); + view.putString("lastName", lastName); } if (profession != null) { - tag.putString("profession", profession); + view.putString("profession", profession); } if (playerName != null) { - tag.putString("playerName", playerName); + view.putString("playerName", playerName); } } - @Inject(method = "readCustomDataFromNbt", at = @At("TAIL")) - private void deserializeData(NbtCompound tag, CallbackInfo ci) { - if (tag.contains("firstName")) { - this.firstName = tag.getString("firstName"); - } - if (tag.contains("fullName")) { - this.fullName = tag.getString("fullName"); - } - if (tag.contains("lastName")) { - this.lastName = tag.getString("lastName"); - } - if (tag.contains("profession")) { - this.profession = tag.getString("profession"); - } - if (tag.contains("playerName")) { - this.playerName = tag.getString("playerName"); - } + @Inject(method = "readCustomData", at = @At("TAIL")) + private void deserializeData(ReadView view, CallbackInfo ci) { + view.getOptionalString("firstName").ifPresent(value -> this.firstName = value); + view.getOptionalString("fullName").ifPresent(value -> this.fullName = value); + view.getOptionalString("lastName").ifPresent(value -> this.lastName = value); + view.getOptionalString("profession").ifPresent(value -> this.profession = value); + view.getOptionalString("playerName").ifPresent(value -> this.playerName = value); } /** diff --git a/src/main/java/io/github/overlordsiii/villagernames/mixin/ZombieEntityMixin.java b/src/main/java/io/github/overlordsiii/villagernames/mixin/ZombieEntityMixin.java index 2403e53..bf61380 100644 --- a/src/main/java/io/github/overlordsiii/villagernames/mixin/ZombieEntityMixin.java +++ b/src/main/java/io/github/overlordsiii/villagernames/mixin/ZombieEntityMixin.java @@ -23,8 +23,9 @@ protected ZombieEntityMixin(EntityType entityType, Worl super(entityType, world); } - @Inject(method = "onKilledOther", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/mob/ZombieVillagerEntity;initialize(Lnet/minecraft/world/ServerWorldAccess;Lnet/minecraft/world/LocalDifficulty;Lnet/minecraft/entity/SpawnReason;Lnet/minecraft/entity/EntityData;)Lnet/minecraft/entity/EntityData;"), locals = LocalCapture.CAPTURE_FAILHARD) - private void addZombieNameTag(ServerWorld world, LivingEntity other, CallbackInfoReturnable cir, boolean bl, VillagerEntity villagerEntity, ZombieVillagerEntity zombieVillagerEntity){ + // infectVillager + @Inject(method = "method_63655", at = @At(value = "TAIL"), locals = LocalCapture.CAPTURE_FAILHARD) + private void addZombieNameTag(ServerWorld serverWorld, VillagerEntity villagerEntity, ZombieVillagerEntity zombieVillagerEntity, CallbackInfo ci){ VillagerUtil.addZombieVillagerName(villagerEntity, zombieVillagerEntity); } diff --git a/src/main/java/io/github/overlordsiii/villagernames/mixin/ZombieVillagerEntityMixin.java b/src/main/java/io/github/overlordsiii/villagernames/mixin/ZombieVillagerEntityMixin.java index 978ff96..b9fab03 100644 --- a/src/main/java/io/github/overlordsiii/villagernames/mixin/ZombieVillagerEntityMixin.java +++ b/src/main/java/io/github/overlordsiii/villagernames/mixin/ZombieVillagerEntityMixin.java @@ -13,6 +13,8 @@ import net.minecraft.entity.passive.VillagerEntity; import net.minecraft.nbt.NbtCompound; import net.minecraft.server.world.ServerWorld; +import net.minecraft.storage.ReadView; +import net.minecraft.storage.WriteView; import net.minecraft.village.VillagerDataContainer; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; @@ -33,8 +35,9 @@ public ZombieVillagerEntityMixin(EntityType entityType, super(entityType, world); } - @Inject(method = "finishConversion", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/passive/VillagerEntity;initialize(Lnet/minecraft/world/ServerWorldAccess;Lnet/minecraft/world/LocalDifficulty;Lnet/minecraft/entity/SpawnReason;Lnet/minecraft/entity/EntityData;)Lnet/minecraft/entity/EntityData;"), locals = LocalCapture.CAPTURE_FAILEXCEPTION) - private void returnOriginalVillagerName(ServerWorld world, CallbackInfo ci, VillagerEntity villagerEntity) { + // finishConversion + @Inject(method = "method_63659", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/passive/VillagerEntity;initialize(Lnet/minecraft/world/ServerWorldAccess;Lnet/minecraft/world/LocalDifficulty;Lnet/minecraft/entity/SpawnReason;Lnet/minecraft/entity/EntityData;)Lnet/minecraft/entity/EntityData;"), locals = LocalCapture.CAPTURE_FAILEXCEPTION) + private void returnOriginalVillagerName(ServerWorld serverWorld, VillagerEntity villagerEntity, CallbackInfo ci) { VillagerUtil.removeZombieVillagerName(villagerEntity, (ZombieVillagerEntity)(Object)this); } @@ -98,35 +101,27 @@ public String getFullName() { return fullName; } - @Inject(method = "writeCustomDataToNbt", at = @At("TAIL")) - private void serializeData(NbtCompound tag, CallbackInfo ci) { + @Inject(method = "writeCustomData", at = @At("TAIL")) + private void serializeData(WriteView view, CallbackInfo ci) { if (firstName != null) { - tag.putString("firstName", firstName); + view.putString("firstName", firstName); } if (fullName != null) { - tag.putString("fullName", fullName); + view.putString("fullName", fullName); } if (lastName != null) { - tag.putString("lastName", lastName); + view.putString("lastName", lastName); } if (playerName != null) { - tag.putString("playerName", playerName); + view.putString("playerName", playerName); } } - @Inject(method = "readCustomDataFromNbt", at = @At("TAIL")) - private void deserializeData(NbtCompound tag, CallbackInfo ci) { - if (tag.contains("firstName")) { - this.firstName = tag.getString("firstName"); - } - if (tag.contains("fullName")) { - this.fullName = tag.getString("fullName"); - } - if (tag.contains("lastName")) { - this.lastName = tag.getString("lastName"); - } - if (tag.contains("playerName")) { - this.playerName = tag.getString("playerName"); - } + @Inject(method = "readCustomData", at = @At("TAIL")) + private void deserializeData(ReadView view, CallbackInfo ci) { + view.getOptionalString("firstName").ifPresent(value -> this.firstName = value); + view.getOptionalString("fullName").ifPresent(value -> this.fullName = value); + view.getOptionalString("lastName").ifPresent(value -> this.lastName = value); + view.getOptionalString("playerName").ifPresent(value -> this.playerName = value); } } diff --git a/src/main/java/io/github/overlordsiii/villagernames/mixin/guard/GuardEntityMixin.java b/src/main/java/io/github/overlordsiii/villagernames/mixin/guard/GuardEntityMixin.java index 798f5c9..619c14d 100644 --- a/src/main/java/io/github/overlordsiii/villagernames/mixin/guard/GuardEntityMixin.java +++ b/src/main/java/io/github/overlordsiii/villagernames/mixin/guard/GuardEntityMixin.java @@ -1,3 +1,5 @@ +// Guard Villagers mod is out-of-date +/* package io.github.overlordsiii.villagernames.mixin.guard; import static io.github.overlordsiii.villagernames.VillagerNames.CONFIG; @@ -6,6 +8,8 @@ import dev.sterner.guardvillagers.common.entity.GuardEntity; import io.github.overlordsiii.villagernames.api.DefaultNameManager; +import net.minecraft.storage.ReadView; +import net.minecraft.storage.WriteView; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -96,37 +100,30 @@ public String getFullName() { return fullName; } - @Inject(method = "writeCustomDataToNbt", at = @At("TAIL")) - private void serializeData(NbtCompound tag, CallbackInfo ci) { + @Inject(method = "writeCustomData", at = @At("TAIL")) + private void serializeData(WriteView view, CallbackInfo ci) { if (firstName != null) { - tag.putString("firstName", firstName); + view.putString("firstName", firstName); } if (fullName != null) { - tag.putString("fullName", fullName); + view.putString("fullName", fullName); } if (lastName != null) { - tag.putString("lastName", lastName); + view.putString("lastName", lastName); } if (playerName != null) { - tag.putString("playerName", playerName); + view.putString("playerName", playerName); } } - @Inject(method = "readCustomDataFromNbt", at = @At("TAIL")) - private void deserializeData(NbtCompound tag, CallbackInfo ci) { - if (tag.contains("firstName")) { - this.firstName = tag.getString("firstName"); - } - if (tag.contains("fullName")) { - this.fullName = tag.getString("fullName"); - } - if (tag.contains("lastName")) { - this.lastName = tag.getString("lastName"); - } - if (tag.contains("playerName")) { - this.playerName = tag.getString("playerName"); - } + @Inject(method = "readCustomData", at = @At("TAIL")) + private void deserializeData(ReadView view, CallbackInfo ci) { + view.getOptionalString("firstName").ifPresent(value -> this.firstName = value); + view.getOptionalString("fullName").ifPresent(value -> this.fullName = value); + view.getOptionalString("lastName").ifPresent(value -> this.lastName = value); + view.getOptionalString("playerName").ifPresent(value -> this.playerName = value); } } +*/ diff --git a/src/main/java/io/github/overlordsiii/villagernames/mixin/illager/RaiderEntityMixin.java b/src/main/java/io/github/overlordsiii/villagernames/mixin/illager/RaiderEntityMixin.java index 72407b7..58e0858 100644 --- a/src/main/java/io/github/overlordsiii/villagernames/mixin/illager/RaiderEntityMixin.java +++ b/src/main/java/io/github/overlordsiii/villagernames/mixin/illager/RaiderEntityMixin.java @@ -5,6 +5,8 @@ import java.util.Objects; import io.github.overlordsiii.villagernames.api.RaiderNameManager; +import net.minecraft.storage.ReadView; +import net.minecraft.storage.WriteView; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -183,41 +185,31 @@ public void updateFullName() { this.fullName = builder.toString(); } - @Inject(method = "writeCustomDataToNbt", at = @At("TAIL")) - private void serializeData(NbtCompound tag, CallbackInfo ci) { + @Inject(method = "writeCustomData", at = @At("TAIL")) + private void serializeData(WriteView view, CallbackInfo ci) { if (firstName != null) { - tag.putString("firstName", firstName); + view.putString("firstName", firstName); } if (fullName != null) { - tag.putString("fullName", fullName); + view.putString("fullName", fullName); } if (lastName != null) { - tag.putString("lastName", lastName); + view.putString("lastName", lastName); } if (title != null) { - tag.putString("title", title); + view.putString("title", title); } if (playerName != null) { - tag.putString("playerName", playerName); + view.putString("playerName", playerName); } } - @Inject(method = "readCustomDataFromNbt", at = @At("TAIL")) - private void deserializeData(NbtCompound tag, CallbackInfo ci) { - if (tag.contains("firstName")) { - this.firstName = tag.getString("firstName"); - } - if (tag.contains("fullName")) { - this.fullName = tag.getString("fullName"); - } - if (tag.contains("lastName")) { - this.lastName = tag.getString("lastName"); - } - if (tag.contains("title")) { - this.title = tag.getString("title"); - } - if (tag.contains("playerName")) { - this.playerName = tag.getString("playerName"); - } + @Inject(method = "readCustomData", at = @At("TAIL")) + private void deserializeData(ReadView view, CallbackInfo ci) { + view.getOptionalString("firstName").ifPresent(value -> this.firstName = value); + view.getOptionalString("fullName").ifPresent(value -> this.fullName = value); + view.getOptionalString("lastName").ifPresent(value -> this.lastName = value); + view.getOptionalString("title").ifPresent(value -> this.title = value); + view.getOptionalString("playerName").ifPresent(value -> this.playerName = value); } } diff --git a/src/main/java/io/github/overlordsiii/villagernames/mixin/item/SpawnEggItemMixin.java b/src/main/java/io/github/overlordsiii/villagernames/mixin/item/SpawnEggItemMixin.java index 2afb38d..7542ddd 100644 --- a/src/main/java/io/github/overlordsiii/villagernames/mixin/item/SpawnEggItemMixin.java +++ b/src/main/java/io/github/overlordsiii/villagernames/mixin/item/SpawnEggItemMixin.java @@ -28,8 +28,8 @@ public SpawnEggItemMixin(net.minecraft.item.Item.Settings settings) { super(settings); } - @Inject(method = "spawnBaby", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/mob/MobEntity;setCustomName(Lnet/minecraft/text/Text;)V"), locals = LocalCapture.CAPTURE_FAILHARD) - private void spawnBabyInject(PlayerEntity user, MobEntity entity, EntityType entityType, ServerWorld world, Vec3d pos, ItemStack stack, CallbackInfoReturnable cir, MobEntity mobEntity) { + @Inject(method = "spawnBaby", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;decrementUnlessCreative(ILnet/minecraft/entity/LivingEntity;)V"), locals = LocalCapture.CAPTURE_FAILHARD) + private void spawnBabyInject(PlayerEntity user, MobEntity entity, EntityType entityType, ServerWorld world, Vec3d pos, ItemStack stack, CallbackInfoReturnable> cir, MobEntity mobEntity) { String stackName = stack.getName().getString(); if (mobEntity instanceof DefaultNameManager manager) { diff --git a/src/main/java/io/github/overlordsiii/villagernames/util/VillagerUtil.java b/src/main/java/io/github/overlordsiii/villagernames/util/VillagerUtil.java index 434a167..e9fcba5 100644 --- a/src/main/java/io/github/overlordsiii/villagernames/util/VillagerUtil.java +++ b/src/main/java/io/github/overlordsiii/villagernames/util/VillagerUtil.java @@ -111,8 +111,8 @@ public static void createVillagerNames(VillagerEntity entity){ if (CONFIG.villagerGeneralConfig.surNames) { VillagerNameManager.setLastName(entity, generateRandomSurname()); } - if (entity.getVillagerData().getProfession() != VillagerProfession.NONE && CONFIG.villagerGeneralConfig.professionNames){ - VillagerNameManager.setProfessionName(VillagerProfession.NITWIT == entity.getVillagerData().getProfession() ? CONFIG.villagerGeneralConfig.nitwitText : upperFirstLetter(entity.getVillagerData().getProfession().toString()), entity); + if (entity.getVillagerData().profession() != VillagerProfession.NONE && CONFIG.villagerGeneralConfig.professionNames){ + VillagerNameManager.setProfessionName(VillagerProfession.NITWIT == entity.getVillagerData().profession() ? CONFIG.villagerGeneralConfig.nitwitText : upperFirstLetter(entity.getVillagerData().profession().toString()), entity); entity.setCustomName(VillagerNameManager.getFullNameAsText(entity, true)); entity.setCustomNameVisible(!CONFIG.villagerGeneralConfig.nameTagNames); @@ -161,7 +161,7 @@ public static void addProfessionName(VillagerEntity entity){ // this is done bc this is called before villagers are loaded by server, so villagers with professions will just dissapear unless they are parsed correctly generalVillagerUpdate(entity); if (VillagerNameManager.getProfessionName(entity) == null && CONFIG.villagerGeneralConfig.professionNames) { - VillagerNameManager.setProfessionName(upperFirstLetter(entity.getVillagerData().getProfession().toString()), entity); + VillagerNameManager.setProfessionName(upperFirstLetter(entity.getVillagerData().profession().toString()), entity); } entity.setCustomName(VillagerNameManager.getFullNameAsText(entity, true)); entity.setCustomNameVisible(!CONFIG.villagerGeneralConfig.nameTagNames); @@ -322,7 +322,7 @@ public static void generalVillagerUpdate(VillagerEntity entity){ entity.setCustomName(VillagerNameManager.getFullNameAsText(entity, true)); - if (entity.getVillagerData().getProfession() == VillagerProfession.NITWIT && !entity.getCustomName().getString().contains(CONFIG.villagerGeneralConfig.nitwitText)){ // update if villager is nitwit and nitwit text changed + if (entity.getVillagerData().profession() == VillagerProfession.NITWIT && !entity.getCustomName().getString().contains(CONFIG.villagerGeneralConfig.nitwitText)){ // update if villager is nitwit and nitwit text changed VillagerNameManager.setProfessionName(CONFIG.villagerGeneralConfig.nitwitText, entity); entity.setCustomName(VillagerNameManager.getFullNameAsText(entity, true)); } @@ -331,8 +331,8 @@ public static void generalVillagerUpdate(VillagerEntity entity){ VillagerNameManager.setProfessionName(null, entity); } } else { - if (entity.getVillagerData().getProfession() != VillagerProfession.NONE && !entity.isBaby()) { - VillagerNameManager.setProfessionName(upperFirstLetter(entity.getVillagerData().getProfession().toString()), entity); + if (entity.getVillagerData().profession() != VillagerProfession.NONE && !entity.isBaby()) { + VillagerNameManager.setProfessionName(upperFirstLetter(entity.getVillagerData().profession().toString()), entity); } } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 9ab8cce..02bf2e8 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -30,9 +30,10 @@ "villagernames.mixins.json" ], "depends": { - "fabricloader": ">=0.10.3+build.211", + "fabricloader": ">=0.16.14", "fabric-api": "*", - "minecraft": "1.21.x" + "java": ">=21", + "minecraft": "~1.21.6" }, "custom": { "cardinal-components": [ diff --git a/src/main/resources/villagernames.mixins.json b/src/main/resources/villagernames.mixins.json index 416d263..9663625 100644 --- a/src/main/resources/villagernames.mixins.json +++ b/src/main/resources/villagernames.mixins.json @@ -13,8 +13,7 @@ "illager.RaiderEntityMixin", "illager.RaidMixin", "item.NameTagItemMixin", - "item.SpawnEggItemMixin", - "guard.GuardEntityMixin" + "item.SpawnEggItemMixin" ], "client": [ "SelectionListEntryMixin" From 2adc64920e3b34158ffe17be23c2e561f86a607a Mon Sep 17 00:00:00 2001 From: ChasmSolacer <46286197+ChasmSolacer@users.noreply.github.com> Date: Mon, 23 Jun 2025 23:32:42 +0200 Subject: [PATCH 5/8] 4.5.4_2+1.21.6 - Villager profession names display properly. --- gradle.properties | 2 +- .../overlordsiii/villagernames/util/VillagerUtil.java | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index d168a33..a42e286 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,7 +13,7 @@ fabric_version=0.127.0+1.21.6 # Mod Properties -mod_version = 4.5.4_1+1.21.6-fabric +mod_version = 4.5.4_2+1.21.6-fabric maven_group = io.github.overlordsiii archives_base_name=villagernames-1.21.6-fabric diff --git a/src/main/java/io/github/overlordsiii/villagernames/util/VillagerUtil.java b/src/main/java/io/github/overlordsiii/villagernames/util/VillagerUtil.java index e9fcba5..5405044 100644 --- a/src/main/java/io/github/overlordsiii/villagernames/util/VillagerUtil.java +++ b/src/main/java/io/github/overlordsiii/villagernames/util/VillagerUtil.java @@ -25,6 +25,7 @@ import net.minecraft.entity.raid.RaiderEntity; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; +import net.minecraft.util.Identifier; import net.minecraft.village.VillagerProfession; @@ -112,7 +113,9 @@ public static void createVillagerNames(VillagerEntity entity){ VillagerNameManager.setLastName(entity, generateRandomSurname()); } if (entity.getVillagerData().profession() != VillagerProfession.NONE && CONFIG.villagerGeneralConfig.professionNames){ - VillagerNameManager.setProfessionName(VillagerProfession.NITWIT == entity.getVillagerData().profession() ? CONFIG.villagerGeneralConfig.nitwitText : upperFirstLetter(entity.getVillagerData().profession().toString()), entity); + Identifier prof_identifier = Identifier.of(entity.getVillagerData().profession().getIdAsString()); + String prof_idstring = entity.getVillagerData().profession().value().id().getString(); + VillagerNameManager.setProfessionName(VillagerProfession.NITWIT == entity.getVillagerData().profession() ? CONFIG.villagerGeneralConfig.nitwitText : upperFirstLetter(entity.getVillagerData().profession().value().id().getString()), entity); entity.setCustomName(VillagerNameManager.getFullNameAsText(entity, true)); entity.setCustomNameVisible(!CONFIG.villagerGeneralConfig.nameTagNames); @@ -161,7 +164,7 @@ public static void addProfessionName(VillagerEntity entity){ // this is done bc this is called before villagers are loaded by server, so villagers with professions will just dissapear unless they are parsed correctly generalVillagerUpdate(entity); if (VillagerNameManager.getProfessionName(entity) == null && CONFIG.villagerGeneralConfig.professionNames) { - VillagerNameManager.setProfessionName(upperFirstLetter(entity.getVillagerData().profession().toString()), entity); + VillagerNameManager.setProfessionName(upperFirstLetter(entity.getVillagerData().profession().value().id().getString()), entity); } entity.setCustomName(VillagerNameManager.getFullNameAsText(entity, true)); entity.setCustomNameVisible(!CONFIG.villagerGeneralConfig.nameTagNames); @@ -332,7 +335,7 @@ public static void generalVillagerUpdate(VillagerEntity entity){ } } else { if (entity.getVillagerData().profession() != VillagerProfession.NONE && !entity.isBaby()) { - VillagerNameManager.setProfessionName(upperFirstLetter(entity.getVillagerData().profession().toString()), entity); + VillagerNameManager.setProfessionName(upperFirstLetter(entity.getVillagerData().profession().value().id().getString()), entity); } } From bf472d7de1bf0b94e313b9ed7bbb40f46107bf35 Mon Sep 17 00:00:00 2001 From: ChasmSolacer <46286197+ChasmSolacer@users.noreply.github.com> Date: Tue, 24 Jun 2025 00:59:19 +0200 Subject: [PATCH 6/8] 4.5.4_3+1.21.6 - Attempt to stop displaying NONE profession but failed. - Commands work with console spam after /villagerNames info --- gradle.properties | 2 +- .../villagernames/mixin/VillagerEntityMixin.java | 4 ++-- .../villagernames/util/VillagerUtil.java | 16 ++++++++++------ 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/gradle.properties b/gradle.properties index a42e286..e42b8f8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,7 +13,7 @@ fabric_version=0.127.0+1.21.6 # Mod Properties -mod_version = 4.5.4_2+1.21.6-fabric +mod_version = 4.5.4_3+1.21.6-fabric maven_group = io.github.overlordsiii archives_base_name=villagernames-1.21.6-fabric diff --git a/src/main/java/io/github/overlordsiii/villagernames/mixin/VillagerEntityMixin.java b/src/main/java/io/github/overlordsiii/villagernames/mixin/VillagerEntityMixin.java index 1583c20..eb6121a 100644 --- a/src/main/java/io/github/overlordsiii/villagernames/mixin/VillagerEntityMixin.java +++ b/src/main/java/io/github/overlordsiii/villagernames/mixin/VillagerEntityMixin.java @@ -51,10 +51,10 @@ private void changeText(VillagerData villagerData, CallbackInfo ci){ if (!this.hasCustomName()) { VillagerUtil.createVillagerNames((VillagerEntity) (Object) this); } - if (villagerData.profession() != VillagerProfession.NONE && this.hasCustomName()) { + if (villagerData.profession().getKey().get().getValue().toString() != VillagerProfession.NONE.getValue().toString() && this.hasCustomName()) { VillagerUtil.addProfessionName((VillagerEntity) (Object) this); } - if (this.hasCustomName() && villagerData.profession() == VillagerProfession.NONE){ + if (this.hasCustomName() && villagerData.profession().getKey().get().getValue().toString() == VillagerProfession.NONE.getValue().toString()){ VillagerUtil.updateLostVillagerProfessionName((VillagerEntity)(Object)this); } } diff --git a/src/main/java/io/github/overlordsiii/villagernames/util/VillagerUtil.java b/src/main/java/io/github/overlordsiii/villagernames/util/VillagerUtil.java index 5405044..5096d99 100644 --- a/src/main/java/io/github/overlordsiii/villagernames/util/VillagerUtil.java +++ b/src/main/java/io/github/overlordsiii/villagernames/util/VillagerUtil.java @@ -112,10 +112,14 @@ public static void createVillagerNames(VillagerEntity entity){ if (CONFIG.villagerGeneralConfig.surNames) { VillagerNameManager.setLastName(entity, generateRandomSurname()); } - if (entity.getVillagerData().profession() != VillagerProfession.NONE && CONFIG.villagerGeneralConfig.professionNames){ - Identifier prof_identifier = Identifier.of(entity.getVillagerData().profession().getIdAsString()); - String prof_idstring = entity.getVillagerData().profession().value().id().getString(); - VillagerNameManager.setProfessionName(VillagerProfession.NITWIT == entity.getVillagerData().profession() ? CONFIG.villagerGeneralConfig.nitwitText : upperFirstLetter(entity.getVillagerData().profession().value().id().getString()), entity); + // If professions are displayed and the villager has a profession other than Villager (none) + if (CONFIG.villagerGeneralConfig.professionNames && entity.getVillagerData().profession().getKey().isPresent() && + entity.getVillagerData().profession().getKey().get().getValue().toString() != VillagerProfession.NONE.getValue().toString()){ + // Set profession name to nitwitText or actual profession name + VillagerNameManager.setProfessionName( + entity.getVillagerData().profession().getKey().get().getValue().toString() == VillagerProfession.NITWIT.getValue().toString() ? + CONFIG.villagerGeneralConfig.nitwitText : + upperFirstLetter(entity.getVillagerData().profession().value().id().getString()), entity); entity.setCustomName(VillagerNameManager.getFullNameAsText(entity, true)); entity.setCustomNameVisible(!CONFIG.villagerGeneralConfig.nameTagNames); @@ -325,7 +329,7 @@ public static void generalVillagerUpdate(VillagerEntity entity){ entity.setCustomName(VillagerNameManager.getFullNameAsText(entity, true)); - if (entity.getVillagerData().profession() == VillagerProfession.NITWIT && !entity.getCustomName().getString().contains(CONFIG.villagerGeneralConfig.nitwitText)){ // update if villager is nitwit and nitwit text changed + if (entity.getVillagerData().profession().getKey().get().getValue().toString() == VillagerProfession.NITWIT.getValue().toString() && !entity.getCustomName().getString().contains(CONFIG.villagerGeneralConfig.nitwitText)){ // update if villager is nitwit and nitwit text changed VillagerNameManager.setProfessionName(CONFIG.villagerGeneralConfig.nitwitText, entity); entity.setCustomName(VillagerNameManager.getFullNameAsText(entity, true)); } @@ -334,7 +338,7 @@ public static void generalVillagerUpdate(VillagerEntity entity){ VillagerNameManager.setProfessionName(null, entity); } } else { - if (entity.getVillagerData().profession() != VillagerProfession.NONE && !entity.isBaby()) { + if (entity.getVillagerData().profession().getKey().get().getValue().toString() != VillagerProfession.NONE.getValue().toString() && !entity.isBaby()) { VillagerNameManager.setProfessionName(upperFirstLetter(entity.getVillagerData().profession().value().id().getString()), entity); } } From 06b21f6d366c6a4953eb6f94841895e3f5030780 Mon Sep 17 00:00:00 2001 From: ChasmSolacer <46286197+ChasmSolacer@users.noreply.github.com> Date: Tue, 24 Jun 2025 19:53:14 +0200 Subject: [PATCH 7/8] 4.5.4_4+1.21.6 - Update to 1.21.6 finished (without Guard Villagers support). - NONE profession doesn't display anymore. - Sometimes Villagers have player name Villager Spawn Egg (in English), not sure if the bug was present before. --- gradle.properties | 2 +- .../mixin/VillagerEntityMixin.java | 4 +-- .../villagernames/util/VillagerUtil.java | 31 +++++++++++++------ 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/gradle.properties b/gradle.properties index e42b8f8..7666680 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,7 +13,7 @@ fabric_version=0.127.0+1.21.6 # Mod Properties -mod_version = 4.5.4_3+1.21.6-fabric +mod_version = 4.5.4_4+1.21.6-fabric maven_group = io.github.overlordsiii archives_base_name=villagernames-1.21.6-fabric diff --git a/src/main/java/io/github/overlordsiii/villagernames/mixin/VillagerEntityMixin.java b/src/main/java/io/github/overlordsiii/villagernames/mixin/VillagerEntityMixin.java index eb6121a..8b88ae4 100644 --- a/src/main/java/io/github/overlordsiii/villagernames/mixin/VillagerEntityMixin.java +++ b/src/main/java/io/github/overlordsiii/villagernames/mixin/VillagerEntityMixin.java @@ -51,10 +51,10 @@ private void changeText(VillagerData villagerData, CallbackInfo ci){ if (!this.hasCustomName()) { VillagerUtil.createVillagerNames((VillagerEntity) (Object) this); } - if (villagerData.profession().getKey().get().getValue().toString() != VillagerProfession.NONE.getValue().toString() && this.hasCustomName()) { + if (!VillagerUtil.getProfIdFromEntry(villagerData.profession()).equals(VillagerProfession.NONE.getValue().toString()) && this.hasCustomName()) { VillagerUtil.addProfessionName((VillagerEntity) (Object) this); } - if (this.hasCustomName() && villagerData.profession().getKey().get().getValue().toString() == VillagerProfession.NONE.getValue().toString()){ + if (this.hasCustomName() && VillagerUtil.getProfIdFromEntry(villagerData.profession()).equals(VillagerProfession.NONE.getValue().toString())){ VillagerUtil.updateLostVillagerProfessionName((VillagerEntity)(Object)this); } } diff --git a/src/main/java/io/github/overlordsiii/villagernames/util/VillagerUtil.java b/src/main/java/io/github/overlordsiii/villagernames/util/VillagerUtil.java index 5096d99..bbffc39 100644 --- a/src/main/java/io/github/overlordsiii/villagernames/util/VillagerUtil.java +++ b/src/main/java/io/github/overlordsiii/villagernames/util/VillagerUtil.java @@ -23,9 +23,9 @@ import net.minecraft.entity.passive.VillagerEntity; import net.minecraft.entity.passive.WanderingTraderEntity; import net.minecraft.entity.raid.RaiderEntity; +import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; import net.minecraft.village.VillagerProfession; @@ -69,6 +69,14 @@ public static String pickRandomName(NamesConfig namesConfig) { return names.get(index); } + public static String getProfIdFromEntry(RegistryEntry profession) { + return profession.getKey().get().getValue().toString(); + } + + public static String getProfNameFromEntry(RegistryEntry profession) { + return profession.value().id().getString(); + } + private static String generateWanderingTraderName(){ if (CONFIG.villagerGeneralConfig.surNames) { if (CONFIG.villagerGeneralConfig.reverseLastNames) { @@ -114,12 +122,12 @@ public static void createVillagerNames(VillagerEntity entity){ } // If professions are displayed and the villager has a profession other than Villager (none) if (CONFIG.villagerGeneralConfig.professionNames && entity.getVillagerData().profession().getKey().isPresent() && - entity.getVillagerData().profession().getKey().get().getValue().toString() != VillagerProfession.NONE.getValue().toString()){ + !VillagerUtil.getProfIdFromEntry(entity.getVillagerData().profession()).equals(VillagerProfession.NONE.getValue().toString())){ // Set profession name to nitwitText or actual profession name VillagerNameManager.setProfessionName( - entity.getVillagerData().profession().getKey().get().getValue().toString() == VillagerProfession.NITWIT.getValue().toString() ? + VillagerUtil.getProfIdFromEntry(entity.getVillagerData().profession()).equals(VillagerProfession.NITWIT.getValue().toString()) ? CONFIG.villagerGeneralConfig.nitwitText : - upperFirstLetter(entity.getVillagerData().profession().value().id().getString()), entity); + upperFirstLetter(getProfNameFromEntry(entity.getVillagerData().profession())), entity); entity.setCustomName(VillagerNameManager.getFullNameAsText(entity, true)); entity.setCustomNameVisible(!CONFIG.villagerGeneralConfig.nameTagNames); @@ -165,10 +173,10 @@ public static void createCatNames(CatEntity catEntity) { public static void addProfessionName(VillagerEntity entity){ - // this is done bc this is called before villagers are loaded by server, so villagers with professions will just dissapear unless they are parsed correctly + // this is done bc this is called before villagers are loaded by server, so villagers with professions will just disappear unless they are parsed correctly generalVillagerUpdate(entity); if (VillagerNameManager.getProfessionName(entity) == null && CONFIG.villagerGeneralConfig.professionNames) { - VillagerNameManager.setProfessionName(upperFirstLetter(entity.getVillagerData().profession().value().id().getString()), entity); + VillagerNameManager.setProfessionName(upperFirstLetter(getProfNameFromEntry(entity.getVillagerData().profession())), entity); } entity.setCustomName(VillagerNameManager.getFullNameAsText(entity, true)); entity.setCustomNameVisible(!CONFIG.villagerGeneralConfig.nameTagNames); @@ -206,6 +214,7 @@ public static void addZombieVillagerName(VillagerEntity villagerEntity, ZombieVi public static void removeZombieVillagerName(VillagerEntity villagerEntity, ZombieVillagerEntity zombieVillagerEntity){ if (zombieVillagerEntity.hasCustomName()){ if (ZombieVillagerNameManager.getFirstName(zombieVillagerEntity) == null) { + //noinspection DataFlowIssue String[] components = zombieVillagerEntity.getCustomName().getString().split("\\s+"); String firstNameParsed = components[0]; String lastNameParsed = null; @@ -288,6 +297,7 @@ public static void generalVillagerUpdate(VillagerEntity entity){ // so to update, we'll have to parse the name and put it in our version of the villager names //TODO this ^ + //noinspection DataFlowIssue String[] nameComponents = entity.getCustomName().getString().split("\\s+"); if (nameComponents.length == 0) { return; // should never happen @@ -329,7 +339,9 @@ public static void generalVillagerUpdate(VillagerEntity entity){ entity.setCustomName(VillagerNameManager.getFullNameAsText(entity, true)); - if (entity.getVillagerData().profession().getKey().get().getValue().toString() == VillagerProfession.NITWIT.getValue().toString() && !entity.getCustomName().getString().contains(CONFIG.villagerGeneralConfig.nitwitText)){ // update if villager is nitwit and nitwit text changed + // Update if villager is Nitwit and nitwit text changed + //noinspection DataFlowIssue + if (VillagerUtil.getProfIdFromEntry(entity.getVillagerData().profession()).equals(VillagerProfession.NITWIT.getValue().toString()) && !entity.getCustomName().getString().contains(CONFIG.villagerGeneralConfig.nitwitText)) { VillagerNameManager.setProfessionName(CONFIG.villagerGeneralConfig.nitwitText, entity); entity.setCustomName(VillagerNameManager.getFullNameAsText(entity, true)); } @@ -338,8 +350,8 @@ public static void generalVillagerUpdate(VillagerEntity entity){ VillagerNameManager.setProfessionName(null, entity); } } else { - if (entity.getVillagerData().profession().getKey().get().getValue().toString() != VillagerProfession.NONE.getValue().toString() && !entity.isBaby()) { - VillagerNameManager.setProfessionName(upperFirstLetter(entity.getVillagerData().profession().value().id().getString()), entity); + if (!VillagerUtil.getProfIdFromEntry(entity.getVillagerData().profession()).equals(VillagerProfession.NONE.getValue().toString()) && !entity.isBaby()) { + VillagerNameManager.setProfessionName(upperFirstLetter(getProfNameFromEntry(entity.getVillagerData().profession())), entity); } } @@ -356,6 +368,7 @@ public static void createWanderingTraderNames(WanderingTraderEntity entity){ public static void updateWanderingTraderNames(WanderingTraderEntity entity){ if (entity.hasCustomName()) { + //noinspection DataFlowIssue if (entity.getCustomName().getString().contains(" the ")) { String fullName = Objects.requireNonNull(entity.getCustomName()).getString(); String firstName = fullName.substring(0, fullName.indexOf(" the ")); From 0677907d518cb7f176dcd047fec524ace1fa4688 Mon Sep 17 00:00:00 2001 From: ChasmSolacer <46286197+ChasmSolacer@users.noreply.github.com> Date: Tue, 24 Jun 2025 21:21:12 +0200 Subject: [PATCH 8/8] 4.5.4_5+1.21.6 (Probably the last commit to this branch) - Update Gradle to 8.14.2 to prevent gradlew build crashing. - Mod properties cleanup. --- gradle.properties | 4 ++-- gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index 7666680..7d62f2e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,9 +13,9 @@ fabric_version=0.127.0+1.21.6 # Mod Properties -mod_version = 4.5.4_4+1.21.6-fabric +mod_version = 4.5.4_5+1.21.6 maven_group = io.github.overlordsiii -archives_base_name=villagernames-1.21.6-fabric +archives_base_name=villagernames-fabric # Dependencies mod_menu_version=15.0.0-beta.3 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5c5daa8..64bab31 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,4 +1,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip