This commit is contained in:
2026-01-26 11:15:49 +01:00
parent 32ee343918
commit ea29cda52f
9 changed files with 170 additions and 54 deletions

View File

@@ -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

View File

@@ -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);
}
}

View File

@@ -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

View File

@@ -0,0 +1,9 @@
{
"replace": false,
"values": [
{
"id": "szar:chemical_workbench_poi",
"required": false
}
]
}

View File

@@ -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<PointOfInterestType> {
public ModPoiTagProvider(DataOutput output,
CompletableFuture<RegistryWrapper.WrapperLookup> 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"));
}
}

View File

@@ -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<PointOfInterestType> 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
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
)
);
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,
@@ -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<UUID, Integer> PLAYER_JOINT_LEVEL = new HashMap<>();
public static final Map<UUID, Boolean> 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"),

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "szar:block/chemical_workbench"
}
}
}

View File

@@ -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"
}

View File

@@ -0,0 +1,3 @@
{
"parent": "szar:block/chemical_workbench"
}