From ea29cda52fd205b5a35983322e23297947a11fa3 Mon Sep 17 00:00:00 2001 From: TGdoesCode Date: Mon, 26 Jan 2026 11:15:49 +0100 Subject: [PATCH] villager --- gradle.properties | 2 +- .../szar/client/SzarDataGenerator.java | 3 + .../79d6404f7b0803346bb38c848032926817f10037 | 2 + .../acquirable_job_site.json | 9 + .../dev/tggamesyt/szar/ModPoiTagProvider.java | 26 +++ src/main/java/dev/tggamesyt/szar/Szar.java | 168 ++++++++++++------ .../szar/blockstates/chemical_workbench.json | 7 + .../resources/assets/szar/lang/en_us.json | 4 +- .../szar/models/item/chemical_workbench.json | 3 + 9 files changed, 170 insertions(+), 54 deletions(-) create mode 100644 src/main/generated/.cache/79d6404f7b0803346bb38c848032926817f10037 create mode 100644 src/main/generated/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json create mode 100644 src/main/java/dev/tggamesyt/szar/ModPoiTagProvider.java create mode 100644 src/main/resources/assets/szar/blockstates/chemical_workbench.json create mode 100644 src/main/resources/assets/szar/models/item/chemical_workbench.json diff --git a/gradle.properties b/gradle.properties index 199179e..4bf7966 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ minecraft_version=1.20.1 yarn_mappings=1.20.1+build.10 loader_version=0.18.3 # Mod Properties -mod_version=1.0.6 +mod_version=1.0.7 maven_group=dev.tggamesyt archives_base_name=szar # Dependencies diff --git a/src/client/java/dev/tggamesyt/szar/client/SzarDataGenerator.java b/src/client/java/dev/tggamesyt/szar/client/SzarDataGenerator.java index 7b60221..fcad569 100644 --- a/src/client/java/dev/tggamesyt/szar/client/SzarDataGenerator.java +++ b/src/client/java/dev/tggamesyt/szar/client/SzarDataGenerator.java @@ -1,5 +1,6 @@ package dev.tggamesyt.szar.client; +import dev.tggamesyt.szar.ModPoiTagProvider; import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint; import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; @@ -8,5 +9,7 @@ public class SzarDataGenerator implements DataGeneratorEntrypoint { @Override public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) { FabricDataGenerator.Pack pack = fabricDataGenerator.createPack(); + + pack.addProvider(ModPoiTagProvider::new); } } diff --git a/src/main/generated/.cache/79d6404f7b0803346bb38c848032926817f10037 b/src/main/generated/.cache/79d6404f7b0803346bb38c848032926817f10037 new file mode 100644 index 0000000..4529abd --- /dev/null +++ b/src/main/generated/.cache/79d6404f7b0803346bb38c848032926817f10037 @@ -0,0 +1,2 @@ +// 1.20.1 2026-01-26T11:11:39.1328713 szar/Tags for minecraft:point_of_interest_type +eba137b51c50a7143a3668876f41adaa1447b1d1 data\minecraft\tags\point_of_interest_type\acquirable_job_site.json diff --git a/src/main/generated/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json b/src/main/generated/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json new file mode 100644 index 0000000..9450d12 --- /dev/null +++ b/src/main/generated/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + { + "id": "szar:chemical_workbench_poi", + "required": false + } + ] +} \ No newline at end of file diff --git a/src/main/java/dev/tggamesyt/szar/ModPoiTagProvider.java b/src/main/java/dev/tggamesyt/szar/ModPoiTagProvider.java new file mode 100644 index 0000000..a9474ba --- /dev/null +++ b/src/main/java/dev/tggamesyt/szar/ModPoiTagProvider.java @@ -0,0 +1,26 @@ +package dev.tggamesyt.szar; + +import net.minecraft.data.DataOutput; +import net.minecraft.data.server.tag.TagProvider; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.RegistryWrapper; +import net.minecraft.registry.tag.PointOfInterestTypeTags; +import net.minecraft.util.Identifier; +import net.minecraft.world.poi.PointOfInterestType; + +import java.util.concurrent.CompletableFuture; + +public class ModPoiTagProvider extends TagProvider { + public ModPoiTagProvider(DataOutput output, + CompletableFuture registryLookupFuture) { + super(output, RegistryKeys.POINT_OF_INTEREST_TYPE, registryLookupFuture); + } + + @Override + protected void configure(RegistryWrapper.WrapperLookup lookup) { + this.getOrCreateTagBuilder(PointOfInterestTypeTags.ACQUIRABLE_JOB_SITE) + .addOptional(new Identifier(Szar.MOD_ID, "chemical_workbench_poi")); + } +} \ No newline at end of file diff --git a/src/main/java/dev/tggamesyt/szar/Szar.java b/src/main/java/dev/tggamesyt/szar/Szar.java index c382812..5bbdf03 100644 --- a/src/main/java/dev/tggamesyt/szar/Szar.java +++ b/src/main/java/dev/tggamesyt/szar/Szar.java @@ -24,6 +24,7 @@ import net.minecraft.item.*; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; @@ -54,8 +55,24 @@ public class Szar implements ModInitializer { new FaszBlock(); public static final Identifier TOTEMPACKET = new Identifier(MOD_ID, "nwordpacket"); - public static PointOfInterestType CHEMICAL_WORKBENCH_POI; - public static VillagerProfession DROG_DEALER; + public static final Block CHEMICAL_WORKBENCH = + new Block(AbstractBlock.Settings.copy(Blocks.OAK_PLANKS)); + public static final RegistryKey CHEMICAL_WORKBENCH_POI_KEY = + RegistryKey.of(RegistryKeys.POINT_OF_INTEREST_TYPE, new Identifier(MOD_ID, "chemical_workbench_poi")); + public static PointOfInterestType CHEMICAL_WORKBENCH_POI = + PointOfInterestHelper.register(new Identifier(MOD_ID, "chemical_workbench_poi"), 1, 1, CHEMICAL_WORKBENCH); + public static VillagerProfession DROG_DEALER = Registry.register( + Registries.VILLAGER_PROFESSION, + new Identifier(MOD_ID, "drog_dealer"), + new VillagerProfession( + "drog_dealer", + entry -> entry.matchesKey(CHEMICAL_WORKBENCH_POI_KEY), + entry -> entry.matchesKey(CHEMICAL_WORKBENCH_POI_KEY), + ImmutableSet.of(), + ImmutableSet.of(), + SoundEvents.ENTITY_VILLAGER_WORK_CLERIC + ) + ); public static final ItemGroup SZAR_GROUP = Registry.register( Registries.ITEM_GROUP, new Identifier(MOD_ID, "szar_group"), @@ -82,6 +99,7 @@ public class Szar implements ModInitializer { entries.add(Szar.NIGGERITE_LEGGINGS); entries.add(Szar.NIGGERITE_BOOTS); entries.add(Szar.NIGGERITE_BLOCK); + entries.add(Szar.CHEMICAL_WORKBENCH_ITEM); }) .build() ); @@ -111,52 +129,20 @@ public class Szar implements ModInitializer { new Identifier(MOD_ID, "chemical_workbench"), CHEMICAL_WORKBENCH ); - - Registry.register( - Registries.ITEM, - new Identifier(MOD_ID, "chemical_workbench"), - new BlockItem(CHEMICAL_WORKBENCH, new FabricItemSettings()) - ); - CHEMICAL_WORKBENCH_POI = Registry.register( - Registries.POINT_OF_INTEREST_TYPE, - new Identifier(MOD_ID, "chemical_workbench_poi"), - new PointOfInterestType( - ImmutableSet.copyOf( - CHEMICAL_WORKBENCH - .getStateManager() - .getStates() - ), - 1, // max tickets - 1 // search distance - ) - ); - DROG_DEALER = Registry.register( - Registries.VILLAGER_PROFESSION, - new Identifier(MOD_ID, "drog_dealer"), - new VillagerProfession( - "drog_dealer", - entry -> entry.matchesKey( - RegistryKey.of( - Registries.POINT_OF_INTEREST_TYPE.getKey(), - new Identifier(MOD_ID, "chemical_workbench_poi") - ) - ), - entry -> entry.matchesKey( - RegistryKey.of( - Registries.POINT_OF_INTEREST_TYPE.getKey(), - new Identifier(MOD_ID, "chemical_workbench_poi") - ) - ), - ImmutableSet.of(), - ImmutableSet.of(), - SoundEvents.ENTITY_VILLAGER_WORK_CLERIC - ) - ); - PointOfInterestHelper.register( - new Identifier(MOD_ID, "chemical_workbench_poi"), - 1, - 1, - CHEMICAL_WORKBENCH + TradeOfferHelper.registerVillagerOffers( + DROG_DEALER, + 1, // villager level + factories -> { + factories.add((entity, random) -> + new TradeOffer( + new ItemStack(Items.EMERALD, 3), + new ItemStack(Items.PAPER, 6), + 12, // max uses + 2, // villager XP + 0.05f // price multiplier + ) + ); + } ); TradeOfferHelper.registerVillagerOffers( DROG_DEALER, @@ -164,8 +150,83 @@ public class Szar implements ModInitializer { factories -> { factories.add((entity, random) -> new TradeOffer( - new ItemStack(Items.EMERALD, 2), - new ItemStack(Items.GUNPOWDER, 1), + new ItemStack(Items.SUGAR_CANE, 6), + new ItemStack(Items.EMERALD, 1), + 12, // max uses + 2, // villager XP + 0.05f // price multiplier + ) + ); + } + ); + TradeOfferHelper.registerVillagerOffers( + DROG_DEALER, + 2, // villager level + factories -> { + factories.add((entity, random) -> + new TradeOffer( + new ItemStack(Items.EMERALD, 10), + new ItemStack(CANNABIS_ITEM, 1), + 12, // max uses + 2, // villager XP + 0.05f // price multiplier + ) + ); + } + ); + TradeOfferHelper.registerVillagerOffers( + DROG_DEALER, + 3, // villager level + factories -> { + factories.add((entity, random) -> + new TradeOffer( + new ItemStack(Items.EMERALD, 15), + new ItemStack(WEED_ITEM, 1), + 12, // max uses + 2, // villager XP + 0.05f // price multiplier + ) + ); + } + ); + TradeOfferHelper.registerVillagerOffers( + DROG_DEALER, + 3, // villager level + factories -> { + factories.add((entity, random) -> + new TradeOffer( + new ItemStack(Items.EMERALD, 64), + new ItemStack(WEED_JOINT_ITEM, 1), + 12, // max uses + 2, // villager XP + 0.05f // price multiplier + ) + ); + } + ); + TradeOfferHelper.registerVillagerOffers( + DROG_DEALER, + 4, // villager level + factories -> { + factories.add((entity, random) -> + new TradeOffer( + new ItemStack(Items.EMERALD, 4), + new ItemStack(Items.CAMPFIRE, 1), + 12, // max uses + 2, // villager XP + 0.05f // price multiplier + ) + ); + } + ); + TradeOfferHelper.registerVillagerOffers( + DROG_DEALER, + 5, // villager level + factories -> { + factories.add((entity, random) -> + new TradeOffer( + new ItemStack(NIGGERITE_INGOT, 10), + new ItemStack(WEED_JOINT_ITEM, 1), 12, // max uses 2, // villager XP 0.05f // price multiplier @@ -188,8 +249,6 @@ public class Szar implements ModInitializer { ); ServerTickEvents.END_SERVER_TICK.register(PlayerValueTimer::onServerTick); } - public static final Block CHEMICAL_WORKBENCH = - new Block(AbstractBlock.Settings.copy(Blocks.OAK_PLANKS)); public static final Map PLAYER_JOINT_LEVEL = new HashMap<>(); public static final Map PLAYER_ADDICTION_LEVEL = new HashMap<>(); public static final StatusEffect DROG_EFFECT = Registry.register( @@ -197,6 +256,11 @@ public class Szar implements ModInitializer { new Identifier(MOD_ID, "drog"), new DrogEffect() ); + public static final Item CHEMICAL_WORKBENCH_ITEM = Registry.register( + Registries.ITEM, + new Identifier(MOD_ID, "chemical_workbench"), + new BlockItem(CHEMICAL_WORKBENCH, new FabricItemSettings()) + ); public static final Block CANNABIS_BLOCK = Registry.register( Registries.BLOCK, new Identifier(MOD_ID, "cannabis"), diff --git a/src/main/resources/assets/szar/blockstates/chemical_workbench.json b/src/main/resources/assets/szar/blockstates/chemical_workbench.json new file mode 100644 index 0000000..4cce97e --- /dev/null +++ b/src/main/resources/assets/szar/blockstates/chemical_workbench.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "szar:block/chemical_workbench" + } + } +} diff --git a/src/main/resources/assets/szar/lang/en_us.json b/src/main/resources/assets/szar/lang/en_us.json index df84398..e6771da 100644 --- a/src/main/resources/assets/szar/lang/en_us.json +++ b/src/main/resources/assets/szar/lang/en_us.json @@ -22,5 +22,7 @@ "item.szar.niggerite_boots": "Niggerite Boots", "item.szar.niggerite_helmet": "Niggerite Helmet", "death.attack.heart_attack": "%1$s got a heart attack", - "death.attack.drog_overdose": "%1$s got a drog overdose" + "death.attack.drog_overdose": "%1$s got a drog overdose", + "block.szar.chemical_workbench": "Chemical Workbench", + "entity.minecraft.villager.drog_dealer": "Drog dealer" } diff --git a/src/main/resources/assets/szar/models/item/chemical_workbench.json b/src/main/resources/assets/szar/models/item/chemical_workbench.json new file mode 100644 index 0000000..b82abd0 --- /dev/null +++ b/src/main/resources/assets/szar/models/item/chemical_workbench.json @@ -0,0 +1,3 @@ +{ + "parent": "szar:block/chemical_workbench" +}