Fix activation range

This commit is contained in:
IzzelAliz 2021-02-04 23:22:29 +08:00
parent 3c924d0934
commit 7e67d95d4d
5 changed files with 45 additions and 1 deletions

View File

@ -25,4 +25,5 @@ public org/bukkit/craftbukkit/v/inventory/CraftMetaKnowledgeBook/<init>(Lorg/buk
public org/bukkit/craftbukkit/v/inventory/CraftMetaTropicalFishBucket public org/bukkit/craftbukkit/v/inventory/CraftMetaTropicalFishBucket
public org/bukkit/craftbukkit/v/inventory/CraftMetaTropicalFishBucket/<init>(Lorg/bukkit/craftbukkit/v/inventory/CraftMetaItem;)V public org/bukkit/craftbukkit/v/inventory/CraftMetaTropicalFishBucket/<init>(Lorg/bukkit/craftbukkit/v/inventory/CraftMetaItem;)V
public org/bukkit/craftbukkit/v/inventory/CraftMetaCrossbow/<init>(Lorg/bukkit/craftbukkit/v/inventory/CraftMetaItem;)V public org/bukkit/craftbukkit/v/inventory/CraftMetaCrossbow/<init>(Lorg/bukkit/craftbukkit/v/inventory/CraftMetaItem;)V
public org/bukkit/craftbukkit/v/inventory/CraftMetaSuspiciousStew/<init>(Lorg/bukkit/craftbukkit/v/inventory/CraftMetaItem;)V public org/bukkit/craftbukkit/v/inventory/CraftMetaSuspiciousStew/<init>(Lorg/bukkit/craftbukkit/v/inventory/CraftMetaItem;)V
public org/spigotmc/ActivationRange$ActivationType/boundingBox

View File

@ -3,4 +3,6 @@ package io.izzel.arclight.impl.bridge;
public interface EntityBridge_ActivationRange { public interface EntityBridge_ActivationRange {
void bridge$inactiveTick(); void bridge$inactiveTick();
void bridge$updateActivation();
} }

View File

@ -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<Entity> entityList : chunk.entityLists) {
for (Entity entity : entityList) {
((EntityBridge_ActivationRange) entity).bridge$updateActivation();
}
}
}
}

View File

@ -1,9 +1,11 @@
package io.izzel.arclight.impl.mixin.optimization.general.activationrange; package io.izzel.arclight.impl.mixin.optimization.general.activationrange;
import io.izzel.arclight.common.bridge.world.WorldBridge; import io.izzel.arclight.common.bridge.world.WorldBridge;
import io.izzel.arclight.common.mod.ArclightConstants;
import io.izzel.arclight.impl.bridge.EntityBridge_ActivationRange; import io.izzel.arclight.impl.bridge.EntityBridge_ActivationRange;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityType; import net.minecraft.entity.EntityType;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.world.World; import net.minecraft.world.World;
import org.spigotmc.ActivationRange; import org.spigotmc.ActivationRange;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
@ -20,6 +22,7 @@ public abstract class EntityMixin_ActivationRange implements EntityBridge_Activa
@Shadow public int ticksExisted; @Shadow public int ticksExisted;
@Shadow public abstract void remove(); @Shadow public abstract void remove();
@Shadow public World world; @Shadow public World world;
@Shadow public abstract AxisAlignedBB getBoundingBox();
// @formatter:on // @formatter:on
public ActivationRange.ActivationType activationType; public ActivationRange.ActivationType activationType;
@ -43,4 +46,15 @@ public abstract class EntityMixin_ActivationRange implements EntityBridge_Activa
public void bridge$inactiveTick() { public void bridge$inactiveTick() {
this.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;
}
}
}
} }

View File

@ -6,6 +6,7 @@
"mixins": [ "mixins": [
"ClassInheritanceMultiMapMixin", "ClassInheritanceMultiMapMixin",
"VoxelShapesMixin", "VoxelShapesMixin",
"activationrange.ActivationRangeMixin",
"activationrange.EntityMixin_ActivationRange", "activationrange.EntityMixin_ActivationRange",
"activationrange.ServerWorldMixin_ActivationRange", "activationrange.ServerWorldMixin_ActivationRange",
"activationrange.entity.AbstractArrowEntityMixin_ActivationRange", "activationrange.entity.AbstractArrowEntityMixin_ActivationRange",