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
+2 -1
View File
@@ -42,6 +42,7 @@ import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
@@ -129,7 +130,7 @@ public interface IPart extends IBoxProvider, ICustomCableConnection
/** /**
* a block around the bus's host has been changed. * a block around the bus's host has been changed.
*/ */
void onNeighborChanged(); void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor );
/** /**
* @return output redstone on facing side * @return output redstone on facing side
@@ -131,7 +131,7 @@ public class BlockCableBus extends AEBaseTileBlock
@Override @Override
public void onNeighborChange( final IBlockAccess w, final BlockPos pos, final BlockPos neighbor ) public void onNeighborChange( final IBlockAccess w, final BlockPos pos, final BlockPos neighbor )
{ {
this.cb( w, pos ).onNeighborChanged(); this.cb( w, pos ).onNeighborChanged( w, pos, neighbor );
} }
@Override @Override
@@ -336,7 +336,7 @@ public class BlockCableBus extends AEBaseTileBlock
{ {
if( Platform.isServer() ) if( Platform.isServer() )
{ {
this.cb( world, pos ).onNeighborChanged(); this.cb( world, pos ).onNeighborChanged( world, pos, fromPos );
} }
} }
+2 -1
View File
@@ -41,6 +41,7 @@ import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@@ -221,7 +222,7 @@ public abstract class AEBasePart implements IPart, IGridProxyable, IActionHost,
} }
@Override @Override
public void onNeighborChanged() public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{ {
} }
@@ -823,7 +823,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I
} }
@Override @Override
public void onNeighborChanged() public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{ {
this.hasRedstone = YesNo.UNDECIDED; this.hasRedstone = YesNo.UNDECIDED;
@@ -832,7 +832,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I
final IPart part = this.getPart( s ); final IPart part = this.getPart( s );
if( part != null ) if( part != null )
{ {
part.onNeighborChanged(); part.onNeighborChanged( w, pos, neighbor );
} }
} }
} }
@@ -29,6 +29,7 @@ import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@@ -51,7 +52,7 @@ public interface ICableBusContainer
boolean activate( EntityPlayer player, EnumHand hand, Vec3d vecFromPool ); boolean activate( EntityPlayer player, EnumHand hand, Vec3d vecFromPool );
void onNeighborChanged(); void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor );
boolean isSolidOnSide( EnumFacing side ); boolean isSolidOnSide( EnumFacing side );
@@ -29,6 +29,7 @@ import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import appeng.api.parts.SelectedPart; import appeng.api.parts.SelectedPart;
@@ -70,7 +71,7 @@ public class NullCableBusContainer implements ICableBusContainer
} }
@Override @Override
public void onNeighborChanged() public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{ {
} }
@@ -33,6 +33,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.WorldServer; import net.minecraft.world.WorldServer;
@@ -212,16 +213,11 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab
} }
@Override @Override
public void onNeighborChanged() public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{ {
this.isAccepting = true; if( pos.offset( this.getSide().getFacing() ).equals( neighbor ) )
try
{ {
this.getProxy().getTick().alertDevice( this.getProxy().getNode() ); this.refresh();
}
catch( final GridAccessException e )
{
// :P
} }
} }
@@ -419,7 +415,7 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab
@MENetworkEventSubscribe @MENetworkEventSubscribe
public void chanRender( final MENetworkChannelsChanged c ) public void chanRender( final MENetworkChannelsChanged c )
{ {
this.onNeighborChanged(); this.refresh();
this.getHost().markForUpdate(); this.getHost().markForUpdate();
} }
@@ -427,7 +423,7 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab
@MENetworkEventSubscribe @MENetworkEventSubscribe
public void powerRender( final MENetworkPowerStatusChange c ) public void powerRender( final MENetworkPowerStatusChange c )
{ {
this.onNeighborChanged(); this.refresh();
this.getHost().markForUpdate(); 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 @Override
public IPartModel getStaticModels() public IPartModel getStaticModels()
{ {
@@ -38,6 +38,7 @@ import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.WorldServer; import net.minecraft.world.WorldServer;
import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.Chunk;
@@ -347,15 +348,17 @@ public class PartFormationPlane extends PartUpgradeable implements ICellContaine
} }
@Override @Override
public void onNeighborChanged() public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{ {
final TileEntity te = this.getHost().getTile(); if( pos.offset( this.getSide().getFacing() ).equals( neighbor ) )
final World w = te.getWorld(); {
final AEPartLocation side = this.getSide(); 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 @Override
@@ -22,6 +22,7 @@ package appeng.parts.automation;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
@@ -80,15 +81,18 @@ public abstract class PartSharedItemBus extends PartUpgradeable implements IGrid
} }
@Override @Override
public void onNeighborChanged() public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{ {
this.updateState(); if( pos.offset( this.getSide().getFacing() ).equals( neighbor ) )
if( this.lastRedstone != this.getHost().hasRedstone( this.getSide() ) )
{ {
this.lastRedstone = !this.lastRedstone; this.updateState();
if( this.lastRedstone && this.getRSMode() == RedstoneMode.SIGNAL_PULSE ) if( this.lastRedstone != this.getHost().hasRedstone( this.getSide() ) )
{ {
this.doBusWork(); this.lastRedstone = !this.lastRedstone;
if( this.lastRedstone && this.getRSMode() == RedstoneMode.SIGNAL_PULSE )
{
this.doBusWork();
}
} }
} }
} }
@@ -35,6 +35,7 @@ import net.minecraft.util.EnumHand;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import appeng.api.networking.IGridNode; import appeng.api.networking.IGridNode;
@@ -131,7 +132,7 @@ public class PartCableAnchor implements IPart
} }
@Override @Override
public void onNeighborChanged() public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{ {
} }
@@ -30,7 +30,9 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
@@ -278,9 +280,12 @@ public class PartStorageBus extends PartUpgradeable implements IGridTickable, IC
} }
@Override @Override
public void onNeighborChanged() public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{ {
this.resetCache( false ); if( pos.offset( this.getSide().getFacing() ).equals( neighbor ) )
{
this.resetCache( false );
}
} }
@Override @Override
@@ -29,6 +29,8 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import appeng.api.AEApi; import appeng.api.AEApi;
import appeng.api.exceptions.FailedConnection; import appeng.api.exceptions.FailedConnection;
@@ -122,7 +124,7 @@ public class PartToggleBus extends PartBasicState
} }
@Override @Override
public void onNeighborChanged() public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{ {
final boolean oldHasRedstone = this.hasRedstone; final boolean oldHasRedstone = this.hasRedstone;
this.hasRedstone = this.getHost().hasRedstone( this.getSide() ); this.hasRedstone = this.getHost().hasRedstone( this.getSide() );
@@ -27,6 +27,7 @@ import javax.annotation.Nullable;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.energy.IEnergyStorage; import net.minecraftforge.energy.IEnergyStorage;
@@ -73,9 +74,9 @@ public class PartP2PFEPower extends PartP2PTunnel<PartP2PFEPower> implements IEn
} }
@Override @Override
public void onNeighborChanged() public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{ {
super.onNeighborChanged(); super.onNeighborChanged( w, pos, neighbor );
this.cachedTarget = false; this.cachedTarget = false;
} }
@@ -26,6 +26,8 @@ import java.util.List;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
@@ -74,7 +76,7 @@ public class PartP2PFluids extends PartP2PTunnel<PartP2PFluids> implements IFlui
} }
@Override @Override
public void onNeighborChanged() public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{ {
this.cachedTank = null; this.cachedTank = null;
@@ -25,6 +25,8 @@ import java.util.List;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
@@ -69,7 +71,7 @@ public class PartP2PItems extends PartP2PTunnel<PartP2PItems> implements IItemHa
} }
@Override @Override
public void onNeighborChanged() public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{ {
this.cachedInv = null; this.cachedInv = null;
final PartP2PItems input = this.getInput(); final PartP2PItems input = this.getInput();
@@ -27,6 +27,8 @@ import io.netty.buffer.ByteBuf;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import appeng.api.networking.IGridNode; import appeng.api.networking.IGridNode;
@@ -122,7 +124,7 @@ public class PartP2PLight extends PartP2PTunnel<PartP2PLight> implements IGridTi
} }
@Override @Override
public void onNeighborChanged() public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{ {
this.opacity = -1; this.opacity = -1;
@@ -25,6 +25,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import cofh.redstoneflux.api.IEnergyReceiver; import cofh.redstoneflux.api.IEnergyReceiver;
@@ -71,9 +72,9 @@ public final class PartP2PRFPower extends PartP2PTunnel<PartP2PRFPower> implemen
} }
@Override @Override
public void onNeighborChanged() public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{ {
super.onNeighborChanged(); super.onNeighborChanged( w, pos, neighbor );
this.cachedTarget = false; this.cachedTarget = false;
} }
@@ -28,6 +28,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import appeng.api.networking.events.MENetworkBootingStatusChange; import appeng.api.networking.events.MENetworkBootingStatusChange;
@@ -148,7 +149,7 @@ public class PartP2PRedstone extends PartP2PTunnel<PartP2PRedstone>
} }
@Override @Override
public void onNeighborChanged() public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{ {
if( !this.isOutput() ) if( !this.isOutput() )
{ {
@@ -28,8 +28,10 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraft.world.IBlockAccess;
import appeng.api.implementations.IPowerChannelState; import appeng.api.implementations.IPowerChannelState;
import appeng.api.implementations.parts.IPartMonitor; import appeng.api.implementations.parts.IPartMonitor;
@@ -113,7 +115,7 @@ public abstract class AbstractPartReporting extends AEBasePart implements IPartM
} }
@Override @Override
public void onNeighborChanged() public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{ {
this.opacity = -1; this.opacity = -1;
this.getHost().markForUpdate(); this.getHost().markForUpdate();