diff --git a/arclight-common/bukkit.at b/arclight-common/bukkit.at index 00e00561..e7e49fa9 100644 --- a/arclight-common/bukkit.at +++ b/arclight-common/bukkit.at @@ -25,4 +25,5 @@ public org/bukkit/craftbukkit/v/inventory/CraftMetaKnowledgeBook/(Lorg/buk public org/bukkit/craftbukkit/v/inventory/CraftMetaTropicalFishBucket public org/bukkit/craftbukkit/v/inventory/CraftMetaTropicalFishBucket/(Lorg/bukkit/craftbukkit/v/inventory/CraftMetaItem;)V public org/bukkit/craftbukkit/v/inventory/CraftMetaCrossbow/(Lorg/bukkit/craftbukkit/v/inventory/CraftMetaItem;)V -public org/bukkit/craftbukkit/v/inventory/CraftMetaSuspiciousStew/(Lorg/bukkit/craftbukkit/v/inventory/CraftMetaItem;)V \ No newline at end of file +public org/bukkit/craftbukkit/v/inventory/CraftMetaSuspiciousStew/(Lorg/bukkit/craftbukkit/v/inventory/CraftMetaItem;)V +public org/spigotmc/ActivationRange$ActivationType/boundingBox \ No newline at end of file diff --git a/arclight-forge-1.16/src/main/java/io/izzel/arclight/impl/bridge/EntityBridge_ActivationRange.java b/arclight-forge-1.16/src/main/java/io/izzel/arclight/impl/bridge/EntityBridge_ActivationRange.java index 3d049627..a3609fb1 100644 --- a/arclight-forge-1.16/src/main/java/io/izzel/arclight/impl/bridge/EntityBridge_ActivationRange.java +++ b/arclight-forge-1.16/src/main/java/io/izzel/arclight/impl/bridge/EntityBridge_ActivationRange.java @@ -3,4 +3,6 @@ package io.izzel.arclight.impl.bridge; public interface EntityBridge_ActivationRange { void bridge$inactiveTick(); + + void bridge$updateActivation(); } diff --git a/arclight-forge-1.16/src/main/java/io/izzel/arclight/impl/mixin/optimization/general/activationrange/ActivationRangeMixin.java b/arclight-forge-1.16/src/main/java/io/izzel/arclight/impl/mixin/optimization/general/activationrange/ActivationRangeMixin.java new file mode 100644 index 00000000..763b3493 --- /dev/null +++ b/arclight-forge-1.16/src/main/java/io/izzel/arclight/impl/mixin/optimization/general/activationrange/ActivationRangeMixin.java @@ -0,0 +1,26 @@ +package io.izzel.arclight.impl.mixin.optimization.general.activationrange; + +import io.izzel.arclight.impl.bridge.EntityBridge_ActivationRange; +import net.minecraft.entity.Entity; +import net.minecraft.util.ClassInheritanceMultiMap; +import net.minecraft.world.chunk.Chunk; +import org.spigotmc.ActivationRange; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +@Mixin(value = ActivationRange.class, remap = false) +public class ActivationRangeMixin { + + /** + * @author IzzelAliz + * @reason entityLists + */ + @Overwrite + private static void activateChunkEntities(Chunk chunk) { + for (ClassInheritanceMultiMap entityList : chunk.entityLists) { + for (Entity entity : entityList) { + ((EntityBridge_ActivationRange) entity).bridge$updateActivation(); + } + } + } +} diff --git a/arclight-forge-1.16/src/main/java/io/izzel/arclight/impl/mixin/optimization/general/activationrange/EntityMixin_ActivationRange.java b/arclight-forge-1.16/src/main/java/io/izzel/arclight/impl/mixin/optimization/general/activationrange/EntityMixin_ActivationRange.java index b1dee40d..0941b9a7 100644 --- a/arclight-forge-1.16/src/main/java/io/izzel/arclight/impl/mixin/optimization/general/activationrange/EntityMixin_ActivationRange.java +++ b/arclight-forge-1.16/src/main/java/io/izzel/arclight/impl/mixin/optimization/general/activationrange/EntityMixin_ActivationRange.java @@ -1,9 +1,11 @@ package io.izzel.arclight.impl.mixin.optimization.general.activationrange; import io.izzel.arclight.common.bridge.world.WorldBridge; +import io.izzel.arclight.common.mod.ArclightConstants; import io.izzel.arclight.impl.bridge.EntityBridge_ActivationRange; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; +import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.world.World; import org.spigotmc.ActivationRange; import org.spongepowered.asm.mixin.Mixin; @@ -20,6 +22,7 @@ public abstract class EntityMixin_ActivationRange implements EntityBridge_Activa @Shadow public int ticksExisted; @Shadow public abstract void remove(); @Shadow public World world; + @Shadow public abstract AxisAlignedBB getBoundingBox(); // @formatter:on public ActivationRange.ActivationType activationType; @@ -43,4 +46,15 @@ public abstract class EntityMixin_ActivationRange implements EntityBridge_Activa public void bridge$inactiveTick() { this.inactiveTick(); } + + @Override + public void bridge$updateActivation() { + if (ArclightConstants.currentTick > this.activatedTick) { + if (this.defaultActivationState) { + this.activatedTick = ArclightConstants.currentTick; + } else if (this.activationType.boundingBox.intersects(this.getBoundingBox())) { + this.activatedTick = ArclightConstants.currentTick; + } + } + } } diff --git a/arclight-forge-1.16/src/main/resources/mixins.arclight.impl.optimization.1_16.json b/arclight-forge-1.16/src/main/resources/mixins.arclight.impl.optimization.1_16.json index 33a2e412..0905cca1 100644 --- a/arclight-forge-1.16/src/main/resources/mixins.arclight.impl.optimization.1_16.json +++ b/arclight-forge-1.16/src/main/resources/mixins.arclight.impl.optimization.1_16.json @@ -6,6 +6,7 @@ "mixins": [ "ClassInheritanceMultiMapMixin", "VoxelShapesMixin", + "activationrange.ActivationRangeMixin", "activationrange.EntityMixin_ActivationRange", "activationrange.ServerWorldMixin_ActivationRange", "activationrange.entity.AbstractArrowEntityMixin_ActivationRange",