Compare commits

...
8 Commits
113 changed files with 285 additions and 152 deletions

No files matched your search

+1
View File
@@ -32,6 +32,7 @@
*.[dD][lL][lL] binary
*.[dD][yY][lL][iI][bB] binary
*.[pP][sS][dD] binary
*.[pP][dD][nN] binary
*.[tT][tT][fF] binary
*.[oO][tT][fF] binary
File renamed without changes.

Before

Width:  |  Height:  |  Size: 231 B

After

Width:  |  Height:  |  Size: 231 B

File renamed without changes.

Before

Width:  |  Height:  |  Size: 204 B

After

Width:  |  Height:  |  Size: 204 B

File renamed without changes.

Before

Width:  |  Height:  |  Size: 220 B

After

Width:  |  Height:  |  Size: 220 B

File renamed without changes.

Before

Width:  |  Height:  |  Size: 220 B

After

Width:  |  Height:  |  Size: 220 B

File renamed without changes.

Before

Width:  |  Height:  |  Size: 200 B

After

Width:  |  Height:  |  Size: 200 B

File renamed without changes.

Before

Width:  |  Height:  |  Size: 222 B

After

Width:  |  Height:  |  Size: 222 B

File renamed without changes.

Before

Width:  |  Height:  |  Size: 219 B

After

Width:  |  Height:  |  Size: 219 B

