Skip to content

Commit 73ae275

Browse files
committed
slight adjustments for fabric addons
1 parent 72e5fae commit 73ae275

4 files changed

Lines changed: 44 additions & 17 deletions

File tree

fabric/src/main/java/com/dtteam/dynamictrees/DynamicTreesFabric.java

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package com.dtteam.dynamictrees;
22

33
import com.dtteam.dynamictrees.api.DynamicTreesAddonEntrypoint;
4-
import com.dtteam.dynamictrees.block.leaves.LeavesProperties;
5-
import com.dtteam.dynamictrees.client.BlockColorMultipliers;
64
import com.dtteam.dynamictrees.config.DTConfigs;
75
import com.dtteam.dynamictrees.event.handler.CommonEventHandler;
86
import com.dtteam.dynamictrees.event.handler.ModEventHandler;
@@ -12,7 +10,6 @@
1210
import com.dtteam.dynamictrees.registry.FabricRegistryLoader;
1311
import com.dtteam.dynamictrees.worldgen.FabricBiomeModifications;
1412
import fuzs.forgeconfigapiport.fabric.api.neoforge.v4.*;
15-
import net.fabricmc.api.EnvType;
1613
import net.fabricmc.api.ModInitializer;
1714
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
1815
import net.fabricmc.loader.api.FabricLoader;
@@ -31,12 +28,6 @@ public void onInitialize() {
3128
FabricRegistryHandler.setup(DynamicTrees.MOD_ID);
3229

3330
CommonEventHandler.RegisterEvents();
34-
ModEventHandler.RegisterEvents();
35-
VanillaSaplingEventHandler.register();
36-
37-
DynamicTrees.init();
38-
39-
FabricRegistryLoader.setup();
4031

4132
for (EntrypointContainer<DynamicTreesAddonEntrypoint> container : FabricLoader.getInstance().getEntrypointContainers("dynamictrees", DynamicTreesAddonEntrypoint.class)) {
4233
try {
@@ -46,6 +37,13 @@ public void onInitialize() {
4637
}
4738
}
4839

40+
ModEventHandler.RegisterEvents();
41+
VanillaSaplingEventHandler.register();
42+
43+
DynamicTrees.init();
44+
45+
FabricRegistryLoader.setup();
46+
4947
DynamicTrees.commonSetup();
5048

5149
FabricBiomeModifications.register();
@@ -59,14 +57,7 @@ public void onInitialize() {
5957
FabricMiscHelper.currentServer = null;
6058
});
6159

62-
if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) {
63-
ServerLifecycleEvents.SERVER_STARTED.register(server -> {
64-
LeavesProperties.postInitClient();
65-
BlockColorMultipliers.cleanUp();
66-
DynamicTreesFabricClient.registerBlockColors();
67-
DynamicTreesFabricClient.discoverWoodColors();
68-
});
69-
}
60+
7061
}
7162

7263
}

fabric/src/main/java/com/dtteam/dynamictrees/DynamicTreesFabricClient.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@
4545

4646
public class DynamicTreesFabricClient implements ClientModInitializer {
4747

48+
private static boolean initialized = false;
49+
private static boolean woodColorsDiscovered = false;
50+
4851
@Override
4952
public void onInitializeClient() {
5053
NeoForgeConfigRegistry.INSTANCE.register(DynamicTrees.MOD_ID, ModConfig.Type.CLIENT, DTConfigs.CLIENT_CONFIG);
@@ -54,6 +57,20 @@ public void onInitializeClient() {
5457
registerColorHandlers();
5558
registerTooltipCallback();
5659
registerClientTick();
60+
registerClientWorldLoad();
61+
}
62+
63+
private void registerClientWorldLoad() {
64+
65+
ClientTickEvents.START_CLIENT_TICK.register(client -> {
66+
if (!initialized && client.level != null) {
67+
discoverWoodColors();
68+
LeavesProperties.postInitClient();
69+
BlockColorMultipliers.cleanUp();
70+
registerBlockColors();
71+
initialized = true;
72+
}
73+
});
5774
}
5875

5976
private void registerModelLoaders() {
@@ -193,6 +210,10 @@ public static void discoverWoodColors() {
193210

194211
private static int getFaceColor(BlockState state, Direction face, Function<ResourceLocation, TextureAtlasSprite> textureGetter) {
195212
final BakedModel model = Minecraft.getInstance().getBlockRenderer().getBlockModel(state);
213+
if (model == null) {
214+
DynamicTrees.LOG.warn("Could not get model for {}! Branch needs to be handled manually!", state.getBlock());
215+
return 0;
216+
}
196217
List<BakedQuad> quads = model.getQuads(state, face, RandomSource.create());
197218
if (quads.isEmpty()) {
198219
quads = model.getQuads(state, null, RandomSource.create());

fabric/src/main/java/com/dtteam/dynamictrees/api/DynamicTreesAddonEntrypoint.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
package com.dtteam.dynamictrees.api;
22

3+
import com.dtteam.dynamictrees.api.resource.TreeResourceManager;
34
import com.dtteam.dynamictrees.registry.FabricRegistryHandler;
45

56
public interface DynamicTreesAddonEntrypoint {
67
void onDynamicTreesPreSetup();
78

9+
default void onAddResourceLoaders(TreeResourceManager resourceManager) {
10+
}
11+
812
static void setupAddon(String modId) {
913
FabricRegistryHandler.setup(modId);
1014
}

fabric/src/main/java/com/dtteam/dynamictrees/platform/FabricEventHelper.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.dtteam.dynamictrees.platform;
22

3+
import com.dtteam.dynamictrees.DynamicTrees;
4+
import com.dtteam.dynamictrees.api.DynamicTreesAddonEntrypoint;
35
import com.dtteam.dynamictrees.api.registry.AbstractRegistry;
46
import com.dtteam.dynamictrees.api.registry.RegistryEntry;
57
import com.dtteam.dynamictrees.api.registry.TypedRegistry;
@@ -12,6 +14,8 @@
1214
import com.dtteam.dynamictrees.platform.services.IEventHelper;
1315
import com.dtteam.dynamictrees.systems.genfeature.context.PostGenerationContext;
1416
import com.dtteam.dynamictrees.tree.species.Species;
17+
import net.fabricmc.loader.api.FabricLoader;
18+
import net.fabricmc.loader.api.entrypoint.EntrypointContainer;
1519
import net.minecraft.core.BlockPos;
1620
import net.minecraft.world.entity.item.ItemEntity;
1721
import net.minecraft.world.level.Level;
@@ -31,6 +35,13 @@ public <V extends RegistryEntry<V>> void postTypedRegistryEvent(TypedRegistry<V>
3135

3236
@Override
3337
public void postAddResourceLoadersEventPre(TreeResourceManager resourceManager) {
38+
for (EntrypointContainer<DynamicTreesAddonEntrypoint> container : FabricLoader.getInstance().getEntrypointContainers("dynamictrees", DynamicTreesAddonEntrypoint.class)) {
39+
try {
40+
container.getEntrypoint().onAddResourceLoaders(resourceManager);
41+
} catch (Throwable e) {
42+
DynamicTrees.LOG.error("Failed to invoke Dynamic Trees addon resource loader for mod: {}", container.getProvider().getMetadata().getId(), e);
43+
}
44+
}
3445
}
3546

3647
@Override

0 commit comments

Comments
 (0)