From 7348e3b20e7e6942419d8b5510b1a1ed458839a1 Mon Sep 17 00:00:00 2001 From: Alex Solari Date: Fri, 12 Jun 2026 10:56:32 +0300 Subject: [PATCH] Fixed server crash upon tree destruction --- .../com/dtteam/dynamictrees/client/TintSourceHelper.java | 3 ++- .../entity/animation/FalloverAnimationHandler.java | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/com/dtteam/dynamictrees/client/TintSourceHelper.java b/common/src/main/java/com/dtteam/dynamictrees/client/TintSourceHelper.java index 9a956fa63..516073678 100644 --- a/common/src/main/java/com/dtteam/dynamictrees/client/TintSourceHelper.java +++ b/common/src/main/java/com/dtteam/dynamictrees/client/TintSourceHelper.java @@ -4,6 +4,7 @@ import com.dtteam.dynamictrees.tree.species.Species; import net.minecraft.client.Minecraft; import net.minecraft.client.color.block.BlockTintSource; +import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.state.BlockState; @@ -16,7 +17,7 @@ public static int getFoliageColor(LeavesProperties leavesProperties, BlockAndTin return tintSource.colorInWorld(blockState, level, pos); } - public static int getLeavesColor(Species species, BlockAndTintGetter level, BlockPos pos) { + public static int getLeavesColor(Species species, ClientLevel level, BlockPos pos) { LeavesProperties properties = species.getLeavesProperties(); BlockState state = properties.getDynamicLeavesState(); return getFoliageColor(properties, level, state, pos); diff --git a/common/src/main/java/com/dtteam/dynamictrees/entity/animation/FalloverAnimationHandler.java b/common/src/main/java/com/dtteam/dynamictrees/entity/animation/FalloverAnimationHandler.java index 1f18170fb..82b846ccd 100644 --- a/common/src/main/java/com/dtteam/dynamictrees/entity/animation/FalloverAnimationHandler.java +++ b/common/src/main/java/com/dtteam/dynamictrees/entity/animation/FalloverAnimationHandler.java @@ -15,7 +15,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Axis; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.block.BlockAndTintGetter; +import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.BlockParticleOption; @@ -111,6 +111,7 @@ private Vec3 rotateAroundAxis(Vec3 in, Vec3 axis, double theta){ } protected void spawnLeavesParticlesWhileFalling(FallingTreeEntity entity, float fallSpeed){ + if (!entity.level().isClientSide()) return; BranchDestructionData data = entity.getDestroyData(); if (data.getAllLeavesWithPos().isEmpty()) return; @@ -131,6 +132,7 @@ protected void spawnLeavesParticlesWhileFalling(FallingTreeEntity entity, float } protected void flingLeavesParticles(FallingTreeEntity entity, float fallSpeed){ + if (!entity.level().isClientSide()) return; int bounces = getData(entity).bounces; if (bounces > 1) return; int maxParticleBlocks = DTConfigs.COMMON.maxFallingTreeLeavesParticles.get(); @@ -170,7 +172,7 @@ protected void flingLeavesParticles(FallingTreeEntity entity, float fallSpeed){ } private ParticleOptions getParticle(FallingTreeEntity entity, BlockState leavesState, BlockPos leavesPos){ - BlockAndTintGetter level = Minecraft.getInstance().level; + ClientLevel level = Minecraft.getInstance().level; if (level != null) { if (leavesState.getBlock() instanceof DynamicLeavesBlock leavesBlock){ LeavesProperties properties = leavesBlock.getLeavesProperties();