diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockRangedCollector.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockRangedCollector.java index ad6c7db28..e887e9b2a 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockRangedCollector.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockRangedCollector.java @@ -44,6 +44,9 @@ public class BlockRangedCollector extends BlockContainerBase{ @Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing par6, float par7, float par8, float par9){ + if(this.tryToggleRedstone(world, pos, player)){ + return true; + } if(!world.isRemote){ TileEntityRangedCollector breaker = (TileEntityRangedCollector)world.getTileEntity(pos); if(breaker != null){ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockContainerBase.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockContainerBase.java index 5deef38c1..b6e238cd0 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockContainerBase.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/base/BlockContainerBase.java @@ -121,11 +121,8 @@ public abstract class BlockContainerBase extends BlockContainer implements ItemB TileEntityBase base = (TileEntityBase)tile; if(!world.isRemote && base.isRedstoneToggle()){ base.isPulseMode = !base.isPulseMode; - tile.markDirty(); - - if(tile instanceof TileEntityBase){ - ((TileEntityBase)tile).sendUpdate(); - } + base.markDirty(); + base.sendUpdate(); } return true; } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityRangedCollector.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityRangedCollector.java index 07cd83c6a..338889ad7 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityRangedCollector.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityRangedCollector.java @@ -47,30 +47,40 @@ public class TileEntityRangedCollector extends TileEntityInventoryBase implement } @Override - public void updateEntity(){ - super.updateEntity(); - if(!this.world.isRemote){ - if(!this.isRedstonePowered){ - ArrayList items = (ArrayList)this.world.getEntitiesWithinAABB(EntityItem.class, new AxisAlignedBB(this.pos.getX()-RANGE, this.pos.getY()-RANGE, this.pos.getZ()-RANGE, this.pos.getX()+RANGE, this.pos.getY()+RANGE, this.pos.getZ()+RANGE)); - if(!items.isEmpty()){ - for(EntityItem item : items){ - if(!item.isDead && !item.cannotPickup() && StackUtil.isValid(item.getEntityItem())){ - ItemStack toAdd = item.getEntityItem().copy(); - if(this.filter.check(toAdd)){ - ArrayList checkList = new ArrayList(); - checkList.add(toAdd); - if(WorldUtil.addToInventory(this.slots, checkList, false)){ - WorldUtil.addToInventory(this.slots, checkList, true); + public boolean isRedstoneToggle(){ + return true; + } - ((WorldServer)this.world).spawnParticle(EnumParticleTypes.CLOUD, false, item.posX, item.posY+0.45F, item.posZ, 5, 0, 0, 0, 0.03D); + @Override + public void activateOnPulse(){ + ArrayList items = (ArrayList)this.world.getEntitiesWithinAABB(EntityItem.class, new AxisAlignedBB(this.pos.getX()-RANGE, this.pos.getY()-RANGE, this.pos.getZ()-RANGE, this.pos.getX()+RANGE, this.pos.getY()+RANGE, this.pos.getZ()+RANGE)); + if(!items.isEmpty()){ + for(EntityItem item : items){ + if(!item.isDead && !item.cannotPickup() && StackUtil.isValid(item.getEntityItem())){ + ItemStack toAdd = item.getEntityItem().copy(); + if(this.filter.check(toAdd)){ + ArrayList checkList = new ArrayList(); + checkList.add(toAdd); + if(WorldUtil.addToInventory(this.slots, checkList, false)){ + WorldUtil.addToInventory(this.slots, checkList, true); - item.setDead(); - } - } + ((WorldServer)this.world).spawnParticle(EnumParticleTypes.CLOUD, false, item.posX, item.posY+0.45F, item.posZ, 5, 0, 0, 0, 0.03D); + + item.setDead(); } } } } + } + } + + @Override + public void updateEntity(){ + super.updateEntity(); + if(!this.world.isRemote){ + if(!this.isRedstonePowered && !this.isPulseMode){ + this.activateOnPulse(); + } if(this.filter.needsUpdateSend() && this.sendUpdateWithInterval()){ this.filter.updateLasts();