From 4d3ef3087c75d2c8bf4c7aed756cd2aab705b9b5 Mon Sep 17 00:00:00 2001 From: AbdElAziz333 Date: Thu, 18 Jan 2024 08:57:32 +0200 Subject: [PATCH] Backport 0.3.2 features to 1.18.2 version --- gradle.properties | 2 +- .../canary/common/config/CanaryConfig.java | 3 +- .../canary/mixin/CanaryMixinPlugin.java | 9 -- .../EntityCollisionContextMixin.java | 97 ------------------- .../specialized_shapes/VoxelShapeMixin.java | 4 - src/main/resources/canary.mixins.json | 1 - 6 files changed, 2 insertions(+), 114 deletions(-) delete mode 100644 src/main/java/com/abdelaziz/canary/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin.java diff --git a/gradle.properties b/gradle.properties index ee678b50..631a7ca0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,7 +12,7 @@ mapping_version=1.18.2 mod_id=canary mod_name=Canary mod_license=LGPL-3.0 -mod_version=0.2.9 +mod_version=0.3.2 mod_group_id=com.abdelaziz.canary mod_authors=AbdElAziz mod_credits=AbdElAziz, JellySquid, 2No2Name diff --git a/src/main/java/com/abdelaziz/canary/common/config/CanaryConfig.java b/src/main/java/com/abdelaziz/canary/common/config/CanaryConfig.java index 4bdaf5c8..dbc88f7b 100644 --- a/src/main/java/com/abdelaziz/canary/common/config/CanaryConfig.java +++ b/src/main/java/com/abdelaziz/canary/common/config/CanaryConfig.java @@ -69,7 +69,7 @@ private CanaryConfig() { this.addMixinRule("block", true); this.addMixinRule("block.flatten_states", true); - this.addMixinRule("block.hopper", true); + this.addMixinRule("block.hopper", false); this.addMixinRule("block.hopper.world_edit_compat", true); this.addMixinRule("block.moving_block_shapes", true); this.addMixinRule("block.redstone_wire", true); @@ -130,7 +130,6 @@ private CanaryConfig() { this.addMixinRule("shapes", true); this.addMixinRule("shapes.blockstate_cache", true); - this.addMixinRule("shapes.lazy_shape_context", true); this.addMixinRule("shapes.optimized_matching", true); this.addMixinRule("shapes.precompute_shape_arrays", true); this.addMixinRule("shapes.shape_merging", true); diff --git a/src/main/java/com/abdelaziz/canary/mixin/CanaryMixinPlugin.java b/src/main/java/com/abdelaziz/canary/mixin/CanaryMixinPlugin.java index ff8d6d6f..452a22e6 100644 --- a/src/main/java/com/abdelaziz/canary/mixin/CanaryMixinPlugin.java +++ b/src/main/java/com/abdelaziz/canary/mixin/CanaryMixinPlugin.java @@ -48,15 +48,6 @@ public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { return false; } - //For now disable this until running some tests - if (mixinClassName.startsWith(MIXIN_PACKAGE_ROOT + "shapes.lazy_shape_context") && (FMLLoader.getLoadingModList().getModFileById("the_bumblezone") != null)) { - return false; - } - - if (mixinClassName.startsWith(MIXIN_PACKAGE_ROOT + "block.hopper") && (FMLLoader.getLoadingModList().getModFileById("easy_villagers") != null)) { - return false; - } - if (mixinClassName.startsWith(MIXIN_PACKAGE_ROOT + "chunk.replace_streams.servercore_compat") && (FMLLoader.getLoadingModList().getModFileById("servercore") != null)) { return false; } diff --git a/src/main/java/com/abdelaziz/canary/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin.java b/src/main/java/com/abdelaziz/canary/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin.java deleted file mode 100644 index 6fffe78a..00000000 --- a/src/main/java/com/abdelaziz/canary/mixin/shapes/lazy_shape_context/EntityCollisionContextMixin.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.abdelaziz.canary.mixin.shapes.lazy_shape_context; - -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.material.FluidState; -import net.minecraft.world.phys.shapes.EntityCollisionContext; -import org.jetbrains.annotations.Nullable; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Mutable; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Constant; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.ModifyConstant; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import java.util.function.Predicate; - -@Mixin(EntityCollisionContext.class) -public class EntityCollisionContextMixin { - @Mutable - @Shadow - @Final - private ItemStack heldItem; - - @Mutable - @Shadow - @Final - private Predicate canStandOnFluid; - - @Shadow - @Final - @Nullable - private Entity entity; - - /** - * Mixin the instanceof to always return false to avoid the expensive inventory access. - * No need to use Opcodes.INSTANCEOF or similar. - */ - @ModifyConstant( - method = "(Lnet/minecraft/world/entity/Entity;)V", - constant = @Constant(classValue = LivingEntity.class, ordinal = 0) - ) - private static boolean redirectInstanceOf(Object obj, Class clazz) { - return false; - } - - @ModifyConstant( - method = "(Lnet/minecraft/world/entity/Entity;)V", - constant = @Constant(classValue = LivingEntity.class, ordinal = 2) - ) - private static boolean redirectInstanceOf2(Object obj, Class clazz) { - return false; - } - - @Inject( - method = "(Lnet/minecraft/world/entity/Entity;)V", - at = @At("RETURN") - /*at = @At( - value = "INVOKE", - target = "Lnet/minecraft/block/EntityShapeContext;(ZDLnet/minecraft/item/ItemStack;Ljava/util/function/Predicate;Lnet/minecraft/entity/Entity;)V", - shift = At.Shift.AFTER - )*/ - ) - private void initFields(Entity entity, CallbackInfo ci) { - this.heldItem = null; - this.canStandOnFluid = null; - } - - @Inject( - method = "isHoldingItem(Lnet/minecraft/world/item/Item;)Z", - at = @At("HEAD") - ) - public void isHolding(Item item, CallbackInfoReturnable cir) { - if (this.heldItem == null) { - this.heldItem = this.entity instanceof LivingEntity ? ((LivingEntity) this.entity).getMainHandItem() : ItemStack.EMPTY; - } - } - - @Inject( - method = "canStandOnFluid(Lnet/minecraft/world/level/material/FluidState;Lnet/minecraft/world/level/material/FluidState;)Z", - at = @At("HEAD") - ) - public void canWalkOnFluid(FluidState state, FluidState fluidState, CallbackInfoReturnable cir) { - if (this.canStandOnFluid == null) { - if (this.entity instanceof LivingEntity livingEntity) { - this.canStandOnFluid = livingEntity::canStandOnFluid; - } else { - this.canStandOnFluid = (liquid) -> false; - } - } - } -} diff --git a/src/main/java/com/abdelaziz/canary/mixin/shapes/specialized_shapes/VoxelShapeMixin.java b/src/main/java/com/abdelaziz/canary/mixin/shapes/specialized_shapes/VoxelShapeMixin.java index 27d59c1b..91ef199c 100644 --- a/src/main/java/com/abdelaziz/canary/mixin/shapes/specialized_shapes/VoxelShapeMixin.java +++ b/src/main/java/com/abdelaziz/canary/mixin/shapes/specialized_shapes/VoxelShapeMixin.java @@ -42,10 +42,6 @@ public double collideX(AxisCycle cycleDirection, AABB box, double maxDist) { return maxDist; } - if (Math.abs(maxDist) < POSITIVE_EPSILON) { - return 0.0D; - } - AxisCycle cycle = cycleDirection.inverse(); Direction.Axis axisX = cycle.cycle(Direction.Axis.X); diff --git a/src/main/resources/canary.mixins.json b/src/main/resources/canary.mixins.json index abdb1964..7121c4f3 100644 --- a/src/main/resources/canary.mixins.json +++ b/src/main/resources/canary.mixins.json @@ -149,7 +149,6 @@ "math.sine_lut.MthMixin", "profiler.ServerLevelMixin", "shapes.blockstate_cache.BlockMixin", - "shapes.lazy_shape_context.EntityCollisionContextMixin", "shapes.optimized_matching.ShapesMixin", "shapes.precompute_shape_arrays.CubePointRangeMixin", "shapes.precompute_shape_arrays.CubeVoxelShapeMixin",