improvements in basePrimedTNT
This commit is contained in:
		
							parent
							
								
									1226338d10
								
							
						
					
					
						commit
						183d0fe38a
					
				@ -10,12 +10,8 @@ import javax.annotation.Nullable;
 | 
				
			|||||||
public class ClusterPrimedTNT extends basePrimedTNT {
 | 
					public class ClusterPrimedTNT extends basePrimedTNT {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public ClusterPrimedTNT (Level pLevel, double pX, double pY, double pZ, @Nullable LivingEntity pOwner, float power, int fuse, Vec3 move) {
 | 
					    public ClusterPrimedTNT (Level pLevel, double pX, double pY, double pZ, @Nullable LivingEntity pOwner, float power, int fuse, Vec3 move) {
 | 
				
			||||||
        super(entities.TNT_CLUSTER.get(), pLevel, pOwner);
 | 
					        super(entities.TNT_CLUSTER.get(), pLevel, pOwner, new Vec3(pX, pY, pZ), fuse, power, "cluster");
 | 
				
			||||||
        this.setPos(pX, pY, pZ);
 | 
					 | 
				
			||||||
        this.setFuse(fuse);
 | 
					 | 
				
			||||||
        this.setPower(power);
 | 
					 | 
				
			||||||
        this.addDeltaMovement(move);
 | 
					        this.addDeltaMovement(move);
 | 
				
			||||||
        this.setRenderID("cluster");
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public ClusterPrimedTNT(EntityType<ClusterPrimedTNT> entityType, Level level) {
 | 
					    public ClusterPrimedTNT(EntityType<ClusterPrimedTNT> entityType, Level level) {
 | 
				
			||||||
 | 
				
			|||||||
@ -3,15 +3,13 @@ package com.jenny.compressedtnt.entities;
 | 
				
			|||||||
import net.minecraft.world.entity.EntityType;
 | 
					import net.minecraft.world.entity.EntityType;
 | 
				
			||||||
import net.minecraft.world.entity.LivingEntity;
 | 
					import net.minecraft.world.entity.LivingEntity;
 | 
				
			||||||
import net.minecraft.world.level.Level;
 | 
					import net.minecraft.world.level.Level;
 | 
				
			||||||
 | 
					import net.minecraft.world.phys.Vec3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Nullable;
 | 
					import javax.annotation.Nullable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class StrongerPrimedTNT extends basePrimedTNT {
 | 
					public class StrongerPrimedTNT extends basePrimedTNT {
 | 
				
			||||||
    public StrongerPrimedTNT (Level pLevel, double pX, double pY, double pZ, @Nullable LivingEntity pOwner, float power, int fuse) {
 | 
					    public StrongerPrimedTNT (Level pLevel, double pX, double pY, double pZ, @Nullable LivingEntity pOwner, float power, int fuse) {
 | 
				
			||||||
        super(entities.TNT_STRONGER.get(), pLevel, pOwner);
 | 
					        super(entities.TNT_STRONGER.get(), pLevel, pOwner, new Vec3(pX, pY, pZ), fuse, power, "default");
 | 
				
			||||||
        this.setPos(pX, pY, pZ);
 | 
					 | 
				
			||||||
        this.setFuse(fuse);
 | 
					 | 
				
			||||||
        this.setPower(power);
 | 
					 | 
				
			||||||
        this.setRenderID(evalRenderID());
 | 
					        this.setRenderID(evalRenderID());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,6 @@
 | 
				
			|||||||
package com.jenny.compressedtnt.entities;
 | 
					package com.jenny.compressedtnt.entities;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import net.minecraft.core.BlockPos;
 | 
				
			||||||
import net.minecraft.core.particles.ParticleTypes;
 | 
					import net.minecraft.core.particles.ParticleTypes;
 | 
				
			||||||
import net.minecraft.nbt.CompoundTag;
 | 
					import net.minecraft.nbt.CompoundTag;
 | 
				
			||||||
import net.minecraft.network.syncher.EntityDataAccessor;
 | 
					import net.minecraft.network.syncher.EntityDataAccessor;
 | 
				
			||||||
@ -7,6 +8,8 @@ import net.minecraft.network.syncher.EntityDataSerializers;
 | 
				
			|||||||
import net.minecraft.network.syncher.SynchedEntityData;
 | 
					import net.minecraft.network.syncher.SynchedEntityData;
 | 
				
			||||||
import net.minecraft.world.entity.*;
 | 
					import net.minecraft.world.entity.*;
 | 
				
			||||||
import net.minecraft.world.level.Level;
 | 
					import net.minecraft.world.level.Level;
 | 
				
			||||||
 | 
					import net.minecraft.world.phys.Vec3;
 | 
				
			||||||
 | 
					import org.jetbrains.annotations.NotNull;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Nullable;
 | 
					import javax.annotation.Nullable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -22,12 +25,25 @@ public abstract class basePrimedTNT extends Entity implements TraceableEntity {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public basePrimedTNT(EntityType<? extends basePrimedTNT> pEntityType, Level pLevel, @Nullable LivingEntity owner) {
 | 
					    public basePrimedTNT(EntityType<? extends basePrimedTNT> pEntityType, Level pLevel, @Nullable LivingEntity owner) {
 | 
				
			||||||
        super(pEntityType, pLevel);
 | 
					        super(pEntityType, pLevel);
 | 
				
			||||||
 | 
					        commonInit(pLevel, owner);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void commonInit(Level pLevel, @Nullable LivingEntity owner) {
 | 
				
			||||||
        double d0 = pLevel.random.nextDouble() * (double)((float)Math.PI * 2F);
 | 
					        double d0 = pLevel.random.nextDouble() * (double)((float)Math.PI * 2F);
 | 
				
			||||||
        this.setDeltaMovement(-Math.sin(d0) * 0.02D, (double)0.2F, -Math.cos(d0) * 0.02D);
 | 
					        this.setDeltaMovement(-Math.sin(d0) * 0.02D, (double)0.2F, -Math.cos(d0) * 0.02D);
 | 
				
			||||||
        this.blocksBuilding = true;
 | 
					        this.blocksBuilding = true;
 | 
				
			||||||
        this.owner = owner;
 | 
					        this.owner = owner;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public basePrimedTNT(EntityType<? extends basePrimedTNT> pEntityType, Level pLevel, @Nullable LivingEntity owner, Vec3 pos, int fuse, float power, String renderID) {
 | 
				
			||||||
 | 
					        super(pEntityType, pLevel);
 | 
				
			||||||
 | 
					        commonInit(pLevel, owner);
 | 
				
			||||||
 | 
					        setPos(pos);
 | 
				
			||||||
 | 
					        setFuse(fuse);
 | 
				
			||||||
 | 
					        setPower(power);
 | 
				
			||||||
 | 
					        setRenderID(renderID);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected void explode() {
 | 
					    protected void explode() {
 | 
				
			||||||
        this.level().explode(this, this.getX(), this.getY(0.0625D), this.getZ(), this.getPower(), Level.ExplosionInteraction.TNT);
 | 
					        this.level().explode(this, this.getX(), this.getY(0.0625D), this.getZ(), this.getPower(), Level.ExplosionInteraction.TNT);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -116,4 +132,8 @@ public abstract class basePrimedTNT extends Entity implements TraceableEntity {
 | 
				
			|||||||
    public String getRenderID() {
 | 
					    public String getRenderID() {
 | 
				
			||||||
        return this.entityData.get(DATA_RENDER_ID);
 | 
					        return this.entityData.get(DATA_RENDER_ID);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected float getEyeHeight(@NotNull Pose pPose, @NotNull EntityDimensions pSize) {
 | 
				
			||||||
 | 
					        return 0.15F;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,6 @@ import net.minecraft.world.entity.*;
 | 
				
			|||||||
import net.minecraft.world.level.Level;
 | 
					import net.minecraft.world.level.Level;
 | 
				
			||||||
import net.minecraft.world.phys.AABB;
 | 
					import net.minecraft.world.phys.AABB;
 | 
				
			||||||
import net.minecraft.world.phys.Vec3;
 | 
					import net.minecraft.world.phys.Vec3;
 | 
				
			||||||
import org.jetbrains.annotations.NotNull;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Nullable;
 | 
					import javax.annotation.Nullable;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
@ -17,18 +16,14 @@ public class blackHolePrimedTNT extends basePrimedTNT {
 | 
				
			|||||||
    private static final EntityDataAccessor<Float> DATA_SPEED_ID = SynchedEntityData.defineId(blackHolePrimedTNT.class, EntityDataSerializers.FLOAT);
 | 
					    private static final EntityDataAccessor<Float> DATA_SPEED_ID = SynchedEntityData.defineId(blackHolePrimedTNT.class, EntityDataSerializers.FLOAT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public blackHolePrimedTNT(Level pLevel, double pX, double pY, double pZ, @Nullable LivingEntity pOwner, float power, int fuse, float speed) {
 | 
					    public blackHolePrimedTNT(Level pLevel, double pX, double pY, double pZ, @Nullable LivingEntity pOwner, float power, int fuse, float speed) {
 | 
				
			||||||
        super(entities.TNT_BLACK_HOLE.get(), pLevel, pOwner);
 | 
					        super(entities.TNT_BLACK_HOLE.get(), pLevel, pOwner, new Vec3(pX, pY, pZ), fuse, power, "black_hole");
 | 
				
			||||||
        this.setRenderID("black_hole");
 | 
					 | 
				
			||||||
        this.setPos(pX, pY, pZ);
 | 
					 | 
				
			||||||
        this.setOwner(pOwner);
 | 
					 | 
				
			||||||
        this.setSpeed(speed);
 | 
					        this.setSpeed(speed);
 | 
				
			||||||
        this.setPower(power);
 | 
					 | 
				
			||||||
        this.setFuse(fuse);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public blackHolePrimedTNT(EntityType<blackHolePrimedTNT> entityType, Level level) {
 | 
					    public blackHolePrimedTNT(EntityType<blackHolePrimedTNT> entityType, Level level) {
 | 
				
			||||||
        super(entityType, level, null);
 | 
					        super(entityType, level, null);
 | 
				
			||||||
        this.setRenderID("black_hole");
 | 
					        this.setRenderID("black_hole");
 | 
				
			||||||
 | 
					        this.setSpeed(this.getSpeed());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private Vec3 targetVector(Entity target) {
 | 
					    private Vec3 targetVector(Entity target) {
 | 
				
			||||||
@ -90,8 +85,4 @@ public class blackHolePrimedTNT extends basePrimedTNT {
 | 
				
			|||||||
        this.entityData.define(DATA_SPEED_ID, 4.0f);
 | 
					        this.entityData.define(DATA_SPEED_ID, 4.0f);
 | 
				
			||||||
        super.defineSynchedData();
 | 
					        super.defineSynchedData();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    protected float getEyeHeight(@NotNull Pose pPose, @NotNull EntityDimensions pSize) {
 | 
					 | 
				
			||||||
        return 0.15F;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,27 +1,25 @@
 | 
				
			|||||||
package com.jenny.compressedtnt.entities;
 | 
					package com.jenny.compressedtnt.entities;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import net.minecraft.nbt.CompoundTag;
 | 
				
			||||||
 | 
					import net.minecraft.network.syncher.EntityDataAccessor;
 | 
				
			||||||
 | 
					import net.minecraft.network.syncher.EntityDataSerializers;
 | 
				
			||||||
 | 
					import net.minecraft.network.syncher.SynchedEntityData;
 | 
				
			||||||
import net.minecraft.world.entity.*;
 | 
					import net.minecraft.world.entity.*;
 | 
				
			||||||
import net.minecraft.world.entity.ai.targeting.TargetingConditions;
 | 
					import net.minecraft.world.entity.ai.targeting.TargetingConditions;
 | 
				
			||||||
import net.minecraft.world.level.Level;
 | 
					import net.minecraft.world.level.Level;
 | 
				
			||||||
import net.minecraft.world.phys.AABB;
 | 
					import net.minecraft.world.phys.AABB;
 | 
				
			||||||
import net.minecraft.world.phys.Vec3;
 | 
					import net.minecraft.world.phys.Vec3;
 | 
				
			||||||
import org.jetbrains.annotations.NotNull;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Nullable;
 | 
					import javax.annotation.Nullable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class homingPrimedTNT extends basePrimedTNT {
 | 
					public class homingPrimedTNT extends basePrimedTNT {
 | 
				
			||||||
    float speed = 0;
 | 
					    private static final EntityDataAccessor<Float> DATA_SPEED_ID = SynchedEntityData.defineId(homingPrimedTNT.class, EntityDataSerializers.FLOAT);
 | 
				
			||||||
    Entity target;
 | 
					    Entity target;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public homingPrimedTNT (Level pLevel, double pX, double pY, double pZ, @Nullable LivingEntity pOwner, float power, int fuse, float speed) {
 | 
					    public homingPrimedTNT (Level pLevel, double pX, double pY, double pZ, @Nullable LivingEntity pOwner, float power, int fuse, float speed) {
 | 
				
			||||||
        super(entities.TNT_HOMING.get(), pLevel, pOwner);
 | 
					        super(entities.TNT_HOMING.get(), pLevel, pOwner, new Vec3(pX, pY, pZ), fuse, power, "homing");
 | 
				
			||||||
        this.setPos(pX, pY, pZ);
 | 
					 | 
				
			||||||
        this.setOwner(pOwner);
 | 
					 | 
				
			||||||
        this.speed = speed;
 | 
					 | 
				
			||||||
        this.target = null;
 | 
					        this.target = null;
 | 
				
			||||||
        this.setPower(power);
 | 
					        this.setSpeed(speed);
 | 
				
			||||||
        this.setFuse(fuse);
 | 
					 | 
				
			||||||
        this.setRenderID("homing");
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public homingPrimedTNT(EntityType<homingPrimedTNT> entityType, Level level) {
 | 
					    public homingPrimedTNT(EntityType<homingPrimedTNT> entityType, Level level) {
 | 
				
			||||||
@ -32,6 +30,7 @@ public class homingPrimedTNT extends basePrimedTNT {
 | 
				
			|||||||
        double targetDist = getTargetDist();
 | 
					        double targetDist = getTargetDist();
 | 
				
			||||||
        Vec3 targetVec = new Vec3(0, 0, 0);
 | 
					        Vec3 targetVec = new Vec3(0, 0, 0);
 | 
				
			||||||
        if (targetDist > 3) {
 | 
					        if (targetDist > 3) {
 | 
				
			||||||
 | 
					            float speed = getSpeed();
 | 
				
			||||||
            targetVec = new Vec3(target.getX() - this.getX(), target.getY() - this.getY(), target.getZ() - this.getZ()).normalize().multiply(speed, speed, speed);
 | 
					            targetVec = new Vec3(target.getX() - this.getX(), target.getY() - this.getY(), target.getZ() - this.getZ()).normalize().multiply(speed, speed, speed);
 | 
				
			||||||
            if (targetDist < 10) {
 | 
					            if (targetDist < 10) {
 | 
				
			||||||
                targetVec.multiply(targetDist / 10, targetDist / 10, targetDist / 10);
 | 
					                targetVec.multiply(targetDist / 10, targetDist / 10, targetDist / 10);
 | 
				
			||||||
@ -49,7 +48,6 @@ public class homingPrimedTNT extends basePrimedTNT {
 | 
				
			|||||||
        Vec3 corner2 = this.position().add(15, 15, 15);
 | 
					        Vec3 corner2 = this.position().add(15, 15, 15);
 | 
				
			||||||
        AABB boundingBox = new AABB(corner1, corner2);
 | 
					        AABB boundingBox = new AABB(corner1, corner2);
 | 
				
			||||||
        target = this.level().getNearestEntity(LivingEntity.class, TargetingConditions.forNonCombat(), null, this.getX(), this.getY(), this.getZ(), boundingBox);
 | 
					        target = this.level().getNearestEntity(LivingEntity.class, TargetingConditions.forNonCombat(), null, this.getX(), this.getY(), this.getZ(), boundingBox);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@ -64,7 +62,29 @@ public class homingPrimedTNT extends basePrimedTNT {
 | 
				
			|||||||
        super.tick();
 | 
					        super.tick();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected float getEyeHeight(@NotNull Pose pPose, @NotNull EntityDimensions pSize) {
 | 
					    @Override
 | 
				
			||||||
        return 0.15F;
 | 
					    protected void addAdditionalSaveData(CompoundTag pCompound) {
 | 
				
			||||||
 | 
					        pCompound.putFloat("Speed", this.getSpeed());
 | 
				
			||||||
 | 
					        super.addAdditionalSaveData(pCompound);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    protected void readAdditionalSaveData(CompoundTag pCompound) {
 | 
				
			||||||
 | 
					        this.setSpeed(pCompound.getFloat("Speed"));
 | 
				
			||||||
 | 
					        super.readAdditionalSaveData(pCompound);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setSpeed(float speed) {
 | 
				
			||||||
 | 
					        this.entityData.set(DATA_SPEED_ID, speed);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public float getSpeed() {
 | 
				
			||||||
 | 
					        return this.entityData.get(DATA_SPEED_ID);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    protected void defineSynchedData() {
 | 
				
			||||||
 | 
					        this.entityData.define(DATA_SPEED_ID, 4.0f);
 | 
				
			||||||
 | 
					        super.defineSynchedData();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user