use of logisticspipes.gui.GuiLogisticsCraftingTable in project LogisticsPipes by RS485.
the class LogisticsCraftingOverlayHandler method overlayRecipe.
@Override
public void overlayRecipe(GuiContainer firstGui, IRecipeHandler recipe, int recipeIndex, boolean shift) {
TileEntity tile;
LogisticsBaseGuiScreen gui;
if (firstGui instanceof GuiLogisticsCraftingTable) {
tile = ((GuiLogisticsCraftingTable) firstGui)._crafter;
gui = (GuiLogisticsCraftingTable) firstGui;
} else if (firstGui instanceof GuiRequestTable) {
tile = ((GuiRequestTable) firstGui)._table.container;
gui = (GuiRequestTable) firstGui;
} else {
return;
}
ItemStack[] stack = new ItemStack[9];
ItemStack[][] stacks = new ItemStack[9][];
boolean hasCanidates = false;
NEISetCraftingRecipe packet = PacketHandler.getPacket(NEISetCraftingRecipe.class);
for (PositionedStack ps : recipe.getIngredientStacks(recipeIndex)) {
int x = (ps.relx - 25) / 18;
int y = (ps.rely - 6) / 18;
int slot = x + y * 3;
if (x < 0 || x > 2 || y < 0 || y > 2 || slot < 0 || slot > 8) {
FMLClientHandler.instance().getClient().thePlayer.sendChatMessage("Internal Error. This button is broken.");
return;
}
if (slot < 9) {
stack[slot] = ps.items[0];
List<ItemStack> list = new ArrayList<>(Arrays.asList(ps.items));
Iterator<ItemStack> iter = list.iterator();
while (iter.hasNext()) {
ItemStack wildCardCheckStack = iter.next();
if (wildCardCheckStack.getItemDamage() == OreDictionary.WILDCARD_VALUE) {
iter.remove();
wildCardCheckStack.getItem().getSubItems(wildCardCheckStack.getItem(), wildCardCheckStack.getItem().getCreativeTab(), list);
iter = list.iterator();
}
}
stacks[slot] = list.toArray(new ItemStack[0]);
if (stacks[slot].length > 1) {
hasCanidates = true;
} else if (stacks[slot].length == 1) {
stack[slot] = stacks[slot][0];
}
}
}
if (hasCanidates) {
gui.setSubGui(new GuiRecipeImport(tile, stacks));
} else {
MainProxy.sendPacketToServer(packet.setContent(stack).setPosX(tile.xCoord).setPosY(tile.yCoord).setPosZ(tile.zCoord));
}
}
use of logisticspipes.gui.GuiLogisticsCraftingTable in project LogisticsPipes by RS485.
the class AutoCraftingGui method getClientGui.
@Override
public Object getClientGui(EntityPlayer player) {
LogisticsCraftingTableTileEntity tile = getTileAs(player.world, LogisticsCraftingTableTileEntity.class);
if (tile.isFuzzy()) {
tile.fuzzyFlags.replaceWith(fuzzyFlags);
}
tile.targetType = targetType;
return new GuiLogisticsCraftingTable(player, tile);
}
use of logisticspipes.gui.GuiLogisticsCraftingTable in project LogisticsPipes by RS485.
the class MostLikelyRecipeComponentsResponse method processPacket.
@Override
@ClientSideOnlyMethodContent
public void processPacket(EntityPlayer player) {
GuiScreen firstGui = Minecraft.getMinecraft().currentScreen;
LogisticsBaseGuiScreen gui;
if (firstGui instanceof GuiLogisticsCraftingTable) {
gui = (GuiLogisticsCraftingTable) firstGui;
} else if (firstGui instanceof GuiRequestTable) {
gui = (GuiRequestTable) firstGui;
} else {
return;
}
GuiRecipeImport importGui = null;
SubGuiScreen sub = gui.getSubGui();
while (sub != null) {
if (sub instanceof GuiRecipeImport) {
importGui = (GuiRecipeImport) sub;
break;
}
sub = sub.getSubGui();
}
if (importGui == null)
return;
importGui.handleProposePacket(response);
}
use of logisticspipes.gui.GuiLogisticsCraftingTable in project LogisticsPipes by RS485.
the class RecipeTransferHandler method transferRecipe.
@Nullable
@Override
public IRecipeTransferError transferRecipe(@Nonnull DummyContainer container, @Nonnull IRecipeLayout recipeLayout, @Nonnull EntityPlayer player, boolean maxTransfer, boolean doTransfer) {
LogisticsBaseGuiScreen gui = container.guiHolderForJEI;
if (gui instanceof GuiLogisticsCraftingTable || gui instanceof GuiRequestTable) {
TileEntity tile;
if (gui instanceof GuiLogisticsCraftingTable) {
tile = ((GuiLogisticsCraftingTable) gui)._crafter;
} else {
tile = ((GuiRequestTable) gui)._table.container;
}
if (tile == null) {
return recipeTransferHandlerHelper.createInternalError();
}
if (!recipeLayout.getRecipeCategory().getUid().equals(VanillaRecipeCategoryUid.CRAFTING)) {
return recipeTransferHandlerHelper.createInternalError();
}
NEISetCraftingRecipe packet = PacketHandler.getPacket(NEISetCraftingRecipe.class);
NonNullList<ItemStack> stackList = packet.getStackList();
ItemStack[][] stacks = new ItemStack[9][];
boolean hasCanidates = false;
IGuiItemStackGroup guiItemStackGroup = recipeLayout.getItemStacks();
Map<Integer, ? extends IGuiIngredient<ItemStack>> guiIngredients = guiItemStackGroup.getGuiIngredients();
if (doTransfer) {
for (Map.Entry<Integer, ? extends IGuiIngredient<ItemStack>> ps : guiIngredients.entrySet()) {
if (!ps.getValue().isInput())
continue;
int slot = ps.getKey() - 1;
if (slot < 9) {
final ItemStack displayedIngredient = ps.getValue().getDisplayedIngredient();
stackList.set(slot, displayedIngredient == null ? ItemStack.EMPTY : displayedIngredient);
NonNullList<ItemStack> itemCandidateList = NonNullList.create();
// add all non-null non-empty ingredients to the itemCandidateList
ps.getValue().getAllIngredients().stream().filter(itemStack -> Objects.nonNull(itemStack) && !itemStack.isEmpty()).forEach(itemCandidateList::add);
if (!itemCandidateList.isEmpty()) {
Iterator<ItemStack> iter = itemCandidateList.iterator();
while (iter.hasNext()) {
ItemStack wildCardCheckStack = iter.next();
if (wildCardCheckStack.getItemDamage() == OreDictionary.WILDCARD_VALUE) {
iter.remove();
final CreativeTabs creativeTab = wildCardCheckStack.getItem().getCreativeTab();
if (creativeTab != null) {
NonNullList<ItemStack> secondList = NonNullList.create();
wildCardCheckStack.getItem().getSubItems(creativeTab, secondList);
itemCandidateList.addAll(secondList);
}
iter = itemCandidateList.iterator();
}
}
stacks[slot] = itemCandidateList.toArray(new ItemStack[0]);
if (stacks[slot].length > 1) {
hasCanidates = true;
} else if (stacks[slot].length == 1) {
stackList.set(slot, stacks[slot][0]);
}
}
}
}
if (hasCanidates) {
gui.setSubGui(new GuiRecipeImport(tile, stacks));
} else {
MainProxy.sendPacketToServer(packet.setTilePos(tile));
}
}
return null;
}
return recipeTransferHandlerHelper.createInternalError();
}
Aggregations