Skip to content

Commit ab4eabe

Browse files
committed
Parity changes with newest 1.21 updates (laser deletion when entering unloaded chunks)
Took 13 minutes
1 parent 8b13fb6 commit ab4eabe

4 files changed

Lines changed: 37 additions & 13 deletions

File tree

src/main/java/com/github/x3r/mekanism_turrets/MekanismTurrets.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.github.x3r.mekanism_turrets.common.block_entity.LaserTurretBlockEntity;
44
import com.github.x3r.mekanism_turrets.common.block_entity.LaserTurretTier;
5+
import com.github.x3r.mekanism_turrets.common.entity.LaserEntity;
56
import com.github.x3r.mekanism_turrets.common.packet.MekanismTurretsPacketHandler;
67
import com.github.x3r.mekanism_turrets.common.registry.*;
78
import com.mojang.logging.LogUtils;
@@ -40,6 +41,7 @@ public MekanismTurrets() {
4041

4142
modEventBus.addListener(this::loadConfig);
4243
MekanismTurretsPacketHandler.registerPackets();
44+
forgeBus.addListener(LaserEntity::enterChunk);
4345

4446
registerDataTickets();
4547
}

src/main/java/com/github/x3r/mekanism_turrets/common/block/LaserTurretBlock.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,14 @@
33
import com.github.x3r.mekanism_turrets.common.block_entity.LaserTurretBlockEntity;
44
import mekanism.common.block.prefab.BlockTile;
55
import mekanism.common.content.blocktype.BlockTypeTile;
6-
import mekanism.common.content.blocktype.Machine;
76
import mekanism.common.resource.BlockResourceInfo;
87
import mekanism.common.tile.base.WrenchResult;
9-
import mekanism.common.util.EnumUtils;
10-
import mekanism.common.util.VoxelShapeUtils;
118
import mekanism.common.util.WorldUtils;
129
import net.minecraft.core.BlockPos;
1310
import net.minecraft.core.Direction;
14-
import net.minecraft.server.level.ServerLevel;
1511
import net.minecraft.world.InteractionHand;
1612
import net.minecraft.world.InteractionResult;
1713
import net.minecraft.world.entity.player.Player;
18-
import net.minecraft.world.item.ItemStack;
1914
import net.minecraft.world.item.context.BlockPlaceContext;
2015
import net.minecraft.world.level.BlockGetter;
2116
import net.minecraft.world.level.Level;
@@ -25,10 +20,8 @@
2520
import net.minecraft.world.level.block.Rotation;
2621
import net.minecraft.world.level.block.state.BlockState;
2722
import net.minecraft.world.level.block.state.StateDefinition;
28-
import net.minecraft.world.level.block.state.properties.AttachFace;
2923
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
3024
import net.minecraft.world.level.block.state.properties.DirectionProperty;
31-
import net.minecraft.world.level.block.state.properties.EnumProperty;
3225
import net.minecraft.world.phys.AABB;
3326
import net.minecraft.world.phys.BlockHitResult;
3427
import net.minecraft.world.phys.shapes.BooleanOp;

src/main/java/com/github/x3r/mekanism_turrets/common/entity/LaserEntity.java

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import com.github.x3r.mekanism_turrets.common.block.LaserTurretBlock;
44
import com.github.x3r.mekanism_turrets.common.registry.DamageTypeRegistry;
55
import com.github.x3r.mekanism_turrets.common.registry.EntityRegistry;
6+
import net.minecraft.core.SectionPos;
7+
import net.minecraft.server.level.ServerLevel;
68
import net.minecraft.world.entity.EntityType;
79
import net.minecraft.world.entity.projectile.Projectile;
810
import net.minecraft.world.entity.projectile.ProjectileUtil;
@@ -12,6 +14,8 @@
1214
import net.minecraft.world.phys.EntityHitResult;
1315
import net.minecraft.world.phys.HitResult;
1416
import net.minecraft.world.phys.Vec3;
17+
import net.minecraftforge.event.entity.EntityEvent;
18+
import net.minecraftforge.eventbus.api.SubscribeEvent;
1519

1620
public class LaserEntity extends Projectile {
1721

@@ -32,17 +36,22 @@ public LaserEntity(Level pLevel, Vec3 pos, double damage) {
3236
public void tick() {
3337
super.tick();
3438
if(!level().isClientSide()) {
39+
if (lifeTime++ > 10 * 20) {
40+
this.discard();
41+
return;
42+
}
43+
if(this.position().y > level().getMaxBuildHeight()+100) {
44+
this.discard();
45+
return;
46+
}
3547
HitResult hitResult = ProjectileUtil.getHitResultOnMoveVector(this, this::canHitEntity);
3648
if(hitResult.getType().equals(HitResult.Type.BLOCK)) {
3749
onHitBlock((BlockHitResult) hitResult);
3850
}
3951
level().getEntities(this, getBoundingBox().inflate(0.5)).forEach(entity -> {
4052
entity.hurt(new DamageTypeRegistry(level().registryAccess()).laser(), (float) this.damage);
4153
});
42-
lifeTime++;
43-
if (lifeTime > 10 * 20) {
44-
this.discard();
45-
}
54+
4655
}
4756
this.setPos(this.position().add(this.getDeltaMovement()));
4857
}
@@ -60,4 +69,24 @@ protected void onHitBlock(BlockHitResult pResult) {
6069
protected void defineSynchedData() {
6170

6271
}
72+
73+
@Override
74+
public boolean shouldBeSaved() {
75+
return false;
76+
}
77+
78+
@Override
79+
public int getPortalWaitTime() {
80+
return Integer.MAX_VALUE;
81+
}
82+
83+
@SubscribeEvent
84+
public static void enterChunk(EntityEvent.EnteringSection event) {
85+
if(!event.getEntity().level().isClientSide() && event.didChunkChange() && event.getEntity() instanceof LaserEntity) {
86+
ServerLevel level = ((ServerLevel) event.getEntity().level());
87+
if (level.isPositionEntityTicking(SectionPos.of(event.getPackedNewPos()).center())) {
88+
event.getEntity().discard();
89+
}
90+
}
91+
}
6392
}

src/main/java/com/github/x3r/mekanism_turrets/common/registry/EntityRegistry.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public class EntityRegistry {
1717
() -> EntityType.Builder.<LaserEntity>of(LaserEntity::new, MobCategory.MISC)
1818
.sized(0.25F, 0.25F)
1919
.noSave()
20-
.clientTrackingRange(4)
21-
.updateInterval(10)
20+
.clientTrackingRange(8)
21+
.updateInterval(3)
2222
.build(new ResourceLocation(MekanismTurrets.MOD_ID, "laser").toString()));
2323
}

0 commit comments

Comments
 (0)