+4 -4
View File
@@ -1,12 +1,12 @@
// Add your dependencies here
dependencies {
api('com.github.GTNewHorizons:ForestryMC:4.11.28:dev')
implementation('com.github.GTNewHorizons:GTNHLib:0.11.19:dev')
api('com.github.GTNewHorizons:ForestryMC:4.11.32:dev')
implementation('com.github.GTNewHorizons:GTNHLib:0.11.35:dev')
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.8.105-GTNH:dev')
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.8.118-GTNH:dev')
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.61:api')
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.63:api')
compileOnly('net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev')
compileOnly("curse.maven:extrabiomesxl-60041:2273301")
}
+10 -10
View File
@@ -1,12 +1,12 @@
#This file is generated by updateDaemonJvm
toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/cf726b4a1c84b50457225f9bba6d7650/redirect
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/cf726b4a1c84b50457225f9bba6d7650/redirect
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/c2dd35c9d0aaf0ba6ad0791320f99dfc/redirect
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/e5810bd7fd1f8a586644409d395a7e55/redirect
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/cf726b4a1c84b50457225f9bba6d7650/redirect
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect
toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/7b3c4877c0749019e6805bb61e421497/redirect
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/d76df094a9cbbabd3b08251f9e61444a/redirect
toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/97d46b5ff4df0bf61e95652a190a5567/redirect
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/9ef54a08e06b0754cee9fc95ed3a3134/redirect
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/97d46b5ff4df0bf61e95652a190a5567/redirect
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/9ef54a08e06b0754cee9fc95ed3a3134/redirect
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/1df82b76031285ef2e6a4f59ffe9299d/redirect
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/c7d5be6a02945ac2e045048ee54a7d32/redirect
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/97d46b5ff4df0bf61e95652a190a5567/redirect
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/9ef54a08e06b0754cee9fc95ed3a3134/redirect
toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/643f404f769811f5f265fd66f7af5d89/redirect
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/38256085a73e137cb4937ea9c4807fec/redirect
toolchainVersion=25
+1 -1
View File
@@ -17,5 +17,5 @@ pluginManagement {
}
plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.26'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.27'
}
@@ -1,10 +1,7 @@
package binnie.core.craftgui;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Deque;
import java.util.List;
import java.util.ListIterator;
import org.lwjgl.input.Mouse;
@@ -168,17 +165,14 @@ public abstract class TopLevelWidget extends Widget implements ITopLevelWidget {
}
public Deque<IWidget> calculateMousedOverWidgets() {
Deque<IWidget> list = new ArrayDeque<>();
for (IWidget widget : getQueuedWidgets(this)) {
if (widget.calculateIsMouseOver()) {
list.addLast(widget);
}
}
return list;
Deque<IWidget> widgets = new ArrayDeque<>();
addMousedOverWidgets(this, widgets);
return widgets;
}
private Collection<IWidget> getQueuedWidgets(IWidget widget) {
List<IWidget> widgets = new ArrayList<>();
private void addMousedOverWidgets(IWidget widget, Deque<IWidget> widgets) {
if (!widget.isVisible()) return;
boolean addChildren = true;
if (widget.isCroppedWidget()) {
addChildren = widget.getCroppedZone().contains(widget.getCropWidget().getRelativeMousePosition());
@@ -188,11 +182,12 @@ public abstract class TopLevelWidget extends Widget implements ITopLevelWidget {
ListIterator<IWidget> li = widget.getWidgets().listIterator(widget.getWidgets().size());
while (li.hasPrevious()) {
IWidget child = li.previous();
widgets.addAll(getQueuedWidgets(child));
addMousedOverWidgets(child, widgets);
}
}
widgets.add(widget);
return widgets;
if (widget.calculateIsMouseOver()) {
widgets.addLast(widget);
}
}
@Override
@@ -306,17 +306,22 @@ public class Widget implements IWidget {
}
onUpdateClient();
List<IWidget> deletedWidgets = new ArrayList<>();
List<IWidget> deletedWidgets = null;
for (IWidget widget : getWidgets()) {
if (widget.hasAttribute(WidgetAttribute.NEEDS_DELETION)) {
if (deletedWidgets == null) {
deletedWidgets = new ArrayList<>();
}
deletedWidgets.add(widget);
} else {
widget.updateClient();
}
}
for (IWidget widget : deletedWidgets) {
deleteChild(widget);
if (deletedWidgets != null) {
for (IWidget widget : deletedWidgets) {
deleteChild(widget);
}
}
}
@@ -201,22 +201,22 @@ public class ContainerCraftGUI extends Container {
Slot shiftClickedSlot = inventorySlots.get(index);
ItemStack itemstack = null;
if (shiftClickedSlot.getHasStack()) {
itemstack = shiftClickedSlot.getStack().copy();
itemstack = shiftClickedSlot.getStack();
}
IInventory playerInventory = player.inventory;
IInventory entityInventory = window.getInventory();
IInventory windowInventory = window.getWindowInventory();
IInventory fromPlayer = (entityInventory == null) ? windowInventory : entityInventory;
int[] target = new int[36];
for (int i = 0; i < target.length; ++i) {
target[i] = i;
}
TransferRequest request;
if (shiftClickedSlot.inventory == playerInventory) {
request = new TransferRequest(itemstack, fromPlayer).setOrigin(shiftClickedSlot.inventory);
} else {
int[] target = new int[36];
for (int i = 0; i < target.length; ++i) {
target[i] = i;
}
request = new TransferRequest(itemstack, playerInventory).setOrigin(shiftClickedSlot.inventory)
.setTargetSlots(target);
}
@@ -234,7 +234,7 @@ public class ContainerCraftGUI extends Container {
ItemStack heldItem = player.inventory.getItemStack().copy();
IInventory entityInventory = window.getInventory();
heldItem = new TransferRequest(heldItem, entityInventory).setOrigin(player.inventory).setTargetSlots(new int[0])
.setTargetTanks(new int[] { slotID }).transfer(true);
.setTargetTanks(new int[] { slotID }).dropOverflow(player).transfer(true);
player.inventory.setItemStack(heldItem);
@@ -246,7 +246,14 @@ public class ContainerCraftGUI extends Container {
}
public void handleNBT(Side side, EntityPlayer player, NBTTagCompound action) {
if (handleNBTAction(side, player, action)) {
sendContainerContents();
}
}
private boolean handleNBTAction(Side side, EntityPlayer player, NBTTagCompound action) {
final String actionType = action.getString(ACTION_TYPE);
boolean slotRegistered = false;
if (side == Side.SERVER) {
switch (actionType) {
@@ -256,11 +263,7 @@ public class ContainerCraftGUI extends Container {
final int slotIndex = action.getShort(SLOT_INDEX);
final int slotNumber = action.getShort(SLOT_NUMBER);
createSlot(InventoryType.values()[slotType % 4], slotIndex, slotNumber);
for (ICrafting crafterObject : crafters) {
crafterObject.sendContainerAndContentsToPlayer(this, getInventory());
}
slotRegistered = createSlot(InventoryType.values()[slotType % 4], slotIndex, slotNumber);
}
}
}
@@ -275,6 +278,7 @@ public class ContainerCraftGUI extends Container {
if (actionType.contains(TANK_UPDATE)) onTankUpdate(action);
}
}
return slotRegistered;
}
@Override
@@ -307,8 +311,7 @@ public class ContainerCraftGUI extends Container {
if (machineSync != null) machineSync.sendGuiNBT(syncedNBT);
Map<String, NBTTagCompound> sentThisTime = new HashMap<>();
NBTTagList actions = new NBTTagList();
NBTTagList actions = null;
for (Map.Entry<String, NBTTagCompound> entry : syncedNBT.entrySet()) {
final String actionType = entry.getKey();
@@ -319,10 +322,16 @@ public class ContainerCraftGUI extends Container {
if (action.equals(actionPrev)) continue;
if (actions == null) {
actions = new NBTTagList();
}
actions.appendTag(action);
sentThisTime.put(actionType, action);
sentNBT.put(actionType, action);
}
syncedNBT.clear();
if (actions == null) return;
NBTTagCompound actionsBatch = new NBTTagCompound();
actionsBatch.setString(ACTION_TYPE, ACTION_BATCH);
actionsBatch.setTag(ACTIONS, actions);
@@ -333,9 +342,6 @@ public class ContainerCraftGUI extends Container {
BinnieCore.proxy.sendToPlayer(packet, playerMP);
}
}
sentNBT.putAll(sentThisTime);
syncedNBT.clear();
}
private NBTTagCompound createErrorNBT(IErrorStateSource error) {
@@ -486,19 +492,34 @@ public class ContainerCraftGUI extends Container {
}
public void receiveNBT(Side side, EntityPlayer player, NBTTagCompound action) {
if (receiveNBTAction(side, player, action)) {
sendContainerContents();
}
}
private boolean receiveNBTAction(Side side, EntityPlayer player, NBTTagCompound action) {
String actionType = action.getString(ACTION_TYPE);
if (actionType.equals(ACTION_BATCH)) {
boolean slotRegistered = false;
NBTTagList actionsBatch = action.getTagList(ACTIONS, TAG_COMPOUND);
for (int i = 0; i < actionsBatch.tagCount(); i++) {
receiveNBT(side, player, actionsBatch.getCompoundTagAt(i));
slotRegistered |= receiveNBTAction(side, player, actionsBatch.getCompoundTagAt(i));
}
return;
return slotRegistered;
}
handleNBT(side, player, action);
boolean slotRegistered = handleNBTAction(side, player, action);
window.receiveGuiNBT(getSide(), player, actionType, action);
INetwork.ReceiveGuiNBT machine = Machine.getInterface(INetwork.ReceiveGuiNBT.class, window.getInventory());
if (machine == null) return;
machine.receiveGuiNBT(getSide(), player, actionType, action);
if (machine != null) {
machine.receiveGuiNBT(getSide(), player, actionType, action);
}
return slotRegistered;
}
private void sendContainerContents() {
for (ICrafting crafter : crafters) {
crafter.sendContainerAndContentsToPlayer(this, getInventory());
}
}
public Slot getOrCreateSlot(InventoryType inventoryType, int slotIndex) {
@@ -522,13 +543,15 @@ public class ContainerCraftGUI extends Container {
};
}
private void createSlot(InventoryType type, int index, int slotNumber) {
if (inventorySlots.get(slotNumber) != null) return;
private boolean createSlot(InventoryType type, int index, int slotNumber) {
if (inventorySlots.get(slotNumber) != null) return false;
IInventory inventory = getInventory(type);
Slot slot = new CustomSlot(inventory, index);
slot.slotNumber = slotNumber;
inventorySlots.add(slotNumber, slot);
inventoryItemStacks.add(slotNumber, null);
ItemStack stack = slot.getStack();
inventoryItemStacks.add(slotNumber, stack == null ? null : stack.copy());
return true;
}
}
@@ -90,6 +90,7 @@ public class GuiCraftGUI extends GuiContainer {
zLevel = 10.0f;
GuiScreen.itemRender.zLevel = zLevel;
GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT);
window.render();
RenderHelper.enableGUIStandardItemLighting();
@@ -102,7 +103,7 @@ public class GuiCraftGUI extends GuiContainer {
InventoryPlayer playerInventory = mc.thePlayer.inventory;
draggedItem = playerInventory.getItemStack();
if (draggedItem != null) {
renderItem(new IPoint(mouseX - 8, mouseY - 8), draggedItem, false);
GL11.glTranslatef(0.0f, 0.0f, 200.0f);
renderItem(new IPoint(mouseX - 8, mouseY - 8), draggedItem, false);
}
GL11.glDisable(32826); // GL_RESCALE_NORMAL_EXT
@@ -116,7 +117,6 @@ public class GuiCraftGUI extends GuiContainer {
} else {
tooltip.setType(Tooltip.Type.STANDARD);
window.getTooltip(tooltip);
NEIHook.renderToolTips(mouseX, mouseY);
}
if (tooltip.exists()) {
@@ -448,7 +448,6 @@ public class GuiCraftGUI extends GuiContainer {
}
GuiScreen.itemRender.renderItemOverlayIntoGUI(font, mc.renderEngine, item, (int) pos.x(), (int) pos.y(), null);
GL11.glClear(256);
RenderHelper.disableStandardItemLighting();
GL11.glPopAttrib();
}
@@ -10,6 +10,7 @@ import java.util.Map;
class ListMap<T> implements List<T> {
private final LinkedHashMap<Integer, T> map;
private int size;
ListMap() {
map = new LinkedHashMap<>();
@@ -17,13 +18,7 @@ class ListMap<T> implements List<T> {
@Override
public int size() {
int i = -1;
for (int k : map.keySet()) {
if (k > i) {
i = k;
}
}
return i + 1;
return size;
}
@Override
@@ -93,6 +88,7 @@ class ListMap<T> implements List<T> {
@Override
public void clear() {
map.clear();
size = 0;
}
@Override
@@ -103,12 +99,14 @@ class ListMap<T> implements List<T> {
@Override
public T set(int index, T element) {
map.put(index, element);
size = Math.max(size, index + 1);
return element;
}
@Override
public void add(int index, T element) {
map.put(index, element);
size = Math.max(size, index + 1);
}
@Override
@@ -25,7 +25,7 @@ public class ManagerLiquid extends ManagerBase {
}
private static boolean isExternalFluid(String identifier) {
return EXTERNAL_FLUIDS.contains(identifier) && Loader.isModLoaded("gregtech");
return EXTERNAL_FLUIDS.contains(identifier) && Loader.isModLoaded("gregtech_nh");
}
public Map<String, IFluidType> fluids;
@@ -5,6 +5,7 @@ import java.util.List;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.ForgeDirection;
@@ -152,7 +153,8 @@ public class ComponentPowerReceptor extends MachineComponent
}
private void addToEnergyNet() {
if (getMachine().getWorld() == null) {
World world = getMachine().getWorld();
if (world == null || world.isRemote) {
return;
}
if (Mods.ic2.active()) {
@@ -161,7 +163,8 @@ public class ComponentPowerReceptor extends MachineComponent
}
private void removeFromEnergyNet() {
if (getMachine().getWorld() == null) {
World world = getMachine().getWorld();
if (world == null || world.isRemote) {
return;
}
if (Mods.ic2.active()) {
@@ -17,6 +17,7 @@ class ComponentCompartmentInventory extends ComponentInventorySlots implements I
private final int numberOfTabs;
private final int slotsPerPage;
private final Map<Integer, CompartmentTab> tabs;
private NBTTagCompound cachedGuiNBT;
public ComponentCompartmentInventory(IMachine machine, int sections) {
this(machine, sections, 4);
@@ -51,21 +52,24 @@ class ComponentCompartmentInventory extends ComponentInventorySlots implements I
public CompartmentTab getTab(int i) {
if (!tabs.containsKey(i)) {
tabs.put(i, new CompartmentTab(i));
cachedGuiNBT = null;
}
return tabs.get(i);
}
@Override
public void sendGuiNBT(Map<String, NBTTagCompound> nbts) {
NBTTagList list = new NBTTagList();
for (int i = 0; i < numberOfTabs; ++i) {
NBTTagCompound nbt2 = new NBTTagCompound();
getTab(i).writeToNBT(nbt2);
list.appendTag(nbt2);
if (cachedGuiNBT == null) {
NBTTagList list = new NBTTagList();
for (int i = 0; i < numberOfTabs; ++i) {
NBTTagCompound tabNBT = new NBTTagCompound();
getTab(i).writeToNBT(tabNBT);
list.appendTag(tabNBT);
}
cachedGuiNBT = new NBTTagCompound();
cachedGuiNBT.setTag("tabs", list);
}
NBTTagCompound tag = new NBTTagCompound();
tag.setTag("tabs", list);
nbts.put("comp-tabs", tag);
nbts.put("comp-tabs", cachedGuiNBT);
}
@Override
@@ -78,11 +82,13 @@ class ComponentCompartmentInventory extends ComponentInventorySlots implements I
tab.readFromNBT(tag);
tabs.put(tab.getId(), tab);
}
cachedGuiNBT = null;
}
if (name.equals("comp-change-tab")) {
CompartmentTab tab2 = new CompartmentTab(0);
tab2.readFromNBT(nbt);
tabs.put(tab2.getId(), tab2);
cachedGuiNBT = null;
getMachine().getTileEntity().markDirty();
}
}
@@ -97,6 +103,7 @@ class ComponentCompartmentInventory extends ComponentInventorySlots implements I
tab.readFromNBT(tag);
tabs.put(tab.getId(), tab);
}
cachedGuiNBT = null;
}
@Override
@@ -173,6 +173,7 @@ public class WindowCompartment extends WindowMachine implements IWindowAffectsSh
}
CraftGUIUtil.linkWidgets(tab, compartmentPages);
int i = 0;
final NBTTagList actions = new NBTTagList();
for (int p2 = 0; p2 < inv.getTabNumber(); ++p2) {
ControlPage thisPage = page[p2];
Panel panel = new Panel(thisPage, 0.0f, 0.0f, thisPage.w(), thisPage.h(), MinecraftGUI.PanelType.Black) {
@@ -191,11 +192,10 @@ public class WindowCompartment extends WindowMachine implements IWindowAffectsSh
slotsIDs[k] = i++;
}
final NBTTagList actions = new NBTTagList();
new ControlSlotArray(thisPage, 8, 8, inv.getPageSize() / 5, 5)
.create(actions, InventoryType.Machine, slotsIDs);
MessageCraftGUI.sendToServer(actions);
}
MessageCraftGUI.sendToServer(actions);
x += compartmentPageWidth;
if (tabs2.length > 0) {
ControlTabBar<Integer> tab2 = new ControlTabBar<Integer>(
@@ -3,6 +3,7 @@ package binnie.core.machines.transfer;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidContainerRegistry;
@@ -25,23 +26,20 @@ public class TransferRequest {
private int[] targetTanks;
private boolean transferLiquids;
private boolean ignoreReadOnly;
private final List<TransferSlot> insertedSlots;
private final List<Integer> insertedTanks;
private EntityPlayer overflowPlayer;
private List<TransferSlot> insertedSlots;
private List<Integer> insertedTanks;
public TransferRequest(ItemStack toTransfer, IInventory destination) {
itemToTransfer = null;
returnItem = null;
targetSlots = new int[0];
targetSlots = null;
targetTanks = new int[0];
transferLiquids = true;
ignoreReadOnly = false;
insertedSlots = new ArrayList<>();
insertedTanks = new ArrayList<>();
int[] target = new int[destination.getSizeInventory()];
for (int i = 0; i < target.length; ++i) {
target[i] = i;
}
overflowPlayer = null;
insertedSlots = null;
insertedTanks = null;
int[] targetTanks = new int[0];
if (destination instanceof ITankMachine) {
@@ -58,7 +56,6 @@ public class TransferRequest {
setOrigin(null);
setDestination(destination);
setTargetSlots(target);
setTargetTanks(targetTanks);
transferLiquids = true;
}
@@ -95,59 +92,71 @@ public class TransferRequest {
return this;
}
public TransferRequest dropOverflow(EntityPlayer player) {
overflowPlayer = player;
return this;
}
public ItemStack getReturnItem() {
return returnItem;
}
public ItemStack transfer(boolean doAdd) {
ItemStack item = returnItem;
ItemStack item = doAdd || returnItem == null ? returnItem : returnItem.copy();
if (item == null || destination == null) {
return null;
}
if (transferLiquids && destination instanceof ITankMachine) {
for (int tankID : targetTanks) {
ItemStack itemBeforeTransfer = item.copy();
item = transferToTank(item, origin, (ITankMachine) destination, tankID, doAdd);
if (item != null) {
item = transferFromTank(item, origin, (ITankMachine) destination, tankID, doAdd);
if (item == null || !ItemStack.areItemStacksEqual(item, itemBeforeTransfer)) {
break;
}
item = transferFromTank(item, origin, (ITankMachine) destination, tankID, doAdd);
if (item == null || !ItemStack.areItemStacksEqual(item, itemBeforeTransfer)) {
break;
}
}
}
// TODO simplify
if (item != null) {
for (int slot : targetSlots) {
int[] slots = getTargetSlots();
for (int slot : slots) {
if (destination.isItemValidForSlot(slot, item) || ignoreReadOnly) {
if (!(destination instanceof IInventorySlots)
|| ((IInventorySlots) destination).getSlot(slot) == null
|| !((IInventorySlots) destination).getSlot(slot).isRecipe()) {
if (destination.getStackInSlot(slot) != null) {
if (item.isStackable() && destination.getInventoryStackLimit() > 1) {
ItemStack merged = destination.getStackInSlot(slot).copy();
ItemStack[] newStacks = mergeStacks(item.copy(), merged.copy());
item = newStacks[0];
if (!areItemsEqual(merged, newStacks[1])) {
insertedSlots.add(new TransferSlot(slot, destination));
}
ItemStack merged = destination.getStackInSlot(slot);
if (merged != null && item.isStackable()
&& destination.getInventoryStackLimit() > 1
&& areItemsEqual(item, merged)) {
int amount = Math.min(item.stackSize, merged.getMaxStackSize() - merged.stackSize);
if (amount > 0) {
getInsertedSlots().add(new TransferSlot(slot, destination));
if (doAdd) {
destination.setInventorySlotContents(slot, newStacks[1]);
}
if (item == null) {
return null;
ItemStack newStack = merged.copy();
newStack.stackSize += amount;
destination.setInventorySlotContents(slot, newStack);
}
item.stackSize -= amount;
if (item.stackSize <= 0) return null;
}
}
}
}
}
for (int slot : targetSlots) {
for (int slot : slots) {
if (destination.isItemValidForSlot(slot, item) || ignoreReadOnly) {
if (!(destination instanceof IInventorySlots)
|| ((IInventorySlots) destination).getSlot(slot) == null
|| !((IInventorySlots) destination).getSlot(slot).isRecipe()) {
if (destination.getStackInSlot(slot) == null) {
insertedSlots.add(new TransferSlot(slot, destination));
getInsertedSlots().add(new TransferSlot(slot, destination));
if (doAdd) {
ItemStack movedStack = item.copy();
if (movedStack.stackSize > destination.getInventoryStackLimit()) {
@@ -200,11 +209,13 @@ public class TransferRequest {
private ItemStack transferToTankUsingFluidContainer(ItemStack item, IInventory origin, ITankMachine destination,
int tankID, boolean doAdd) {
if (item == null || !(item.getItem() instanceof IFluidContainerItem fluidContainer)) {
if (item == null || origin == null || !(item.getItem() instanceof IFluidContainerItem fluidContainer)) {
return item;
}
FluidStack fluid = fluidContainer.getFluid(item);
ItemStack singleContainer = item.copy();
singleContainer.stackSize = 1;
FluidStack fluid = fluidContainer.getFluid(singleContainer);
if (fluid == null) {
return item;
}
@@ -216,11 +227,22 @@ public class TransferRequest {
}
int maxFill = tank.fill(fluid, false);
FluidStack toTake = fluidContainer.drain(item, maxFill, true);
FluidStack toTake = fluidContainer.drain(singleContainer, maxFill, true);
if (toTake == null || toTake.amount <= 0) {
return item;
}
TransferRequest containerDump = createContainerDump(singleContainer, origin);
boolean dropContainer = containerDump.transfer(false) != null;
if (dropContainer && overflowPlayer == null) {
return item;
}
if (doAdd) {
tank.fill(toTake, true);
dumpContainer(singleContainer, containerDump, dropContainer);
}
return item;
return removeSingleContainer(item);
}
private ItemStack transferToTankUsingContainerData(ItemStack item, IInventory origin, ITankMachine destination,
@@ -305,24 +327,69 @@ public class TransferRequest {
private ItemStack transferFromTankUsingFluidContainer(ItemStack item, IInventory origin, ITankMachine destination,
int tankID, boolean doAdd) {
if (item == null || !(item.getItem() instanceof IFluidContainerItem fluidContainer)) {
if (item == null || origin == null || !(item.getItem() instanceof IFluidContainerItem fluidContainer)) {
return item;
}
ItemStack singleContainer = item.copy();
singleContainer.stackSize = 1;
IFluidTank tank = destination.getTanks()[tankID];
FluidStack fluid = tank.getFluid();
if (fluid == null) {
return item;
}
int amount = fluidContainer.fill(item, fluid, false);
amount = Math.min(amount, (tank.drain(amount, false) == null) ? 0 : tank.drain(amount, false).amount);
if (amount <= 0) {
int amount = fluidContainer.fill(singleContainer, fluid, false);
FluidStack drained = tank.drain(amount, false);
if (drained == null || drained.amount <= 0) {
return item;
}
fluidContainer.fill(item, tank.drain(amount, doAdd), doAdd);
return item;
int amountFilled = fluidContainer.fill(singleContainer, drained, true);
if (amountFilled <= 0) {
return item;
}
TransferRequest containerDump = createContainerDump(singleContainer, origin);
boolean dropContainer = containerDump.transfer(false) != null;
if (dropContainer && overflowPlayer == null) {
return item;
}
if (doAdd) {
tank.drain(amountFilled, true);
dumpContainer(singleContainer, containerDump, dropContainer);
}
return removeSingleContainer(item);
}
private TransferRequest createContainerDump(ItemStack container, IInventory origin) {
TransferRequest containerDump = new TransferRequest(container, origin).setTargetTanks(new int[0]);
if (overflowPlayer != null && origin == overflowPlayer.inventory) {
int[] mainInventorySlots = new int[overflowPlayer.inventory.mainInventory.length];
for (int i = 0; i < mainInventorySlots.length; ++i) {
mainInventorySlots[i] = i;
}
containerDump.setTargetSlots(mainInventorySlots);
}
return containerDump;
}
private void dumpContainer(ItemStack container, TransferRequest containerDump, boolean dropContainer) {
if (dropContainer) {
overflowPlayer.dropPlayerItemWithRandomChoice(container.copy(), false);
} else {
containerDump.transfer(true);
}
}
private static ItemStack removeSingleContainer(ItemStack item) {
if (item.stackSize <= 1) {
return null;
}
ItemStack leftover = item.copy();
--leftover.stackSize;
return leftover;
}
private ItemStack transferFromTankUsingContainerData(ItemStack item, IInventory origin, ITankMachine destination,
@@ -399,10 +466,16 @@ public class TransferRequest {
}
public List<TransferSlot> getInsertedSlots() {
if (insertedSlots == null) {
insertedSlots = new ArrayList<>();
}
return insertedSlots;
}
public List<Integer> getInsertedTanks() {
if (insertedTanks == null) {
insertedTanks = new ArrayList<>();
}
return insertedTanks;
}
@@ -419,6 +492,12 @@ public class TransferRequest {
}
public int[] getTargetSlots() {
if (targetSlots == null) {
targetSlots = new int[destination.getSizeInventory()];
for (int i = 0; i < targetSlots.length; ++i) {
targetSlots[i] = i;
}
}
return targetSlots;
}
@@ -58,7 +58,7 @@ public interface ILogType {
Rosewood("rosewood", 0x998666, PlankType.ExtraTreePlanks.Rosewood),
Purpleheart("purpleheart", 0x9392a2, PlankType.ExtraTreePlanks.Purpleheart),
Iroko("iroko", 0x605c5b, PlankType.ExtraTreePlanks.Iroko),
Gingko("gingko", 0xadae9c, PlankType.ExtraTreePlanks.Gingko),
Ginkgo("ginkgo", 0xadae9c, PlankType.ExtraTreePlanks.Ginkgo),
Eucalyptus("eucalyptus", 0xeadeda, PlankType.ExtraTreePlanks.Eucalyptus),
Eucalyptus2("eucalyptus", 0x867e65, PlankType.ExtraTreePlanks.Eucalyptus),
Box("box", 0xab6f57, PlankType.ExtraTreePlanks.Box),
@@ -67,7 +67,7 @@ public class PlankType {
Olive(0xb0ad88),
Sweetgum(0xd59658),
Rosewood(0x761500),
Gingko(0xf4e7ba),
Ginkgo(0xf4e7ba),
PinkIvory(0xec8ca0);
/**
@@ -69,7 +69,7 @@ public enum ExtraTreeFruitGene implements IAlleleFruit, IFruitProvider {
Acorn(6, 0x72b226, 0xad6a1d, FruitSprite.Tiny),
Elderberry(9, 0x71975d, 0x515b43, FruitSprite.Tiny),
Olive(9, 0x879e35, 0x62572a, FruitSprite.Small),
GingkoNut(7, 0x8c975b, 0xe5daad, FruitSprite.Tiny),
GinkgoNut(7, 0x8c975b, 0xe5daad, FruitSprite.Tiny),
Coffee(8, 0x716d1d, 0xf84f66, FruitSprite.Tiny),
Pear(10, 0x9f8f51, 0x9fd551, FruitSprite.Pear),
OsangeOsange(10, 0x979752, 0xa2bf27, FruitSprite.Larger),
@@ -205,8 +205,8 @@ public enum ExtraTreeFruitGene implements IAlleleFruit, IFruitProvider {
ExtraTreeFruitGene.Elderberry.setFamily(familyPrune);
ExtraTreeFruitGene.Olive.addProduct(Food.Olive.get(1), 1.0f);
ExtraTreeFruitGene.Olive.setFamily(familyPrune);
ExtraTreeFruitGene.GingkoNut.addProduct(Food.GingkoNut.get(1), 1.0f);
ExtraTreeFruitGene.GingkoNut.setFamily(familyNuts);
ExtraTreeFruitGene.GinkgoNut.addProduct(Food.GinkgoNut.get(1), 1.0f);
ExtraTreeFruitGene.GinkgoNut.setFamily(familyNuts);
ExtraTreeFruitGene.Coffee.addProduct(Food.Coffee.get(1), 1.0f);
ExtraTreeFruitGene.Coffee.setFamily(familyJungle);
ExtraTreeFruitGene.Pear.addProduct(Food.Pear.get(1), 1.0f);
@@ -125,7 +125,7 @@ public class ExtraTreeMutation implements ITreeMutation {
new ExtraTreeMutation(ExtraTreeSpecies.Brazilwood, getVanilla("Kapok"), ExtraTreeSpecies.Purpleheart, 10);
new ExtraTreeMutation(getVanilla("Ebony"), getVanilla("Teak"), ExtraTreeSpecies.Rosewood, 10);
new ExtraTreeMutation(ExtraTreeSpecies.Rosewood, getVanilla("Kapok"), ExtraTreeSpecies.Logwood, 10);
new ExtraTreeMutation(getVanilla("Wenge"), getVanilla("Lime"), ExtraTreeSpecies.Gingko, 10);
new ExtraTreeMutation(getVanilla("Wenge"), getVanilla("Lime"), ExtraTreeSpecies.Ginkgo, 10);
new ExtraTreeMutation(ExtraTreeSpecies.Beech, getVanilla("Jungle"), ExtraTreeSpecies.Brazilnut, 10);
new ExtraTreeMutation(getVanilla("Balsa"), getVanilla("Jungle"), ExtraTreeSpecies.RoseGum, 10);
new ExtraTreeMutation(ExtraTreeSpecies.RoseGum, getVanilla("Mahogony"), ExtraTreeSpecies.SwampGum, 10);
@@ -165,8 +165,8 @@ public class ExtraTreeMutation implements ITreeMutation {
new ExtraTreeMutation(ExtraTreeSpecies.Allspice, ExtraTreeSpecies.Clove, ExtraTreeSpecies.StarAnise, 10);
new ExtraTreeMutation(getVanilla("Jungle"), ExtraTreeSpecies.Orange, ExtraTreeSpecies.Mango, 10);
new ExtraTreeMutation(ExtraTreeSpecies.StarAnise, ExtraTreeSpecies.Mango, ExtraTreeSpecies.Starfruit, 10);
new ExtraTreeMutation(ExtraTreeSpecies.Hazel, ExtraTreeSpecies.Gingko, ExtraTreeSpecies.Candlenut, 10);
new ExtraTreeMutation(ExtraTreeSpecies.Hazel, ExtraTreeSpecies.Gingko, ExtraTreeSpecies.Chilli, 10);
new ExtraTreeMutation(ExtraTreeSpecies.Hazel, ExtraTreeSpecies.Ginkgo, ExtraTreeSpecies.Candlenut, 10);
new ExtraTreeMutation(ExtraTreeSpecies.Hazel, ExtraTreeSpecies.Ginkgo, ExtraTreeSpecies.Chilli, 10);
new ExtraTreeMutation(ExtraTreeSpecies.Hazel, ExtraTreeSpecies.Alder, ExtraTreeSpecies.DwarfHazel, 10);
}
@@ -187,7 +187,7 @@ public enum ExtraTreeSpecies implements IAlleleTreeSpecies, IIconProvider, IGerm
Rosewood("dalbergia", "latifolia", 0x879b22, ILogType.ExtraTreeLog.Rosewood, null, WorldGenRosewood.class),
Purpleheart("peltogyne", "spp.", 0x778f55, ILogType.ExtraTreeLog.Purpleheart, null, WorldGenPurpleheart.class),
Iroko("milicia", "excelsa", 0xafc86c, ILogType.ExtraTreeLog.Iroko, null, WorldGenIroko.class),
Gingko("ginkgo", "biloba", 0x719651, ILogType.ExtraTreeLog.Gingko, ExtraTreeFruitGene.GingkoNut,
Ginkgo("ginkgo", "biloba", 0x719651, ILogType.ExtraTreeLog.Ginkgo, ExtraTreeFruitGene.GinkgoNut,
WorldGenGingko.class),
Brazilnut("bertholletia", "excelsa", 0x7c8f7b, ILogType.VanillaLog.Jungle, ExtraTreeFruitGene.BrazilNut,
WorldGenBrazilNut.class),
@@ -548,7 +548,7 @@ public enum ExtraTreeSpecies implements IAlleleTreeSpecies, IIconProvider, IGerm
ExtraTreeSpecies.Iroko.addFamily(familyNuts).addFamily(familyJungle).setHeight(EnumAllele.Height.AVERAGE)
.setFertility(EnumAllele.Saplings.LOW);
ExtraTreeSpecies.Gingko.addFamily(familyNuts).addFamily(familyJungle).setLeafType(LeafType.JUNGLE)
ExtraTreeSpecies.Ginkgo.addFamily(familyNuts).addFamily(familyJungle).setLeafType(LeafType.JUNGLE)
.setHeight(EnumAllele.Height.LARGE).setYield(EnumAllele.Yield.LOWER)
.setSappiness(EnumAllele.Sappiness.LOW);
@@ -54,7 +54,7 @@ public enum Food implements IItemMisc {
Acorn(0),
Elderberry(1),
Olive(1),
GingkoNut(1),
GinkgoNut(1),
Coffee(0),
OsangeOrange(1),
Clove(0),
@@ -129,7 +129,7 @@ public enum Food implements IItemMisc {
Food.Acorn.ore("Acorn");
Food.Elderberry.ore("Elderberry");
Food.Olive.ore("Olive");
Food.GingkoNut.ore("GingkoNut");
Food.GinkgoNut.ore("GinkgoNut");
Food.Coffee.ore("Coffee");
Food.OsangeOrange.ore("OsangeOrange");
Food.Clove.ore("Clove");
Loaded 100 of 113 files, more files were not shown because too many files have changed in this diff. Show more