From c54f2098082dccca757e22a240b49f326817dd83 Mon Sep 17 00:00:00 2001 From: Adubbz Date: Tue, 25 Jun 2019 17:20:36 +1000 Subject: [PATCH] Various fixes --- .../biomesoplenty/api/entity/BOPEntities.java | 3 +- .../common/entity/item/EntityBoatBOP.java | 954 ------------------ .../common/entity/item/RenderBoatBOP.java | 90 -- .../common/item/ItemBoatBOP.java | 107 -- .../common/item/ItemWaterPlant.java | 138 ++- .../common/world/BOPEndBiomeProvider.java | 134 +-- .../java/biomesoplenty/init/ModBlocks.java | 18 +- .../java/biomesoplenty/init/ModEntities.java | 17 +- .../java/biomesoplenty/init/ModItems.java | 1 - .../resources/META-INF/accesstransformer.cfg | 14 +- 10 files changed, 138 insertions(+), 1338 deletions(-) delete mode 100644 src/main/java/biomesoplenty/common/entity/item/EntityBoatBOP.java delete mode 100644 src/main/java/biomesoplenty/common/entity/item/RenderBoatBOP.java delete mode 100644 src/main/java/biomesoplenty/common/item/ItemBoatBOP.java diff --git a/src/main/java/biomesoplenty/api/entity/BOPEntities.java b/src/main/java/biomesoplenty/api/entity/BOPEntities.java index 4940482ee..c055a6632 100644 --- a/src/main/java/biomesoplenty/api/entity/BOPEntities.java +++ b/src/main/java/biomesoplenty/api/entity/BOPEntities.java @@ -8,10 +8,9 @@ package biomesoplenty.api.entity; import net.minecraft.entity.EntityType; -import net.minecraft.entity.projectile.ProjectileItemEntity; public class BOPEntities { - public static EntityType mudball; + public static EntityType mudball; public static EntityType boat_bop; } diff --git a/src/main/java/biomesoplenty/common/entity/item/EntityBoatBOP.java b/src/main/java/biomesoplenty/common/entity/item/EntityBoatBOP.java deleted file mode 100644 index 4ae23b0e5..000000000 --- a/src/main/java/biomesoplenty/common/entity/item/EntityBoatBOP.java +++ /dev/null @@ -1,954 +0,0 @@ -package biomesoplenty.common.entity.item; - -import biomesoplenty.api.block.BOPBlocks; -import biomesoplenty.api.entity.BOPEntities; -import biomesoplenty.api.item.BOPItems; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.LilyPadBlock; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.MoverType; -import net.minecraft.entity.item.BoatEntity; -import net.minecraft.entity.passive.AnimalEntity; -import net.minecraft.entity.passive.WaterMobEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.fluid.IFluidState; -import net.minecraft.item.Item; -import net.minecraft.item.Items; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.network.IPacket; -import net.minecraft.network.datasync.DataParameter; -import net.minecraft.network.datasync.DataSerializers; -import net.minecraft.network.datasync.EntityDataManager; -import net.minecraft.network.play.client.CSteerBoatPacket; -import net.minecraft.network.play.server.SSpawnObjectPacket; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.tags.FluidTags; -import net.minecraft.util.*; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.shapes.IBooleanFunction; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.shapes.VoxelShapes; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import javax.annotation.Nullable; -import java.util.List; - -public class EntityBoatBOP extends BoatEntity -{ - private static final DataParameter TIME_SINCE_HIT = EntityDataManager.createKey(EntityBoatBOP.class, DataSerializers.VARINT); - private static final DataParameter FORWARD_DIRECTION = EntityDataManager.createKey(EntityBoatBOP.class, DataSerializers.VARINT); - private static final DataParameter DAMAGE_TAKEN = EntityDataManager.createKey(EntityBoatBOP.class, DataSerializers.FLOAT); - private static final DataParameter BOAT_TYPE = EntityDataManager.createKey(EntityBoatBOP.class, DataSerializers.VARINT); - private static final DataParameter field_199704_e = EntityDataManager.createKey(EntityBoatBOP.class, DataSerializers.BOOLEAN); - private static final DataParameter field_199705_f = EntityDataManager.createKey(EntityBoatBOP.class, DataSerializers.BOOLEAN); - private static final DataParameter ROCKING_TICKS = EntityDataManager.createKey(EntityBoatBOP.class, DataSerializers.VARINT); - private final float[] paddlePositions = new float[2]; - private float momentum; - private float outOfControlTicks; - private float deltaRotation; - private int lerpSteps; - private double lerpX; - private double lerpY; - private double lerpZ; - private double lerpYaw; - private double lerpPitch; - private boolean leftInputDown; - private boolean rightInputDown; - private boolean forwardInputDown; - private boolean backInputDown; - private double waterLevel; - private float boatGlide; - private EntityBoatBOP.Status status; - private EntityBoatBOP.Status previousStatus; - private double lastYd; - private boolean rocking; - private boolean field_203060_aN; - private float rockingIntensity; - private float rockingAngle; - private float prevRockingAngle; - - public EntityBoatBOP(EntityType p_i50129_1_, World p_i50129_2_) { - super(p_i50129_1_, p_i50129_2_); - this.preventEntitySpawning = true; - } - - public EntityBoatBOP(World worldIn, double x, double y, double z) { - this((EntityType)BOPEntities.boat_bop, worldIn); - this.setPosition(x, y, z); - this.setMotion(Vec3d.ZERO); - this.prevPosX = x; - this.prevPosY = y; - this.prevPosZ = z; - } - - /** - * returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to - * prevent them from trampling crops - */ - protected boolean canTriggerWalking() { - return false; - } - - protected void registerData() { - this.dataManager.register(TIME_SINCE_HIT, 0); - this.dataManager.register(FORWARD_DIRECTION, 1); - this.dataManager.register(DAMAGE_TAKEN, 0.0F); - this.dataManager.register(BOAT_TYPE, EntityBoatBOP.Type.FIR.ordinal()); - this.dataManager.register(field_199704_e, false); - this.dataManager.register(field_199705_f, false); - this.dataManager.register(ROCKING_TICKS, 0); - } - - /** - * Returns a boundingBox used to collide the entity with other entities and blocks. This enables the entity to be - * pushable on contact, like boats or minecarts. - */ - @Nullable - public AxisAlignedBB getCollisionBox(Entity entityIn) { - return entityIn.canBePushed() ? entityIn.getBoundingBox() : null; - } - - @Nullable - public AxisAlignedBB getCollisionBoundingBox() { - return this.getBoundingBox(); - } - - /** - * Returns true if this entity should push and be pushed by other entities when colliding. - */ - public boolean canBePushed() { - return true; - } - - /** - * Returns the Y offset from the entity's position for any entity riding this one. - */ - public double getMountedYOffset() { - return -0.1D; - } - - /** - * Called when the entity is attacked. - */ - public boolean attackEntityFrom(DamageSource source, float amount) { - if (this.isInvulnerableTo(source)) { - return false; - } else if (!this.world.isRemote && !this.removed) { - if (source instanceof IndirectEntityDamageSource && source.getTrueSource() != null && this.isPassenger(source.getTrueSource())) { - return false; - } else { - this.setForwardDirection(-this.getForwardDirection()); - this.setTimeSinceHit(10); - this.setDamageTaken(this.getDamageTaken() + amount * 10.0F); - this.markVelocityChanged(); - boolean flag = source.getTrueSource() instanceof PlayerEntity && ((PlayerEntity)source.getTrueSource()).abilities.isCreativeMode; - if (flag || this.getDamageTaken() > 40.0F) { - if (!flag && this.world.getGameRules().getBoolean("doEntityDrops")) { - this.entityDropItem(this.getItemBoat()); - } - - this.remove(); - } - - return true; - } - } else { - return true; - } - } - - public void onEnterBubbleColumnWithAirAbove(boolean downwards) { - if (!this.world.isRemote) { - this.rocking = true; - this.field_203060_aN = downwards; - if (this.getRockingTicks() == 0) { - this.setRockingTicks(60); - } - } - - this.world.addParticle(ParticleTypes.SPLASH, this.posX + (double)this.rand.nextFloat(), this.posY + 0.7D, this.posZ + (double)this.rand.nextFloat(), 0.0D, 0.0D, 0.0D); - if (this.rand.nextInt(20) == 0) { - this.world.playSound(this.posX, this.posY, this.posZ, this.getSplashSound(), this.getSoundCategory(), 1.0F, 0.8F + 0.4F * this.rand.nextFloat(), false); - } - - } - - /** - * Applies a velocity to the entities, to push them away from eachother. - */ - public void applyEntityCollision(Entity entityIn) { - if (entityIn instanceof EntityBoatBOP) { - if (entityIn.getBoundingBox().minY < this.getBoundingBox().maxY) { - super.applyEntityCollision(entityIn); - } - } else if (entityIn.getBoundingBox().minY <= this.getBoundingBox().minY) { - super.applyEntityCollision(entityIn); - } - - } - - @Override - public Item getItemBoat() - { - switch(this.getBOPBoatType()) - { - case FIR: - default: - return BOPItems.fir_boat; - case REDWOOD: - return BOPItems.redwood_boat; - case CHERRY: - return BOPItems.cherry_boat; - case MAHOGANY: - return BOPItems.mahogany_boat; - case JACARANDA: - return BOPItems.jacaranda_boat; - case PALM: - return BOPItems.palm_boat; - case WILLOW: - return BOPItems.willow_boat; - case DEAD: - return BOPItems.dead_boat; - case MAGIC: - return BOPItems.magic_boat; - case UMBRAN: - return BOPItems.umbran_boat; - case HELLBARK: - return BOPItems.hellbark_boat; - case ETHEREAL: - return BOPItems.ethereal_boat; - } - } - - /** - * Setups the entity to do the hurt animation. Only used by packets in multiplayer. - */ - @OnlyIn(Dist.CLIENT) - public void performHurtAnimation() { - this.setForwardDirection(-this.getForwardDirection()); - this.setTimeSinceHit(10); - this.setDamageTaken(this.getDamageTaken() * 11.0F); - } - - /** - * Returns true if other Entities should be prevented from moving through this Entity. - */ - public boolean canBeCollidedWith() { - return !this.removed; - } - - /** - * Sets a target for the client to interpolate towards over the next few ticks - */ - @OnlyIn(Dist.CLIENT) - public void setPositionAndRotationDirect(double x, double y, double z, float yaw, float pitch, int posRotationIncrements, boolean teleport) { - this.lerpX = x; - this.lerpY = y; - this.lerpZ = z; - this.lerpYaw = (double)yaw; - this.lerpPitch = (double)pitch; - this.lerpSteps = 10; - } - - /** - * Gets the horizontal facing direction of this Entity, adjusted to take specially-treated entity types into account. - */ - public Direction getAdjustedHorizontalFacing() { - return this.getHorizontalFacing().rotateY(); - } - - /** - * Called to update the entity's position/logic. - */ - public void tick() { - this.previousStatus = this.status; - this.status = this.getBoatStatus(); - if (this.status != EntityBoatBOP.Status.UNDER_WATER && this.status != EntityBoatBOP.Status.UNDER_FLOWING_WATER) { - this.outOfControlTicks = 0.0F; - } else { - ++this.outOfControlTicks; - } - - if (!this.world.isRemote && this.outOfControlTicks >= 60.0F) { - this.removePassengers(); - } - - if (this.getTimeSinceHit() > 0) { - this.setTimeSinceHit(this.getTimeSinceHit() - 1); - } - - if (this.getDamageTaken() > 0.0F) { - this.setDamageTaken(this.getDamageTaken() - 1.0F); - } - - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - super.tick(); - this.tickLerp(); - if (this.canPassengerSteer()) { - if (this.getPassengers().isEmpty() || !(this.getPassengers().get(0) instanceof PlayerEntity)) { - this.setPaddleState(false, false); - } - - this.updateMotion(); - if (this.world.isRemote) { - this.controlBoat(); - this.world.sendPacketToServer(new CSteerBoatPacket(this.getPaddleState(0), this.getPaddleState(1))); - } - - this.move(MoverType.SELF, this.getMotion()); - } else { - this.setMotion(Vec3d.ZERO); - } - - this.updateRocking(); - - for(int i = 0; i <= 1; ++i) { - if (this.getPaddleState(i)) { - if (!this.isSilent() && (double)(this.paddlePositions[i] % ((float)Math.PI * 2F)) <= (double)((float)Math.PI / 4F) && ((double)this.paddlePositions[i] + (double)((float)Math.PI / 8F)) % (double)((float)Math.PI * 2F) >= (double)((float)Math.PI / 4F)) { - SoundEvent soundevent = this.getPaddleSound(); - if (soundevent != null) { - Vec3d vec3d = this.getLook(1.0F); - double d0 = i == 1 ? -vec3d.z : vec3d.z; - double d1 = i == 1 ? vec3d.x : -vec3d.x; - this.world.playSound((PlayerEntity)null, this.posX + d0, this.posY, this.posZ + d1, soundevent, this.getSoundCategory(), 1.0F, 0.8F + 0.4F * this.rand.nextFloat()); - } - } - - this.paddlePositions[i] = (float)((double)this.paddlePositions[i] + (double)((float)Math.PI / 8F)); - } else { - this.paddlePositions[i] = 0.0F; - } - } - - this.doBlockCollisions(); - List list = this.world.getEntitiesInAABBexcluding(this, this.getBoundingBox().grow((double)0.2F, (double)-0.01F, (double)0.2F), EntityPredicates.pushableBy(this)); - if (!list.isEmpty()) { - boolean flag = !this.world.isRemote && !(this.getControllingPassenger() instanceof PlayerEntity); - - for(int j = 0; j < list.size(); ++j) { - Entity entity = list.get(j); - if (!entity.isPassenger(this)) { - if (flag && this.getPassengers().size() < 2 && !entity.isPassenger() && entity.getWidth() < this.getWidth() && entity instanceof LivingEntity && !(entity instanceof WaterMobEntity) && !(entity instanceof PlayerEntity)) { - entity.startRiding(this); - } else { - this.applyEntityCollision(entity); - } - } - } - } - - } - - private void updateRocking() { - if (this.world.isRemote) { - int i = this.getRockingTicks(); - if (i > 0) { - this.rockingIntensity += 0.05F; - } else { - this.rockingIntensity -= 0.1F; - } - - this.rockingIntensity = MathHelper.clamp(this.rockingIntensity, 0.0F, 1.0F); - this.prevRockingAngle = this.rockingAngle; - this.rockingAngle = 10.0F * (float)Math.sin((double)(0.5F * (float)this.world.getGameTime())) * this.rockingIntensity; - } else { - if (!this.rocking) { - this.setRockingTicks(0); - } - - int k = this.getRockingTicks(); - if (k > 0) { - --k; - this.setRockingTicks(k); - int j = 60 - k - 1; - if (j > 0 && k == 0) { - this.setRockingTicks(0); - Vec3d vec3d = this.getMotion(); - if (this.field_203060_aN) { - this.setMotion(vec3d.add(0.0D, -0.7D, 0.0D)); - this.removePassengers(); - } else { - this.setMotion(vec3d.x, this.isPassenger(PlayerEntity.class) ? 2.7D : 0.6D, vec3d.z); - } - } - - this.rocking = false; - } - } - - } - - @Nullable - protected SoundEvent getPaddleSound() { - switch(this.getBoatStatus()) { - case IN_WATER: - case UNDER_WATER: - case UNDER_FLOWING_WATER: - return SoundEvents.ENTITY_BOAT_PADDLE_WATER; - case ON_LAND: - return SoundEvents.ENTITY_BOAT_PADDLE_LAND; - case IN_AIR: - default: - return null; - } - } - - private void tickLerp() { - if (this.lerpSteps > 0 && !this.canPassengerSteer()) { - double d0 = this.posX + (this.lerpX - this.posX) / (double)this.lerpSteps; - double d1 = this.posY + (this.lerpY - this.posY) / (double)this.lerpSteps; - double d2 = this.posZ + (this.lerpZ - this.posZ) / (double)this.lerpSteps; - double d3 = MathHelper.wrapDegrees(this.lerpYaw - (double)this.rotationYaw); - this.rotationYaw = (float)((double)this.rotationYaw + d3 / (double)this.lerpSteps); - this.rotationPitch = (float)((double)this.rotationPitch + (this.lerpPitch - (double)this.rotationPitch) / (double)this.lerpSteps); - --this.lerpSteps; - this.setPosition(d0, d1, d2); - this.setRotation(this.rotationYaw, this.rotationPitch); - } - } - - public void setPaddleState(boolean left, boolean right) { - this.dataManager.set(field_199704_e, left); - this.dataManager.set(field_199705_f, right); - } - - @OnlyIn(Dist.CLIENT) - public float getRowingTime(int side, float limbSwing) { - return this.getPaddleState(side) ? (float)MathHelper.clampedLerp((double)this.paddlePositions[side] - (double)((float)Math.PI / 8F), (double)this.paddlePositions[side], (double)limbSwing) : 0.0F; - } - - /** - * Determines whether the boat is in water, gliding on land, or in air - */ - private EntityBoatBOP.Status getBoatStatus() { - EntityBoatBOP.Status boatentity$status = this.getUnderwaterStatus(); - if (boatentity$status != null) { - this.waterLevel = this.getBoundingBox().maxY; - return boatentity$status; - } else if (this.checkInWater()) { - return EntityBoatBOP.Status.IN_WATER; - } else { - float f = this.getBoatGlide(); - if (f > 0.0F) { - this.boatGlide = f; - return EntityBoatBOP.Status.ON_LAND; - } else { - return EntityBoatBOP.Status.IN_AIR; - } - } - } - - public float getWaterLevelAbove() { - AxisAlignedBB axisalignedbb = this.getBoundingBox(); - int i = MathHelper.floor(axisalignedbb.minX); - int j = MathHelper.ceil(axisalignedbb.maxX); - int k = MathHelper.floor(axisalignedbb.maxY); - int l = MathHelper.ceil(axisalignedbb.maxY - this.lastYd); - int i1 = MathHelper.floor(axisalignedbb.minZ); - int j1 = MathHelper.ceil(axisalignedbb.maxZ); - - try (BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.retain()) { - label161: - for(int k1 = k; k1 < l; ++k1) { - float f = 0.0F; - - for(int l1 = i; l1 < j; ++l1) { - for(int i2 = i1; i2 < j1; ++i2) { - blockpos$pooledmutableblockpos.setPos(l1, k1, i2); - IFluidState ifluidstate = this.world.getFluidState(blockpos$pooledmutableblockpos); - if (ifluidstate.isTagged(FluidTags.WATER)) { - f = Math.max(f, ifluidstate.func_215679_a(this.world, blockpos$pooledmutableblockpos)); - } - - if (f >= 1.0F) { - continue label161; - } - } - } - - if (f < 1.0F) { - float f2 = (float)blockpos$pooledmutableblockpos.getY() + f; - return f2; - } - } - - float f1 = (float)(l + 1); - return f1; - } - } - - /** - * Decides how much the boat should be gliding on the land (based on any slippery blocks) - */ - public float getBoatGlide() { - AxisAlignedBB axisalignedbb = this.getBoundingBox(); - AxisAlignedBB axisalignedbb1 = new AxisAlignedBB(axisalignedbb.minX, axisalignedbb.minY - 0.001D, axisalignedbb.minZ, axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.maxZ); - int i = MathHelper.floor(axisalignedbb1.minX) - 1; - int j = MathHelper.ceil(axisalignedbb1.maxX) + 1; - int k = MathHelper.floor(axisalignedbb1.minY) - 1; - int l = MathHelper.ceil(axisalignedbb1.maxY) + 1; - int i1 = MathHelper.floor(axisalignedbb1.minZ) - 1; - int j1 = MathHelper.ceil(axisalignedbb1.maxZ) + 1; - VoxelShape voxelshape = VoxelShapes.create(axisalignedbb1); - float f = 0.0F; - int k1 = 0; - - try (BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.retain()) { - for(int l1 = i; l1 < j; ++l1) { - for(int i2 = i1; i2 < j1; ++i2) { - int j2 = (l1 != i && l1 != j - 1 ? 0 : 1) + (i2 != i1 && i2 != j1 - 1 ? 0 : 1); - if (j2 != 2) { - for(int k2 = k; k2 < l; ++k2) { - if (j2 <= 0 || k2 != k && k2 != l - 1) { - blockpos$pooledmutableblockpos.setPos(l1, k2, i2); - BlockState blockstate = this.world.getBlockState(blockpos$pooledmutableblockpos); - if (!(blockstate.getBlock() instanceof LilyPadBlock) && VoxelShapes.compare(blockstate.getCollisionShape(this.world, blockpos$pooledmutableblockpos).withOffset((double)l1, (double)k2, (double)i2), voxelshape, IBooleanFunction.AND)) { - f += blockstate.getSlipperiness(this.world, blockpos$pooledmutableblockpos, this); - ++k1; - } - } - } - } - } - } - } - - return f / (float)k1; - } - - private boolean checkInWater() { - AxisAlignedBB axisalignedbb = this.getBoundingBox(); - int i = MathHelper.floor(axisalignedbb.minX); - int j = MathHelper.ceil(axisalignedbb.maxX); - int k = MathHelper.floor(axisalignedbb.minY); - int l = MathHelper.ceil(axisalignedbb.minY + 0.001D); - int i1 = MathHelper.floor(axisalignedbb.minZ); - int j1 = MathHelper.ceil(axisalignedbb.maxZ); - boolean flag = false; - this.waterLevel = Double.MIN_VALUE; - - try (BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.retain()) { - for(int k1 = i; k1 < j; ++k1) { - for(int l1 = k; l1 < l; ++l1) { - for(int i2 = i1; i2 < j1; ++i2) { - blockpos$pooledmutableblockpos.setPos(k1, l1, i2); - IFluidState ifluidstate = this.world.getFluidState(blockpos$pooledmutableblockpos); - if (ifluidstate.isTagged(FluidTags.WATER)) { - float f = (float)l1 + ifluidstate.func_215679_a(this.world, blockpos$pooledmutableblockpos); - this.waterLevel = Math.max((double)f, this.waterLevel); - flag |= axisalignedbb.minY < (double)f; - } - } - } - } - } - - return flag; - } - - /** - * Decides whether the boat is currently underwater. - */ - @Nullable - private EntityBoatBOP.Status getUnderwaterStatus() { - AxisAlignedBB axisalignedbb = this.getBoundingBox(); - double d0 = axisalignedbb.maxY + 0.001D; - int i = MathHelper.floor(axisalignedbb.minX); - int j = MathHelper.ceil(axisalignedbb.maxX); - int k = MathHelper.floor(axisalignedbb.maxY); - int l = MathHelper.ceil(d0); - int i1 = MathHelper.floor(axisalignedbb.minZ); - int j1 = MathHelper.ceil(axisalignedbb.maxZ); - boolean flag = false; - - try (BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.retain()) { - for(int k1 = i; k1 < j; ++k1) { - for(int l1 = k; l1 < l; ++l1) { - for(int i2 = i1; i2 < j1; ++i2) { - blockpos$pooledmutableblockpos.setPos(k1, l1, i2); - IFluidState ifluidstate = this.world.getFluidState(blockpos$pooledmutableblockpos); - if (ifluidstate.isTagged(FluidTags.WATER) && d0 < (double)((float)blockpos$pooledmutableblockpos.getY() + ifluidstate.func_215679_a(this.world, blockpos$pooledmutableblockpos))) { - if (!ifluidstate.isSource()) { - EntityBoatBOP.Status boatentity$status = EntityBoatBOP.Status.UNDER_FLOWING_WATER; - return boatentity$status; - } - - flag = true; - } - } - } - } - } - - return flag ? EntityBoatBOP.Status.UNDER_WATER : null; - } - - /** - * Update the boat's speed, based on momentum. - */ - private void updateMotion() { - double d0 = (double)-0.04F; - double d1 = this.hasNoGravity() ? 0.0D : (double)-0.04F; - double d2 = 0.0D; - this.momentum = 0.05F; - if (this.previousStatus == EntityBoatBOP.Status.IN_AIR && this.status != EntityBoatBOP.Status.IN_AIR && this.status != EntityBoatBOP.Status.ON_LAND) { - this.waterLevel = this.getBoundingBox().minY + (double)this.getHeight(); - this.setPosition(this.posX, (double)(this.getWaterLevelAbove() - this.getHeight()) + 0.101D, this.posZ); - this.setMotion(this.getMotion().mul(1.0D, 0.0D, 1.0D)); - this.lastYd = 0.0D; - this.status = EntityBoatBOP.Status.IN_WATER; - } else { - if (this.status == EntityBoatBOP.Status.IN_WATER) { - d2 = (this.waterLevel - this.getBoundingBox().minY) / (double)this.getHeight(); - this.momentum = 0.9F; - } else if (this.status == EntityBoatBOP.Status.UNDER_FLOWING_WATER) { - d1 = -7.0E-4D; - this.momentum = 0.9F; - } else if (this.status == EntityBoatBOP.Status.UNDER_WATER) { - d2 = (double)0.01F; - this.momentum = 0.45F; - } else if (this.status == EntityBoatBOP.Status.IN_AIR) { - this.momentum = 0.9F; - } else if (this.status == EntityBoatBOP.Status.ON_LAND) { - this.momentum = this.boatGlide; - if (this.getControllingPassenger() instanceof PlayerEntity) { - this.boatGlide /= 2.0F; - } - } - - Vec3d vec3d = this.getMotion(); - this.setMotion(vec3d.x * (double)this.momentum, vec3d.y + d1, vec3d.z * (double)this.momentum); - this.deltaRotation *= this.momentum; - if (d2 > 0.0D) { - Vec3d vec3d1 = this.getMotion(); - this.setMotion(vec3d1.x, (vec3d1.y + d2 * 0.06153846016296973D) * 0.75D, vec3d1.z); - } - } - - } - - private void controlBoat() { - if (this.isBeingRidden()) { - float f = 0.0F; - if (this.leftInputDown) { - --this.deltaRotation; - } - - if (this.rightInputDown) { - ++this.deltaRotation; - } - - if (this.rightInputDown != this.leftInputDown && !this.forwardInputDown && !this.backInputDown) { - f += 0.005F; - } - - this.rotationYaw += this.deltaRotation; - if (this.forwardInputDown) { - f += 0.04F; - } - - if (this.backInputDown) { - f -= 0.005F; - } - - this.setMotion(this.getMotion().add((double)(MathHelper.sin(-this.rotationYaw * ((float)Math.PI / 180F)) * f), 0.0D, (double)(MathHelper.cos(this.rotationYaw * ((float)Math.PI / 180F)) * f))); - this.setPaddleState(this.rightInputDown && !this.leftInputDown || this.forwardInputDown, this.leftInputDown && !this.rightInputDown || this.forwardInputDown); - } - } - - public void updatePassenger(Entity passenger) { - if (this.isPassenger(passenger)) { - float f = 0.0F; - float f1 = (float)((this.removed ? (double)0.01F : this.getMountedYOffset()) + passenger.getYOffset()); - if (this.getPassengers().size() > 1) { - int i = this.getPassengers().indexOf(passenger); - if (i == 0) { - f = 0.2F; - } else { - f = -0.6F; - } - - if (passenger instanceof AnimalEntity) { - f = (float)((double)f + 0.2D); - } - } - - Vec3d vec3d = (new Vec3d((double)f, 0.0D, 0.0D)).rotateYaw(-this.rotationYaw * ((float)Math.PI / 180F) - ((float)Math.PI / 2F)); - passenger.setPosition(this.posX + vec3d.x, this.posY + (double)f1, this.posZ + vec3d.z); - passenger.rotationYaw += this.deltaRotation; - passenger.setRotationYawHead(passenger.getRotationYawHead() + this.deltaRotation); - this.applyYawToEntity(passenger); - if (passenger instanceof AnimalEntity && this.getPassengers().size() > 1) { - int j = passenger.getEntityId() % 2 == 0 ? 90 : 270; - passenger.setRenderYawOffset(((AnimalEntity)passenger).renderYawOffset + (float)j); - passenger.setRotationYawHead(passenger.getRotationYawHead() + (float)j); - } - - } - } - - /** - * Applies this boat's yaw to the given entity. Used to update the orientation of its passenger. - */ - protected void applyYawToEntity(Entity entityToUpdate) { - entityToUpdate.setRenderYawOffset(this.rotationYaw); - float f = MathHelper.wrapDegrees(entityToUpdate.rotationYaw - this.rotationYaw); - float f1 = MathHelper.clamp(f, -105.0F, 105.0F); - entityToUpdate.prevRotationYaw += f1 - f; - entityToUpdate.rotationYaw += f1 - f; - entityToUpdate.setRotationYawHead(entityToUpdate.rotationYaw); - } - - /** - * Applies this entity's orientation (pitch/yaw) to another entity. Used to update passenger orientation. - */ - @OnlyIn(Dist.CLIENT) - public void applyOrientationToEntity(Entity entityToUpdate) { - this.applyYawToEntity(entityToUpdate); - } - - protected void writeAdditional(CompoundNBT compound) { - compound.putString("Type", this.getBoatType().getName()); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - protected void readAdditional(CompoundNBT compound) { - if (compound.contains("Type", 8)) { - this.setBoatType(EntityBoatBOP.Type.getTypeFromString(compound.getString("Type"))); - } - - } - - public boolean processInitialInteract(PlayerEntity player, Hand hand) { - if (player.isSneaking()) { - return false; - } else { - if (!this.world.isRemote && this.outOfControlTicks < 60.0F) { - player.startRiding(this); - } - - return true; - } - } - - protected void updateFallState(double y, boolean onGroundIn, BlockState state, BlockPos pos) { - this.lastYd = this.getMotion().y; - if (!this.isPassenger()) { - if (onGroundIn) { - if (this.fallDistance > 3.0F) { - if (this.status != EntityBoatBOP.Status.ON_LAND) { - this.fallDistance = 0.0F; - return; - } - - this.fall(this.fallDistance, 1.0F); - if (!this.world.isRemote && !this.removed) { - this.remove(); - if (this.world.getGameRules().getBoolean("doEntityDrops")) { - for(int i = 0; i < 3; ++i) { - this.entityDropItem(this.getBoatType().asPlank()); - } - - for(int j = 0; j < 2; ++j) { - this.entityDropItem(Items.STICK); - } - } - } - } - - this.fallDistance = 0.0F; - } else if (!this.world.getFluidState((new BlockPos(this)).down()).isTagged(FluidTags.WATER) && y < 0.0D) { - this.fallDistance = (float)((double)this.fallDistance - y); - } - - } - } - - public boolean getPaddleState(int side) { - return this.dataManager.get(side == 0 ? field_199704_e : field_199705_f) && this.getControllingPassenger() != null; - } - - /** - * Sets the damage taken from the last hit. - */ - public void setDamageTaken(float damageTaken) { - this.dataManager.set(DAMAGE_TAKEN, damageTaken); - } - - /** - * Gets the damage taken from the last hit. - */ - public float getDamageTaken() { - return this.dataManager.get(DAMAGE_TAKEN); - } - - /** - * Sets the time to count down from since the last time entity was hit. - */ - public void setTimeSinceHit(int timeSinceHit) { - this.dataManager.set(TIME_SINCE_HIT, timeSinceHit); - } - - /** - * Gets the time since the last hit. - */ - public int getTimeSinceHit() { - return this.dataManager.get(TIME_SINCE_HIT); - } - - private void setRockingTicks(int p_203055_1_) { - this.dataManager.set(ROCKING_TICKS, p_203055_1_); - } - - private int getRockingTicks() { - return this.dataManager.get(ROCKING_TICKS); - } - - @OnlyIn(Dist.CLIENT) - public float getRockingAngle(float partialTicks) { - return MathHelper.lerp(partialTicks, this.prevRockingAngle, this.rockingAngle); - } - - /** - * Sets the forward direction of the entity. - */ - public void setForwardDirection(int forwardDirection) { - this.dataManager.set(FORWARD_DIRECTION, forwardDirection); - } - - /** - * Gets the forward direction of the entity. - */ - public int getForwardDirection() { - return this.dataManager.get(FORWARD_DIRECTION); - } - - public void setBoatType(EntityBoatBOP.Type boatType) { - this.dataManager.set(BOAT_TYPE, boatType.ordinal()); - } - - public EntityBoatBOP.Type getBOPBoatType() - { - return EntityBoatBOP.Type.byId(this.dataManager.get(BOAT_TYPE)); - } - - protected boolean canFitPassenger(Entity passenger) { - return this.getPassengers().size() < 2 && !this.areEyesInFluid(FluidTags.WATER); - } - - /** - * For vehicles, the first passenger is generally considered the controller and "drives" the vehicle. For example, - * Pigs, Horses, and Boats are generally "steered" by the controlling passenger. - */ - @Nullable - public Entity getControllingPassenger() { - List list = this.getPassengers(); - return list.isEmpty() ? null : list.get(0); - } - - @OnlyIn(Dist.CLIENT) - public void updateInputs(boolean p_184442_1_, boolean p_184442_2_, boolean p_184442_3_, boolean p_184442_4_) { - this.leftInputDown = p_184442_1_; - this.rightInputDown = p_184442_2_; - this.forwardInputDown = p_184442_3_; - this.backInputDown = p_184442_4_; - } - - public IPacket createSpawnPacket() { - return new SSpawnObjectPacket(this); - } - - // Forge: Fix MC-119811 by instantly completing lerp on board - @Override - protected void addPassenger(Entity passenger) { - super.addPassenger(passenger); - if (this.canPassengerSteer() && this.lerpSteps > 0) { - this.lerpSteps = 0; - this.posX = this.lerpX; - this.posY = this.lerpY; - this.posZ = this.lerpZ; - this.rotationYaw = (float)this.lerpYaw; - this.rotationPitch = (float)this.lerpPitch; - } - } - - public static enum Status { - IN_WATER, - UNDER_WATER, - UNDER_FLOWING_WATER, - ON_LAND, - IN_AIR; - } - - public static enum Type - { - FIR(BOPBlocks.fir_planks, "fir"), - REDWOOD(BOPBlocks.redwood_planks, "redwood"), - CHERRY(BOPBlocks.cherry_planks, "cherry"), - MAHOGANY(BOPBlocks.mahogany_planks, "mahogany"), - JACARANDA(BOPBlocks.jacaranda_planks, "jacaranda"), - PALM(BOPBlocks.palm_planks, "palm"), - WILLOW(BOPBlocks.willow_planks, "willow"), - DEAD(BOPBlocks.dead_planks, "dead"), - MAGIC(BOPBlocks.magic_planks, "magic"), - UMBRAN(BOPBlocks.umbran_planks, "umbran"), - HELLBARK(BOPBlocks.hellbark_planks, "hellbark"), - ETHEREAL(BOPBlocks.ethereal_planks, "ethereal"); - - private final String name; - private final Block block; - - private Type(Block p_i48146_3_, String p_i48146_4_) { - this.name = p_i48146_4_; - this.block = p_i48146_3_; - } - - public String getName() { - return this.name; - } - - public Block asPlank() { - return this.block; - } - - public String toString() { - return this.name; - } - - /** - * Get a boat type by it's enum ordinal - */ - public static EntityBoatBOP.Type byId(int id) { - EntityBoatBOP.Type[] aentityboat$type = values(); - if (id < 0 || id >= aentityboat$type.length) { - id = 0; - } - - return aentityboat$type[id]; - } - - public static EntityBoatBOP.Type getTypeFromString(String nameIn) { - EntityBoatBOP.Type[] aentityboat$type = values(); - - for(int i = 0; i < aentityboat$type.length; ++i) { - if (aentityboat$type[i].getName().equals(nameIn)) { - return aentityboat$type[i]; - } - } - - return aentityboat$type[0]; - } - } -} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/entity/item/RenderBoatBOP.java b/src/main/java/biomesoplenty/common/entity/item/RenderBoatBOP.java deleted file mode 100644 index c661b51ac..000000000 --- a/src/main/java/biomesoplenty/common/entity/item/RenderBoatBOP.java +++ /dev/null @@ -1,90 +0,0 @@ -package biomesoplenty.common.entity.item; - -import com.mojang.blaze3d.platform.GlStateManager; -import net.minecraft.client.renderer.entity.EntityRenderer; -import net.minecraft.client.renderer.entity.EntityRendererManager; -import net.minecraft.client.renderer.entity.model.BoatModel; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.MathHelper; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -@OnlyIn(Dist.CLIENT) -public class RenderBoatBOP extends EntityRenderer -{ - private static final ResourceLocation[] BOAT_TEXTURES = new ResourceLocation[]{new ResourceLocation("biomesoplenty:textures/entity/boat/fir.png"), new ResourceLocation("biomesoplenty:textures/entity/boat/redwood.png"), new ResourceLocation("biomesoplenty:textures/entity/boat/cherry.png"), new ResourceLocation("biomesoplenty:textures/entity/boat/mahogany.png"), new ResourceLocation("biomesoplenty:textures/entity/boat/jacaranda.png"), new ResourceLocation("biomesoplenty:textures/entity/boat/palm.png"), new ResourceLocation("biomesoplenty:textures/entity/boat/willow.png"), new ResourceLocation("biomesoplenty:textures/entity/boat/dead.png"), new ResourceLocation("biomesoplenty:textures/entity/boat/magic.png"), new ResourceLocation("biomesoplenty:textures/entity/boat/umbran.png"), new ResourceLocation("biomesoplenty:textures/entity/boat/hellbark.png"), new ResourceLocation("biomesoplenty:textures/entity/boat/ethereal.png")}; - /** instance of ModelBoat for rendering */ - protected BoatModel modelBoat = new BoatModel(); - - public RenderBoatBOP(EntityRendererManager renderManagerIn) { - super(renderManagerIn); - this.shadowSize = 0.5F; - } - - /** - * Renders the desired {@code T} type Entity. - */ - public void doRender(EntityBoatBOP entity, double x, double y, double z, float entityYaw, float partialTicks) { - GlStateManager.pushMatrix(); - this.setupTranslation(x, y, z); - this.setupRotation(entity, entityYaw, partialTicks); - this.bindEntityTexture(entity); - if (this.renderOutlines) { - GlStateManager.enableColorMaterial(); - GlStateManager.setupSolidRenderingTextureCombine(this.getTeamColor(entity)); - } - - this.modelBoat.render(entity, partialTicks, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F); - if (this.renderOutlines) { - GlStateManager.tearDownSolidRenderingTextureCombine(); - GlStateManager.disableColorMaterial(); - } - - GlStateManager.popMatrix(); - super.doRender(entity, x, y, z, entityYaw, partialTicks); - } - - public void setupRotation(EntityBoatBOP entityIn, float entityYaw, float partialTicks) { - GlStateManager.rotatef(180.0F - entityYaw, 0.0F, 1.0F, 0.0F); - float f = (float)entityIn.getTimeSinceHit() - partialTicks; - float f1 = entityIn.getDamageTaken() - partialTicks; - if (f1 < 0.0F) { - f1 = 0.0F; - } - - if (f > 0.0F) { - GlStateManager.rotatef(MathHelper.sin(f) * f * f1 / 10.0F * (float)entityIn.getForwardDirection(), 1.0F, 0.0F, 0.0F); - } - - float f2 = entityIn.func_203056_b(partialTicks); - if (!MathHelper.epsilonEquals(f2, 0.0F)) { - GlStateManager.rotatef(entityIn.func_203056_b(partialTicks), 1.0F, 0.0F, 1.0F); - } - - GlStateManager.scalef(-1.0F, -1.0F, 1.0F); - } - - public void setupTranslation(double x, double y, double z) { - GlStateManager.translatef((float)x, (float)y + 0.375F, (float)z); - } - - /** - * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. - */ - protected ResourceLocation getEntityTexture(EntityBoatBOP entity) { - return BOAT_TEXTURES[entity.getBoatType().ordinal()]; - } - - public boolean isMultipass() { - return true; - } - - public void renderMultipass(EntityBoatBOP entityIn, double x, double y, double z, float entityYaw, float partialTicks) { - GlStateManager.pushMatrix(); - this.setupTranslation(x, y, z); - this.setupRotation(entityIn, entityYaw, partialTicks); - this.bindEntityTexture(entityIn); - this.modelBoat.renderMultipass(entityIn, partialTicks, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F); - GlStateManager.popMatrix(); - } -} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/item/ItemBoatBOP.java b/src/main/java/biomesoplenty/common/item/ItemBoatBOP.java deleted file mode 100644 index bdf03e399..000000000 --- a/src/main/java/biomesoplenty/common/item/ItemBoatBOP.java +++ /dev/null @@ -1,107 +0,0 @@ -/******************************************************************************* - * Copyright 2014-2019, the Biomes O' Plenty Team - * - * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. - * - * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. - ******************************************************************************/ -package biomesoplenty.common.item; - -import java.util.List; - -import biomesoplenty.common.entity.item.EntityBoatBOP; -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.stats.StatList; -import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.EnumHand; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.RayTraceFluidMode; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.World; - -public class ItemBoatBOP extends Item -{ - private final EntityBoatBOP.Type type; - - public ItemBoatBOP(EntityBoatBOP.Type typeIn, Item.Properties properties) - { - super(properties); - this.type = typeIn; - } - - /** - * Called to trigger the item's "innate" right click behavior. To handle when this item is used on a Block, see - * {@link #onItemUse}. - */ - @Override - public ActionResult onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) { - ItemStack itemstack = playerIn.getHeldItem(handIn); - float f = 1.0F; - float f1 = playerIn.prevRotationPitch + (playerIn.rotationPitch - playerIn.prevRotationPitch) * 1.0F; - float f2 = playerIn.prevRotationYaw + (playerIn.rotationYaw - playerIn.prevRotationYaw) * 1.0F; - double d0 = playerIn.prevPosX + (playerIn.posX - playerIn.prevPosX) * 1.0D; - double d1 = playerIn.prevPosY + (playerIn.posY - playerIn.prevPosY) * 1.0D + (double)playerIn.getEyeHeight(); - double d2 = playerIn.prevPosZ + (playerIn.posZ - playerIn.prevPosZ) * 1.0D; - Vec3d vec3d = new Vec3d(d0, d1, d2); - float f3 = MathHelper.cos(-f2 * ((float)Math.PI / 180F) - (float)Math.PI); - float f4 = MathHelper.sin(-f2 * ((float)Math.PI / 180F) - (float)Math.PI); - float f5 = -MathHelper.cos(-f1 * ((float)Math.PI / 180F)); - float f6 = MathHelper.sin(-f1 * ((float)Math.PI / 180F)); - float f7 = f4 * f5; - float f8 = f3 * f5; - double d3 = 5.0D; - Vec3d vec3d1 = vec3d.add((double)f7 * 5.0D, (double)f6 * 5.0D, (double)f8 * 5.0D); - RayTraceResult raytraceresult = worldIn.rayTraceBlocks(vec3d, vec3d1, RayTraceFluidMode.ALWAYS); - if (raytraceresult == null) { - return new ActionResult<>(EnumActionResult.PASS, itemstack); - } else { - Vec3d vec3d2 = playerIn.getLook(1.0F); - boolean flag = false; - List list = worldIn.getEntitiesWithinAABBExcludingEntity(playerIn, playerIn.getBoundingBox().expand(vec3d2.x * 5.0D, vec3d2.y * 5.0D, vec3d2.z * 5.0D).grow(1.0D)); - - for(int i = 0; i < list.size(); ++i) { - Entity entity = list.get(i); - if (entity.canBeCollidedWith()) { - AxisAlignedBB axisalignedbb = entity.getBoundingBox().grow((double)entity.getCollisionBorderSize()); - if (axisalignedbb.contains(vec3d)) { - flag = true; - } - } - } - - if (flag) { - return new ActionResult<>(EnumActionResult.PASS, itemstack); - } else if (raytraceresult.type == RayTraceResult.Type.BLOCK) { - BlockPos blockpos = raytraceresult.getBlockPos(); - Block block = worldIn.getBlockState(blockpos).getBlock(); - EntityBoatBOP entityboat = new EntityBoatBOP(worldIn, raytraceresult.hitVec.x, raytraceresult.hitVec.y, raytraceresult.hitVec.z); - entityboat.setBoatType(this.type); - entityboat.rotationYaw = playerIn.rotationYaw; - if (!worldIn.isCollisionBoxesEmpty(entityboat, entityboat.getBoundingBox().grow(-0.1D))) { - return new ActionResult<>(EnumActionResult.FAIL, itemstack); - } else { - if (!worldIn.isRemote) { - worldIn.spawnEntity(entityboat); - } - - if (!playerIn.abilities.isCreativeMode) { - itemstack.shrink(1); - } - - playerIn.addStat(StatList.ITEM_USED.get(this)); - return new ActionResult<>(EnumActionResult.SUCCESS, itemstack); - } - } else { - return new ActionResult<>(EnumActionResult.PASS, itemstack); - } - } - } - } \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/item/ItemWaterPlant.java b/src/main/java/biomesoplenty/common/item/ItemWaterPlant.java index d337b62fa..837454887 100644 --- a/src/main/java/biomesoplenty/common/item/ItemWaterPlant.java +++ b/src/main/java/biomesoplenty/common/item/ItemWaterPlant.java @@ -1,106 +1,84 @@ package biomesoplenty.common.item; -import biomesoplenty.api.block.BOPBlocks; import net.minecraft.advancements.CriteriaTriggers; import net.minecraft.block.Block; -import net.minecraft.block.material.Material; import net.minecraft.block.BlockState; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.fluid.IFluidState; import net.minecraft.block.Blocks; -import net.minecraft.init.Fluids; -import net.minecraft.init.SoundEvents; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.fluid.Fluids; +import net.minecraft.fluid.IFluidState; import net.minecraft.item.BlockItem; import net.minecraft.item.Item; -import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUseContext; -import net.minecraft.stats.StatList; -import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.EnumHand; -import net.minecraft.util.SoundCategory; +import net.minecraft.stats.Stats; +import net.minecraft.util.*; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.util.math.RayTraceContext; import net.minecraft.util.math.RayTraceResult; import net.minecraft.world.World; public class ItemWaterPlant extends BlockItem { - private Block block; - public ItemWaterPlant(Block blockIn, Item.Properties builder) - { - super(blockIn, builder); - this.block = blockIn; - } + { + super(blockIn, builder); + } - /** - * Called when this item is used when targetting a Block - */ - @Override - public EnumActionResult onItemUse(ItemUseContext context) - { - return EnumActionResult.PASS; - } + @Override + public ActionResultType onItemUse(ItemUseContext context) + { + return ActionResultType.PASS; + } - /** - * Called to trigger the item's "innate" right click behavior. To handle when this item is used on a Block, see - * {@link #onItemUse}. - */ - @Override - public ActionResult onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) - { - ItemStack itemstack = playerIn.getHeldItem(handIn); - RayTraceResult raytraceresult = this.rayTrace(worldIn, playerIn, true); - if (raytraceresult == null) - { - return new ActionResult<>(EnumActionResult.PASS, itemstack); - } - else - { - if (raytraceresult.type == RayTraceResult.Type.BLOCK) - { - BlockPos blockpos = raytraceresult.getBlockPos(); - if (!worldIn.isBlockModifiable(playerIn, blockpos) || !playerIn.canPlayerEdit(blockpos.offset(raytraceresult.sideHit), raytraceresult.sideHit, itemstack)) - { - return new ActionResult<>(EnumActionResult.FAIL, itemstack); - } + @Override + public ActionResult onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) + { + ItemStack itemstack = playerIn.getHeldItem(handIn); + RayTraceResult raytraceresult = rayTrace(worldIn, playerIn, RayTraceContext.FluidMode.SOURCE_ONLY); + if (raytraceresult.getType() == RayTraceResult.Type.MISS) { + return new ActionResult<>(ActionResultType.PASS, itemstack); + } else { + if (raytraceresult.getType() == RayTraceResult.Type.BLOCK) { + BlockRayTraceResult blockraytraceresult = (BlockRayTraceResult)raytraceresult; + BlockPos blockpos = blockraytraceresult.getPos(); + Direction direction = blockraytraceresult.getFace(); + if (!worldIn.isBlockModifiable(playerIn, blockpos) || !playerIn.canPlayerEdit(blockpos.offset(direction), direction, itemstack)) { + return new ActionResult<>(ActionResultType.FAIL, itemstack); + } - BlockPos blockpos1 = blockpos.up(); - BlockState BlockState = worldIn.getBlockState(blockpos); - Material material = BlockState.getMaterial(); - IFluidState ifluidstate = worldIn.getFluidState(blockpos); - Block ground = worldIn.getBlockState(blockpos.down()).getBlock(); - if ((ifluidstate.getFluid() == Fluids.WATER || material == Material.ICE) && worldIn.isAirBlock(blockpos1) && (ground == Blocks.DIORITE || ground == Blocks.GRANITE || ground == Blocks.ANDESITE || ground == Blocks.STONE || ground == Blocks.DIRT || ground == Blocks.COARSE_DIRT || ground == Blocks.GRASS_BLOCK || ground == Blocks.GRAVEL || ground == Blocks.SAND || ground == Blocks.RED_SAND || ground == BOPBlocks.white_sand || ground == BOPBlocks.mud || ground == BOPBlocks.dried_sand)) - { + BlockPos blockpos1 = blockpos.up(); + BlockState blockstate = worldIn.getBlockState(blockpos); + Material material = blockstate.getMaterial(); + IFluidState ifluidstate = worldIn.getFluidState(blockpos); + if ((ifluidstate.getFluid() == Fluids.WATER || material == Material.ICE) && worldIn.isAirBlock(blockpos1)) { - // special case for handling block placement with water lilies - net.minecraftforge.common.util.BlockSnapshot blocksnapshot = net.minecraftforge.common.util.BlockSnapshot.getBlockSnapshot(worldIn, blockpos1); - worldIn.setBlockState(blockpos1, this.block.getDefaultState(), 11); - if (net.minecraftforge.event.ForgeEventFactory.onBlockPlace(playerIn, blocksnapshot, net.minecraft.util.Direction.UP)) - { - blocksnapshot.restore(true, false); - return new ActionResult(EnumActionResult.FAIL, itemstack); - } + // special case for handling block placement with water lilies + net.minecraftforge.common.util.BlockSnapshot blocksnapshot = net.minecraftforge.common.util.BlockSnapshot.getBlockSnapshot(worldIn, blockpos1); + worldIn.setBlockState(blockpos1, Blocks.LILY_PAD.getDefaultState(), 11); + if (net.minecraftforge.event.ForgeEventFactory.onBlockPlace(playerIn, blocksnapshot, net.minecraft.util.Direction.UP)) { + blocksnapshot.restore(true, false); + return new ActionResult(ActionResultType.FAIL, itemstack); + } - if (playerIn instanceof EntityPlayerMP) - { - CriteriaTriggers.PLACED_BLOCK.trigger((EntityPlayerMP) playerIn, blockpos1, itemstack); - } + if (playerIn instanceof ServerPlayerEntity) { + CriteriaTriggers.PLACED_BLOCK.trigger((ServerPlayerEntity)playerIn, blockpos1, itemstack); + } - if (!playerIn.abilities.isCreativeMode) - { - itemstack.shrink(1); - } + if (!playerIn.abilities.isCreativeMode) { + itemstack.shrink(1); + } - playerIn.addStat(StatList.ITEM_USED.get(this)); - worldIn.playSound(playerIn, blockpos, SoundEvents.BLOCK_LILY_PAD_PLACE, SoundCategory.BLOCKS, 1.0F, 1.0F); - return new ActionResult<>(EnumActionResult.SUCCESS, itemstack); - } - } + playerIn.addStat(Stats.ITEM_USED.get(this)); + worldIn.playSound(playerIn, blockpos, SoundEvents.BLOCK_LILY_PAD_PLACE, SoundCategory.BLOCKS, 1.0F, 1.0F); + return new ActionResult<>(ActionResultType.SUCCESS, itemstack); + } + } - return new ActionResult<>(EnumActionResult.FAIL, itemstack); - } - } + return new ActionResult<>(ActionResultType.FAIL, itemstack); + } + } } \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/BOPEndBiomeProvider.java b/src/main/java/biomesoplenty/common/world/BOPEndBiomeProvider.java index 142db94e7..f3cef39c0 100644 --- a/src/main/java/biomesoplenty/common/world/BOPEndBiomeProvider.java +++ b/src/main/java/biomesoplenty/common/world/BOPEndBiomeProvider.java @@ -1,103 +1,77 @@ package biomesoplenty.common.world; -import java.util.List; -import java.util.Random; -import java.util.Set; - -import javax.annotation.Nullable; - -import com.google.common.collect.Sets; - import biomesoplenty.api.biome.BOPBiomes; +import com.google.common.collect.Sets; import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; import net.minecraft.block.BlockState; -import net.minecraft.world.biome.Biomes; import net.minecraft.util.SharedSeedRandom; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkPos; import net.minecraft.util.math.MathHelper; import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.Biomes; import net.minecraft.world.biome.provider.BiomeProvider; import net.minecraft.world.biome.provider.EndBiomeProviderSettings; -import net.minecraft.world.gen.NoiseGeneratorSimplex; +import net.minecraft.world.gen.SimplexNoiseGenerator; import net.minecraft.world.gen.feature.structure.Structure; +import javax.annotation.Nullable; +import java.util.List; +import java.util.Random; +import java.util.Set; + public class BOPEndBiomeProvider extends BiomeProvider { - private final NoiseGeneratorSimplex field_201546_a; + private final SimplexNoiseGenerator generator; private final SharedSeedRandom random; private final Biome[] field_205009_d = new Biome[]{Biomes.THE_END, Biomes.END_HIGHLANDS, Biomes.END_MIDLANDS, Biomes.SMALL_END_ISLANDS, Biomes.END_BARRENS, BOPBiomes.end_plains.get()}; public BOPEndBiomeProvider(EndBiomeProviderSettings p_i48970_1_) { this.random = new SharedSeedRandom(p_i48970_1_.getSeed()); this.random.skip(17292); - this.field_201546_a = new NoiseGeneratorSimplex(this.random); + this.generator = new SimplexNoiseGenerator(this.random); } - @Nullable @Override - public Biome getBiome(BlockPos pos, @Nullable Biome defaultBiome) { - return this.func_201545_a(pos.getX() >> 4, pos.getZ() >> 4); - } - - private Biome func_201545_a(int p_201545_1_, int p_201545_2_) { - if ((long)p_201545_1_ * (long)p_201545_1_ + (long)p_201545_2_ * (long)p_201545_2_ <= 4096L) - { + public Biome getBiome(int p_201545_1_, int p_201545_2_) + { + int lvt_3_1_ = p_201545_1_ >> 4; + int lvt_4_1_ = p_201545_2_ >> 4; + if ((long)lvt_3_1_ * (long)lvt_3_1_ + (long)lvt_4_1_ * (long)lvt_4_1_ <= 4096L) { return Biomes.THE_END; - } - else - { - float f = this.getHeightValue(p_201545_1_, p_201545_2_, 1, 1); - double d0 = Biome.INFO_NOISE.getValue((double)p_201545_1_ * 0.005D, (double)p_201545_2_ * 0.005D); - - if (f > 40.0F) - { - if (d0 > 0.01D) - { - return Biomes.END_HIGHLANDS; - } - else - { - return BOPBiomes.end_plains.get(); - } - } - else if (f >= 0.0F) - { + } else { + float lvt_5_1_ = this.func_222365_c(lvt_3_1_ * 2 + 1, lvt_4_1_ * 2 + 1); + if (lvt_5_1_ > 40.0F) { + return Biomes.END_HIGHLANDS; + } else if (lvt_5_1_ >= 0.0F) { return Biomes.END_MIDLANDS; - } - else - { - return f < -20.0F ? Biomes.SMALL_END_ISLANDS : Biomes.END_BARRENS; + } else { + return lvt_5_1_ < -20.0F ? Biomes.SMALL_END_ISLANDS : Biomes.END_BARRENS; } } } @Override - public Biome[] getBiomes(int startX, int startZ, int xSize, int zSize) { - return this.getBiomeBlock(startX, startZ, xSize, zSize); - } + public Biome[] getBiomes(int p_201537_1_, int p_201537_2_, int p_201537_3_, int p_201537_4_, boolean p_201537_5_) { + Biome[] lvt_6_1_ = new Biome[p_201537_3_ * p_201537_4_]; + Long2ObjectMap lvt_7_1_ = new Long2ObjectOpenHashMap(); - @Override - public Biome[] getBiomes(int x, int z, int width, int length, boolean cacheFlag) { - Biome[] abiome = new Biome[width * length]; - Long2ObjectMap long2objectmap = new Long2ObjectOpenHashMap<>(); - - for(int i = 0; i < width; ++i) { - for(int j = 0; j < length; ++j) { - int k = i + x >> 4; - int l = j + z >> 4; - long i1 = ChunkPos.asLong(k, l); - Biome biome = long2objectmap.get(i1); - if (biome == null) { - biome = this.func_201545_a(k, l); - long2objectmap.put(i1, biome); + for(int lvt_8_1_ = 0; lvt_8_1_ < p_201537_3_; ++lvt_8_1_) { + for(int lvt_9_1_ = 0; lvt_9_1_ < p_201537_4_; ++lvt_9_1_) { + int lvt_10_1_ = lvt_8_1_ + p_201537_1_; + int lvt_11_1_ = lvt_9_1_ + p_201537_2_; + long lvt_12_1_ = ChunkPos.asLong(lvt_10_1_, lvt_11_1_); + Biome lvt_14_1_ = lvt_7_1_.get(lvt_12_1_); + if (lvt_14_1_ == null) { + lvt_14_1_ = this.getBiome(lvt_10_1_, lvt_11_1_); + lvt_7_1_.put(lvt_12_1_, lvt_14_1_); } - abiome[i + j * width] = biome; + lvt_6_1_[lvt_8_1_ + lvt_9_1_ * p_201537_3_] = lvt_14_1_; } } - return abiome; + return lvt_6_1_; } @Override @@ -140,28 +114,30 @@ public class BOPEndBiomeProvider extends BiomeProvider { } @Override - public float getHeightValue(int p_201536_1_, int p_201536_2_, int p_201536_3_, int p_201536_4_) { - float f = (float)(p_201536_1_ * 2 + p_201536_3_); - float f1 = (float)(p_201536_2_ * 2 + p_201536_4_); - float f2 = 100.0F - MathHelper.sqrt(f * f + f1 * f1) * 8.0F; - f2 = MathHelper.clamp(f2, -100.0F, 80.0F); + public float func_222365_c(int p_222365_1_, int p_222365_2_) { + int lvt_3_1_ = p_222365_1_ / 2; + int lvt_4_1_ = p_222365_2_ / 2; + int lvt_5_1_ = p_222365_1_ % 2; + int lvt_6_1_ = p_222365_2_ % 2; + float lvt_7_1_ = 100.0F - MathHelper.sqrt((float)(p_222365_1_ * p_222365_1_ + p_222365_2_ * p_222365_2_)) * 8.0F; + lvt_7_1_ = MathHelper.clamp(lvt_7_1_, -100.0F, 80.0F); - for(int i = -12; i <= 12; ++i) { - for(int j = -12; j <= 12; ++j) { - long k = (long)(p_201536_1_ + i); - long l = (long)(p_201536_2_ + j); - if (k * k + l * l > 4096L && this.field_201546_a.getValue((double)k, (double)l) < (double)-0.9F) { - float f3 = (MathHelper.abs((float)k) * 3439.0F + MathHelper.abs((float)l) * 147.0F) % 13.0F + 9.0F; - f = (float)(p_201536_3_ - i * 2); - f1 = (float)(p_201536_4_ - j * 2); - float f4 = 100.0F - MathHelper.sqrt(f * f + f1 * f1) * f3; - f4 = MathHelper.clamp(f4, -100.0F, 80.0F); - f2 = Math.max(f2, f4); + for(int lvt_8_1_ = -12; lvt_8_1_ <= 12; ++lvt_8_1_) { + for(int lvt_9_1_ = -12; lvt_9_1_ <= 12; ++lvt_9_1_) { + long lvt_10_1_ = (long)(lvt_3_1_ + lvt_8_1_); + long lvt_12_1_ = (long)(lvt_4_1_ + lvt_9_1_); + if (lvt_10_1_ * lvt_10_1_ + lvt_12_1_ * lvt_12_1_ > 4096L && this.generator.getValue((double)lvt_10_1_, (double)lvt_12_1_) < -0.8999999761581421D) { + float lvt_14_1_ = (MathHelper.abs((float)lvt_10_1_) * 3439.0F + MathHelper.abs((float)lvt_12_1_) * 147.0F) % 13.0F + 9.0F; + float lvt_15_1_ = (float)(lvt_5_1_ - lvt_8_1_ * 2); + float lvt_16_1_ = (float)(lvt_6_1_ - lvt_9_1_ * 2); + float lvt_17_1_ = 100.0F - MathHelper.sqrt(lvt_15_1_ * lvt_15_1_ + lvt_16_1_ * lvt_16_1_) * lvt_14_1_; + lvt_17_1_ = MathHelper.clamp(lvt_17_1_, -100.0F, 80.0F); + lvt_7_1_ = Math.max(lvt_7_1_, lvt_17_1_); } } } - return f2; + return lvt_7_1_; } @Override diff --git a/src/main/java/biomesoplenty/init/ModBlocks.java b/src/main/java/biomesoplenty/init/ModBlocks.java index 6684b2805..0f835312c 100644 --- a/src/main/java/biomesoplenty/init/ModBlocks.java +++ b/src/main/java/biomesoplenty/init/ModBlocks.java @@ -33,12 +33,12 @@ public class ModBlocks white_sandstone_slab = registerBlock(new BlockSlabBOP(Block.Properties.create(Material.ROCK, MaterialColor.QUARTZ).hardnessAndResistance(2.0F, 6.0F)), "white_sandstone_slab"); white_sandstone_stairs = registerBlock(new BlockStairsBOP(white_sandstone.getDefaultState(), Block.Properties.from(white_sandstone)), "white_sandstone_stairs"); - mud = registerBlock(new BlockMud(Block.Properties.create(Material.GROUND, MaterialColor.BROWN_TERRACOTTA).hardnessAndResistance(0.6F)), "mud"); + mud = registerBlock(new BlockMud(Block.Properties.create(Material.EARTH, MaterialColor.BROWN_TERRACOTTA).hardnessAndResistance(0.6F)), "mud"); mud_brick_block = registerBlock(new Block(Block.Properties.create(Material.ROCK, MaterialColor.BROWN_TERRACOTTA).hardnessAndResistance(1.0F)), "mud_brick_block"); mud_brick_slab = registerBlock(new BlockSlabBOP(Block.Properties.create(Material.ROCK, MaterialColor.BROWN_TERRACOTTA).hardnessAndResistance(2.0F, 6.0F)), "mud_brick_slab"); mud_brick_stairs = registerBlock(new BlockStairsBOP(mud_brick_block.getDefaultState(), Block.Properties.from(mud_brick_block)), "mud_brick_stairs"); - dried_sand = registerBlock(new BlockDriedSand(Block.Properties.create(Material.GROUND, MaterialColor.WOOD).hardnessAndResistance(1.0F)), "dried_sand"); + dried_sand = registerBlock(new BlockDriedSand(Block.Properties.create(Material.EARTH, MaterialColor.WOOD).hardnessAndResistance(1.0F)), "dried_sand"); ash_block = registerBlock(new BlockAsh(Block.Properties.create(Material.SAND, MaterialColor.BLACK_TERRACOTTA).hardnessAndResistance(0.4F).sound(SoundType.SAND)), "ash_block"); flesh = registerBlock(new BlockFlesh(Block.Properties.create(Material.SPONGE, MaterialColor.RED_TERRACOTTA).hardnessAndResistance(0.4F).sound(SoundType.SLIME)), "flesh"); @@ -260,14 +260,14 @@ public class ModBlocks wilted_lily = registerBlock(new BlockFlowerBOP(Block.Properties.create(Material.PLANTS).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), "wilted_lily"); burning_blossom = registerBlock(new BlockFlowerBOP(Block.Properties.create(Material.PLANTS).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT).lightValue(8)), "burning_blossom"); - willow_vine = registerBlock(new BlockVineBOP(Block.Properties.create(Material.VINE).doesNotBlockMovement().tickRandomly().hardnessAndResistance(0.2F).sound(SoundType.PLANT)), "willow_vine"); + willow_vine = registerBlock(new BlockVineBOP(Block.Properties.create(Material.TALL_PLANTS).doesNotBlockMovement().tickRandomly().hardnessAndResistance(0.2F).sound(SoundType.PLANT)), "willow_vine"); - bush = registerBlock(new BlockFoliageBOP(Block.Properties.create(Material.VINE).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), "bush"); - barley = registerBlock(new BlockFoliageBOP(Block.Properties.create(Material.VINE, MaterialColor.YELLOW_TERRACOTTA).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), "barley"); - dune_grass = registerBlock(new BlockFoliageBOP(Block.Properties.create(Material.VINE, MaterialColor.LIME_TERRACOTTA).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), "dune_grass"); - desert_grass = registerBlock(new BlockFoliageBOP(Block.Properties.create(Material.VINE, MaterialColor.ORANGE_TERRACOTTA).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), "desert_grass"); - dead_grass = registerBlock(new BlockFoliageBOP(Block.Properties.create(Material.VINE, MaterialColor.WOOD).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), "dead_grass"); - spectral_fern = registerBlock(new BlockFoliageBOP(Block.Properties.create(Material.VINE, MaterialColor.RED).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), "spectral_fern"); + bush = registerBlock(new BlockFoliageBOP(Block.Properties.create(Material.TALL_PLANTS).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), "bush"); + barley = registerBlock(new BlockFoliageBOP(Block.Properties.create(Material.TALL_PLANTS, MaterialColor.YELLOW_TERRACOTTA).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), "barley"); + dune_grass = registerBlock(new BlockFoliageBOP(Block.Properties.create(Material.TALL_PLANTS, MaterialColor.LIME_TERRACOTTA).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), "dune_grass"); + desert_grass = registerBlock(new BlockFoliageBOP(Block.Properties.create(Material.TALL_PLANTS, MaterialColor.ORANGE_TERRACOTTA).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), "desert_grass"); + dead_grass = registerBlock(new BlockFoliageBOP(Block.Properties.create(Material.TALL_PLANTS, MaterialColor.WOOD).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), "dead_grass"); + spectral_fern = registerBlock(new BlockFoliageBOP(Block.Properties.create(Material.TALL_PLANTS, MaterialColor.RED).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), "spectral_fern"); tiny_cactus = registerBlock(new BlockPlantBOP(Block.Properties.create(Material.PLANTS).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), "tiny_cactus"); cattail = registerBlock(new BlockWatersidePlant(Block.Properties.create(Material.PLANTS, MaterialColor.DIRT).doesNotBlockMovement().zeroHardnessAndResistance().sound(SoundType.PLANT)), "cattail"); diff --git a/src/main/java/biomesoplenty/init/ModEntities.java b/src/main/java/biomesoplenty/init/ModEntities.java index e7ce10f65..23a8dc12e 100644 --- a/src/main/java/biomesoplenty/init/ModEntities.java +++ b/src/main/java/biomesoplenty/init/ModEntities.java @@ -7,8 +7,7 @@ ******************************************************************************/ package biomesoplenty.init; -import biomesoplenty.common.entity.item.EntityBoatBOP; -import biomesoplenty.common.entity.item.RenderBoatBOP; +import biomesoplenty.api.entity.BOPEntities; import biomesoplenty.common.entity.projectile.EntityMudball; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.entity.SpriteRenderer; @@ -21,21 +20,21 @@ import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.client.registry.RenderingRegistry; import net.minecraftforge.registries.ForgeRegistries; -import static biomesoplenty.api.entity.BOPEntities.boat_bop; -import static biomesoplenty.api.entity.BOPEntities.mudball; - public class ModEntities { public static void init() { - mudball = createEntity(EntityMudball::new, EntityClassification.MISC, "mudball", 64, 10, true); - boat_bop = createEntity(EntityBoatBOP::new, EntityClassification.MISC, "boat_bop", 80, 3, true); + EntityType mudball = createEntity(EntityMudball::new, EntityClassification.MISC, "mudball", 64, 10, true); + //EntityType boat_bop = createEntity(EntityBoatBOP::new, EntityClassification.MISC, "boat_bop", 80, 3, true); + + BOPEntities.mudball = mudball; + //BOPEntities.boat_bop = boat_bop; } public static EntityType createEntity(EntityType.IFactory factory, EntityClassification classification, String name, int trackingRange, int updateFrequency, boolean sendsVelocityUpdates) { ResourceLocation location = new ResourceLocation("biomesoplenty", name); - EntityType type = EntityType.Builder.create(factory, classification).setTrackingRange(trackingRange).setUpdateInterval(updateFrequency).setShouldReceiveVelocityUpdates(sendsVelocityUpdates).build(location.toString()); + EntityType type = EntityType.Builder.create(factory, classification).setTrackingRange(trackingRange).setUpdateInterval(updateFrequency).setShouldReceiveVelocityUpdates(sendsVelocityUpdates).build(location.toString()); type.setRegistryName(name); ForgeRegistries.ENTITIES.register(type); return type; @@ -45,6 +44,6 @@ public class ModEntities public static void registerRendering() { RenderingRegistry.registerEntityRenderingHandler(EntityMudball.class, manager -> new SpriteRenderer<>(manager, Minecraft.getInstance().getItemRenderer())); - RenderingRegistry.registerEntityRenderingHandler(EntityBoatBOP.class, manager -> new RenderBoatBOP(manager)); + //RenderingRegistry.registerEntityRenderingHandler(EntityBoatBOP.class, manager -> new RenderBoatBOP(manager)); } } diff --git a/src/main/java/biomesoplenty/init/ModItems.java b/src/main/java/biomesoplenty/init/ModItems.java index 5ee067d7b..40fa3e8d6 100644 --- a/src/main/java/biomesoplenty/init/ModItems.java +++ b/src/main/java/biomesoplenty/init/ModItems.java @@ -26,7 +26,6 @@ import static biomesoplenty.api.item.BOPItems.willow_boat; import biomesoplenty.api.sound.BOPSounds; import biomesoplenty.common.entity.item.EntityBoatBOP; -import biomesoplenty.common.item.ItemBoatBOP; import biomesoplenty.common.item.ItemMudball; import biomesoplenty.common.item.ItemRecordBOP; import biomesoplenty.common.util.inventory.ItemGroupBOP; diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index 6d4140f42..b9ceea280 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -3,10 +3,10 @@ public net.minecraft.block.Block$Properties *() public net.minecraft.block.Block field_181083_K # materialColor -public net.minecraft.block.BlockStairs (Lnet/minecraft/block/BlockState;Lnet/minecraft/block/Block$Properties;)V #BlockStairs -public net.minecraft.block.BlockDoor (Lnet/minecraft/block/Block$Properties;)V # BlockDoor -public net.minecraft.block.BlockFarmland (Lnet/minecraft/block/Block$Properties;)V # BlockFarmland -public net.minecraft.block.BlockGrassPath (Lnet/minecraft/block/Block$Properties;)V # BlockGrassPath -public net.minecraft.block.BlockTrapDoor (Lnet/minecraft/block/Block$Properties;)V # BlockTrapDoor -public net.minecraft.block.BlockButtonWood (Lnet/minecraft/block/Block$Properties;)V # BlockButtonWood -public net.minecraft.block.BlockPressurePlate (Lnet/minecraft/block/BlockPressurePlate$Sensitivity;Lnet/minecraft/block/Block$Properties;)V # BlockPressurePlate +public net.minecraft.block.StairsBlock (Lnet/minecraft/block/BlockState;Lnet/minecraft/block/Block$Properties;)V #StairsBlock +public net.minecraft.block.DoorBlock (Lnet/minecraft/block/Block$Properties;)V # DoorBlock +public net.minecraft.block.FarmlandBlock (Lnet/minecraft/block/Block$Properties;)V # FarmlandBlock +public net.minecraft.block.GrassPathBlock (Lnet/minecraft/block/Block$Properties;)V # GrassPathBlock +public net.minecraft.block.TrapDoorBlock (Lnet/minecraft/block/Block$Properties;)V # TrapDoorBlock +public net.minecraft.block.WoodButtonBlock (Lnet/minecraft/block/Block$Properties;)V # WoodButtonBlock +public net.minecraft.block.PressurePlateBlock (Lnet/minecraft/block/PressurePlateBlock$Sensitivity;Lnet/minecraft/block/Block$Properties;)V # PressurePlateBlock