Changed IPart#onNeighborChanged() to add vanilla arguments (#2985)

Allows more precise checks to limit an update to the facing side.
This commit is contained in:
yueh
2017-07-29 15:45:18 +02:00
committed by GitHub
parent b72fce97db
commit bb1e191666
19 changed files with 83 additions and 43 deletions
@@ -33,6 +33,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
@@ -212,16 +213,11 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab
}
@Override
public void onNeighborChanged()
public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{
this.isAccepting = true;
try
if( pos.offset( this.getSide().getFacing() ).equals( neighbor ) )
{
this.getProxy().getTick().alertDevice( this.getProxy().getNode() );
}
catch( final GridAccessException e )
{
// :P
this.refresh();
}
}
@@ -419,7 +415,7 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab
@MENetworkEventSubscribe
public void chanRender( final MENetworkChannelsChanged c )
{
this.onNeighborChanged();
this.refresh();
this.getHost().markForUpdate();
}
@@ -427,7 +423,7 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab
@MENetworkEventSubscribe
public void powerRender( final MENetworkPowerStatusChange c )
{
this.onNeighborChanged();
this.refresh();
this.getHost().markForUpdate();
}
@@ -595,6 +591,20 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab
}
}
private void refresh()
{
this.isAccepting = true;
try
{
this.getProxy().getTick().alertDevice( this.getProxy().getNode() );
}
catch( final GridAccessException e )
{
// :P
}
}
@Override
public IPartModel getStaticModels()
{
@@ -38,6 +38,7 @@ import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
import net.minecraft.world.chunk.Chunk;
@@ -347,15 +348,17 @@ public class PartFormationPlane extends PartUpgradeable implements ICellContaine
}
@Override
public void onNeighborChanged()
public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{
final TileEntity te = this.getHost().getTile();
final World w = te.getWorld();
final AEPartLocation side = this.getSide();
if( pos.offset( this.getSide().getFacing() ).equals( neighbor ) )
{
final TileEntity te = this.getHost().getTile();
final AEPartLocation side = this.getSide();
final BlockPos tePos = te.getPos().offset( side.getFacing() );
final BlockPos tePos = te.getPos().offset( side.getFacing() );
this.blocked = !w.getBlockState( tePos ).getBlock().isReplaceable( w, tePos );
this.blocked = !w.getBlockState( tePos ).getBlock().isReplaceable( w, tePos );
}
}
@Override
@@ -22,6 +22,7 @@ package appeng.parts.automation;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.items.IItemHandler;
@@ -80,15 +81,18 @@ public abstract class PartSharedItemBus extends PartUpgradeable implements IGrid
}
@Override
public void onNeighborChanged()
public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{
this.updateState();
if( this.lastRedstone != this.getHost().hasRedstone( this.getSide() ) )
if( pos.offset( this.getSide().getFacing() ).equals( neighbor ) )
{
this.lastRedstone = !this.lastRedstone;
if( this.lastRedstone && this.getRSMode() == RedstoneMode.SIGNAL_PULSE )
this.updateState();
if( this.lastRedstone != this.getHost().hasRedstone( this.getSide() ) )
{
this.doBusWork();
this.lastRedstone = !this.lastRedstone;
if( this.lastRedstone && this.getRSMode() == RedstoneMode.SIGNAL_PULSE )
{
this.doBusWork();
}
}
}
}