Skip to content

Commit 343d793

Browse files
committed
fixed mushrooms loading and worldgen crashes
1 parent bd3c8f2 commit 343d793

File tree

6 files changed

+37
-37
lines changed

6 files changed

+37
-37
lines changed

src/main/java/com/dtteam/dynamictreesplus/block/mushroom/CapProperties.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import com.dtteam.dynamictrees.block.branch.BranchBlock;
1010
import com.dtteam.dynamictrees.data.DTDataProvider;
1111
import com.dtteam.dynamictrees.data.Generator;
12-
import com.dtteam.dynamictrees.deserialization.JsonDeserializers;
1312
import com.dtteam.dynamictrees.loot.DTLootContextParams;
1413
import com.dtteam.dynamictrees.loot.DTLootParameterSets;
1514
import com.dtteam.dynamictrees.loot.LootTableSupplier;
@@ -61,7 +60,7 @@
6160
public class CapProperties extends RegistryEntry<CapProperties> implements Resettable<CapProperties> {
6261

6362
public static final Codec<CapProperties> CODEC = RecordCodecBuilder.create(instance -> instance
64-
.group(ResourceLocation.CODEC.fieldOf(JsonDeserializers.RESOURCE_LOCATION.toString()).forGetter(CapProperties::getRegistryName))
63+
.group(ResourceLocation.CODEC.fieldOf(TypedRegistry.RESOURCE_LOCATION.toString()).forGetter(CapProperties::getRegistryName))
6564
.apply(instance, CapProperties::new));
6665

6766
public static final CapProperties NULL = new CapProperties() {

src/main/java/com/dtteam/dynamictreesplus/init/DTPRegistries.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,17 @@
33
import com.dtteam.dynamictrees.api.worldgen.FeatureCanceller;
44
import com.dtteam.dynamictrees.block.CommonVoxelShapes;
55
import com.dtteam.dynamictrees.block.fruit.Fruit;
6+
import com.dtteam.dynamictrees.event.AddResourceLoadersEvent;
67
import com.dtteam.dynamictrees.event.RegistryEvent;
78
import com.dtteam.dynamictrees.event.TypeRegistryEvent;
89
import com.dtteam.dynamictrees.systems.genfeature.GenFeature;
910
import com.dtteam.dynamictrees.systems.growthlogic.GrowthLogicKit;
1011
import com.dtteam.dynamictrees.tree.family.Family;
1112
import com.dtteam.dynamictrees.tree.species.Species;
12-
import com.dtteam.dynamictrees.treepack.Resources;
1313
import com.dtteam.dynamictreesplus.DynamicTreesPlus;
1414
import com.dtteam.dynamictreesplus.block.CactusFruit;
1515
import com.dtteam.dynamictreesplus.block.mushroom.CapProperties;
1616
import com.dtteam.dynamictreesplus.resources.CapPropertiesResourceLoader;
17-
import com.dtteam.dynamictreesplus.resources.DTPJsonDeserializers;
1817
import com.dtteam.dynamictreesplus.systems.featuregen.DynamicTreesPlusGenFeatures;
1918
import com.dtteam.dynamictreesplus.systems.growthlogic.MegaCactusLogic;
2019
import com.dtteam.dynamictreesplus.systems.growthlogic.SaguaroCactusLogic;
@@ -38,7 +37,7 @@
3837
import net.neoforged.neoforge.registries.NewRegistryEvent;
3938
import net.neoforged.neoforge.registries.RegisterEvent;
4039

41-
@EventBusSubscriber(bus = EventBusSubscriber.Bus.MOD)
40+
@EventBusSubscriber(modid = DynamicTreesPlus.MOD_ID, bus = EventBusSubscriber.Bus.MOD)
4241
public class DTPRegistries {
4342

4443
public static final StraightLogic STRAIGHT_LOGIC = new StraightLogic(DynamicTreesPlus.location("straight"));
@@ -51,9 +50,6 @@ public class DTPRegistries {
5150

5251

5352
public static void setup() {
54-
Resources.MANAGER.addLoader(CapPropertiesResourceLoader.CAP_PROPERTIES_LOADER);
55-
Resources.MANAGER.addLoader(CapPropertiesResourceLoader.MUSHROOM_SHAPE_KIT_TEMPLATE_LOADER);
56-
5753
CommonVoxelShapes.SHAPES.put(DynamicTreesPlus.location("tall_cactus").toString(), TALL_CACTUS_SAPLING_SHAPE);
5854
CommonVoxelShapes.SHAPES.put(DynamicTreesPlus.location("medium_cactus").toString(), MEDIUM_CACTUS_SAPLING_SHAPE);
5955
CommonVoxelShapes.SHAPES.put(DynamicTreesPlus.location("short_cactus").toString(), SHORT_CACTUS_SAPLING_SHAPE);
@@ -118,19 +114,24 @@ public static void onMushroomShapeKitRegistry(final RegistryEvent<MushroomShapeK
118114
}
119115

120116
@SubscribeEvent
121-
public static void newRegistry(NewRegistryEvent event) {
122-
DTPJsonDeserializers.register();
117+
public static void addResourceLoaders(AddResourceLoadersEvent.Pre event){
118+
event.getResourceManager().addLoader(CapPropertiesResourceLoader.CAP_PROPERTIES_LOADER);
119+
event.getResourceManager().addLoader(CapPropertiesResourceLoader.MUSHROOM_SHAPE_KIT_TEMPLATE_LOADER);
120+
}
123121

122+
@SubscribeEvent
123+
public static void newRegistry(NewRegistryEvent event) {
124+
CactusThicknessLogic.REGISTRY.postRegistryEvent();
125+
MushroomShapeKit.REGISTRY.postRegistryEvent();
124126
CapProperties.REGISTRY.postRegistryEvent();
125-
//MushroomShapeKit.REGISTRY.postRegistryEvent();
126127
}
127128

128129
@SubscribeEvent
129130
public static void loadResources(RegisterEvent event) {
130131
if (event.getRegistryKey() == BuiltInRegistries.BLOCK.key()) {
131-
// Lock the registries
132-
CapProperties.REGISTRY.lock();
132+
CactusThicknessLogic.REGISTRY.lock();
133133
MushroomShapeKit.REGISTRY.lock();
134+
CapProperties.REGISTRY.lock();
134135
}
135136
}
136137

src/main/java/com/dtteam/dynamictreesplus/resources/DTPJsonDeserializers.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,34 @@
22

33
import com.dtteam.dynamictrees.deserialization.JsonDeserializers;
44
import com.dtteam.dynamictrees.deserialization.deserializer.ConfiguredDeserializer;
5+
import com.dtteam.dynamictrees.deserialization.deserializer.EnumDeserializer;
56
import com.dtteam.dynamictrees.deserialization.deserializer.JsonDeserializer;
67
import com.dtteam.dynamictrees.deserialization.deserializer.RegistryEntryDeserializer;
8+
import com.dtteam.dynamictreesplus.block.CactusBranchBlock;
79
import com.dtteam.dynamictreesplus.block.mushroom.CapProperties;
810
import com.dtteam.dynamictreesplus.systems.mushroomlogic.MushroomShapeConfiguration;
911
import com.dtteam.dynamictreesplus.systems.mushroomlogic.shapekits.MushroomShapeKit;
12+
import com.dtteam.dynamictreesplus.systems.thicknesslogic.CactusThicknessLogic;
1013

1114
public class DTPJsonDeserializers {
1215

16+
public static JsonDeserializer<CactusBranchBlock.CactusThickness> CACTUS_THICKNESS;
17+
public static JsonDeserializer<CactusThicknessLogic> CACTUS_THICKNESS_LOGIC;
18+
public static JsonDeserializer<MushroomShapeKit> MUSHROOM_SHAPE_KIT;
1319
public static JsonDeserializer<MushroomShapeConfiguration> CONFIGURED_MUSHROOM_SHAPE_KIT;
1420
public static JsonDeserializer<CapProperties> CAP_PROPERTIES;
1521

1622
public static void register (){
1723

24+
CACTUS_THICKNESS = JsonDeserializers.register(CactusBranchBlock.CactusThickness.class,
25+
new EnumDeserializer<>(CactusBranchBlock.CactusThickness.class));
26+
27+
CACTUS_THICKNESS_LOGIC = JsonDeserializers.register(CactusThicknessLogic.class,
28+
new RegistryEntryDeserializer<>(CactusThicknessLogic.REGISTRY));
29+
30+
MUSHROOM_SHAPE_KIT = JsonDeserializers.register(MushroomShapeKit.class,
31+
new RegistryEntryDeserializer<>(MushroomShapeKit.REGISTRY));
32+
1833
CONFIGURED_MUSHROOM_SHAPE_KIT = JsonDeserializers.register(MushroomShapeConfiguration.class,
1934
new ConfiguredDeserializer<>("Mushroom Shape Kit", MushroomShapeKit.class,
2035
MushroomShapeConfiguration.TEMPLATES));

src/main/java/com/dtteam/dynamictreesplus/resources/JsonRegistries.java

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,14 @@
11
package com.dtteam.dynamictreesplus.resources;
22

3-
import com.dtteam.dynamictrees.deserialization.JsonDeserializers;
43
import com.dtteam.dynamictrees.deserialization.PropertyAppliers;
5-
import com.dtteam.dynamictrees.deserialization.deserializer.EnumDeserializer;
6-
import com.dtteam.dynamictrees.deserialization.deserializer.RegistryEntryDeserializer;
74
import com.dtteam.dynamictrees.event.ApplierRegistryEvent;
85
import com.dtteam.dynamictrees.event.JsonDeserializerRegistryEvent;
96
import com.dtteam.dynamictrees.tree.family.Family;
107
import com.dtteam.dynamictrees.tree.species.Species;
118
import com.dtteam.dynamictrees.utility.ResourceLocationUtils;
129
import com.dtteam.dynamictreesplus.DynamicTreesPlus;
13-
import com.dtteam.dynamictreesplus.block.CactusBranchBlock;
1410
import com.dtteam.dynamictreesplus.block.mushroom.CapProperties;
1511
import com.dtteam.dynamictreesplus.systems.mushroomlogic.MushroomShapeConfiguration;
16-
import com.dtteam.dynamictreesplus.systems.mushroomlogic.shapekits.MushroomShapeKit;
1712
import com.dtteam.dynamictreesplus.systems.thicknesslogic.CactusThicknessLogic;
1813
import com.dtteam.dynamictreesplus.tree.CactusSpecies;
1914
import com.dtteam.dynamictreesplus.tree.HugeMushroomFamily;
@@ -102,21 +97,7 @@ public static void registerCactusReloadApplier(PropertyAppliers<Species, JsonEle
10297

10398
@SubscribeEvent
10499
public static void registerJsonDeserializers(final JsonDeserializerRegistryEvent event) {
105-
// Register cactus thickness logic kits and lock it.
106-
CactusThicknessLogic.REGISTRY.postRegistryEvent();
107-
MushroomShapeKit.REGISTRY.postRegistryEvent();
108-
CactusThicknessLogic.REGISTRY.lock();
109-
MushroomShapeKit.REGISTRY.lock();
110-
111-
// Register getter for cactus thickness logic and mushroom shape logic.
112-
JsonDeserializers.register(CactusThicknessLogic.class,
113-
new RegistryEntryDeserializer<>(CactusThicknessLogic.REGISTRY));
114-
JsonDeserializers.register(MushroomShapeKit.class,
115-
new RegistryEntryDeserializer<>(MushroomShapeKit.REGISTRY));
116-
117-
// Register getter for cactus thickness enum.
118-
JsonDeserializers.register(CactusBranchBlock.CactusThickness.class,
119-
new EnumDeserializer<>(CactusBranchBlock.CactusThickness.class));
100+
DTPJsonDeserializers.register();
120101
}
121102

122103
}

src/main/java/com/dtteam/dynamictreesplus/systems/featuregen/CactusClonesGenFeature.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,13 @@
1212
import com.dtteam.dynamictrees.worldgen.DynamicTreeGenerationContext;
1313
import com.dtteam.dynamictreesplus.block.CactusBranchBlock;
1414
import net.minecraft.core.BlockPos;
15+
import net.minecraft.core.Holder;
1516
import net.minecraft.resources.ResourceLocation;
1617
import net.minecraft.server.level.WorldGenRegion;
18+
import net.minecraft.world.level.ChunkPos;
1719
import net.minecraft.world.level.Level;
1820
import net.minecraft.world.level.LevelAccessor;
21+
import net.minecraft.world.level.biome.Biome;
1922

2023
import java.util.Arrays;
2124
import java.util.LinkedList;
@@ -80,13 +83,15 @@ private boolean areCactiAround(LevelAccessor world, BlockPos rootPos) {
8083

8184
private boolean placeCloneAtLocation(LevelContext levelContext, BlockPos cloneRootPos, Species species, boolean worldgen) {
8285
LevelAccessor level = levelContext.accessor();
86+
ChunkPos chunkPos = new ChunkPos(cloneRootPos);
87+
if (!level.hasChunk(chunkPos.x, chunkPos.z)) return false;
8388
for (int i = 1; i >= -1; i--) {
8489
BlockPos offsetRootPos = cloneRootPos.above(i);
8590
if (species.isAcceptableSoil(level.getBlockState(offsetRootPos))) {
86-
8791
if (worldgen) {
8892
if (level instanceof WorldGenRegion) {
89-
species.generate(new DynamicTreeGenerationContext(levelContext, species, offsetRootPos, offsetRootPos.mutable(), level.getNoiseBiome(offsetRootPos.getX(), offsetRootPos.getY(), offsetRootPos.getZ()), CoordUtils.getRandomDir(level.getRandom()), 2, worldgen));
93+
Holder<Biome> biome = level.getBiome(offsetRootPos);
94+
species.generate(new DynamicTreeGenerationContext(levelContext, species, offsetRootPos, offsetRootPos.mutable(), biome, CoordUtils.getRandomDir(level.getRandom()), 2, worldgen));
9095
}
9196
} else if (level instanceof Level) {
9297
species.transitionToTree((Level) level, offsetRootPos.above());

src/main/java/com/dtteam/dynamictreesplus/tree/HugeMushroomSpecies.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import com.dtteam.dynamictrees.block.soil.SpeciesBlockEntity;
1515
import com.dtteam.dynamictrees.data.tags.DTBlockTags;
1616
import com.dtteam.dynamictrees.data.tags.DTItemTags;
17-
import com.dtteam.dynamictrees.deserialization.JsonDeserializers;
1817
import com.dtteam.dynamictrees.platform.Services;
1918
import com.dtteam.dynamictrees.platform.services.IConfigHelper;
2019
import com.dtteam.dynamictrees.registry.DTRegistries;
@@ -73,7 +72,7 @@ public static TypedRegistry.EntryType<Species> createDefaultMushroomType(final F
7372
public static Codec<Species> createDefaultMushroomCodec(final Function3<ResourceLocation, Family, CapProperties, Species> constructor) {
7473
return RecordCodecBuilder.create(instance -> instance
7574
.group(
76-
ResourceLocation.CODEC.fieldOf(JsonDeserializers.RESOURCE_LOCATION.toString())
75+
ResourceLocation.CODEC.fieldOf(TypedRegistry.RESOURCE_LOCATION.toString())
7776
.forGetter(Species::getRegistryName),
7877
Family.REGISTRY.getGetterCodec().fieldOf("family")
7978
.forGetter(Species::getFamily),

0 commit comments

Comments
 (0)