Compare commits

..

1 Commits

Author SHA1 Message Date
Salomão bc2e4c84b9 highlight interfaces from interface terminal. 2021-02-28 15:36:45 -03:00
376 changed files with 240 additions and 6153 deletions
+1 -2
View File
@@ -85,8 +85,7 @@ configurations {
}
dependencies {
compileOnly "com.jaquadro.minecraft.storagedrawers:StorageDrawers:1.12.2-5.4.2:api"
compileOnly "gregtechce:gregtech:1.12.2:1.12.0.662"
deobfCompile "com.jaquadro.minecraft.storagedrawers:StorageDrawers:1.12.2-5.4.2:api"
// installable runtime dependencies
mods "mcp.mobius.waila:Hwyla:${hwyla_version}"
@@ -26,20 +26,5 @@ package appeng.api.config;
public enum ActionItems
{
WRENCH,
CLOSE,
STASH,
ENCODE,
SUBSTITUTION,
MULTIPLY_BY_TWO,
MULTIPLY_BY_THREE,
INCREASE_BY_ONE,
DIVIDE_BY_TWO,
DIVIDE_BY_THREE,
DECREASE_BY_ONE,
MAX_COUNT,
FREE_MOLECULAR_SLOT_SHORTCUT,
TOGGLE_SHOW_FULL_INTERFACES_ON,
TOGGLE_SHOW_FULL_INTERFACES_OFF,
HIGHLIGHT_INTERFACE
WRENCH, CLOSE, STASH, ENCODE, SUBSTITUTION, MULTIPLY_BY_TWO, MULTIPLY_BY_THREE, INCREASE_BY_ONE, DIVIDE_BY_TWO, DIVIDE_BY_THREE, DECREASE_BY_ONE, MAX_COUNT
}
+2 -53
View File
@@ -31,13 +31,11 @@ import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import appeng.tile.inventory.AppEngInternalInventory;
import com.google.common.base.Joiner;
import com.google.common.base.Stopwatch;
import com.google.common.collect.Lists;
import net.minecraftforge.fml.common.Optional;
import net.minecraftforge.items.IItemHandler;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.GL11;
@@ -380,43 +378,6 @@ public abstract class AEBaseGui extends GuiContainer implements IMTModGuiContain
}
}
}
else if( slot instanceof SlotDisconnected )
{
this.drag_click.add( slot );
if( this.drag_click.size() > 1 )
{
if( !itemstack.isEmpty() )
{
for( final Slot dr : this.drag_click )
{
if( slot.getStack().isEmpty() )
{
InventoryAction action = InventoryAction.SPLIT_OR_PLACE_SINGLE;
final PacketInventoryAction p = new PacketInventoryAction( action, dr.getSlotIndex(), ( (SlotDisconnected) slot ).getSlot().getId() );
NetworkHandler.instance().sendToServer( p );
}
}
}
else if( isShiftKeyDown() )
{
for( final Slot dr : this.drag_click )
{
InventoryAction action = null;
if( !slot.getStack().isEmpty() )
{
action = InventoryAction.SHIFT_CLICK;
}
if( action != null )
{
final PacketInventoryAction p = new PacketInventoryAction( action, dr.getSlotIndex(), ( (SlotDisconnected) slot ).getSlot().getId() );
NetworkHandler.instance().sendToServer( p );
}
}
}
}
}
else
{
super.mouseClickMove( x, y, c, d );
@@ -510,24 +471,12 @@ public abstract class AEBaseGui extends GuiContainer implements IMTModGuiContain
if( slot instanceof SlotDisconnected )
{
if( this.drag_click.size() > 1 )
{
return;
}
InventoryAction action = null;
switch ( clickType )
switch( clickType )
{
case PICKUP: // pickup / set-down.
if( slot.getStack().isEmpty() && !player.inventory.getItemStack().isEmpty() )
{
action = InventoryAction.SPLIT_OR_PLACE_SINGLE;
}
if( !slot.getStack().isEmpty() && player.inventory.getItemStack().getCount() <= 1 )
{
action = InventoryAction.PICKUP_OR_SET_DOWN;
}
action = ( mouseButton == 1 ) ? InventoryAction.SPLIT_OR_PLACE_SINGLE : InventoryAction.PICKUP_OR_SET_DOWN;
break;
case QUICK_MOVE:
action = ( mouseButton == 1 ) ? InventoryAction.PICKUP_SINGLE : InventoryAction.SHIFT_CLICK;
@@ -22,15 +22,17 @@ package appeng.client.gui.implementations;
import java.io.IOException;
import java.util.*;
import appeng.api.config.ActionItems;
import appeng.api.config.Settings;
import appeng.client.gui.widgets.GuiImgButton;
import akka.event.Logging;
import appeng.client.render.BlockPosHighlighter;
import appeng.util.BlockPosUtils;
import com.google.common.collect.HashMultimap;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
@@ -48,8 +50,10 @@ import appeng.parts.reporting.PartInterfaceTerminal;
import appeng.util.Platform;
import net.minecraft.nbt.NBTUtil;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TextComponentString;
import org.lwjgl.util.Color;
import org.lwjgl.util.ReadableColor;
import static appeng.client.render.BlockPosHighlighter.hilightBlock;
@@ -60,7 +64,7 @@ public class GuiInterfaceTerminal extends AEBaseGui
private static final int LINES_ON_PAGE = 6;
// TODO: copied from GuiMEMonitorable. It looks not changed, maybe unneeded?
private final int offsetX = 21;
private final int offsetX = 9;
private final HashMap<Long, ClientDCInternalInv> byId = new HashMap<>();
private final HashMultimap<String, ClientDCInternalInv> byName = HashMultimap.create();
@@ -74,19 +78,16 @@ public class GuiInterfaceTerminal extends AEBaseGui
private boolean refreshList = false;
private MEGuiTextField searchFieldOutputs;
private MEGuiTextField searchFieldInputs;
private PartInterfaceTerminal partInterfaceTerminal;
private GuiButton guiButtonHide;
private GuiButton guiButtonNextAssembler;
public GuiInterfaceTerminal( final InventoryPlayer inventoryPlayer, final PartInterfaceTerminal te )
{
super( new ContainerInterfaceTerminal( inventoryPlayer, te ) );
this.partInterfaceTerminal = te;
final GuiScrollbar scrollbar = new GuiScrollbar();
this.setScrollBar( scrollbar );
this.xSize = 208;
this.ySize = 256;
this.xSize = 195;
this.ySize = 236;
}
@Override
@@ -94,33 +95,25 @@ public class GuiInterfaceTerminal extends AEBaseGui
{
super.initGui();
this.getScrollBar().setLeft( 189 );
this.getScrollBar().setLeft( 175 );
this.getScrollBar().setHeight( 106 );
this.getScrollBar().setTop( 51 );
this.getScrollBar().setTop( 32 );
this.searchFieldInputs = new MEGuiTextField( this.fontRenderer, this.guiLeft + Math.max( 32, this.offsetX ), this.guiTop + 25, 65, 12 );
this.searchFieldInputs = new MEGuiTextField( this.fontRenderer, this.guiLeft + Math.max( 16, this.offsetX ), this.guiTop + 18, 65, 12 );
this.searchFieldInputs.setEnableBackgroundDrawing( false );
this.searchFieldInputs.setMaxStringLength( 25 );
this.searchFieldInputs.setTextColor( 0xFFFFFF );
this.searchFieldInputs.setVisible( true );
this.searchFieldInputs.setFocused( false );
this.searchFieldOutputs = new MEGuiTextField( this.fontRenderer, this.guiLeft + Math.max( 32, this.offsetX ), this.guiTop + 38, 65, 12 );
// this.searchFieldOutputs = new MEGuiTextField( this.fontRenderer, this.guiLeft + Math.max( 104, this.offsetX ), this.guiTop + 4, 65, 12 );
this.searchFieldOutputs = new MEGuiTextField( this.fontRenderer, this.guiLeft + Math.max( 94, this.offsetX ), this.guiTop + 18, 65, 12 );
this.searchFieldOutputs.setEnableBackgroundDrawing( false );
this.searchFieldOutputs.setMaxStringLength( 25 );
this.searchFieldOutputs.setTextColor( 0xFFFFFF );
this.searchFieldOutputs.setVisible( true );
this.searchFieldOutputs.setFocused( true );
this.searchFieldInputs.setText( partInterfaceTerminal.in );
this.searchFieldOutputs.setText( partInterfaceTerminal.out );
}
@Override
public void onGuiClosed()
{
partInterfaceTerminal.saveSearchStrings( this.searchFieldInputs.getText().toLowerCase(), this.searchFieldOutputs.getText().toLowerCase() );
super.onGuiClosed();
}
@Override
@@ -129,21 +122,20 @@ public class GuiInterfaceTerminal extends AEBaseGui
this.buttonList.clear();
this.fontRenderer.drawString( this.getGuiDisplayName( GuiText.InterfaceTerminal.getLocal() ), 8, 6, 4210752 );
this.fontRenderer.drawString( GuiText.inventory.getLocal(), this.offsetX + 2, this.ySize - 96 + 3, 4210752 );
this.fontRenderer.drawString( GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752 );
final int ex = this.getScrollBar().getCurrentScroll();
this.guiButtonNextAssembler = new GuiImgButton(guiLeft + 123, guiTop + 25,Settings.ACTIONS, ActionItems.FREE_MOLECULAR_SLOT_SHORTCUT);
this.buttonList.add( guiButtonNextAssembler );
final Iterator<Slot> o = this.inventorySlots.inventorySlots.iterator();
while( o.hasNext() )
{
if( o.next() instanceof SlotDisconnected )
{
o.remove();
}
}
guiButtonHide = new GuiImgButton( guiLeft + 141, guiTop + 25,Settings.ACTIONS, this.partInterfaceTerminal.onlyInterfacesWithFreeSlots ?
ActionItems.TOGGLE_SHOW_FULL_INTERFACES_OFF :
ActionItems.TOGGLE_SHOW_FULL_INTERFACES_ON);
this.buttonList.add( guiButtonHide );
this.inventorySlots.inventorySlots.removeIf( slot -> slot instanceof SlotDisconnected );
int offset = 51;
int offset = 32;
for( int x = 0; x < LINES_ON_PAGE && ex + x < this.lines.size(); x++ )
{
final Object lineObj = this.lines.get( ex + x );
@@ -152,10 +144,9 @@ public class GuiInterfaceTerminal extends AEBaseGui
final ClientDCInternalInv inv = (ClientDCInternalInv) lineObj;
for( int z = 0; z < inv.getInventory().getSlots(); z++ )
{
this.inventorySlots.inventorySlots.add( new SlotDisconnected( inv, z, z * 18 + 22, 1 + offset ) );
this.inventorySlots.inventorySlots.add( new SlotDisconnected( inv, z, z * 18 + 8, 1 + offset ) );
}
GuiButton guiButton = new GuiImgButton(guiLeft + 4, guiTop + offset + 1, Settings.ACTIONS, ActionItems.HIGHLIGHT_INTERFACE);
GuiButton guiButton = new GuiButton( x, guiLeft + 1, guiTop + offset + 3, 8, 10, "?" );
guiButtonHashMap.put( guiButton , inv);
this.buttonList.add( guiButton );
@@ -174,14 +165,10 @@ public class GuiInterfaceTerminal extends AEBaseGui
name = name.substring( 0, name.length() - 1 );
}
this.fontRenderer.drawString( name, this.offsetX + 2, 6 + offset, 4210752 );
this.fontRenderer.drawString( name, 10, 6 + offset, 4210752 );
}
offset += 18;
}
if( searchFieldInputs.isMouseIn( mouseX, mouseY ) ) drawTooltip( mouseX - guiLeft - offsetX, mouseY - guiTop, "Inputs OR names" );
else if( searchFieldOutputs.isMouseIn( mouseX, mouseY ) ) drawTooltip( mouseX - guiLeft - offsetX, mouseY - guiTop, "Outputs OR names" );
}
@Override
@@ -213,32 +200,10 @@ public class GuiInterfaceTerminal extends AEBaseGui
{
BlockPos blockPos = blockPosHashMap.get( guiButtonHashMap.get( this.selectedButton ) );
BlockPos blockPos2 = mc.player.getPosition();
int dimension = mc.world.provider.getDimension();
hilightBlock( blockPos, System.currentTimeMillis() + 500 * BlockPosUtils.getDistance(blockPos, blockPos2), dimension );
mc.player.sendStatusMessage( new TextComponentString( "The interface is now highlighted at " + "X: " + blockPos.getX() + " Y: " + blockPos.getY() + " Z: " + blockPos.getZ() ), false );
hilightBlock( blockPos, System.currentTimeMillis() + 500 * BlockPosUtils.getDistance(blockPos, blockPos2) );
mc.player.sendStatusMessage( new TextComponentString( "The interface is now highlighted at " + "X: " + blockPos.getX() + "Y: " + blockPos.getY() + "Z: " + blockPos.getZ() ), false );
mc.player.closeScreen();
}
if (btn == guiButtonHide)
{
partInterfaceTerminal.onlyInterfacesWithFreeSlots = !partInterfaceTerminal.onlyInterfacesWithFreeSlots;
this.refreshList();
}
if (btn == guiButtonNextAssembler)
{
// Set Search to "Molecular Assembler" and set "Only Free Interface"
boolean currentOnlyInterfacesWithFreeSlots = this.partInterfaceTerminal.onlyInterfacesWithFreeSlots;
String currentSearchText = this.searchFieldOutputs.getText();
this.partInterfaceTerminal.onlyInterfacesWithFreeSlots = true;
this.searchFieldOutputs.setText("Molecular Assembler");
this.refreshList();
this.partInterfaceTerminal.onlyInterfacesWithFreeSlots = currentOnlyInterfacesWithFreeSlots;
this.searchFieldOutputs.setText(currentSearchText);
}
}
@Override
@@ -247,7 +212,7 @@ public class GuiInterfaceTerminal extends AEBaseGui
this.bindTexture( "guis/newinterfaceterminal.png" );
this.drawTexturedModalRect( offsetX, offsetY, 0, 0, this.xSize, this.ySize );
int offset = 51;
int offset = 32;
final int ex = this.getScrollBar().getCurrentScroll();
for( int x = 0; x < LINES_ON_PAGE && ex + x < this.lines.size(); x++ )
@@ -259,7 +224,7 @@ public class GuiInterfaceTerminal extends AEBaseGui
GlStateManager.color( 1, 1, 1, 1 );
final int width = inv.getInventory().getSlots() * 18;
this.drawTexturedModalRect( offsetX + 20, offsetY + offset, 20, 173, width, 18 );
this.drawTexturedModalRect( offsetX + 7, offsetY + offset, 7, 153, width, 18 );
}
offset += 18;
}
@@ -359,21 +324,19 @@ public class GuiInterfaceTerminal extends AEBaseGui
final String searchFieldInputs = this.searchFieldInputs.getText().toLowerCase();
final String searchFieldOutputs = this.searchFieldOutputs.getText().toLowerCase();
final Set<Object> cachedSearch = this.getCacheForSearchTerm( "IN:" + searchFieldInputs + " OUT:" + searchFieldOutputs + partInterfaceTerminal.onlyInterfacesWithFreeSlots);
final Set<Object> cachedSearch = this.getCacheForSearchTerm( "IN:" + searchFieldInputs + " OUT:" + searchFieldOutputs );
final boolean rebuild = cachedSearch.isEmpty();
for( final ClientDCInternalInv entry : this.byId.values() )
{
// ignore inventory if not doing a full rebuild and cache already marks it as miss.
// ignore inventory if not doing a full rebuild or cache already marks it as miss.
if( !rebuild && !cachedSearch.contains( entry ) )
{
continue;
}
// Shortcut to skip any filter if search term is ""/empty
boolean found = (searchFieldInputs.isEmpty() && searchFieldOutputs.isEmpty() && !partInterfaceTerminal.onlyInterfacesWithFreeSlots);
boolean interfaceHasFreeSlots = false;
boolean found = (searchFieldInputs.isEmpty() && searchFieldOutputs.isEmpty());
// Search if the current inventory holds a pattern containing the search term.
if( !found )
@@ -386,27 +349,18 @@ public class GuiInterfaceTerminal extends AEBaseGui
found = ( this.itemStackMatchesSearchTerm( itemStack, searchFieldInputs, 0 ) );
else if( !searchFieldOutputs.isEmpty() )
found = ( this.itemStackMatchesSearchTerm( itemStack, searchFieldOutputs, 1 ) );
// If only Interfaces with empty slots should be shown, check that here
if(itemStack.isEmpty())
interfaceHasFreeSlots = true;
if( found )
{
break;
}
}
}
// if found, filter skipped or machine name matching the search term, add it
if( found || (entry.getName().toLowerCase().contains( searchFieldInputs ) && entry.getName().toLowerCase().contains( searchFieldOutputs )))
{
if (!partInterfaceTerminal.onlyInterfacesWithFreeSlots)
{
this.byName.put( entry.getName(), entry );
cachedSearch.add( entry );
}
else if ( interfaceHasFreeSlots ){
this.byName.put( entry.getName(), entry );
cachedSearch.add( entry );
}
this.byName.put( entry.getName(), entry );
cachedSearch.add( entry );
}
else
{
@@ -142,11 +142,6 @@ public class GuiImgButton extends GuiButton implements ITooltip
this.registerApp( 11 + 4 * 16, Settings.ACTIONS, ActionItems.DECREASE_BY_ONE, ButtonToolTips.DecreaseByOne, ButtonToolTips.DecreaseByOneDesc );
this.registerApp( 12 + 4 * 16, Settings.ACTIONS, ActionItems.MAX_COUNT, ButtonToolTips.MaxCount, ButtonToolTips.MaxCountDesc );
this.registerApp( 6 + 5 * 16, Settings.ACTIONS, ActionItems.FREE_MOLECULAR_SLOT_SHORTCUT, ButtonToolTips.FreeMolecularSlotShortcut, ButtonToolTips.FreeMolecularSlotShortcutDesc );
this.registerApp( 7 + 5 * 16, Settings.ACTIONS, ActionItems.TOGGLE_SHOW_FULL_INTERFACES_ON, ButtonToolTips.ToggleShowFullInterfaces, ButtonToolTips.ToggleShowFullInterfacesOnDesc );
this.registerApp( 8 + 5 * 16, Settings.ACTIONS, ActionItems.TOGGLE_SHOW_FULL_INTERFACES_OFF, ButtonToolTips.ToggleShowFullInterfaces, ButtonToolTips.ToggleShowFullInterfacesOffDesc );
this.registerApp( 6 + 6 * 16, Settings.ACTIONS, ActionItems.HIGHLIGHT_INTERFACE, ButtonToolTips.HighlightInterface, "" );
this.registerApp( 8, Settings.ACTIONS, ActionItems.ENCODE, ButtonToolTips.Encode, ButtonToolTips.EncodeDescription );
this.registerApp( 4 + 3 * 16, Settings.ACTIONS, ItemSubstitution.ENABLED, ButtonToolTips.Substitutions, ButtonToolTips.SubstitutionsDescEnabled );
this.registerApp( 7 + 3 * 16, Settings.ACTIONS, ItemSubstitution.DISABLED, ButtonToolTips.Substitutions, ButtonToolTips.SubstitutionsDescDisabled );
@@ -37,7 +37,7 @@ public class ClientDCInternalInv implements Comparable<ClientDCInternalInv>
public ClientDCInternalInv( final int size, final long id, final long sortBy, final String unlocalizedName )
{
this.inventory = new AppEngInternalInventory( null, size, 1 );
this.inventory = new AppEngInternalInventory( null, size );
this.unlocalizedName = unlocalizedName;
this.id = id;
this.sortBy = sortBy;
@@ -8,14 +8,9 @@ public class BlockPosHighlighter
private static BlockPos hilightedBlock;
private static long expireHilight;
private static int dimension;
public static void hilightBlock( BlockPos c, long expireHilight, int dimension ) {
public static void hilightBlock( BlockPos c, long expireHilight ) {
hilightedBlock = c;
BlockPosHighlighter.expireHilight = expireHilight;
BlockPosHighlighter.dimension = dimension;
}
public static BlockPos getHilightedBlock() {
@@ -26,9 +21,5 @@ public class BlockPosHighlighter
return expireHilight;
}
public static int getDimension()
{
return dimension;
}
}
@@ -19,7 +19,6 @@
package appeng.client.render;
import appeng.api.storage.data.IAEFluidStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.renderer.GlStateManager;
@@ -31,7 +30,6 @@ import net.minecraft.util.EnumFacing;
import appeng.api.storage.data.IAEItemStack;
import appeng.util.IWideReadableNumberConverter;
import appeng.util.ReadableNumberConverter;
import net.minecraftforge.fluids.FluidStack;
/**
@@ -145,23 +143,4 @@ public class TesrRenderHelper
}
public static void renderFluid2dWithAmount( IAEFluidStack fluidStack, float scale, float spacing )
{
final ItemStack renderStack = fluidStack.asItemStackRepresentation();
TesrRenderHelper.renderItem2d( renderStack, scale );
final long stackSize = fluidStack.getStackSize() / 1000;
final String renderedStackSize = NUMBER_CONVERTER.toWideReadableForm( stackSize ) + "B";
// Render the item count
final FontRenderer fr = Minecraft.getMinecraft().fontRenderer;
final int width = fr.getStringWidth( renderedStackSize );
GlStateManager.translate( 0.0f, spacing, 0 );
GlStateManager.scale( 1.0f / 62.0f, 1.0f / 62.0f, 1.0f / 62.0f );
GlStateManager.translate( -0.5f * width, 0.0f, 0.5f );
fr.drawString( renderedStackSize, 0, 0, 0 );
}
}
@@ -80,7 +80,7 @@ public final class ContainerInterfaceTerminal extends AEBaseContainer
this.grid = anchor.getActionableNode().getGrid();
}
this.bindPlayerInventory( ip, 14, 256 - /* height of player inventory */82 );
this.bindPlayerInventory( ip, 0, 236 - /* height of player inventory */82 );
}
@Override
@@ -215,48 +215,35 @@ public final class ContainerInterfaceTerminal extends AEBaseContainer
final IItemHandler theSlot = new WrapperFilteredItemHandler( new WrapperRangeItemHandler( inv.server, slot, slot + 1 ), new PatternSlotFilter() );
final InventoryAdaptor interfaceSlot = new AdaptorItemHandler( theSlot );
IItemHandler interfaceHandler = inv.server;
boolean canInsert = true;
switch ( action )
switch( action )
{
case PICKUP_OR_SET_DOWN:
if( hasItemInHand )
{
for( int s = 0; s < interfaceHandler.getSlots(); s++ )
ItemStack inSlot = theSlot.getStackInSlot( 0 );
if( inSlot.isEmpty() )
{
if( Platform.itemComparisons().isSameItem( interfaceHandler.getStackInSlot( s ), player.inventory.getItemStack() ) )
{
canInsert = false;
break;
}
player.inventory.setItemStack( interfaceSlot.addItems( player.inventory.getItemStack() ) );
}
if( canInsert )
else
{
ItemStack inSlot = theSlot.getStackInSlot( 0 );
if( inSlot.isEmpty() )
inSlot = inSlot.copy();
final ItemStack inHand = player.inventory.getItemStack().copy();
ItemHandlerUtil.setStackInSlot( theSlot, 0, ItemStack.EMPTY );
player.inventory.setItemStack( ItemStack.EMPTY );
player.inventory.setItemStack( interfaceSlot.addItems( inHand.copy() ) );
if( player.inventory.getItemStack().isEmpty() )
{
player.inventory.setItemStack( interfaceSlot.addItems( player.inventory.getItemStack() ) );
player.inventory.setItemStack( inSlot );
}
else
{
inSlot = inSlot.copy();
final ItemStack inHand = player.inventory.getItemStack().copy();
ItemHandlerUtil.setStackInSlot( theSlot, 0, ItemStack.EMPTY );
player.inventory.setItemStack( ItemStack.EMPTY );
player.inventory.setItemStack( interfaceSlot.addItems( inHand.copy() ) );
if( player.inventory.getItemStack().isEmpty() )
{
player.inventory.setItemStack( inSlot );
}
else
{
player.inventory.setItemStack( inHand );
ItemHandlerUtil.setStackInSlot( theSlot, 0, inSlot );
}
player.inventory.setItemStack( inHand );
ItemHandlerUtil.setStackInSlot( theSlot, 0, inSlot );
}
}
}
@@ -267,27 +254,17 @@ public final class ContainerInterfaceTerminal extends AEBaseContainer
break;
case SPLIT_OR_PLACE_SINGLE:
if( hasItemInHand )
{
for( int s = 0; s < interfaceHandler.getSlots(); s++ )
ItemStack extra = playerHand.removeItems( 1, ItemStack.EMPTY, null );
if( !extra.isEmpty() )
{
if( Platform.itemComparisons().isSameItem( interfaceHandler.getStackInSlot( s ), player.inventory.getItemStack() ) )
{
canInsert = false;
break;
}
extra = interfaceSlot.addItems( extra );
}
if( canInsert )
if( !extra.isEmpty() )
{
ItemStack extra = playerHand.removeItems( 1, ItemStack.EMPTY, null );
if( !extra.isEmpty() && !interfaceSlot.containsItems() )
{
extra = interfaceSlot.addItems( extra );
}
if( !extra.isEmpty() )
{
playerHand.addItems( extra );
}
playerHand.addItems( extra );
}
}
else if( !is.isEmpty() )
@@ -442,7 +419,7 @@ public final class ContainerInterfaceTerminal extends AEBaseContainer
this.client = new AppEngInternalInventory( null, this.server.getSlots() );
this.unlocalizedName = unlocalizedName;
this.sortBy = dual.getSortValue();
this.pos = dual.getLocation().getPos();
this.pos = dual.getTile().getPos();
}
}
@@ -291,7 +291,7 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
for( int x = 0; x < this.craftingSlots.length; x++ )
{
input[x] = this.craftingSlots[x].getStack();
if( !input[x].isEmpty() && input[x].getCount() * multiple > input[x].getMaxStackSize() )
if( !input[x].isEmpty() && input[x].getCount() * multiple > 64 )
{
canMultiplyInputs = false;
}
@@ -299,7 +299,7 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
for( final OptionalSlotFake outputSlot : this.outputSlots )
{
final ItemStack out = outputSlot.getStack();
if( !out.isEmpty() && out.getCount() * multiple > out.getMaxStackSize() )
if( !out.isEmpty() && out.getCount() * multiple > 64 )
{
canMultiplyOutputs = false;
}
@@ -369,7 +369,7 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
for( int x = 0; x < this.craftingSlots.length; x++ )
{
input[x] = this.craftingSlots[x].getStack();
if( !input[x].isEmpty() && input[x].getCount() + increase > input[x].getMaxStackSize() )
if( !input[x].isEmpty() && input[x].getCount() + increase > 64 )
{
canIncreaseInputs = false;
}
@@ -377,7 +377,7 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
for( final OptionalSlotFake outputSlot : this.outputSlots )
{
final ItemStack out = outputSlot.getStack();
if( !out.isEmpty() && out.getCount() + increase > out.getMaxStackSize() )
if( !out.isEmpty() && out.getCount() + increase > 64 )
{
canIncreaseOutputs = false;
}
@@ -450,11 +450,11 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
for( int x = 0; x < this.craftingSlots.length; x++ )
{
input[x] = this.craftingSlots[x].getStack();
if( !input[x].isEmpty() && input[x].getMaxStackSize() - input[x].getCount() > maxInputStackGrowth )
if( !input[x].isEmpty() && 64 - input[x].getCount() > maxInputStackGrowth )
{
maxInputStackGrowth = input[x].getMaxStackSize() - input[x].getCount();
maxInputStackGrowth = 64 - input[x].getCount();
}
if( !input[x].isEmpty() && input[x].getCount() + maxInputStackGrowth > input[x].getMaxStackSize() )
if( !input[x].isEmpty() && input[x].getCount() + maxInputStackGrowth > 64 )
{
canGrowInputs = false;
}
@@ -463,9 +463,9 @@ public class ContainerPatternTerm extends ContainerMEMonitorable implements IAEA
{
final ItemStack out = outputSlot.getStack();
{
maxOutputStackGrowth = out.getMaxStackSize() - out.getCount();
maxOutputStackGrowth = 64 - out.getCount();
}
if( !out.isEmpty() && out.getCount() + maxOutputStackGrowth > out.getMaxStackSize() )
if( !out.isEmpty() && out.getCount() + maxOutputStackGrowth > 64 )
{
canGrowOutputs = false;
}
@@ -616,12 +616,7 @@ public final class ApiBlocks implements IBlocks
private static IBlockDefinition makeStairs( String registryName, FeatureFactory registry, IBlockDefinition block )
{
if( !block.maybeBlock().isPresent() )
{
return new BlockDefinition( registryName, null, null );
}
IBlockDefinition stairs = registry.block( registryName, () -> new BlockStairCommon( block.maybeBlock().get(), block.identifier() ) )
return registry.block( registryName, () -> new BlockStairCommon( block.maybeBlock().get(), block.identifier() ) )
.features( AEFeature.DECORATIVE_BLOCKS )
.rendering( new BlockRenderingCustomizer()
{
@@ -634,10 +629,6 @@ public final class ApiBlocks implements IBlocks
}
} )
.build();
Verify.verify(stairs.maybeBlock().isPresent());
return stairs;
}
@Override
@@ -19,7 +19,6 @@
package appeng.core.localization;
import appeng.api.config.SchedulingMode;
import net.minecraft.util.text.translation.I18n;
@@ -152,13 +151,6 @@ public enum ButtonToolTips
DecreaseByOneDesc,
MaxCount,
MaxCountDesc,
FreeMolecularSlotShortcut,
FreeMolecularSlotShortcutDesc,
ToggleShowFullInterfaces,
ToggleShowFullInterfacesOnDesc,
ToggleShowFullInterfacesOffDesc,
HighlightInterface,
HighlightInterfaceDesc,
// Used in the tooltips of the items in the terminal, when moused over
ItemsStored,
@@ -171,11 +171,6 @@ public class PacketJEIRecipe extends AppEngPacket
// already the correct item?
ItemStack newItem = this.canUseInSlot( x, currentItem );
if ( !cct.useRealItems() && this.recipe[x] != null ) {
if (this.recipe[x].length > 0 )
currentItem.setCount( recipe[x][0].getCount() );
}
// put away old item
if( newItem != currentItem && security.hasPermission( player, SecurityPermissions.INJECT ) )
{
@@ -215,7 +210,7 @@ public class PacketJEIRecipe extends AppEngPacket
IAEItemStack mostDamaged = null;
for( IAEItemStack is : outList )
{
if( !is.isCraftable() && is.getItem().isDamageable() )
if( !is.isCraftable() )
{
if( mostDamaged == null || mostDamaged.getItemDamage() < is.getItemDamage() )
{
@@ -242,6 +237,22 @@ public class PacketJEIRecipe extends AppEngPacket
// Fall back using an existing item
out = storage.extractItems( request, Actionable.SIMULATE, cct.getActionSource() );
}
if( out == null )
{
IItemList<IAEItemStack> items = AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createList();
Iterator<IAEItemStack> iterator = inv.getInventory( AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) ).getAvailableItems( items ).iterator();
while ( iterator.hasNext() )
{
final IAEItemStack o = iterator.next();
if( o.getDefinition().isItemEqual( request.getDefinition() ) && o.isCraftable() )
{
out = o;
break;
}
iterator.remove();
}
}
}
if( out != null )
@@ -263,17 +274,14 @@ public class PacketJEIRecipe extends AppEngPacket
else
{
currentItem = ad.simulateSimilarRemove(recipe[x][y].getCount(), this.recipe[x][y],FuzzyMode.IGNORE_ALL, null );
if( currentItem.isEmpty() )
{
currentItem = this.recipe[x][y].copy();
}
}
}
}
}
if (!cct.useRealItems())
{
if( currentItem.isEmpty() && this.recipe[x] != null )
{
currentItem = this.recipe[x][0].copy();
}
}
}
ItemHandlerUtil.setStackInSlot( craftMatrix, x, currentItem );
}
@@ -90,13 +90,6 @@ public class GuiFluidLevelEmitter extends GuiUpgradeable
this.level.drawTextBox();
}
@Override
public void drawFG( int offsetX, int offsetY, int mouseX, int mouseY )
{
if( isPointInRegion( 24, 43,89,this.fontRenderer.FONT_HEIGHT,mouseX,mouseY ) ) drawTooltip( mouseX - guiLeft - 7, mouseY - guiTop + 25, "Amount in millibuckets" );
super.drawFG( offsetX, offsetY, mouseX, mouseY );
}
@Override
protected boolean drawUpgrades()
{
@@ -26,9 +26,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import appeng.api.config.Settings;
import appeng.api.config.StorageFilter;
import appeng.parts.misc.PartStorageBus;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.capability.IFluidHandler;
import net.minecraftforge.fluids.capability.IFluidTankProperties;
@@ -64,18 +62,12 @@ public class FluidHandlerAdapter implements IMEInventory<IAEFluidStack>, IBaseMo
private final IFluidHandler fluidHandler;
private final IGridProxyable proxyable;
private final FluidHandlerAdapter.InventoryCache cache;
private StorageFilter mode;
FluidHandlerAdapter( IFluidHandler fluidHandler, IGridProxyable proxy )
{
this.fluidHandler = fluidHandler;
this.proxyable = proxy;
if( this.proxyable instanceof PartStorageBus )
{
PartStorageBus partStorageBus = (PartStorageBus) this.proxyable;
this.mode = ( (StorageFilter) partStorageBus.getConfigManager().getSetting( Settings.STORAGE_FILTER ) );
}
this.cache = new FluidHandlerAdapter.InventoryCache( this.fluidHandler, this.mode);
this.cache = new FluidHandlerAdapter.InventoryCache( this.fluidHandler );
}
@Override
@@ -204,12 +196,13 @@ public class FluidHandlerAdapter implements IMEInventory<IAEFluidStack>, IBaseMo
{
private IAEFluidStack[] cachedAeStacks = new IAEFluidStack[0];
private final IFluidHandler fluidHandler;
private final StorageFilter mode;
private ArrayList<Integer> skipSlots;
public InventoryCache( IFluidHandler fluidHandler, StorageFilter mode )
public InventoryCache( IFluidHandler fluidHandler )
{
this.mode = mode;
this.fluidHandler = fluidHandler;
this.skipSlots = new ArrayList<>(this.fluidHandler.getTankProperties().length);
}
public List<IAEFluidStack> update()
@@ -222,20 +215,23 @@ public class FluidHandlerAdapter implements IMEInventory<IAEFluidStack>, IBaseMo
if( slots > this.cachedAeStacks.length )
{
this.cachedAeStacks = Arrays.copyOf( this.cachedAeStacks, slots );
this.skipSlots = new ArrayList<>(this.fluidHandler.getTankProperties().length);
}
for( int slot = 0; slot < slots; slot++ )
{
if (skipSlots.contains( slot ))
continue;
// Save the old stuff
final IAEFluidStack oldAEFS = this.cachedAeStacks[slot];
FluidStack newFS = tankProperties[slot].getContents();
if( this.mode == StorageFilter.EXTRACTABLE_ONLY && newFS != null )
{
if( this.fluidHandler.drain( 1, false ) == null )
{
if (newFS != null) {
if (this.fluidHandler.drain( 1, false ) == null){
newFS = null;
skipSlots.add( slot );
}
}
this.handlePossibleSlotChanges( slot, oldAEFS, newFS, changes );
}
@@ -255,6 +251,7 @@ public class FluidHandlerAdapter implements IMEInventory<IAEFluidStack>, IBaseMo
}
this.cachedAeStacks = Arrays.copyOf( this.cachedAeStacks, slots );
this.skipSlots = new ArrayList<>( this.fluidHandler.getTankProperties().length );
}
return changes;
}
@@ -33,8 +33,6 @@ import appeng.integration.modules.gregtech.GTCEInventoryAdaptor;
import appeng.util.*;
import com.google.common.collect.ImmutableSet;
import gregtech.api.block.machines.BlockMachine;
import gregtech.api.metatileentity.MetaTileEntity;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.init.Items;
@@ -50,7 +48,6 @@ import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.wrapper.RangedWrapper;
@@ -112,8 +109,6 @@ import appeng.util.inv.IInventoryDestination;
import appeng.util.inv.InvOperation;
import appeng.util.item.AEItemStack;
import static gregtech.api.block.machines.BlockMachine.getMetaTileEntity;
public class DualityInterface implements IGridTickable, IStorageMonitorable, IInventoryDestination, IAEAppEngInventory, IConfigManagerHost, ICraftingProvider, IUpgradeableHost
{
@@ -1240,13 +1235,6 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn
final IBlockState directedBlockState = hostWorld.getBlockState( targ );
final Block directedBlock = directedBlockState.getBlock();
ItemStack what = new ItemStack( directedBlock, 1, directedBlock.getMetaFromState( directedBlockState ) );
if ( Loader.isModLoaded("gregtech") && directedBlock instanceof BlockMachine )
{
MetaTileEntity metaTileEntity = getMetaTileEntity(hostWorld, targ);
return metaTileEntity.getMetaFullName();
}
try
{
Vec3d from = new Vec3d( hostTile.getPos().getX() + 0.5, hostTile.getPos().getY() + 0.5, hostTile.getPos().getZ() + 0.5 );
@@ -26,11 +26,10 @@ public class HighlighterHandler
return;
}
Minecraft mc = Minecraft.getMinecraft();
int dimension = mc.world.provider.getDimension();
long time = System.currentTimeMillis();
if (time > BlockPosHighlighter.getExpireHilight() || dimension != BlockPosHighlighter.getDimension()) {
BlockPosHighlighter.hilightBlock(null, -1, BlockPosHighlighter.getDimension() );
if (time > BlockPosHighlighter.getExpireHilight()) {
BlockPosHighlighter.hilightBlock(null, -1);
return;
}
+4 -6
View File
@@ -19,9 +19,9 @@
package appeng.me.cache;
import java.util.*;
import java.util.HashMap;
import java.util.PriorityQueue;
import appeng.parts.automation.PartLevelEmitter;
import com.google.common.base.Preconditions;
import net.minecraft.crash.CrashReport;
@@ -46,7 +46,6 @@ public class TickManagerCache implements ITickManager
private final HashMap<IGridNode, TickTracker> alertable = new HashMap<>();
private final HashMap<IGridNode, TickTracker> sleeping = new HashMap<>();
private final HashMap<IGridNode, TickTracker> awake = new HashMap<>();
private final HashMap<IGridNode, TickTracker> laterTicker = new HashMap<>();
private final PriorityQueue<TickTracker> upcomingTicks = new PriorityQueue<>();
private long currentTick = 0;
@@ -87,7 +86,7 @@ public class TickManagerCache implements ITickManager
{
this.currentTick++;
while ( !this.upcomingTicks.isEmpty() )
while( !this.upcomingTicks.isEmpty() )
{
tt = this.upcomingTicks.peek();
@@ -102,7 +101,7 @@ public class TickManagerCache implements ITickManager
final int diff = (int) ( this.currentTick - tt.getLastTick() );
final TickRateModulation mod = tt.getGridTickable().tickingRequest( tt.getNode(), diff );
switch ( mod )
switch( mod )
{
case FASTER:
tt.setCurrentRate( tt.getCurrentRate() - 2 );
@@ -138,7 +137,6 @@ public class TickManagerCache implements ITickManager
tt.addEntityCrashInfo( crashreportcategory );
throw new ReportedException( crashreport );
}
PartLevelEmitter.wipeCache();
}
private void addToQueue( final TickTracker tt )
@@ -19,7 +19,6 @@
package appeng.me.storage;
import appeng.api.config.StorageFilter;
import appeng.api.networking.security.IActionSource;
import appeng.api.networking.ticking.TickRateModulation;
@@ -31,8 +30,4 @@ public interface ITickingMonitor
void setActionSource( IActionSource actionSource );
default void setMode( StorageFilter setting )
{
}
}
@@ -19,14 +19,9 @@
package appeng.parts.automation;
import java.util.Collection;
import java.util.Random;
import appeng.me.Grid;
import appeng.me.GridNode;
import appeng.util.item.AEItemStack;
import it.unimi.dsi.fastutil.objects.Object2LongMap;
import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.ItemStack;
@@ -123,9 +118,6 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
private double centerX;
private double centerY;
private double centerZ;
static Object2LongMap<Grid> gridItemCount = new Object2LongOpenHashMap<>();
static Object2ObjectOpenHashMap<Grid, Object2LongMap<AEItemStack>> fuzzyAEItemStackCount = new Object2ObjectOpenHashMap<>();
static Object2ObjectOpenHashMap<Grid, Object2LongMap<AEItemStack>> preciseAEItemStackCount = new Object2ObjectOpenHashMap<>();
@Reflected
public PartLevelEmitter( final ItemStack is )
@@ -323,91 +315,40 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
}
private void updateReportingValue( final IMEMonitor<IAEItemStack> monitor )
{
updateReportingValue( monitor,null );
}
private void updateReportingValue( final IMEMonitor<IAEItemStack> monitor, Iterable<IAEItemStack> change )
{
final IAEItemStack myStack = this.config.getAEStackInSlot( 0 );
GridNode node = (GridNode) (this.getGridNode());
if( node != null )
if( myStack == null )
{
final Grid g = node.getInternalGrid();
if( myStack == null )
this.lastReportedValue = 0;
for( final IAEItemStack st : monitor.getStorageList() )
{
if( change != null )
{
if( gridItemCount.containsKey( g ) )
{
change.forEach( iaeItemStack -> lastReportedValue += iaeItemStack.getStackSize() );
}
}
gridItemCount.computeIfAbsent( g, ( aLong ) -> {
this.lastReportedValue = 0;
monitor.getStorageList().forEach( iaeItemStack -> lastReportedValue += iaeItemStack.getStackSize() );
return ( lastReportedValue );
} );
this.lastReportedValue = gridItemCount.get( g );
this.lastReportedValue += st.getStackSize();
}
else if( this.getInstalledUpgrades( Upgrades.FUZZY ) > 0 )
}
else if( this.getInstalledUpgrades( Upgrades.FUZZY ) > 0 )
{
this.lastReportedValue = 0;
final FuzzyMode fzMode = (FuzzyMode) this.getConfigManager().getSetting( Settings.FUZZY_MODE );
final Collection<IAEItemStack> fuzzyList = monitor.getStorageList().findFuzzy( myStack, fzMode );
for( final IAEItemStack st : fuzzyList )
{
final FuzzyMode fzMode = (FuzzyMode) this.getConfigManager().getSetting( Settings.FUZZY_MODE );
if( change != null )
{
if( fuzzyAEItemStackCount.containsKey( g ) )
{
change.forEach( iaeItemStack -> {
if( iaeItemStack.sameOre( myStack ) ) lastReportedValue += iaeItemStack.getStackSize();
} );
}
}
fuzzyAEItemStackCount.computeIfAbsent( g, ( grid -> new Object2LongOpenHashMap<>() ) );
fuzzyAEItemStackCount.get( g ).computeIfAbsent( (AEItemStack) myStack, ( aLong -> {
this.lastReportedValue = 0;
monitor.getStorageList().findFuzzy( myStack, fzMode ).forEach( iaeItemStack -> lastReportedValue += iaeItemStack.getStackSize() );
return ( lastReportedValue );
} ) );
this.lastReportedValue = fuzzyAEItemStackCount.get( g ).get( myStack );
if( this.lastReportedValue == 0 )
{
fuzzyAEItemStackCount.get( g ).remove( myStack );
fuzzyAEItemStackCount.trim();
}
this.lastReportedValue += st.getStackSize();
}
}
else
{
final IAEItemStack r = monitor.getStorageList().findPrecise( myStack );
if( r == null )
{
this.lastReportedValue = 0;
}
else
{
if( change != null )
{
if( preciseAEItemStackCount.containsKey( g ) )
{
change.forEach( iaeItemStack -> {
if( iaeItemStack.isSameType( myStack ) ) lastReportedValue += iaeItemStack.getStackSize();
} );
}
}
preciseAEItemStackCount.computeIfAbsent( g, ( grid -> new Object2LongOpenHashMap<>() ) );
preciseAEItemStackCount.get( g ).computeIfAbsent( (AEItemStack) myStack, ( aLong -> {
this.lastReportedValue = 0;
IAEItemStack precise = monitor.getStorageList().findPrecise( myStack );
if( precise != null ) lastReportedValue = precise.getStackSize();
return ( lastReportedValue );
} ) );
this.lastReportedValue = preciseAEItemStackCount.get( g ).get( myStack );
if( this.lastReportedValue == 0 )
{
preciseAEItemStackCount.get( g ).remove( myStack );
preciseAEItemStackCount.trim();
}
this.lastReportedValue = r.getStackSize();
}
}
this.updateState();
}
@@ -459,7 +400,7 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
@Override
public void postChange( final IBaseMonitor<IAEItemStack> monitor, final Iterable<IAEItemStack> change, final IActionSource actionSource )
{
this.updateReportingValue( (IMEMonitor<IAEItemStack>) monitor, change );
this.updateReportingValue( (IMEMonitor<IAEItemStack>) monitor );
}
@Override
@@ -635,10 +576,4 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
return this.isLevelEmitterOn() ? MODEL_ON_OFF : MODEL_OFF_OFF;
}
}
public static void wipeCache(){
fuzzyAEItemStackCount.clear();
preciseAEItemStackCount.clear();
gridItemCount.clear();
}
}
@@ -26,9 +26,9 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import appeng.api.config.Settings;
import appeng.api.config.StorageFilter;
import it.unimi.dsi.fastutil.ints.IntList;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraftforge.items.IItemHandler;
import appeng.api.AEApi;
@@ -59,18 +59,12 @@ class ItemHandlerAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<IAE
private final IItemHandler itemHandler;
private final IGridProxyable proxyable;
private final InventoryCache cache;
private StorageFilter mode;
ItemHandlerAdapter( IItemHandler itemHandler, IGridProxyable proxy )
{
this.itemHandler = itemHandler;
this.proxyable = proxy;
if( this.proxyable instanceof PartStorageBus )
{
PartStorageBus partStorageBus = (PartStorageBus) this.proxyable;
this.mode = ( (StorageFilter) partStorageBus.getConfigManager().getSetting( Settings.STORAGE_FILTER ) );
}
this.cache = new InventoryCache( this.itemHandler, this.mode );
this.cache = new InventoryCache( this.itemHandler );
}
@Override
@@ -276,12 +270,12 @@ class ItemHandlerAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<IAE
{
private IAEItemStack[] cachedAeStacks = new IAEItemStack[0];
private final IItemHandler itemHandler;
private final StorageFilter mode;
private ArrayList<Integer> skipSlots;
public InventoryCache( IItemHandler itemHandler, StorageFilter mode )
public InventoryCache( IItemHandler itemHandler )
{
this.mode = mode;
this.itemHandler = itemHandler;
this.skipSlots = new ArrayList<>(this.itemHandler.getSlots());
}
public IItemList<IAEItemStack> getAvailableItems( IItemList<IAEItemStack> out )
@@ -299,18 +293,20 @@ class ItemHandlerAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<IAE
if( slots > this.cachedAeStacks.length )
{
this.cachedAeStacks = Arrays.copyOf( this.cachedAeStacks, slots );
this.skipSlots = new ArrayList<>(this.itemHandler.getSlots());
}
for( int slot = 0; slot < slots; slot++ )
{
if (skipSlots.contains( slot ))
continue;
// Save the old stuff
final IAEItemStack oldAeIS = this.cachedAeStacks[slot];
ItemStack newIS = this.itemHandler.getStackInSlot( slot );
if( this.mode == StorageFilter.EXTRACTABLE_ONLY && !newIS.isEmpty() )
{
if( this.itemHandler.extractItem( slot, 1, true ).isEmpty() )
{
if (!newIS.isEmpty()) {
if (this.itemHandler.extractItem( slot,1,true ).isEmpty()){
newIS = ItemStack.EMPTY;
skipSlots.add( slot );
}
}
this.handlePossibleSlotChanges( slot, oldAeIS, newIS, changes );
@@ -333,6 +329,7 @@ class ItemHandlerAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<IAE
// Reduce the cache size
this.cachedAeStacks = Arrays.copyOf( this.cachedAeStacks, slots );
this.skipSlots = new ArrayList<>(this.itemHandler.getSlots());
}
return changes;
@@ -484,7 +484,6 @@ public class PartStorageBus extends PartUpgradeable implements IGridTickable, IC
{
this.monitor = (ITickingMonitor) inv;
this.monitor.setActionSource( new MachineSource( this ) );
this.monitor.setMode( (StorageFilter) this.getConfigManager().getSetting( Settings.STORAGE_FILTER ) );
}
if( inv != null )
@@ -21,10 +21,6 @@ package appeng.parts.reporting;
import java.io.IOException;
import appeng.api.storage.channels.IFluidStorageChannel;
import appeng.api.storage.data.IAEFluidStack;
import appeng.fluids.util.AEFluidStack;
import appeng.util.item.AEStack;
import io.netty.buffer.ByteBuf;
import net.minecraft.client.renderer.GlStateManager;
@@ -35,9 +31,6 @@ import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.math.Vec3d;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
import net.minecraftforge.fluids.capability.IFluidHandlerItem;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@@ -77,9 +70,7 @@ import appeng.util.item.AEItemStack;
public abstract class AbstractPartMonitor extends AbstractPartDisplay implements IPartStorageMonitor, IStackWatcherHost
{
private static final IWideReadableNumberConverter NUMBER_CONVERTER = ReadableNumberConverter.INSTANCE;
private IAEItemStack configuredItem;
private IAEFluidStack configuredFluid;
private String lastHumanReadableText;
private boolean isLocked;
private IStackWatcher myWatcher;
@@ -99,9 +90,6 @@ public abstract class AbstractPartMonitor extends AbstractPartDisplay implements
final NBTTagCompound myItem = data.getCompoundTag( "configuredItem" );
this.configuredItem = AEItemStack.fromNBT( myItem );
final NBTTagCompound myFluid = data.getCompoundTag( "configuredFluid" );
this.configuredFluid = AEFluidStack.fromNBT( myFluid );
}
@Override
@@ -116,15 +104,8 @@ public abstract class AbstractPartMonitor extends AbstractPartDisplay implements
{
this.configuredItem.writeToNBT( myItem );
}
final NBTTagCompound myFluid = new NBTTagCompound();
if( this.configuredFluid != null )
{
this.configuredFluid.writeToNBT( myFluid );
}
data.setTag( "configuredItem", myItem );
data.setTag( "configuredFluid", myFluid );
}
@Override
@@ -133,17 +114,11 @@ public abstract class AbstractPartMonitor extends AbstractPartDisplay implements
super.writeToStream( data );
data.writeBoolean( this.isLocked );
//is configured
data.writeBoolean( this.configuredItem != null);
data.writeBoolean( this.configuredFluid != null);
data.writeBoolean( this.configuredItem != null );
if( this.configuredItem != null )
{
this.configuredItem.writeToPacket( data );
}
else if( this.configuredFluid != null )
{
this.configuredFluid.writeToPacket( data );
}
}
@Override
@@ -156,22 +131,14 @@ public abstract class AbstractPartMonitor extends AbstractPartDisplay implements
this.isLocked = isLocked;
final boolean isItem = data.readBoolean();
final boolean isFluid = data.readBoolean();
if( isItem )
final boolean val = data.readBoolean();
if( val )
{
this.configuredItem = AEItemStack.fromPacket( data );
this.configuredFluid = null;
}
else if( isFluid )
{
this.configuredFluid = AEFluidStack.fromPacket( data );
this.configuredItem = null;
}
else
{
this.configuredItem = null;
this.configuredFluid = null;
}
return needRedraw;
@@ -198,25 +165,7 @@ public abstract class AbstractPartMonitor extends AbstractPartDisplay implements
if( !this.isLocked )
{
final ItemStack eq = player.getHeldItem( hand );
FluidStack fluidInTank = null;
if( eq.hasCapability( CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null ) )
{
IFluidHandlerItem fluidHandlerItem = ( eq.getCapability( CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null ) );
fluidInTank = fluidHandlerItem.drain( Integer.MAX_VALUE, false );
}
if (fluidInTank == null)
{
this.configuredFluid = null;
this.configuredItem = AEItemStack.fromItemStack( eq );
}
else if( fluidInTank.amount > 0 )
{
this.configuredFluid = AEFluidStack.fromFluidStack( fluidInTank );
this.configuredItem = null;
}
this.configuredItem = AEItemStack.fromItemStack( eq );
this.configureWatchers();
this.getHost().markForSave();
this.getHost().markForUpdate();
@@ -278,16 +227,6 @@ public abstract class AbstractPartMonitor extends AbstractPartDisplay implements
this.updateReportingValue(
this.getProxy().getStorage().getInventory( AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) ) );
}
else if ( this.configuredFluid != null )
{
if( this.myWatcher != null )
{
this.myWatcher.add( this.configuredFluid );
}
this.updateReportingValue(
this.getProxy().getStorage().getInventory( AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) ) );
}
}
catch( final GridAccessException e )
{
@@ -295,12 +234,11 @@ public abstract class AbstractPartMonitor extends AbstractPartDisplay implements
}
}
private <T extends IAEStack<T>> void updateReportingValue ( final IMEMonitor<T> monitor )
private void updateReportingValue( final IMEMonitor<IAEItemStack> itemInventory )
{
if( this.configuredItem != null)
if( this.configuredItem != null )
{
final IAEItemStack result = (IAEItemStack) monitor.getStorageList().findPrecise( (T) this.configuredItem );
final IAEItemStack result = itemInventory.getStorageList().findPrecise( this.configuredItem );
if( result == null )
{
this.configuredItem.setStackSize( 0 );
@@ -310,18 +248,6 @@ public abstract class AbstractPartMonitor extends AbstractPartDisplay implements
this.configuredItem.setStackSize( result.getStackSize() );
}
}
else if( this.configuredFluid != null)
{
final IAEFluidStack result = (IAEFluidStack) monitor.getStorageList().findPrecise( (T) this.configuredFluid );
if( result == null )
{
this.configuredFluid.setStackSize( 0 );
}
else
{
this.configuredFluid.setStackSize( result.getStackSize() );
}
}
}
@Override
@@ -334,7 +260,7 @@ public abstract class AbstractPartMonitor extends AbstractPartDisplay implements
return;
}
IAEStack<?> ais = this.getDisplayed();
final IAEItemStack ais = this.getDisplayed();
if( ais == null )
{
@@ -348,10 +274,8 @@ public abstract class AbstractPartMonitor extends AbstractPartDisplay implements
TesrRenderHelper.moveToFace( facing );
TesrRenderHelper.rotateToFace( facing, this.getSpin() );
if (ais instanceof IAEItemStack)
TesrRenderHelper.renderItem2dWithAmount( (IAEItemStack) ais, 0.8f, 0.17f );
if (ais instanceof IAEFluidStack)
TesrRenderHelper.renderFluid2dWithAmount( (IAEFluidStack) ais, 0.8f, 0.17f );
TesrRenderHelper.renderItem2dWithAmount( ais, 0.8f, 0.17f );
GlStateManager.popMatrix();
}
@@ -363,13 +287,9 @@ public abstract class AbstractPartMonitor extends AbstractPartDisplay implements
}
@Override
public IAEStack<?> getDisplayed()
public IAEItemStack getDisplayed()
{
if (this.configuredItem != null)
return this.configuredItem;
else if (this.configuredFluid != null)
return this.configuredFluid;
return null;
}
@Override
@@ -402,26 +322,6 @@ public abstract class AbstractPartMonitor extends AbstractPartDisplay implements
final long stackSize = this.configuredItem.getStackSize();
final String humanReadableText = NUMBER_CONVERTER.toWideReadableForm( stackSize );
if( !humanReadableText.equals( this.lastHumanReadableText ) )
{
this.lastHumanReadableText = humanReadableText;
this.getHost().markForUpdate();
}
}
else if( this.configuredFluid != null )
{
if( fullStack == null )
{
this.configuredFluid.setStackSize( 0 );
}
else
{
this.configuredFluid.setStackSize( fullStack.getStackSize() );
}
final long stackSize = this.configuredFluid.getStackSize() / 1000;
final String humanReadableText = NUMBER_CONVERTER.toWideReadableForm( stackSize ) + "B";
if( !humanReadableText.equals( this.lastHumanReadableText ) )
{
this.lastHumanReadableText = humanReadableText;
@@ -19,31 +19,15 @@
package appeng.parts.reporting;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import appeng.api.config.Actionable;
import appeng.api.storage.channels.IFluidStorageChannel;
import appeng.api.storage.data.IAEFluidStack;
import appeng.api.storage.data.IAEStack;
import appeng.core.AELog;
import appeng.core.sync.network.NetworkHandler;
import appeng.core.sync.packets.PacketInventoryAction;
import appeng.fluids.util.AEFluidStack;
import appeng.helpers.InventoryAction;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumHand;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.Vec3d;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidUtil;
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
import net.minecraftforge.fluids.capability.IFluidHandlerItem;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.wrapper.PlayerMainInvWrapper;
@@ -108,13 +92,6 @@ public class PartConversionMonitor extends AbstractPartMonitor
}
final ItemStack eq = player.getHeldItem( hand );
FluidStack fluidInTank = null;
if( eq.hasCapability( CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null ) )
{
IFluidHandlerItem fluidHandlerItem = ( eq.getCapability( CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null ) );
fluidInTank = fluidHandlerItem.drain( Integer.MAX_VALUE, false );
}
if( this.isLocked() )
{
if( eq.isEmpty() )
@@ -126,49 +103,18 @@ public class PartConversionMonitor extends AbstractPartMonitor
// wrench it
return super.onPartActivate( player, hand, pos );
}
else if( fluidInTank != null && fluidInTank.amount > 0 )
{
if( this.getDisplayed() != null && getDisplayed().equals( AEFluidStack.fromFluidStack( fluidInTank ) ) )
{
this.drainFluidContainer( player, hand );
}
}
else
{
this.insertItem( player, hand, false );
}
}
//If its a fluid container, grab its fluidstack. if its empty pass its itemstack;
if (eq.isEmpty()){
return super.onPartActivate( player, hand, pos );
}
if( fluidInTank != null && fluidInTank.amount > 0 )
else if( this.getDisplayed() != null && this.getDisplayed().equals( eq ) )
{
if( getDisplayed() instanceof IAEItemStack || getDisplayed() == null )
{
return super.onPartActivate( player, hand, pos );
}
if( ( (IAEFluidStack) this.getDisplayed() ).equals( AEFluidStack.fromFluidStack( fluidInTank ) ) )
{
this.drainFluidContainer( player, hand );
}
else {
return super.onPartActivate( player, hand, pos );
}
this.insertItem( player, hand, false );
}
else
{
if( getDisplayed() instanceof IAEFluidStack || getDisplayed() == null )
{
return super.onPartActivate( player, hand, pos );
}
if( ( (IAEItemStack) this.getDisplayed() ).equals( eq ) )
{
this.insertItem( player, hand, false );
}
return super.onPartActivate( player, hand, pos );
}
return true;
@@ -192,14 +138,9 @@ public class PartConversionMonitor extends AbstractPartMonitor
return false;
}
ItemStack eq = player.getHeldItem( hand );
if( this.getDisplayed() != null && this.getDisplayed() instanceof IAEItemStack )
if( this.getDisplayed() != null )
{
this.extractItem( player, ( (IAEItemStack) this.getDisplayed() ).getDefinition().getMaxStackSize() );
}
else if( this.getDisplayed() != null && this.getDisplayed() instanceof IAEFluidStack )
{
this.fillFluidContainer( player,hand );
this.extractItem( player, this.getDisplayed().getDefinition().getMaxStackSize() );
}
return true;
@@ -242,9 +183,9 @@ public class PartConversionMonitor extends AbstractPartMonitor
if( allItems )
{
if( this.getDisplayed() != null && this.getDisplayed() instanceof IAEItemStack)
if( this.getDisplayed() != null )
{
final IAEItemStack input = (IAEItemStack) this.getDisplayed().copy();
final IAEItemStack input = this.getDisplayed().copy();
IItemHandler inv = new PlayerMainInvWrapper( player.inventory );
for( int x = 0; x < inv.getSlots(); x++ )
@@ -280,9 +221,7 @@ public class PartConversionMonitor extends AbstractPartMonitor
private void extractItem( final EntityPlayer player, int count )
{
if (!(this.getDisplayed() instanceof IAEItemStack))
return;
final IAEItemStack input = (IAEItemStack) this.getDisplayed();
final IAEItemStack input = this.getDisplayed();
if( input != null )
{
try
@@ -326,141 +265,6 @@ public class PartConversionMonitor extends AbstractPartMonitor
}
}
private void drainFluidContainer( final EntityPlayer player, final EnumHand hand ) {
try
{
final ItemStack held = player.getHeldItem( hand );
if( held.getCount() != 1 )
{
// only support stacksize 1 for now
return;
}
final IFluidHandlerItem fh = FluidUtil.getFluidHandler( held );
if( fh == null )
{
// only fluid handlers items
return;
}
// See how much we can drain from the item
final FluidStack extract = fh.drain( Integer.MAX_VALUE, false );
if( extract == null || extract.amount < 1 )
{
return;
}
// Check if we can push into the system
final IEnergySource energy = this.getProxy().getEnergy();
final IMEMonitor<IAEFluidStack> cell = this.getProxy()
.getStorage()
.getInventory(
AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) );
final IAEFluidStack notStorable = Platform.poweredInsert( energy, cell, AEFluidStack.fromFluidStack( extract ), new PlayerSource( player, this ), Actionable.SIMULATE );
if( notStorable != null && notStorable.getStackSize() > 0 )
{
final int toStore = (int) ( extract.amount - notStorable.getStackSize() );
final FluidStack storable = fh.drain( toStore, false );
if( storable == null || storable.amount == 0 )
{
return;
}
else
{
extract.amount = storable.amount;
}
}
// Actually drain
final FluidStack drained = fh.drain( extract, true );
extract.amount = drained.amount;
final IAEFluidStack notInserted = Platform.poweredInsert( energy, cell, AEFluidStack.fromFluidStack( extract ), new PlayerSource( player, this ) );
if( notInserted != null && notInserted.getStackSize() > 0 )
{
AELog.error( "Fluid item [%s] reported a different possible amount to drain than it actually provided.", held.getDisplayName() );
}
player.setHeldItem( hand, fh.getContainer() );
}
catch( GridAccessException e )
{
e.printStackTrace();
}
}
private void fillFluidContainer( final EntityPlayer player, final EnumHand hand )
{
try
{
final ItemStack held = player.getHeldItem( hand );
if( held.getCount() != 1 )
{
// only support stacksize 1 for now
return;
}
final IFluidHandlerItem fh = FluidUtil.getFluidHandler( held );
if( fh == null )
{
// only fluid handlers items
return;
}
final IAEFluidStack stack = (IAEFluidStack) this.getDisplayed().copy();
// Check how much we can store in the item
stack.setStackSize( Integer.MAX_VALUE );
int amountAllowed = fh.fill( stack.getFluidStack(), false );
stack.setStackSize( amountAllowed );
// Check if we can pull out of the system
final IEnergySource energy = this.getProxy().getEnergy();
final IMEMonitor<IAEFluidStack> cell = this.getProxy()
.getStorage()
.getInventory(
AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) );
final IAEFluidStack canPull = Platform.poweredExtraction( energy, cell, stack, new PlayerSource( player, this ), Actionable.SIMULATE );
if( canPull == null || canPull.getStackSize() < 1 )
{
return;
}
// How much could fit into the container
final int canFill = fh.fill( canPull.getFluidStack(), false );
if( canFill == 0 )
{
return;
}
// Now actually pull out of the system
stack.setStackSize( canFill );
final IAEFluidStack pulled = Platform.poweredExtraction( energy, cell, stack, new PlayerSource( player, this ) );
if( pulled == null || pulled.getStackSize() < 1 )
{
// Something went wrong
AELog.error( "Unable to pull fluid out of the ME system even though the simulation said yes " );
return;
}
// Actually fill
final int used = fh.fill( pulled.getFluidStack(), true );
if( used != canFill )
{
AELog.error( "Fluid item [%s] reported a different possible amount than it actually accepted.", held.getDisplayName() );
}
player.setHeldItem( hand, fh.getContainer() );
}
catch( GridAccessException e )
{
e.printStackTrace();
}
}
@Override
public IPartModel getStaticModels()
{
@@ -44,9 +44,6 @@ public class PartInterfaceTerminal extends AbstractPartDisplay
public static final IPartModel MODELS_OFF = new PartModel( MODEL_BASE, MODEL_OFF, MODEL_STATUS_OFF );
public static final IPartModel MODELS_ON = new PartModel( MODEL_BASE, MODEL_ON, MODEL_STATUS_ON );
public static final IPartModel MODELS_HAS_CHANNEL = new PartModel( MODEL_BASE, MODEL_ON, MODEL_STATUS_HAS_CHANNEL );
public String in = "";
public String out = "";
public boolean onlyInterfacesWithFreeSlots = false;
public PartInterfaceTerminal( final ItemStack is )
{
@@ -72,8 +69,4 @@ public class PartInterfaceTerminal extends AbstractPartDisplay
return this.selectModel( MODELS_OFF, MODELS_ON, MODELS_HAS_CHANNEL );
}
public void saveSearchStrings(String in, String out){
this.in = in;
this.out = out;
}
}
@@ -1,36 +0,0 @@
package appeng.recipes.factories.conditions;
import appeng.core.Api;
import appeng.core.AppEng;
import com.google.gson.JsonObject;
import net.minecraft.util.JsonUtils;
import net.minecraftforge.common.crafting.IConditionFactory;
import net.minecraftforge.common.crafting.JsonContext;
import java.util.function.BooleanSupplier;
public class PartExists implements IConditionFactory {
private static final String JSON_MATERIAL_KEY = "part";
@Override
public BooleanSupplier parse(JsonContext jsonContext, JsonObject jsonObject )
{
final boolean result;
if( JsonUtils.isString( jsonObject, JSON_MATERIAL_KEY ) )
{
final String part = JsonUtils.getString( jsonObject, JSON_MATERIAL_KEY );
final Object item = Api.INSTANCE.registries().recipes().resolveItem( AppEng.MOD_ID, part );
result = item != null;
}
else
{
result = false;
}
return () -> result;
}
}
@@ -197,7 +197,7 @@ public class AdaptorItemRepository extends InventoryAdaptor
@Override
public boolean hasSlots()
{
return true;
return false;
}
@Override
@@ -1,25 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:charger"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 7
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:part",
"data": 16
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:part",
@@ -46,4 +25,4 @@
}
}
}
}
}
@@ -1,11 +1,4 @@
{
"conditions": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 1
}
],
"display": {
"icon": {
"item": "appliedenergistics2:material",
@@ -32,4 +25,4 @@
}
}
}
}
}
@@ -1,20 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:charger"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 1
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:charger"
@@ -39,4 +23,4 @@
}
}
}
}
}
@@ -1,10 +1,4 @@
{
"conditions": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:sky_compass"
}
],
"display": {
"icon": {
"item": "appliedenergistics2:sky_compass"
@@ -29,4 +23,4 @@
}
}
}
}
}
@@ -1,35 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 13
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 14
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 15
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 19
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:controller"
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:controller"
@@ -54,4 +23,4 @@
}
}
}
}
}
@@ -1,61 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:crafting_storage_1k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:crafting_storage_4k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:crafting_storage_16k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:crafting_storage_64k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 13
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 14
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 15
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 19
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:controller"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:part",
"data": 360
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:part",
"data": 340
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:crafting_storage_64k"
@@ -118,4 +61,4 @@
"c64k"
]
]
}
}
@@ -1,40 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 13
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 14
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 15
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 19
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:controller"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:part",
"data": 360
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:part",
@@ -61,4 +25,4 @@
}
}
}
}
}
@@ -1,33 +1,7 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:charger"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 7
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:part",
"data": 16
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:facade"
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:facade",
"nbt": "{item:\"minecraft:stone\"}"
"item": "appliedenergistics2:facade"
},
"title": {
"translate": "achievement.ae2.Facade"
@@ -49,4 +23,4 @@
}
}
}
}
}
@@ -1,20 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:charger"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 7
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:material",
@@ -41,4 +25,4 @@
}
}
}
}
}
@@ -1,24 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:charger"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 7
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:quartz_growth_accelerator"
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:quartz_growth_accelerator"
@@ -43,4 +23,4 @@
}
}
}
}
}
@@ -1,29 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:charger"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 7
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:part",
"data": 16
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:interface"
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:interface"
@@ -48,4 +23,4 @@
}
}
}
}
}
@@ -1,50 +1,4 @@
{
"conditions": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:storage_cell_1k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:storage_cell_4k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:storage_cell_16k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:storage_cell_64k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 13
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 14
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 15
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 19
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:controller"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:io_port"
}
],
"display": {
"icon": {
"item": "appliedenergistics2:io_port"
@@ -69,4 +23,4 @@
}
}
}
}
}
@@ -1,25 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:charger"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 7
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:part",
"data": 16
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:part",
@@ -38,4 +17,4 @@
"trigger": "appliedenergistics2:network_apprentice"
}
}
}
}
@@ -1,25 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:charger"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 7
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:part",
"data": 16
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:part",
@@ -38,4 +17,4 @@
"trigger": "appliedenergistics2:network_engineer"
}
}
}
}
@@ -1,25 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:charger"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 7
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:part",
"data": 16
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:part",
@@ -38,4 +17,4 @@
"trigger": "appliedenergistics2:network_admin"
}
}
}
}
@@ -1,39 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 13
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 14
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 15
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 19
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:controller"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:network_tool"
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:network_tool"
@@ -58,4 +23,4 @@
}
}
}
}
}
@@ -1,30 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:charger"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 7
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:part",
"data": 16
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:part",
"data": 460
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:part",
@@ -44,11 +18,11 @@
"conditions": {
"items": [
{
"item": "appliedenergistics2:part",
"data": 460
"type": "appliedenergistics2:part",
"part": "P2P_TUNNEL_ME"
}
]
}
}
}
}
}
@@ -1,45 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 13
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 14
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 15
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 19
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:controller"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:part",
"data": 360
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:part",
"data": 340
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:part",
@@ -66,4 +25,4 @@
}
}
}
}
}
@@ -1,55 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:storage_cell_1k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:storage_cell_4k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:storage_cell_16k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:storage_cell_64k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 13
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 14
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 15
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 19
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:controller"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:portable_cell"
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:portable_cell"
@@ -74,4 +23,4 @@
}
}
}
}
}
@@ -1,31 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 13
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 14
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 15
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 19
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:material",
@@ -93,4 +66,4 @@
"silicon"
]
]
}
}
@@ -1,34 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:charger"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 7
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:part",
"data": 16
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:part",
"data": 460
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:quantum_link"
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:quantum_link"
@@ -53,4 +23,4 @@
}
}
}
}
}
@@ -27,4 +27,4 @@
}
}
}
}
}
@@ -1,59 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:storage_cell_1k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:storage_cell_4k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:storage_cell_16k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:storage_cell_64k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 13
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 14
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 15
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 19
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:controller"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:io_port"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:spatial_io_port"
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:spatial_storage_cell_128_cubed"
@@ -71,4 +16,4 @@
"trigger": "appliedenergistics2:spatial_explorer"
}
}
}
}
@@ -1,59 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:storage_cell_1k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:storage_cell_4k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:storage_cell_16k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:storage_cell_64k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 13
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 14
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 15
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 19
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:controller"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:io_port"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:spatial_io_port"
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:spatial_io_port"
@@ -78,4 +23,4 @@
}
}
}
}
}
@@ -1,34 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:charger"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 7
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:part",
"data": 16
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:interface"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:part",
"data": 220
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:part",
@@ -55,4 +25,4 @@
}
}
}
}
}
@@ -1,51 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:storage_cell_1k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:storage_cell_4k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:storage_cell_16k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:storage_cell_64k"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 13
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 14
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 15
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:material",
"data": 19
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:controller"
}
]
}
],
"display": {
"icon": {
"item": "appliedenergistics2:storage_cell_64k"
@@ -108,4 +61,4 @@
"c64k"
]
]
}
}
@@ -1,10 +1,4 @@
{
"conditions": [
{
"type": "appliedenergistics2:material_exists",
"material": "material.fluix_dust"
}
],
"type": "appliedenergistics2:grinder",
"input": {
"type": "forge:ore_dict",
@@ -1,10 +1,4 @@
{
"conditions": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:sky_stone_block"
}
],
"type": "appliedenergistics2:grinder",
"input": {
"item": "appliedenergistics2:sky_stone_block"
@@ -1,23 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "appliedenergistics2:material_exists",
"material": "material.engineering_processor"
},
{
"type": "appliedenergistics2:material_exists",
"material": "material.engineering_processor_print"
},
{
"type": "appliedenergistics2:material_exists",
"material": "material.silicon_print"
}
]
}
],
"type": "appliedenergistics2:inscriber",
"mode": "press",
"result": {
@@ -1,10 +1,4 @@
{
"conditions": [
{
"type": "appliedenergistics2:material_exists",
"material": "material.calculation_processor_press"
}
],
"type": "appliedenergistics2:inscriber",
"mode": "inscribe",
"result": {
@@ -1,23 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "appliedenergistics2:material_exists",
"material": "material.calculation_processor_print"
},
{
"type": "appliedenergistics2:material_exists",
"material": "material.calculation_processor_press"
},
{
"type": "appliedenergistics2:material_exists",
"material": "material.purified_certus_quartz_crystal"
}
]
}
],
"type": "appliedenergistics2:inscriber",
"mode": "inscribe",
"result": {
@@ -1,23 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "appliedenergistics2:material_exists",
"material": "material.calculation_processor"
},
{
"type": "appliedenergistics2:material_exists",
"material": "material.calculation_processor_print"
},
{
"type": "appliedenergistics2:material_exists",
"material": "material.silicon_print"
}
]
}
],
"type": "appliedenergistics2:inscriber",
"mode": "press",
"result": {
@@ -1,10 +1,4 @@
{
"conditions": [
{
"type": "appliedenergistics2:material_exists",
"material": "material.engineering_processor_press"
}
],
"type": "appliedenergistics2:inscriber",
"mode": "inscribe",
"result": {
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "appliedenergistics2:material_exists",
"material": "material.engineering_processor_print"
},
{
"type": "appliedenergistics2:material_exists",
"material": "material.engineering_processor_press"
}
]
}
],
"type": "appliedenergistics2:inscriber",
"mode": "inscribe",
"result": {
@@ -1,23 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "appliedenergistics2:material_exists",
"material": "material.logic_processor"
},
{
"type": "appliedenergistics2:material_exists",
"material": "material.logic_processor_print"
},
{
"type": "appliedenergistics2:material_exists",
"material": "material.silicon_print"
}
]
}
],
"type": "appliedenergistics2:inscriber",
"mode": "press",
"result": {
@@ -1,10 +1,4 @@
{
"conditions": [
{
"type": "appliedenergistics2:material_exists",
"material": "material.logic_processor_press"
}
],
"type": "appliedenergistics2:inscriber",
"mode": "inscribe",
"result": {
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "appliedenergistics2:material_exists",
"material": "material.logic_processor_print"
},
{
"type": "appliedenergistics2:material_exists",
"material": "material.logic_processor_press"
}
]
}
],
"type": "appliedenergistics2:inscriber",
"mode": "inscribe",
"result": {
@@ -1,10 +1,4 @@
{
"conditions": [
{
"type": "appliedenergistics2:material_exists",
"material": "material.silicon_press"
}
],
"type": "appliedenergistics2:inscriber",
"mode": "inscribe",
"result": {
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "appliedenergistics2:material_exists",
"material": "material.silicon_print"
},
{
"type": "appliedenergistics2:material_exists",
"material": "material.silicon_press"
}
]
}
],
"type": "appliedenergistics2:inscriber",
"mode": "inscribe",
"result": {
@@ -1,10 +1,4 @@
{
"conditions": [
{
"type": "appliedenergistics2:material_exists",
"material": "material.flour"
}
],
"type": "appliedenergistics2:smelt",
"result": {
"item": "minecraft:bread"
@@ -1,10 +1,4 @@
{
"conditions": [
{
"type": "appliedenergistics2:material_exists",
"material": "material.silicon"
}
],
"type": "appliedenergistics2:smelt",
"result": {
"part": "material.silicon"
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:smooth_sky_stone_block"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:sky_stone_block"
}
]
}
],
"type": "appliedenergistics2:smelt",
"result": {
"item": "appliedenergistics2:smooth_sky_stone_block"
@@ -363,12 +363,6 @@ gui.tooltips.appliedenergistics2.DecreaseByOne=Decrease one
gui.tooltips.appliedenergistics2.DecreaseByOneDesc=Will try to add decrease the items set in the crafting slots by one DOES NOT MAINTAIN INGREDIENT RATIO
gui.tooltips.appliedenergistics2.MaxCount=Maximize slot count
gui.tooltips.appliedenergistics2.MaxCountDesc=Will maximize the output maintaing the input ratio of the items set in the crafting slots
gui.tooltips.appliedenergistics2.FreeMolecularSlotShortcut=Show Crafting interfaces with free slots
gui.tooltips.appliedenergistics2.FreeMolecularSlotShortcutDesc=Shortcut that toggles interfaces with free slots and searches for molecular assemblers
gui.tooltips.appliedenergistics2.ToggleShowFullInterfaces=Toggles showing interfaces with full slots
gui.tooltips.appliedenergistics2.ToggleShowFullInterfacesOnDesc=Showing all interfaces
gui.tooltips.appliedenergistics2.ToggleShowFullInterfacesOffDesc=Showing only interfaces with free slots
gui.tooltips.appliedenergistics2.HighlightInterface=Highlight interface
// Units
gui.appliedenergistics2.units.appliedenergstics=AE
@@ -1,8 +1,7 @@
{
"conditions": {
"material_exists": "appeng.recipes.factories.conditions.MaterialExists",
"features": "appeng.recipes.factories.conditions.Features",
"part_exists": "appeng.recipes.factories.conditions.PartExists"
"features": "appeng.recipes.factories.conditions.Features"
},
"ingredients": {
"part": "appeng.recipes.factories.ingredients.PartIngredientFactory"
@@ -1,10 +1,4 @@
{
"conditions": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:quartz_block"
}
],
"result": {
"item": "appliedenergistics2:quartz_block"
},
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:quartz_block"
},
{
"type": "appliedenergistics2:material_exists",
"material": "material.purified_certus_quartz_crystal"
}
]
}
],
"result": {
"item": "appliedenergistics2:quartz_block"
},
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:quartz_pillar"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:quartz_block"
}
]
}
],
"result": {
"item": "appliedenergistics2:quartz_pillar",
"count": 2
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:chiseled_quartz_block"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:quartz_block"
}
]
}
],
"result": {
"item": "appliedenergistics2:chiseled_quartz_block",
"count": 2
@@ -1,10 +1,4 @@
{
"conditions": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:fluix_block"
}
],
"result": {
"item": "appliedenergistics2:fluix_block"
},
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:fluix_block"
},
{
"type": "appliedenergistics2:material_exists",
"material": "material.purified_fluix_crystal"
}
]
}
],
"result": {
"item": "appliedenergistics2:fluix_block"
},
@@ -1,10 +1,4 @@
{
"conditions": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:light_detector"
}
],
"result": {
"item": "appliedenergistics2:light_detector"
},
@@ -1,10 +1,4 @@
{
"conditions": [
{
"type": "appliedenergistics2:material_exists",
"material": "material.purified_nether_quartz_crystal"
}
],
"result": {
"item": "minecraft:quartz_block",
"data": 0
@@ -1,20 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:quartz_fixture"
},
{
"type": "appliedenergistics2:material_exists",
"material": "material.certus_quartz_crystal_charged"
}
]
}
],
"result": {
"item": "appliedenergistics2:quartz_fixture",
"count": 2
@@ -1,10 +1,4 @@
{
"conditions": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:quartz_glass"
}
],
"result": {
"item": "appliedenergistics2:quartz_glass",
"count": 4
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:quartz_vibrant_glass"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:quartz_glass"
}
]
}
],
"result": {
"item": "appliedenergistics2:quartz_vibrant_glass"
},
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:sky_stone_brick"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:smooth_sky_stone_block"
}
]
}
],
"result": {
"item": "appliedenergistics2:sky_stone_brick"
},
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:sky_stone_small_brick"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:sky_stone_brick"
}
]
}
],
"result": {
"item": "appliedenergistics2:sky_stone_small_brick"
},
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:smooth_sky_stone_block"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:sky_stone_small_brick"
}
]
}
],
"result": {
"item": "appliedenergistics2:smooth_sky_stone_block"
},
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:chiseled_quartz_slab"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:chiseled_quartz_block"
}
]
}
],
"result": {
"item": "appliedenergistics2:chiseled_quartz_slab",
"data": 0,
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:fluix_slab"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:fluix_block"
}
]
}
],
"result": {
"item": "appliedenergistics2:fluix_slab",
"data": 0,
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:quartz_slab"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:quartz_block"
}
]
}
],
"result": {
"item": "appliedenergistics2:quartz_slab",
"data": 0,
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:quartz_pillar_slab"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:quartz_pillar"
}
]
}
],
"result": {
"item": "appliedenergistics2:quartz_pillar_slab",
"data": 0,
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:sky_stone_slab"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:sky_stone_block"
}
]
}
],
"result": {
"item": "appliedenergistics2:sky_stone_slab",
"data": 0,
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:sky_stone_brick_slab"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:sky_stone_brick"
}
]
}
],
"result": {
"item": "appliedenergistics2:sky_stone_brick_slab",
"data": 0,
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:sky_stone_small_brick_slab"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:sky_stone_small_brick"
}
]
}
],
"result": {
"item": "appliedenergistics2:sky_stone_small_brick_slab",
"data": 0,
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:smooth_sky_stone_slab"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:smooth_sky_stone_block"
}
]
}
],
"result": {
"item": "appliedenergistics2:smooth_sky_stone_slab",
"data": 0,
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:chiseled_quartz_stairs"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:chiseled_quartz_block"
}
]
}
],
"result": {
"item": "appliedenergistics2:chiseled_quartz_stairs",
"count": 4
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:fluix_stairs"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:fluix_block"
}
]
}
],
"result": {
"item": "appliedenergistics2:fluix_stairs",
"count": 4
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:quartz_stairs"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:quartz_block"
}
]
}
],
"result": {
"item": "appliedenergistics2:quartz_stairs",
"count": 4
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:quartz_pillar_stairs"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:quartz_pillar"
}
]
}
],
"result": {
"item": "appliedenergistics2:quartz_pillar_stairs",
"count": 4
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:sky_stone_stairs"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:sky_stone_block"
}
]
}
],
"result": {
"item": "appliedenergistics2:sky_stone_stairs",
"count": 4
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:sky_stone_brick_stairs"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:sky_stone_brick"
}
]
}
],
"result": {
"item": "appliedenergistics2:sky_stone_brick_stairs",
"count": 4
@@ -1,19 +1,4 @@
{
"conditions": [
{
"type": "forge:and",
"values": [
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:sky_stone_small_brick_stairs"
},
{
"type": "minecraft:item_exists",
"item": "appliedenergistics2:sky_stone_small_brick"
}
]
}
],
"result": {
"item": "appliedenergistics2:sky_stone_small_brick_stairs",
"count": 4

Some files were not shown because too many files have changed in this diff Show More