From 7e55a27e3a3e50c688669efa6ff32f549906b0a9 Mon Sep 17 00:00:00 2001 From: Max Hyper Date: Tue, 23 Jul 2024 12:49:47 -0300 Subject: [PATCH] Allowed all leaves to handle particles --- gradle.properties | 2 +- .../block/leaves/CherryLeavesProperties.java | 4 ++++ .../dynamictrees/block/leaves/DynamicLeavesBlock.java | 9 ++++++++- .../dynamictrees/block/leaves/LeavesProperties.java | 5 +++++ .../com/ferreusveritas/dynamictrees/init/DTTrees.java | 2 +- .../resources/loader/LeavesPropertiesResourceLoader.java | 1 + .../trees/dynamictrees/leaves_properties/cherry.json | 4 ++-- 7 files changed, 22 insertions(+), 5 deletions(-) diff --git a/gradle.properties b/gradle.properties index 7fe3390b8..4b93ec534 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ modName=DynamicTrees modId=dynamictrees -modVersion=1.3.0-BETA12.006 +modVersion=1.3.0-BETA12 group=com.ferreusveritas.dynamictrees diff --git a/src/main/java/com/ferreusveritas/dynamictrees/block/leaves/CherryLeavesProperties.java b/src/main/java/com/ferreusveritas/dynamictrees/block/leaves/CherryLeavesProperties.java index 81957bb5a..edd1e96a8 100644 --- a/src/main/java/com/ferreusveritas/dynamictrees/block/leaves/CherryLeavesProperties.java +++ b/src/main/java/com/ferreusveritas/dynamictrees/block/leaves/CherryLeavesProperties.java @@ -13,6 +13,10 @@ import javax.annotation.Nonnull; +/** + * Use 'has_tick_particles' property instead + */ +@Deprecated public class CherryLeavesProperties extends LeavesProperties { public static final TypedRegistry.EntryType TYPE = TypedRegistry.newType(CherryLeavesProperties::new); diff --git a/src/main/java/com/ferreusveritas/dynamictrees/block/leaves/DynamicLeavesBlock.java b/src/main/java/com/ferreusveritas/dynamictrees/block/leaves/DynamicLeavesBlock.java index 547d44180..883f5eb7c 100644 --- a/src/main/java/com/ferreusveritas/dynamictrees/block/leaves/DynamicLeavesBlock.java +++ b/src/main/java/com/ferreusveritas/dynamictrees/block/leaves/DynamicLeavesBlock.java @@ -79,7 +79,14 @@ public boolean isRandomlyTicking(BlockState state) { return !state.getValue(PERSISTENT); } - + @Override + public void animateTick(BlockState state, Level level, BlockPos pos, RandomSource random) { + if (properties.hasTickParticles && properties.getPrimitiveLeavesBlock().isPresent()) { + properties.getPrimitiveLeavesBlock().ifPresent((b)->b.animateTick(state,level,pos,random)); + } else { + super.animateTick(state, level, pos, random); + } + } public void setProperties(LeavesProperties properties) { this.properties = properties; diff --git a/src/main/java/com/ferreusveritas/dynamictrees/block/leaves/LeavesProperties.java b/src/main/java/com/ferreusveritas/dynamictrees/block/leaves/LeavesProperties.java index d58803c9f..61923af07 100644 --- a/src/main/java/com/ferreusveritas/dynamictrees/block/leaves/LeavesProperties.java +++ b/src/main/java/com/ferreusveritas/dynamictrees/block/leaves/LeavesProperties.java @@ -171,6 +171,7 @@ public boolean updateTick(Level level, BlockPos pos, BlockState state, RandomSou protected AgeingConfiguration ageingConfiguration = AgeingConfiguration.ALWAYS; protected boolean connectAnyRadius = false; protected boolean requiresShears = true; + protected boolean hasTickParticles = false; private LeavesProperties() { this.blockLootTableSupplier = new LootTableSupplier("null/", DTTrees.NULL); @@ -600,6 +601,10 @@ public void setRequiresShears(boolean requiresShears) { this.requiresShears = requiresShears; } + public void setHasTickParticles(boolean hasTickParticles) { + this.hasTickParticles = hasTickParticles; + } + public List> defaultLeavesTags() { return Collections.singletonList(DTBlockTags.LEAVES); } diff --git a/src/main/java/com/ferreusveritas/dynamictrees/init/DTTrees.java b/src/main/java/com/ferreusveritas/dynamictrees/init/DTTrees.java index e04965e35..23fb785b3 100644 --- a/src/main/java/com/ferreusveritas/dynamictrees/init/DTTrees.java +++ b/src/main/java/com/ferreusveritas/dynamictrees/init/DTTrees.java @@ -68,7 +68,7 @@ public static void registerLeavesPropertiesTypes(final TypeRegistryEvent) this::readDoesAge) .register("ageing_configuration", LeavesProperties.AgeingConfiguration.class, LeavesProperties::setAgeingConfiguration) .register("can_grow_on_ground", Boolean.class, LeavesProperties::setCanGrowOnGround) + .register("has_tick_particles", Boolean.class, LeavesProperties::setHasTickParticles) .register("scruffy_leaf_chance", ScruffyLeavesProperties.class, Float.class, ScruffyLeavesProperties::setLeafChance) .register("scruffy_max_hydro", ScruffyLeavesProperties.class, Integer.class, ScruffyLeavesProperties::setMaxHydro); diff --git a/src/main/resources/trees/dynamictrees/leaves_properties/cherry.json b/src/main/resources/trees/dynamictrees/leaves_properties/cherry.json index 649ae4fb2..7b588565b 100644 --- a/src/main/resources/trees/dynamictrees/leaves_properties/cherry.json +++ b/src/main/resources/trees/dynamictrees/leaves_properties/cherry.json @@ -1,6 +1,6 @@ { - "type": "dynamictrees:cherry", "primitive_leaves": "minecraft:cherry_leaves", "smother": 5, - "light_requirement": 14 + "light_requirement": 14, + "has_tick_particles": true } \ No newline at end of file