Fixes #675 No disabled feature should log spam or crash anymore.

Deprecates the old usage of the AEItemDefinitions via the direct method access of

* blocks()
* parts()
* items()
* materials()

and thus use the new re-direct via definitions().

All definitions are now initialized, no matter what. But SubItems, Items and Blocks are not registered, if by chance are disabled.
This commit is contained in:
thatsIch
2015-01-03 02:53:14 +01:00
parent 3dd81433ac
commit 9986ffc458
385 changed files with 12477 additions and 8292 deletions
@@ -73,14 +73,15 @@ import appeng.api.util.AECableType;
import appeng.api.util.IConfigManager;
import appeng.client.texture.CableBusTextures;
import appeng.core.sync.GuiBridge;
import appeng.helpers.Reflected;
import appeng.me.GridAccessException;
import appeng.tile.inventory.AppEngInternalAEInventory;
import appeng.tile.inventory.InvOperation;
import appeng.util.Platform;
public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherHost, IStackWatcherHost, ICraftingWatcherHost,
IMEMonitorHandlerReceiver<IAEItemStack>, ICraftingProvider
public class PartLevelEmitter extends PartUpgradeable
implements IEnergyWatcherHost, IStackWatcherHost, ICraftingWatcherHost, IMEMonitorHandlerReceiver<IAEItemStack>, ICraftingProvider
{
final int FLAG_ON = 4;
@@ -95,6 +96,21 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
IStackWatcher myWatcher;
IEnergyWatcher myEnergyWatcher;
ICraftingWatcher myCraftingWatcher;
double centerX;
double centerY;
double centerZ;
boolean status = false;
@Reflected
public PartLevelEmitter( ItemStack is )
{
super( is );
this.getConfigManager().registerSetting( Settings.REDSTONE_EMITTER, RedstoneMode.HIGH_SIGNAL );
this.getConfigManager().registerSetting( Settings.FUZZY_MODE, FuzzyMode.IGNORE_ALL );
this.getConfigManager().registerSetting( Settings.LEVEL_TYPE, LevelType.ITEM_LEVEL );
this.getConfigManager().registerSetting( Settings.CRAFT_VIA_REDSTONE, YesNo.NO );
}
public long getReportingValue()
{
@@ -116,24 +132,6 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
this.updateState();
}
@MENetworkEventSubscribe
public void channelChanged( MENetworkChannelsChanged c )
{
this.updateState();
}
@Override
public void upgradesChanged()
{
this.configureWatchers();
}
@Override
public void updateSetting( IConfigManager manager, Enum settingName, Enum newValue )
{
this.configureWatchers();
}
private void updateState()
{
boolean isOn = this.isLevelEmitterOn();
@@ -147,24 +145,40 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
}
}
@Override
public void writeToNBT( NBTTagCompound data )
private boolean isLevelEmitterOn()
{
super.writeToNBT( data );
data.setLong( "lastReportedValue", this.lastReportedValue );
data.setLong( "reportingValue", this.reportingValue );
data.setBoolean( "prevState", this.prevState );
this.config.writeToNBT( data, "config" );
if ( Platform.isClient() )
{
return ( this.clientFlags & this.FLAG_ON ) == this.FLAG_ON;
}
if ( !this.proxy.isActive() )
{
return false;
}
if ( this.getInstalledUpgrades( Upgrades.CRAFTING ) > 0 )
{
try
{
return this.proxy.getCrafting().isRequesting( this.config.getAEStackInSlot( 0 ) );
}
catch ( GridAccessException e )
{
// :P
}
return this.prevState;
}
boolean flipState = this.getConfigManager().getSetting( Settings.REDSTONE_EMITTER ) == RedstoneMode.LOW_SIGNAL;
return flipState ? this.reportingValue >= this.lastReportedValue + 1 : this.reportingValue < this.lastReportedValue + 1;
}
@Override
public void readFromNBT( NBTTagCompound data )
@MENetworkEventSubscribe
public void channelChanged( MENetworkChannelsChanged c )
{
super.readFromNBT( data );
this.lastReportedValue = data.getLong( "lastReportedValue" );
this.reportingValue = data.getLong( "reportingValue" );
this.prevState = data.getBoolean( "prevState" );
this.config.readFromNBT( data, "config" );
this.updateState();
}
@Override
@@ -173,6 +187,12 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
return cf | ( this.prevState ? this.FLAG_ON : 0 );
}
@Override
public IIcon getBreakingTexture()
{
return this.is.getIconIndex();
}
@Override
public void updateWatcher( ICraftingWatcher newWatcher )
{
@@ -181,18 +201,11 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
}
@Override
public void updateWatcher( IStackWatcher newWatcher )
public void onRequestChange( ICraftingGrid craftingGrid, IAEItemStack what )
{
this.myWatcher = newWatcher;
this.configureWatchers();
this.updateState();
}
@Override
public void updateWatcher( IEnergyWatcher newWatcher )
{
this.myEnergyWatcher = newWatcher;
this.configureWatchers();
}
// update the system...
public void configureWatchers()
@@ -228,12 +241,12 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
if ( this.getConfigManager().getSetting( Settings.LEVEL_TYPE ) == LevelType.ENERGY_LEVEL )
{
if ( this.myEnergyWatcher != null )
this.myEnergyWatcher.add( ( double ) this.reportingValue );
this.myEnergyWatcher.add( (double) this.reportingValue );
try
{
// update to power...
this.lastReportedValue = ( long ) this.proxy.getEnergy().getStoredPower();
this.lastReportedValue = (long) this.proxy.getEnergy().getStoredPower();
this.updateState();
// no more item stuff..
@@ -269,35 +282,6 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
}
}
@Override
public void onChangeInventory( IInventory inv, int slot, InvOperation mc, ItemStack removedStack, ItemStack newStack )
{
if ( inv == this.config )
this.configureWatchers();
super.onChangeInventory( inv, slot, mc, removedStack, newStack );
}
@Override
public void postChange( IBaseMonitor<IAEItemStack> monitor, Iterable<IAEItemStack> change, BaseActionSource actionSource )
{
this.updateReportingValue( ( IMEMonitor<IAEItemStack> ) monitor );
}
@Override
public boolean onPartActivate( EntityPlayer player, Vec3 pos )
{
if ( !player.isSneaking() )
{
if ( Platform.isClient() )
return true;
Platform.openGUI( player, this.getHost().getTile(), this.side, GuiBridge.GUI_LEVEL_EMITTER );
return true;
}
return false;
}
private void updateReportingValue( IMEMonitor<IAEItemStack> monitor )
{
@@ -312,7 +296,7 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
else if ( this.getInstalledUpgrades( Upgrades.FUZZY ) > 0 )
{
this.lastReportedValue = 0;
FuzzyMode fzMode = ( FuzzyMode ) this.getConfigManager().getSetting( Settings.FUZZY_MODE );
FuzzyMode fzMode = (FuzzyMode) this.getConfigManager().getSetting( Settings.FUZZY_MODE );
Collection<IAEItemStack> fuzzyList = monitor.getStorageList().findFuzzy( myStack, fzMode );
for ( IAEItemStack st : fuzzyList )
this.lastReportedValue += st.getStackSize();
@@ -329,6 +313,42 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
this.updateState();
}
@Override
public void updateWatcher( IStackWatcher newWatcher )
{
this.myWatcher = newWatcher;
this.configureWatchers();
}
@Override
public void onStackChange( IItemList o, IAEStack fullStack, IAEStack diffStack, BaseActionSource src, StorageChannel chan )
{
if ( chan == StorageChannel.ITEMS && fullStack.equals( this.config.getAEStackInSlot( 0 ) ) && this.getInstalledUpgrades( Upgrades.FUZZY ) == 0 )
{
this.lastReportedValue = fullStack.getStackSize();
this.updateState();
}
}
@Override
public void updateWatcher( IEnergyWatcher newWatcher )
{
this.myEnergyWatcher = newWatcher;
this.configureWatchers();
}
@Override
public void onThresholdPass( IEnergyGrid energyGrid )
{
this.lastReportedValue = (long) energyGrid.getStoredPower();
this.updateState();
}
@Override
public boolean isValid( Object effectiveGrid )
{
@@ -342,37 +362,27 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
}
}
@Override
public void onRequestChange( ICraftingGrid craftingGrid, IAEItemStack what )
{
this.updateState();
}
@Override
public void onThresholdPass( IEnergyGrid energyGrid )
public void postChange( IBaseMonitor<IAEItemStack> monitor, Iterable<IAEItemStack> change, BaseActionSource actionSource )
{
this.lastReportedValue = ( long ) energyGrid.getStoredPower();
this.updateState();
this.updateReportingValue( (IMEMonitor<IAEItemStack>) monitor );
}
@Override
public void onStackChange( IItemList o, IAEStack fullStack, IAEStack diffStack, BaseActionSource src, StorageChannel chan )
public void onListUpdate()
{
if ( chan == StorageChannel.ITEMS && fullStack.equals( this.config.getAEStackInSlot( 0 ) ) && this.getInstalledUpgrades( Upgrades.FUZZY ) == 0 )
try
{
this.lastReportedValue = fullStack.getStackSize();
this.updateState();
this.updateReportingValue( this.proxy.getStorage().getItemInventory() );
}
catch ( GridAccessException e )
{
// ;P
}
}
public PartLevelEmitter( ItemStack is )
{
super( PartLevelEmitter.class, is );
this.getConfigManager().registerSetting( Settings.REDSTONE_EMITTER, RedstoneMode.HIGH_SIGNAL );
this.getConfigManager().registerSetting( Settings.FUZZY_MODE, FuzzyMode.IGNORE_ALL );
this.getConfigManager().registerSetting( Settings.LEVEL_TYPE, LevelType.ITEM_LEVEL );
this.getConfigManager().registerSetting( Settings.CRAFT_VIA_REDSTONE, YesNo.NO );
}
@Override
@SideOnly( Side.CLIENT )
@@ -386,75 +396,6 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
// rh.renderInventoryBox( renderer );
}
double centerX;
double centerY;
double centerZ;
public void addVertexWithUV( double x, double y, double z, double u, double v )
{
Tessellator var12 = Tessellator.instance;
x -= this.centerX;
y -= this.centerY;
z -= this.centerZ;
if ( this.side == ForgeDirection.DOWN )
{
y = -y;
z = -z;
}
if ( this.side == ForgeDirection.EAST )
{
double m = x;
x = y;
y = m;
y = -y;
}
if ( this.side == ForgeDirection.WEST )
{
double m = x;
x = -y;
y = m;
}
if ( this.side == ForgeDirection.SOUTH )
{
double m = z;
z = y;
y = m;
y = -y;
}
if ( this.side == ForgeDirection.NORTH )
{
double m = z;
z = -y;
y = m;
}
x += this.centerX;// + orientation.offsetX * 0.4;
y += this.centerY;// + orientation.offsetY * 0.4;
z += this.centerZ;// + orientation.offsetZ * 0.4;
var12.addVertexWithUV( x, y, z, u, v );
}
@Override
public void randomDisplayTick( World world, int x, int y, int z, Random r )
{
if ( this.isLevelEmitterOn() )
{
ForgeDirection d = this.side;
double d0 = d.offsetX * 0.45F + ( r.nextFloat() - 0.5F ) * 0.2D;
double d1 = d.offsetY * 0.45F + ( r.nextFloat() - 0.5F ) * 0.2D;
double d2 = d.offsetZ * 0.45F + ( r.nextFloat() - 0.5F ) * 0.2D;
world.spawnParticle( "reddust", 0.5 + x + d0, 0.5 + y + d1, 0.5 + z + d2, 0.0D, 0.0D, 0.0D );
}
}
public void renderTorchAtAngle( double baseX, double baseY, double baseZ )
{
@@ -564,38 +505,59 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
this.addVertexWithUV( var36, baseY + 1.0D, baseZ - var44, var17, var18 );
}
boolean status = false;
private boolean isLevelEmitterOn()
public void addVertexWithUV( double x, double y, double z, double u, double v )
{
if ( Platform.isClient() )
Tessellator var12 = Tessellator.instance;
x -= this.centerX;
y -= this.centerY;
z -= this.centerZ;
if ( this.side == ForgeDirection.DOWN )
{
return ( this.clientFlags & this.FLAG_ON ) == this.FLAG_ON;
y = -y;
z = -z;
}
if ( !this.proxy.isActive() )
if ( this.side == ForgeDirection.EAST )
{
return false;
double m = x;
x = y;
y = m;
y = -y;
}
if ( this.getInstalledUpgrades( Upgrades.CRAFTING ) > 0 )
if ( this.side == ForgeDirection.WEST )
{
try
{
return this.proxy.getCrafting().isRequesting( this.config.getAEStackInSlot( 0 ) );
}
catch ( GridAccessException e )
{
// :P
}
return this.prevState;
double m = x;
x = -y;
y = m;
}
boolean flipState = this.getConfigManager().getSetting( Settings.REDSTONE_EMITTER ) == RedstoneMode.LOW_SIGNAL;
return flipState ? this.reportingValue >= this.lastReportedValue + 1 : this.reportingValue < this.lastReportedValue + 1;
if ( this.side == ForgeDirection.SOUTH )
{
double m = z;
z = y;
y = m;
y = -y;
}
if ( this.side == ForgeDirection.NORTH )
{
double m = z;
z = -y;
y = m;
}
x += this.centerX;// + orientation.offsetX * 0.4;
y += this.centerY;// + orientation.offsetY * 0.4;
z += this.centerZ;// + orientation.offsetZ * 0.4;
var12.addVertexWithUV( x, y, z, u, v );
}
@Override
@SideOnly( Side.CLIENT )
public void renderStatic( int x, int y, int z, IPartRenderHelper rh, RenderBlocks renderer )
@@ -625,35 +587,6 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
// super.renderWorldBlock( world, x, y, z, block, modelId, renderer );
}
@Override
public IIcon getBreakingTexture()
{
return this.is.getIconIndex();
}
@Override
public void getBoxes( IPartCollisionHelper bch )
{
bch.addBox( 7, 7, 11, 9, 9, 16 );
}
@Override
public AECableType getCableConnectionType( ForgeDirection dir )
{
return AECableType.SMART;
}
@Override
public int cableConnectionRenderTo()
{
return 16;
}
@Override
public boolean canConnectRedstone()
{
return true;
}
@Override
public int isProvidingStrongPower()
@@ -661,12 +594,96 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
return this.prevState ? 15 : 0;
}
@Override
public int isProvidingWeakPower()
{
return this.prevState ? 15 : 0;
}
@Override
public void getBoxes( IPartCollisionHelper bch )
{
bch.addBox( 7, 7, 11, 9, 9, 16 );
}
@Override
public void randomDisplayTick( World world, int x, int y, int z, Random r )
{
if ( this.isLevelEmitterOn() )
{
ForgeDirection d = this.side;
double d0 = d.offsetX * 0.45F + ( r.nextFloat() - 0.5F ) * 0.2D;
double d1 = d.offsetY * 0.45F + ( r.nextFloat() - 0.5F ) * 0.2D;
double d2 = d.offsetZ * 0.45F + ( r.nextFloat() - 0.5F ) * 0.2D;
world.spawnParticle( "reddust", 0.5 + x + d0, 0.5 + y + d1, 0.5 + z + d2, 0.0D, 0.0D, 0.0D );
}
}
@Override
public AECableType getCableConnectionType( ForgeDirection dir )
{
return AECableType.SMART;
}
@Override
public int cableConnectionRenderTo()
{
return 16;
}
@Override
public boolean onPartActivate( EntityPlayer player, Vec3 pos )
{
if ( !player.isSneaking() )
{
if ( Platform.isClient() )
return true;
Platform.openGUI( player, this.getHost().getTile(), this.side, GuiBridge.GUI_LEVEL_EMITTER );
return true;
}
return false;
}
@Override
public boolean canConnectRedstone()
{
return true;
}
@Override
public void writeToNBT( NBTTagCompound data )
{
super.writeToNBT( data );
data.setLong( "lastReportedValue", this.lastReportedValue );
data.setLong( "reportingValue", this.reportingValue );
data.setBoolean( "prevState", this.prevState );
this.config.writeToNBT( data, "config" );
}
@Override
public void readFromNBT( NBTTagCompound data )
{
super.readFromNBT( data );
this.lastReportedValue = data.getLong( "lastReportedValue" );
this.reportingValue = data.getLong( "reportingValue" );
this.prevState = data.getBoolean( "prevState" );
this.config.readFromNBT( data, "config" );
}
@Override
public IInventory getInventoryByName( String name )
{
@@ -676,17 +693,28 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
return super.getInventoryByName( name );
}
@Override
public void onListUpdate()
public void updateSetting( IConfigManager manager, Enum settingName, Enum newValue )
{
try
{
this.updateReportingValue( this.proxy.getStorage().getItemInventory() );
}
catch ( GridAccessException e )
{
// ;P
}
this.configureWatchers();
}
@Override
public void upgradesChanged()
{
this.configureWatchers();
}
@Override
public void onChangeInventory( IInventory inv, int slot, InvOperation mc, ItemStack removedStack, ItemStack newStack )
{
if ( inv == this.config )
this.configureWatchers();
super.onChangeInventory( inv, slot, mc, removedStack, newStack );
}
@Override
@@ -706,7 +734,7 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
{
if ( this.getInstalledUpgrades( Upgrades.CRAFTING ) > 0 )
{
if ( this.settings.getSetting( Settings.CRAFT_VIA_REDSTONE ) == YesNo.YES )
if ( this.getConfigManager().getSetting( Settings.CRAFT_VIA_REDSTONE ) == YesNo.YES )
{
IAEItemStack what = this.config.getAEStackInSlot( 0 );
if ( what != null )