diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e0200c7..51b84c8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -22,4 +22,4 @@ modmenu = { module = "com.terraformersmc:modmenu", version.ref = "modmenu" } # example = ["example-a", "example-b", "example-c"] [plugins] -quilt_loom = { id = "org.quiltmc.loom", version = "1.0.+" } +quilt_loom = { id = "org.quiltmc.loom", version = "1.6.+" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index aa991fc..17655d0 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/java/com/mmodding/mmodding_lib/client/MModdingScreen.java b/src/main/java/com/mmodding/mmodding_lib/client/MModdingScreen.java index b893be3..1c8ba84 100644 --- a/src/main/java/com/mmodding/mmodding_lib/client/MModdingScreen.java +++ b/src/main/java/com/mmodding/mmodding_lib/client/MModdingScreen.java @@ -1,8 +1,8 @@ package com.mmodding.mmodding_lib.client; import com.mmodding.mmodding_lib.MModdingLib; -import com.mmodding.mmodding_lib.colors.ARGB; -import com.mmodding.mmodding_lib.colors.Color; +import com.mmodding.mmodding_lib.library.colors.ARGB; +import com.mmodding.mmodding_lib.library.colors.Color; import com.mmodding.mmodding_lib.library.config.client.screen.ConfigScreen; import com.mmodding.mmodding_lib.library.utils.TextureLocation; import com.mojang.blaze3d.systems.RenderSystem; diff --git a/src/main/java/com/mmodding/mmodding_lib/library/blocks/CustomLeavesBlock.java b/src/main/java/com/mmodding/mmodding_lib/library/blocks/CustomLeavesBlock.java index 97d0bd7..916fba0 100644 --- a/src/main/java/com/mmodding/mmodding_lib/library/blocks/CustomLeavesBlock.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/blocks/CustomLeavesBlock.java @@ -96,25 +96,40 @@ public BlockState getStateForNeighborUpdate(BlockState state, Direction directio } private BlockState updateDistanceFromLogs(BlockState state, WorldAccess world, BlockPos pos) { - int i = this.getMaxDistance(); + int distance = this.getMaxDistance(); BlockPos.Mutable mutable = new BlockPos.Mutable(); - for (Direction direction : Direction.values()) { - mutable.set(pos, direction); - i = Math.min(i, this.getDistanceFromLog(world.getBlockState(mutable)) + 1); - if (i == 1) { - break; + if (this.hasSeparatedLeaves()) { + for (int i = -1; i <= 1; i++) { + for (int j = -1; j <= 1; j++) { + for (int k = -1; k <= 1; k++) { + mutable.set(pos.add(i, j, k)); + distance = Math.min(distance, this.getDistanceFromLog(world.getBlockState(mutable)) + 1); + if (distance == 1) { + break; + } + } + } + } + } + else { + for (Direction direction : Direction.values()) { + mutable.set(pos, direction); + distance = Math.min(distance, this.getDistanceFromLog(world.getBlockState(mutable)) + 1); + if (distance == 1) { + break; + } } } - return state.with(this.getDistanceProperty(), i); + return state.with(this.getDistanceProperty(), distance); } private int getDistanceFromLog(BlockState state) { if (this.isLogValid(state)) { return 0; } - else if (state.getBlock() instanceof CustomLeavesBlock || this.hasSeparatedLeaves()) { + else if (state.isOf(this)) { return state.get(this.getDistanceProperty()); } else { diff --git a/src/main/java/com/mmodding/mmodding_lib/library/client/render/HudRendering.java b/src/main/java/com/mmodding/mmodding_lib/library/client/render/HudRendering.java index 62925a7..8d29938 100644 --- a/src/main/java/com/mmodding/mmodding_lib/library/client/render/HudRendering.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/client/render/HudRendering.java @@ -1,6 +1,6 @@ package com.mmodding.mmodding_lib.library.client.render; -import com.mmodding.mmodding_lib.colors.Color; +import com.mmodding.mmodding_lib.library.colors.Color; import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; import net.minecraft.client.MinecraftClient; import net.minecraft.text.Text; diff --git a/src/main/java/com/mmodding/mmodding_lib/library/client/utils/AnimationUtils.java b/src/main/java/com/mmodding/mmodding_lib/library/client/utils/AnimationUtils.java index 46011d4..dcc1f54 100644 --- a/src/main/java/com/mmodding/mmodding_lib/library/client/utils/AnimationUtils.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/client/utils/AnimationUtils.java @@ -1,5 +1,10 @@ package com.mmodding.mmodding_lib.library.client.utils; +import com.mmodding.mmodding_lib.mixin.accessors.SinglePartEntityModelAccessor; +import net.minecraft.client.render.animation.Animation; +import net.minecraft.client.render.animation.Animator; +import net.minecraft.client.render.entity.model.SinglePartEntityModel; +import net.minecraft.entity.AnimationState; import net.minecraft.entity.LivingEntity; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; @@ -17,4 +22,13 @@ public static boolean isMoving(LivingEntity livingEntity, float limbDistance, fl float averageVelocity = (MathHelper.abs((float) velocity.x) + MathHelper.abs((float) velocity.z)) / 2f; return averageVelocity >= motionThreshold && limbDistance != 0; } + + public static void updateAnimation(SinglePartEntityModel model, Animation animation, AnimationState state, float animationProgress) { + AnimationUtils.updateAnimation(model, animation, state, animationProgress, 1.0f); + } + + public static void updateAnimation(SinglePartEntityModel model, Animation animation, AnimationState state, float animationProgress, float speedFactor) { + state.method_43686(animationProgress, speedFactor); + state.animateIfValid(current -> Animator.animate(model, animation, current.method_43687(), 1.0F, SinglePartEntityModelAccessor.getField39195())); + } } diff --git a/src/main/java/com/mmodding/mmodding_lib/colors/ARGB.java b/src/main/java/com/mmodding/mmodding_lib/library/colors/ARGB.java similarity index 94% rename from src/main/java/com/mmodding/mmodding_lib/colors/ARGB.java rename to src/main/java/com/mmodding/mmodding_lib/library/colors/ARGB.java index 3487827..ad69926 100644 --- a/src/main/java/com/mmodding/mmodding_lib/colors/ARGB.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/colors/ARGB.java @@ -1,4 +1,4 @@ -package com.mmodding.mmodding_lib.colors; +package com.mmodding.mmodding_lib.library.colors; import net.minecraft.client.util.ColorUtil; diff --git a/src/main/java/com/mmodding/mmodding_lib/colors/Color.java b/src/main/java/com/mmodding/mmodding_lib/library/colors/Color.java similarity index 97% rename from src/main/java/com/mmodding/mmodding_lib/colors/Color.java rename to src/main/java/com/mmodding/mmodding_lib/library/colors/Color.java index 5827ad8..dc139e3 100644 --- a/src/main/java/com/mmodding/mmodding_lib/colors/Color.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/colors/Color.java @@ -1,4 +1,4 @@ -package com.mmodding.mmodding_lib.colors; +package com.mmodding.mmodding_lib.library.colors; import net.minecraft.client.util.ColorUtil; diff --git a/src/main/java/com/mmodding/mmodding_lib/colors/HSB.java b/src/main/java/com/mmodding/mmodding_lib/library/colors/HSB.java similarity index 96% rename from src/main/java/com/mmodding/mmodding_lib/colors/HSB.java rename to src/main/java/com/mmodding/mmodding_lib/library/colors/HSB.java index 3ff8f4a..aeaf6f8 100644 --- a/src/main/java/com/mmodding/mmodding_lib/colors/HSB.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/colors/HSB.java @@ -1,4 +1,4 @@ -package com.mmodding.mmodding_lib.colors; +package com.mmodding.mmodding_lib.library.colors; import net.minecraft.util.math.MathHelper; diff --git a/src/main/java/com/mmodding/mmodding_lib/colors/RGB.java b/src/main/java/com/mmodding/mmodding_lib/library/colors/RGB.java similarity index 96% rename from src/main/java/com/mmodding/mmodding_lib/colors/RGB.java rename to src/main/java/com/mmodding/mmodding_lib/library/colors/RGB.java index 5a350b0..d3b0315 100644 --- a/src/main/java/com/mmodding/mmodding_lib/colors/RGB.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/colors/RGB.java @@ -1,4 +1,4 @@ -package com.mmodding.mmodding_lib.colors; +package com.mmodding.mmodding_lib.library.colors; import net.minecraft.client.util.ColorUtil; import net.minecraft.util.math.MathHelper; diff --git a/src/main/java/com/mmodding/mmodding_lib/library/fluids/FluidExtensions.java b/src/main/java/com/mmodding/mmodding_lib/library/fluids/FluidExtensions.java index 8716a30..4c5e5ae 100644 --- a/src/main/java/com/mmodding/mmodding_lib/library/fluids/FluidExtensions.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/fluids/FluidExtensions.java @@ -1,6 +1,6 @@ package com.mmodding.mmodding_lib.library.fluids; -import com.mmodding.mmodding_lib.colors.Color; +import com.mmodding.mmodding_lib.library.colors.Color; import com.mmodding.mmodding_lib.library.fluids.collisions.FluidCollisionHandler; import net.fabricmc.fabric.api.client.render.fluid.v1.FluidRenderHandler; import net.minecraft.particle.DefaultParticleType; diff --git a/src/main/java/com/mmodding/mmodding_lib/library/integrations/modmenu/CustomBadge.java b/src/main/java/com/mmodding/mmodding_lib/library/integrations/modmenu/CustomBadge.java index e86c776..0800e03 100644 --- a/src/main/java/com/mmodding/mmodding_lib/library/integrations/modmenu/CustomBadge.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/integrations/modmenu/CustomBadge.java @@ -1,6 +1,6 @@ package com.mmodding.mmodding_lib.library.integrations.modmenu; -import com.mmodding.mmodding_lib.colors.Color; +import com.mmodding.mmodding_lib.library.colors.Color; import com.mmodding.mmodding_lib.library.utils.BiList; import org.quiltmc.loader.api.QuiltLoader; import org.quiltmc.loader.api.entrypoint.EntrypointContainer; diff --git a/src/main/java/com/mmodding/mmodding_lib/library/integrations/modmenu/ModMenuIntegration.java b/src/main/java/com/mmodding/mmodding_lib/library/integrations/modmenu/ModMenuIntegration.java index 8b23dd1..3d491db 100644 --- a/src/main/java/com/mmodding/mmodding_lib/library/integrations/modmenu/ModMenuIntegration.java +++ b/src/main/java/com/mmodding/mmodding_lib/library/integrations/modmenu/ModMenuIntegration.java @@ -1,7 +1,7 @@ package com.mmodding.mmodding_lib.library.integrations.modmenu; import com.mmodding.mmodding_lib.MModdingLib; -import com.mmodding.mmodding_lib.colors.Color; +import com.mmodding.mmodding_lib.library.colors.Color; import com.mmodding.mmodding_lib.library.base.MModdingBootstrapInitializer; import com.mmodding.mmodding_lib.library.base.MModdingClientModInitializer; import com.mmodding.mmodding_lib.library.base.MModdingModInitializer; diff --git a/src/main/java/com/mmodding/mmodding_lib/mixin/accessors/SinglePartEntityModelAccessor.java b/src/main/java/com/mmodding/mmodding_lib/mixin/accessors/SinglePartEntityModelAccessor.java new file mode 100644 index 0000000..6e247e9 --- /dev/null +++ b/src/main/java/com/mmodding/mmodding_lib/mixin/accessors/SinglePartEntityModelAccessor.java @@ -0,0 +1,15 @@ +package com.mmodding.mmodding_lib.mixin.accessors; + +import net.minecraft.client.render.entity.model.SinglePartEntityModel; +import net.minecraft.util.math.Vec3f; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(SinglePartEntityModel.class) +public interface SinglePartEntityModelAccessor { + + @Accessor("field_39195") + static Vec3f getField39195() { + throw new IllegalStateException(); + } +} diff --git a/src/main/java/com/mmodding/mmodding_lib/mixin/injectors/client/BackgroundRendererMixin.java b/src/main/java/com/mmodding/mmodding_lib/mixin/injectors/client/BackgroundRendererMixin.java index 7d8412f..f54470c 100644 --- a/src/main/java/com/mmodding/mmodding_lib/mixin/injectors/client/BackgroundRendererMixin.java +++ b/src/main/java/com/mmodding/mmodding_lib/mixin/injectors/client/BackgroundRendererMixin.java @@ -1,7 +1,7 @@ package com.mmodding.mmodding_lib.mixin.injectors.client; -import com.mmodding.mmodding_lib.colors.Color; -import com.mmodding.mmodding_lib.colors.RGB; +import com.mmodding.mmodding_lib.library.colors.Color; +import com.mmodding.mmodding_lib.library.colors.RGB; import com.mmodding.mmodding_lib.library.fluids.FluidExtensions; import net.minecraft.client.render.BackgroundRenderer; import net.minecraft.client.render.Camera; diff --git a/src/main/resources/mmodding_lib.mixins.json b/src/main/resources/mmodding_lib.mixins.json index b2361f4..0a7a1b2 100644 --- a/src/main/resources/mmodding_lib.mixins.json +++ b/src/main/resources/mmodding_lib.mixins.json @@ -99,6 +99,7 @@ "injectors.WorldMixin" ], "client": [ + "accessors.SinglePartEntityModelAccessor", "accessors.client.BufferBuilderStorageAccessor", "accessors.client.RenderLayerFirstAccessor", "accessors.client.RenderLayerSecondAccessor",