From 0a0907ee7c426663858e36812ad815cea4e399ee Mon Sep 17 00:00:00 2001 From: Kaupenjoe Date: Sun, 19 Jan 2025 20:44:21 +0100 Subject: [PATCH] custom villager type --- gradle.properties | 2 +- .../kaupenjoe/tutorialmod/TutorialMod.java | 3 ++ .../tutorialmod/villager/ModVillagers.java | 33 ++++++++++++++++++ .../assets/tutorialmod/lang/en_us.json | 2 ++ .../entity/villager/profession/kaupenger.png | Bin 0 -> 1094 bytes .../acquirable_job_site.json | 9 +++++ 6 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 src/main/java/net/kaupenjoe/tutorialmod/villager/ModVillagers.java create mode 100644 src/main/resources/assets/tutorialmod/textures/entity/villager/profession/kaupenger.png create mode 100644 src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json diff --git a/gradle.properties b/gradle.properties index 9df0c1f..1bdbca5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,7 +18,7 @@ minecraft_version=1.21.1 # as they do not follow standard versioning conventions. minecraft_version_range=[1.21,1.21.2) # The Neo version must agree with the Minecraft version to get a valid artifact -neo_version=21.1.68 +neo_version=21.1.93 # The Neo version range can use any version of Neo as bounds neo_version_range=[21.0.0-beta,) # The loader version range can only use the major version of FML as bounds diff --git a/src/main/java/net/kaupenjoe/tutorialmod/TutorialMod.java b/src/main/java/net/kaupenjoe/tutorialmod/TutorialMod.java index 5f12037..7a0c891 100644 --- a/src/main/java/net/kaupenjoe/tutorialmod/TutorialMod.java +++ b/src/main/java/net/kaupenjoe/tutorialmod/TutorialMod.java @@ -13,6 +13,7 @@ import net.kaupenjoe.tutorialmod.potion.ModPotions; import net.kaupenjoe.tutorialmod.sound.ModSounds; import net.kaupenjoe.tutorialmod.util.ModItemProperties; +import net.kaupenjoe.tutorialmod.villager.ModVillagers; import net.minecraft.client.renderer.entity.EntityRenderers; import net.minecraft.world.item.CreativeModeTabs; import org.slf4j.Logger; @@ -63,6 +64,8 @@ public TutorialMod(IEventBus modEventBus, ModContainer modContainer) { ModEnchantmentEffects.register(modEventBus); ModEntities.register(modEventBus); + ModVillagers.register(modEventBus); + // Register the item to a creative tab modEventBus.addListener(this::addCreative); // Register our mod's ModConfigSpec so that FML can create and load the config file for us diff --git a/src/main/java/net/kaupenjoe/tutorialmod/villager/ModVillagers.java b/src/main/java/net/kaupenjoe/tutorialmod/villager/ModVillagers.java new file mode 100644 index 0000000..c9abbd6 --- /dev/null +++ b/src/main/java/net/kaupenjoe/tutorialmod/villager/ModVillagers.java @@ -0,0 +1,33 @@ +package net.kaupenjoe.tutorialmod.villager; + +import com.google.common.collect.ImmutableSet; +import net.kaupenjoe.tutorialmod.TutorialMod; +import net.kaupenjoe.tutorialmod.block.ModBlocks; +import net.kaupenjoe.tutorialmod.sound.ModSounds; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.entity.ai.village.poi.PoiType; +import net.minecraft.world.entity.npc.VillagerProfession; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredRegister; + +public class ModVillagers { + public static final DeferredRegister POI_TYPES = + DeferredRegister.create(BuiltInRegistries.POINT_OF_INTEREST_TYPE, TutorialMod.MOD_ID); + public static final DeferredRegister VILLAGER_PROFESSIONS = + DeferredRegister.create(BuiltInRegistries.VILLAGER_PROFESSION, TutorialMod.MOD_ID); + + public static final Holder KAUPEN_POI = POI_TYPES.register("kaupen_poi", + () -> new PoiType(ImmutableSet.copyOf(ModBlocks.CHAIR.get().getStateDefinition().getPossibleStates()), 1, 1)); + + public static final Holder KAUPENGER = VILLAGER_PROFESSIONS.register("kaupenger", + () -> new VillagerProfession("kaupenger", holder -> holder.value() == KAUPEN_POI.value(), + poiTypeHolder -> poiTypeHolder.value() == KAUPEN_POI.value(), ImmutableSet.of(), ImmutableSet.of(), + ModSounds.MAGIC_BLOCK_HIT.get())); + + + public static void register(IEventBus eventBus) { + POI_TYPES.register(eventBus); + VILLAGER_PROFESSIONS.register(eventBus); + } +} diff --git a/src/main/resources/assets/tutorialmod/lang/en_us.json b/src/main/resources/assets/tutorialmod/lang/en_us.json index 3bb2edc..1f3e876 100644 --- a/src/main/resources/assets/tutorialmod/lang/en_us.json +++ b/src/main/resources/assets/tutorialmod/lang/en_us.json @@ -79,6 +79,8 @@ "block.tutorialmod.chair": "Chair", + "entity.minecraft.villager.tutorialmod.kaupenger": "Kaupenger", + "creativetab.tutorialmod.bismuth_items": "Bismuth Items", "creativetab.tutorialmod.bismuth_blocks": "Bismuth Blocks", diff --git a/src/main/resources/assets/tutorialmod/textures/entity/villager/profession/kaupenger.png b/src/main/resources/assets/tutorialmod/textures/entity/villager/profession/kaupenger.png new file mode 100644 index 0000000000000000000000000000000000000000..73a690eff6e862088930faa4c7b35efacac7510a GIT binary patch literal 1094 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP$DY8C&U#<@9W6X(J^}Z z^r^RwNQ{|euA{={>ZI*WMWycg%F5~&E?<_Bk>9pw4^X9;n8dXC^92NiY?TF!WO@Go z|NlHNOmm5$^NZduZEe;67ynEaj?aro-A&Pj6=1lj~yssvNn&2MV| z{1$Xd&==KYOZ zjCOs~82cE`Rn53?z+UvW`jY4KR4;t^!NBNX{b0$bD5eUgAIuC(pY^gZ{!nI^$(k-3 zXX_#4C~KeJPO|HD8?T=LrpB!VwcQYKnwRvmhU90CQVR!0SeptUQzMsyou=Yd& zOL1*;nfv7V*`JIUdiy7FJj-!rv0Q9!bVI%><%v({nLdf#4L0YWWF@9Cd(Wsmr_u1} z#P6*SDl@qC?HTI!87x>_^hF}dKXfPif%%KOi)Ejk3py=d;iY-^bc*J$xLAK~Hin8| zt!14@ip9MW=Eg7O`g+f!>v>^9WMhQy0j`wzl?|W2zp~%>@z6iB2Q6Y-_;eYJ1L`H# zF<33V!eY>I;J7?v+iV8eON^XpkN0f**eH3JNrN^0gdzib|M^U-(-uq%7TzqLHRH1_ z=jwOmss&!h-+M@;a9Mu2CC5BPc@O;l{o3Ps{q^2_dHHmQv(>C?*77!}HaNE_IaV#*IVE6gcZ<=~tvzR+ z>kF?k*VmJseNJKJ!4>W6^%p<2EvkGNE$raU`*Ma|Wx`9gyju)QXE0B<+`oU}pWWZ28{dUQi%2Z61txvf64!{5l*E!$tK_0oAjM#0U}U0eV5)0m y8DeB$WngY)VytaoWMyDb{qkuhiiX_$l+3hB+#0yH#9jqzVDNPHb6Mw<&;$VLUb`Lu literal 0 HcmV?d00001 diff --git a/src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json b/src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json new file mode 100644 index 0000000..6fc24f9 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + { + "id": "tutorialmod:kaupen_poi", + "required": false + } + ] +} \ No newline at end of file