Fix activation range
This commit is contained in:
parent
3c924d0934
commit
7e67d95d4d
|
@ -26,3 +26,4 @@ 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/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/spigotmc/ActivationRange$ActivationType/boundingBox
|
|
@ -3,4 +3,6 @@ package io.izzel.arclight.impl.bridge;
|
|||
public interface EntityBridge_ActivationRange {
|
||||
|
||||
void bridge$inactiveTick();
|
||||
|
||||
void bridge$updateActivation();
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
"mixins": [
|
||||
"ClassInheritanceMultiMapMixin",
|
||||
"VoxelShapesMixin",
|
||||
"activationrange.ActivationRangeMixin",
|
||||
"activationrange.EntityMixin_ActivationRange",
|
||||
"activationrange.ServerWorldMixin_ActivationRange",
|
||||
"activationrange.entity.AbstractArrowEntityMixin_ActivationRange",
|
||||
|
|
Loading…
Reference in New Issue
Block a user