Remove unnecessary tile entity from upper thorn blocks, and reminder to do the same for statue blocks
This commit is contained in:
@@ -123,27 +123,25 @@ public class BlockThorns extends BlockBush implements ITileEntityProvider {
|
||||
|
||||
@Override
|
||||
public void onEntityCollision(World world, BlockPos pos, IBlockState state, Entity entity){
|
||||
if(!world.isRemote){
|
||||
if(applyThornDamage(world, pos, entity)){
|
||||
entity.setInWeb();
|
||||
}
|
||||
if(applyThornDamage(world, pos, state, entity)){
|
||||
entity.setInWeb(); // Needs to be called client-side for players (and besides, all of this is common code)
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean applyThornDamage(World world, BlockPos pos, Entity target){
|
||||
private static boolean applyThornDamage(World world, BlockPos pos, IBlockState state, Entity target){
|
||||
|
||||
DamageSource source = DamageSource.CACTUS;
|
||||
|
||||
TileEntity tileentity = world.getTileEntity(pos);
|
||||
TileEntity tileentity = world.getTileEntity(state.getValue(HALF) == EnumBlockHalf.UPPER ? pos.down() : pos);
|
||||
|
||||
if(tileentity instanceof TileEntityPlayerSaveTimed){
|
||||
|
||||
EntityLivingBase caster = ((TileEntityPlayerSaveTimed)tileentity).getCaster();
|
||||
|
||||
if(caster != null && AllyDesignationSystem.isValidTarget(caster, target)){
|
||||
if(!AllyDesignationSystem.isValidTarget(caster, target)) return false; // Don't attack or slow allies of the caster
|
||||
|
||||
if(caster != null){
|
||||
source = MagicDamage.causeDirectMagicDamage(caster, MagicDamage.DamageType.MAGIC);
|
||||
}else{
|
||||
return false; // Don't attack or slow allies of the caster
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,12 +157,12 @@ public class BlockThorns extends BlockBush implements ITileEntityProvider {
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int metadata){
|
||||
return new TileEntityPlayerSaveTimed(600);
|
||||
return new TileEntityPlayerSaveTimed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasTileEntity(IBlockState state){
|
||||
return true;
|
||||
return state.getValue(HALF) == EnumBlockHalf.LOWER;
|
||||
}
|
||||
|
||||
@Override public boolean isReplaceable(IBlockAccess world, BlockPos pos){ return false; }
|
||||
@@ -175,7 +173,7 @@ public class BlockThorns extends BlockBush implements ITileEntityProvider {
|
||||
@SubscribeEvent
|
||||
public static void onLeftClickBlockEvent(PlayerInteractEvent.LeftClickBlock event){
|
||||
if(!event.getWorld().isRemote && event.getWorld().getBlockState(event.getPos()).getBlock() == WizardryBlocks.thorns){
|
||||
applyThornDamage(event.getWorld(), event.getPos(), event.getEntity());
|
||||
applyThornDamage(event.getWorld(), event.getPos(), event.getWorld().getBlockState(event.getPos()), event.getEntity());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -82,9 +82,9 @@ public class ForestOfThorns extends Spell {
|
||||
|
||||
((BlockThorns)WizardryBlocks.thorns).placeAt(world, pos, 3);
|
||||
|
||||
for(int i=0; i<2; i++){
|
||||
// for(int i=0; i<2; i++){
|
||||
|
||||
TileEntity tileentity = world.getTileEntity(pos.up(i));
|
||||
TileEntity tileentity = world.getTileEntity(pos);
|
||||
|
||||
if(tileentity instanceof TileEntityPlayerSaveTimed){
|
||||
((TileEntityPlayerSaveTimed)tileentity).setLifetime((int)(getProperty(DURATION).floatValue()
|
||||
@@ -92,9 +92,9 @@ public class ForestOfThorns extends Spell {
|
||||
if(caster != null){
|
||||
((TileEntityPlayerSaveTimed)tileentity).setCaster(caster);
|
||||
}
|
||||
((TileEntityPlayerSaveTimed)tileentity).sync();
|
||||
// ((TileEntityPlayerSaveTimed)tileentity).sync();
|
||||
}
|
||||
}
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,8 +9,8 @@ public class TileEntityPlayerSaveTimed extends TileEntityPlayerSave implements I
|
||||
public int timer = 0;
|
||||
public int maxTimer;
|
||||
|
||||
public TileEntityPlayerSaveTimed(int maxTimer){
|
||||
this.maxTimer = maxTimer;
|
||||
public TileEntityPlayerSaveTimed(){
|
||||
this.maxTimer = 600;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -24,6 +24,7 @@ public class TileEntityPlayerSaveTimed extends TileEntityPlayerSave implements I
|
||||
|
||||
if(timer % 2 == 0 && world.getBlockState(pos).getValue(BlockThorns.AGE) < BlockThorns.GROWTH_STAGES - 1){
|
||||
world.setBlockState(pos, world.getBlockState(pos).withProperty(BlockThorns.AGE, world.getBlockState(pos).getValue(BlockThorns.AGE) + 1), 2);
|
||||
world.setBlockState(pos.up(), world.getBlockState(pos.up()).withProperty(BlockThorns.AGE, world.getBlockState(pos.up()).getValue(BlockThorns.AGE) + 1), 2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ public class TileEntityStatue extends TileEntity implements ITickable {
|
||||
/**
|
||||
* The position within the petrified creature this particular tileentity holds. 1 is at the bottom.
|
||||
*/
|
||||
public int position = 1;
|
||||
public int position = 1; // TODO: Remove this, there is no need for more than 1 TE per statue
|
||||
|
||||
public void setCreatureAndPart(EntityLiving entity, int position, int parts){
|
||||
this.creature = entity;
|
||||
|
||||
Reference in New Issue
Block a user