change mob spawners: fix egg collision
This commit is contained in:
parent
d45a1a8c4a
commit
f7bb1b0fe7
6 changed files with 11 additions and 16 deletions
Binary file not shown.
Before Width: | Height: | Size: 338 B After Width: | Height: | Size: 5.2 KiB |
|
@ -1,6 +1,5 @@
|
||||||
package common.block.tech;
|
package common.block.tech;
|
||||||
|
|
||||||
import common.model.BlockLayer;
|
|
||||||
import common.tileentity.TileEntity;
|
import common.tileentity.TileEntity;
|
||||||
import common.tileentity.TileEntityMobSpawner;
|
import common.tileentity.TileEntityMobSpawner;
|
||||||
import common.world.World;
|
import common.world.World;
|
||||||
|
@ -9,8 +8,4 @@ public class BlockMobSpawner extends BlockMachine {
|
||||||
public TileEntity createNewTileEntity(World world) {
|
public TileEntity createNewTileEntity(World world) {
|
||||||
return new TileEntityMobSpawner();
|
return new TileEntityMobSpawner();
|
||||||
}
|
}
|
||||||
|
|
||||||
public BlockLayer getBlockLayer() {
|
|
||||||
return BlockLayer.CUTOUT;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,7 +138,7 @@ public abstract class DispenserRegistry {
|
||||||
double d1 = (double)((float)source.getBlockPos().getY() + 0.2F);
|
double d1 = (double)((float)source.getBlockPos().getY() + 0.2F);
|
||||||
double d2 = source.getZ() + (double)enumfacing.getFrontOffsetZ();
|
double d2 = source.getZ() + (double)enumfacing.getFrontOffsetZ();
|
||||||
Entity entity = ItemMonsterPlacer.spawnCreature(source.getWorld(), ((ItemMonsterPlacer)stack.getItem()).getSpawnedId(),
|
Entity entity = ItemMonsterPlacer.spawnCreature(source.getWorld(), ((ItemMonsterPlacer)stack.getItem()).getSpawnedId(),
|
||||||
d0, d1, d2);
|
d0, d1, d2, false);
|
||||||
|
|
||||||
if (entity instanceof EntityLiving && stack.hasDisplayName())
|
if (entity instanceof EntityLiving && stack.hasDisplayName())
|
||||||
{
|
{
|
||||||
|
|
|
@ -91,7 +91,7 @@ public class ItemMonsterPlacer extends Item
|
||||||
|
|
||||||
// int amount = Math.min(stack.stackSize, 128);
|
// int amount = Math.min(stack.stackSize, 128);
|
||||||
// for(int z = 0; z < amount; z++) {
|
// for(int z = 0; z < amount; z++) {
|
||||||
Entity entity = spawnCreature(worldIn, this.entityId, (double)pos.getX() + 0.5D, (double)pos.getY() + d0, (double)pos.getZ() + 0.5D);
|
Entity entity = spawnCreature(worldIn, this.entityId, (double)pos.getX() + 0.5D, (double)pos.getY() + d0, (double)pos.getZ() + 0.5D, false);
|
||||||
|
|
||||||
if (entity != null)
|
if (entity != null)
|
||||||
{
|
{
|
||||||
|
@ -153,7 +153,7 @@ public class ItemMonsterPlacer extends Item
|
||||||
{
|
{
|
||||||
// int amount = Math.min(itemStackIn.stackSize, 128);
|
// int amount = Math.min(itemStackIn.stackSize, 128);
|
||||||
// for(int z = 0; z < amount; z++) {
|
// for(int z = 0; z < amount; z++) {
|
||||||
Entity entity = spawnCreature(worldIn, this.entityId, (double)blockpos.getX() + 0.5D, (double)blockpos.getY() + 0.5D, (double)blockpos.getZ() + 0.5D);
|
Entity entity = spawnCreature(worldIn, this.entityId, (double)blockpos.getX() + 0.5D, (double)blockpos.getY() + 0.5D, (double)blockpos.getZ() + 0.5D, false);
|
||||||
|
|
||||||
if (entity != null)
|
if (entity != null)
|
||||||
{
|
{
|
||||||
|
@ -184,14 +184,14 @@ public class ItemMonsterPlacer extends Item
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EntityLiving spawnCreature(World worldIn, String entityID, double x, double y, double z) {
|
public static EntityLiving spawnCreature(World worldIn, String entityID, double x, double y, double z, boolean check) {
|
||||||
if (!EntityRegistry.SPAWN_EGGS.containsKey(entityID))
|
if (!EntityRegistry.SPAWN_EGGS.containsKey(entityID))
|
||||||
return null;
|
return null;
|
||||||
Entity entity = EntityRegistry.createEntityByName(entityID, worldIn);
|
Entity entity = EntityRegistry.createEntityByName(entityID, worldIn);
|
||||||
if(!(entity instanceof EntityLiving living))
|
if(!(entity instanceof EntityLiving living))
|
||||||
return null;
|
return null;
|
||||||
living.setLocationAndAngles(x, y, z, ExtMath.wrapf(worldIn.rand.floatv() * 360.0F), 0.0F);
|
living.setLocationAndAngles(x, y, z, ExtMath.wrapf(worldIn.rand.floatv() * 360.0F), 0.0F);
|
||||||
if(!living.isNotColliding())
|
if(check && !living.isNotColliding())
|
||||||
return null;
|
return null;
|
||||||
living.headYaw = living.rotYaw;
|
living.headYaw = living.rotYaw;
|
||||||
living.yawOffset = living.rotYaw;
|
living.yawOffset = living.rotYaw;
|
||||||
|
|
|
@ -90,7 +90,7 @@ public class ItemNpcSpawner extends Item
|
||||||
|
|
||||||
// int amount = Math.min(stack.stackSize, 128);
|
// int amount = Math.min(stack.stackSize, 128);
|
||||||
// for(int z = 0; z < amount; z++) {
|
// for(int z = 0; z < amount; z++) {
|
||||||
Entity entity = spawnNpc(worldIn, this.spawned, (double)pos.getX() + 0.5D, (double)pos.getY() + d0, (double)pos.getZ() + 0.5D);
|
Entity entity = spawnNpc(worldIn, this.spawned, (double)pos.getX() + 0.5D, (double)pos.getY() + d0, (double)pos.getZ() + 0.5D, false);
|
||||||
|
|
||||||
if (entity != null)
|
if (entity != null)
|
||||||
{
|
{
|
||||||
|
@ -144,7 +144,7 @@ public class ItemNpcSpawner extends Item
|
||||||
{
|
{
|
||||||
// int amount = Math.min(itemStackIn.stackSize, 128);
|
// int amount = Math.min(itemStackIn.stackSize, 128);
|
||||||
// for(int z = 0; z < amount; z++) {
|
// for(int z = 0; z < amount; z++) {
|
||||||
Entity entity = spawnNpc(worldIn, this.spawned, (double)blockpos.getX() + 0.5D, (double)blockpos.getY() + 0.5D, (double)blockpos.getZ() + 0.5D);
|
Entity entity = spawnNpc(worldIn, this.spawned, (double)blockpos.getX() + 0.5D, (double)blockpos.getY() + 0.5D, (double)blockpos.getZ() + 0.5D, false);
|
||||||
|
|
||||||
if (entity != null)
|
if (entity != null)
|
||||||
{
|
{
|
||||||
|
@ -170,7 +170,7 @@ public class ItemNpcSpawner extends Item
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EntityNPC spawnNpc(World worldIn, CharacterInfo character, double x, double y, double z)
|
public static EntityNPC spawnNpc(World worldIn, CharacterInfo character, double x, double y, double z, boolean check)
|
||||||
{
|
{
|
||||||
EntityNPC entity;
|
EntityNPC entity;
|
||||||
try {
|
try {
|
||||||
|
@ -180,7 +180,7 @@ public class ItemNpcSpawner extends Item
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
entity.setLocationAndAngles(x, y, z, ExtMath.wrapf(worldIn.rand.floatv() * 360.0F), 0.0F);
|
entity.setLocationAndAngles(x, y, z, ExtMath.wrapf(worldIn.rand.floatv() * 360.0F), 0.0F);
|
||||||
if(!entity.isNotColliding())
|
if(check && !entity.isNotColliding())
|
||||||
return null;
|
return null;
|
||||||
entity.headYaw = entity.rotYaw;
|
entity.headYaw = entity.rotYaw;
|
||||||
entity.yawOffset = entity.rotYaw;
|
entity.yawOffset = entity.rotYaw;
|
||||||
|
|
|
@ -56,9 +56,9 @@ public class TileEntityMobSpawner extends TileEntityDevice implements ITickable
|
||||||
double z = (double)this.pos.getZ() + (this.worldObj.rand.doublev() - this.worldObj.rand.doublev()) * (double)this.spawnRange + 0.5D;
|
double z = (double)this.pos.getZ() + (this.worldObj.rand.doublev() - this.worldObj.rand.doublev()) * (double)this.spawnRange + 0.5D;
|
||||||
EntityLiving entity = null;
|
EntityLiving entity = null;
|
||||||
if(stack.getItem() instanceof ItemMonsterPlacer egg)
|
if(stack.getItem() instanceof ItemMonsterPlacer egg)
|
||||||
entity = ItemMonsterPlacer.spawnCreature(this.worldObj, egg.getSpawnedId(), x, y, z);
|
entity = ItemMonsterPlacer.spawnCreature(this.worldObj, egg.getSpawnedId(), x, y, z, true);
|
||||||
else if(stack.getItem() instanceof ItemNpcSpawner egg)
|
else if(stack.getItem() instanceof ItemNpcSpawner egg)
|
||||||
entity = ItemNpcSpawner.spawnNpc(this.worldObj, egg.getSpawnedChar(), x, y, z);
|
entity = ItemNpcSpawner.spawnNpc(this.worldObj, egg.getSpawnedChar(), x, y, z, true);
|
||||||
if (entity == null)
|
if (entity == null)
|
||||||
return true;
|
return true;
|
||||||
this.decrStackSize(0, 1);
|
this.decrStackSize(0, 1);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue