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
@@ -23,6 +23,7 @@ import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import appeng.api.AEApi;
import appeng.api.definitions.IItemDefinition;
import appeng.container.guisync.GuiSync;
import appeng.container.interfaces.IProgressProvider;
import appeng.container.slot.SlotOutput;
@@ -140,8 +141,11 @@ public class ContainerInscriber extends ContainerUpgradeable implements IProgres
otherSlot = this.top.getStack();
// name presses
if ( AEApi.instance().materials().materialNamePress.sameAsStack( otherSlot ) )
return AEApi.instance().materials().materialNamePress.sameAsStack( is );
final IItemDefinition namePress = AEApi.instance().definitions().materials().namePress();
if ( namePress.isSameAs( otherSlot ) )
{
return namePress.isSameAs( is );
}
// everything else
for (InscriberRecipe i : Inscribe.RECIPES )
@@ -163,10 +163,10 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IConfigMa
if ( this.monitor != this.host.getItemInventory() )
this.isContainerValid = false;
for (Enum set : this.serverCM.getSettings())
for (Settings set : this.serverCM.getSettings())
{
Enum sideLocal = this.serverCM.getSetting( set );
Enum sideRemote = this.clientCM.getSetting( set );
Enum<?> sideLocal = this.serverCM.getSetting( set );
Enum<?> sideRemote = this.clientCM.getSetting( set );
if ( sideLocal != sideRemote )
{
@@ -39,6 +39,7 @@ import net.minecraftforge.common.util.ForgeDirection;
import appeng.api.AEApi;
import appeng.api.config.Actionable;
import appeng.api.definitions.IDefinitions;
import appeng.api.networking.security.MachineSource;
import appeng.api.storage.IMEMonitor;
import appeng.api.storage.ITerminalHost;
@@ -218,7 +219,11 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
this.patternSlotIN.putStack( null );
// add a new encoded pattern.
this.patternSlotOUT.putStack( output = AEApi.instance().items().itemEncodedPattern.stack( 1 ) );
for ( ItemStack encodedPatternStack : AEApi.instance().definitions().items().encodedPattern().maybeStack( 1 ).asSet() )
{
output = encodedPatternStack;
this.patternSlotOUT.putStack( output );
}
}
// encode the slot.
@@ -303,7 +308,12 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
if ( output == null )
return false;
return AEApi.instance().items().itemEncodedPattern.sameAsStack( output ) || AEApi.instance().materials().materialBlankPattern.sameAsStack( output );
final IDefinitions definitions = AEApi.instance().definitions();
boolean isPattern = definitions.items().encodedPattern().isSameAs( output );
isPattern |= definitions.materials().blankPattern().isSameAs( output );
return isPattern;
}
@Override
@@ -120,10 +120,13 @@ public class ContainerQuartzKnife extends AEBaseContainer implements IAEAppEngIn
{
if ( this.myName.length() > 0 )
{
ItemStack name = AEApi.instance().materials().materialNamePress.stack( 1 );
NBTTagCompound c = Platform.openNbtData( name );
c.setString( "InscribeName", this.myName );
return name;
for ( ItemStack namePressStack : AEApi.instance().definitions().materials().namePress().maybeStack( 1 ).asSet() )
{
final NBTTagCompound compound = Platform.openNbtData( namePressStack );
compound.setString( "InscribeName", this.myName );
return namePressStack;
}
}
}
@@ -29,7 +29,9 @@ import net.minecraft.world.World;
import net.minecraftforge.oredict.OreDictionary;
import appeng.api.AEApi;
import appeng.api.IAppEngApi;
import appeng.api.definitions.IDefinitions;
import appeng.api.definitions.IItems;
import appeng.api.definitions.IMaterials;
import appeng.api.features.INetworkEncodable;
import appeng.api.implementations.ICraftingPatternItem;
import appeng.api.implementations.items.IBiometricCard;
@@ -80,9 +82,7 @@ public class SlotRestrictedInput extends AppEngSlot
{
ICraftingPatternDetails ap = is.getItem() instanceof ICraftingPatternItem ? ((ICraftingPatternItem) is.getItem()).getPatternForItem( is, theWorld )
: null;
if ( ap != null )
return true;
return false;
return ap != null;
}
return true;
}
@@ -142,96 +142,101 @@ public class SlotRestrictedInput extends AppEngSlot
if ( !this.inventory.isItemValidForSlot( this.getSlotIndex(), i ) )
return false;
IAppEngApi api = AEApi.instance();
if ( !this.allowEdit )
return false;
final IDefinitions definitions = AEApi.instance().definitions();
final IMaterials materials = definitions.materials();
final IItems items = definitions.items();
switch (this.which)
{
case ENCODED_CRAFTING_PATTERN:
if ( i.getItem() instanceof ICraftingPatternItem )
{
ICraftingPatternItem b = (ICraftingPatternItem) i.getItem();
ICraftingPatternDetails de = b.getPatternForItem( i, this.p.player.worldObj );
if ( de != null )
return de.isCraftable();
case ENCODED_CRAFTING_PATTERN:
if ( i.getItem() instanceof ICraftingPatternItem )
{
ICraftingPatternItem b = (ICraftingPatternItem) i.getItem();
ICraftingPatternDetails de = b.getPatternForItem( i, this.p.player.worldObj );
if ( de != null )
return de.isCraftable();
}
return false;
case VALID_ENCODED_PATTERN_W_OUTPUT:
case ENCODED_PATTERN_W_OUTPUT:
case ENCODED_PATTERN: {
if ( i.getItem() instanceof ICraftingPatternItem )
return true;
// ICraftingPatternDetails pattern = i.getItem() instanceof ICraftingPatternItem ? ((ICraftingPatternItem)
// i.getItem()).getPatternForItem( i ) : null;
return false;// pattern != null;
}
return false;
case VALID_ENCODED_PATTERN_W_OUTPUT:
case ENCODED_PATTERN_W_OUTPUT:
case ENCODED_PATTERN: {
if ( i.getItem() instanceof ICraftingPatternItem )
return true;
// ICraftingPatternDetails pattern = i.getItem() instanceof ICraftingPatternItem ? ((ICraftingPatternItem)
// i.getItem()).getPatternForItem( i ) : null;
return false;// pattern != null;
}
case BLANK_PATTERN:
return AEApi.instance().materials().materialBlankPattern.sameAsStack( i );
case PATTERN:
case BLANK_PATTERN:
return materials.blankPattern().isSameAs( i );
if ( i.getItem() instanceof ICraftingPatternItem )
return true;
case PATTERN:
return AEApi.instance().materials().materialBlankPattern.sameAsStack( i );
case INSCRIBER_PLATE:
if ( AEApi.instance().materials().materialNamePress.sameAsStack( i ) )
return true;
for (ItemStack is : Inscribe.PLATES )
if ( Platform.isSameItemPrecise( is, i ) )
if ( i.getItem() instanceof ICraftingPatternItem )
return true;
return false;
return materials.blankPattern().isSameAs( i );
case INSCRIBER_INPUT:
return true;/*
* for (ItemStack is : Inscribe.inputs) if ( Platform.isSameItemPrecise( is, i ) ) return true;
*
* return false;
*/
case INSCRIBER_PLATE:
if ( materials.namePress().isSameAs( i ) )
{
return true;
}
case METAL_INGOTS:
for (ItemStack is : Inscribe.PLATES )
if ( Platform.isSameItemPrecise( is, i ) )
return true;
return isMetalIngot( i );
case VIEW_CELL:
return AEApi.instance().items().itemViewCell.sameAsStack( i );
case ORE:
return appeng.api.AEApi.instance().registries().grinder().getRecipeForInput( i ) != null;
case FUEL:
return TileEntityFurnace.getItemBurnTime( i ) > 0;
case POWERED_TOOL:
return Platform.isChargeable( i );
case QE_SINGULARITY:
return api.materials().materialQESingularity.sameAsStack( i );
case RANGE_BOOSTER:
return api.materials().materialWirelessBooster.sameAsStack( i );
case SPATIAL_STORAGE_CELLS:
return i.getItem() instanceof ISpatialStorageCell && ((ISpatialStorageCell) i.getItem()).isSpatialStorage( i );
case STORAGE_CELLS:
return AEApi.instance().registries().cell().isCellHandled( i );
case WORKBENCH_CELL:
return i.getItem() instanceof ICellWorkbenchItem && ((ICellWorkbenchItem) i.getItem()).isEditable( i );
case STORAGE_COMPONENT:
return i.getItem() instanceof IStorageComponent && ((IStorageComponent) i.getItem()).isStorageComponent( i );
case TRASH:
if ( AEApi.instance().registries().cell().isCellHandled( i ) )
return false;
if ( i.getItem() instanceof IStorageComponent && ((IStorageComponent) i.getItem()).isStorageComponent( i ) )
return false;
return true;
case ENCODABLE_ITEM:
return i.getItem() instanceof INetworkEncodable || AEApi.instance().registries().wireless().isWirelessTerminal( i );
case BIOMETRIC_CARD:
return i.getItem() instanceof IBiometricCard;
case UPGRADES:
return i.getItem() instanceof IUpgradeModule && ((IUpgradeModule) i.getItem()).getType( i ) != null;
default:
break;
case INSCRIBER_INPUT:
return true;/*
* for (ItemStack is : Inscribe.inputs) if ( Platform.isSameItemPrecise( is, i ) ) return true;
*
* return false;
*/
case METAL_INGOTS:
return isMetalIngot( i );
case VIEW_CELL:
return items.viewCell().isSameAs( i );
case ORE:
return appeng.api.AEApi.instance().registries().grinder().getRecipeForInput( i ) != null;
case FUEL:
return TileEntityFurnace.getItemBurnTime( i ) > 0;
case POWERED_TOOL:
return Platform.isChargeable( i );
case QE_SINGULARITY:
return materials.qESingularity().isSameAs( i );
case RANGE_BOOSTER:
return materials.wirelessBooster().isSameAs( i );
case SPATIAL_STORAGE_CELLS:
return i.getItem() instanceof ISpatialStorageCell && ((ISpatialStorageCell) i.getItem()).isSpatialStorage( i );
case STORAGE_CELLS:
return AEApi.instance().registries().cell().isCellHandled( i );
case WORKBENCH_CELL:
return i.getItem() instanceof ICellWorkbenchItem && ((ICellWorkbenchItem) i.getItem()).isEditable( i );
case STORAGE_COMPONENT:
return i.getItem() instanceof IStorageComponent && ((IStorageComponent) i.getItem()).isStorageComponent( i );
case TRASH:
if ( AEApi.instance().registries().cell().isCellHandled( i ) )
return false;
return !( i.getItem() instanceof IStorageComponent && ( (IStorageComponent) i.getItem() ).isStorageComponent( i ) );
case ENCODABLE_ITEM:
return i.getItem() instanceof INetworkEncodable || AEApi.instance().registries().wireless().isWirelessTerminal( i );
case BIOMETRIC_CARD:
return i.getItem() instanceof IBiometricCard;
case UPGRADES:
return i.getItem() instanceof IUpgradeModule && ((IUpgradeModule) i.getItem()).getType( i ) != null;
default:
break;
}
return false;