Bump to 1.4.12; updated Forge, dependencies and mappings; removed Cyclops support
This commit is contained in:
@@ -1,5 +1,10 @@
|
||||
# Refined Storage Changelog
|
||||
|
||||
### 1.4.12
|
||||
- Updated Forge to 2315 (raoulvdberge)
|
||||
- Updated JEI to 4.5.0 (raoulvdberge)
|
||||
- Removed Collosal Chests integration (raoulvdberge)
|
||||
|
||||
### 1.4.11
|
||||
- Removed debug log configuration option, as it's no longer needed (raoulvdberge)
|
||||
- Removed "autocraft on redstone signal" option in the Crafter, use an External Storage in combination with an Interface with the Crafting Upgrade instead (raoulvdberge)
|
||||
|
21
build.gradle
21
build.gradle
@@ -20,7 +20,7 @@ apply plugin: 'maven'
|
||||
apply plugin: 'maven-publish'
|
||||
apply plugin: 'net.minecraftforge.gradle.forge'
|
||||
|
||||
version = "1.4.11"
|
||||
version = "1.4.12"
|
||||
group = "refinedstorage"
|
||||
archivesBaseName = "refinedstorage"
|
||||
|
||||
@@ -28,10 +28,10 @@ sourceCompatibility = 1.8
|
||||
targetCompatibility = 1.8
|
||||
|
||||
minecraft {
|
||||
version = "1.11.2-13.20.0.2296"
|
||||
version = "1.11.2-13.20.0.2315"
|
||||
runDir = "run"
|
||||
useDepAts = true
|
||||
mappings = "snapshot_20170401"
|
||||
mappings = "snapshot_20170609"
|
||||
}
|
||||
|
||||
repositories {
|
||||
@@ -45,23 +45,16 @@ repositories {
|
||||
url "http://maven.amadornes.com"
|
||||
}
|
||||
maven {
|
||||
name "Cyclops Repo"
|
||||
url "https://dl.bintray.com/cyclopsmc/dev/"
|
||||
}
|
||||
maven {
|
||||
name "oc"
|
||||
url "http://maven.cil.li/"
|
||||
url "http://maven.cil.li"
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
deobfCompile "mezz.jei:jei_1.11.2:4.3.4.273:api"
|
||||
runtime "mezz.jei:jei_1.11.2:4.3.4.273"
|
||||
deobfCompile "mezz.jei:jei_1.11.2:4.5.0.287:api"
|
||||
runtime "mezz.jei:jei_1.11.2:4.5.0.287"
|
||||
deobfCompile "net.darkhax.tesla:Tesla:1.11-1.3.0.52"
|
||||
deobfCompile "org.cyclops.cyclopscore:CyclopsCore:1.11.2-0.10.2-542"
|
||||
deobfCompile "org.cyclops.commoncapabilities:CommonCapabilities:1.11.2-1.3.2-107"
|
||||
deobfCompile "MCMultiPart2:MCMultiPart-exp:2.0.0_19"
|
||||
deobfCompile "li.cil.oc:OpenComputers:MC1.11.2-1.7.0.14:api"
|
||||
deobfCompile "li.cil.oc:OpenComputers:MC1.11.2-1.7.0.28:api"
|
||||
}
|
||||
|
||||
processResources {
|
||||
|
@@ -22,8 +22,8 @@ public final class RS {
|
||||
}
|
||||
|
||||
public static final String ID = "refinedstorage";
|
||||
public static final String VERSION = "1.4.11";
|
||||
public static final String DEPENDENCIES = "required-after:forge@[13.19.1.2188,);after:commoncapabilities@[1.3.1,);after:jei@[4.3.0,);";
|
||||
public static final String VERSION = "1.4.12";
|
||||
public static final String DEPENDENCIES = "required-after:forge@[13.19.1.2188,);after:jei@[4.5.0,);";
|
||||
public static final String GUI_FACTORY = "com.raoulvdberge.refinedstorage.gui.config.ModGuiFactory";
|
||||
public static final String UPDATE_JSON = "https://refinedstorage.raoulvdberge.com/update";
|
||||
|
||||
|
@@ -324,7 +324,7 @@ public final class RSUtils {
|
||||
}
|
||||
}
|
||||
|
||||
public static IItemHandler getItemHandler(TileEntity tile, EnumFacing side) {
|
||||
public static IItemHandler getItemHandler(@Nullable TileEntity tile, EnumFacing side) {
|
||||
if (tile == null) {
|
||||
return null;
|
||||
}
|
||||
@@ -429,7 +429,7 @@ public final class RSUtils {
|
||||
Vec3d lookVec = player.getLookVec();
|
||||
Vec3d start = getStart(player);
|
||||
|
||||
return start.addVector(lookVec.xCoord * reachDistance, lookVec.yCoord * reachDistance, lookVec.zCoord * reachDistance);
|
||||
return start.addVector(lookVec.x * reachDistance, lookVec.y * reachDistance, lookVec.z * reachDistance);
|
||||
}
|
||||
|
||||
public static AdvancedRayTraceResult collisionRayTrace(BlockPos pos, Vec3d start, Vec3d end, Collection<AxisAlignedBB> boxes) {
|
||||
|
@@ -84,7 +84,7 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
|
||||
|
||||
for (Entity entity : droppedItems) {
|
||||
if (entity instanceof EntityItem) {
|
||||
ItemStack droppedItem = ((EntityItem) entity).getEntityItem();
|
||||
ItemStack droppedItem = ((EntityItem) entity).getItem();
|
||||
|
||||
if (IFilterable.canTake(itemFilters, mode, compare, droppedItem) && network.insertItem(droppedItem, droppedItem.getCount(), true) == null) {
|
||||
network.insertItemTracked(droppedItem.copy(), droppedItem.getCount());
|
||||
|
@@ -6,8 +6,6 @@ import com.raoulvdberge.refinedstorage.RSUtils;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.integration.cyclopscore.IntegrationCyclopsCore;
|
||||
import com.raoulvdberge.refinedstorage.integration.cyclopscore.SlotlessItemHandlerHelper;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
|
||||
@@ -186,18 +184,10 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy
|
||||
if (upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) {
|
||||
network.getCraftingManager().schedule(slot, 1, compare);
|
||||
}
|
||||
} else {
|
||||
if (IntegrationCyclopsCore.isLoaded()
|
||||
&& SlotlessItemHandlerHelper.isSlotless(getFacingTile(), getDirection().getOpposite())
|
||||
&& SlotlessItemHandlerHelper.insertItem(getFacingTile(), getDirection().getOpposite(), took, true).isEmpty()) {
|
||||
took = network.extractItem(slot, upgrades.getItemInteractCount(), compare, false);
|
||||
} else if (ItemHandlerHelper.insertItem(handler, took, true).isEmpty()) {
|
||||
took = network.extractItem(slot, upgrades.getItemInteractCount(), compare, false);
|
||||
|
||||
SlotlessItemHandlerHelper.insertItem(getFacingTile(), getDirection().getOpposite(), took, false);
|
||||
} else if (ItemHandlerHelper.insertItem(handler, took, true).isEmpty()) {
|
||||
took = network.extractItem(slot, upgrades.getItemInteractCount(), compare, false);
|
||||
|
||||
ItemHandlerHelper.insertItem(handler, took, false);
|
||||
}
|
||||
ItemHandlerHelper.insertItem(handler, took, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -3,16 +3,19 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.node;
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.RSUtils;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.integration.cyclopscore.ImportingBehaviorCyclops;
|
||||
import com.raoulvdberge.refinedstorage.integration.cyclopscore.IntegrationCyclopsCore;
|
||||
import com.raoulvdberge.refinedstorage.integration.cyclopscore.SlotlessItemHandlerHelper;
|
||||
import com.raoulvdberge.refinedstorage.inventory.*;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerUpgrade;
|
||||
import com.raoulvdberge.refinedstorage.item.ItemUpgrade;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileDiskDrive;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileImporter;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
@@ -56,11 +59,34 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IFi
|
||||
}
|
||||
|
||||
if (type == IType.ITEMS) {
|
||||
IImportingBehavior behavior = ImportingBehaviorItemHandler.INSTANCE;
|
||||
if (IntegrationCyclopsCore.isLoaded() && SlotlessItemHandlerHelper.isSlotless(getFacingTile(), getDirection().getOpposite())) {
|
||||
behavior = ImportingBehaviorCyclops.INSTANCE;
|
||||
TileEntity facing = getFacingTile();
|
||||
IItemHandler handler = RSUtils.getItemHandler(facing, getDirection().getOpposite());
|
||||
|
||||
if (facing instanceof TileDiskDrive || handler == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (currentSlot >= handler.getSlots()) {
|
||||
currentSlot = 0;
|
||||
}
|
||||
|
||||
if (handler.getSlots() > 0) {
|
||||
ItemStack stack = handler.getStackInSlot(currentSlot);
|
||||
|
||||
if (stack.isEmpty() || !IFilterable.canTake(itemFilters, mode, compare, stack)) {
|
||||
currentSlot++;
|
||||
} else if (ticks % upgrades.getSpeed() == 0) {
|
||||
ItemStack result = handler.extractItem(currentSlot, upgrades.getItemInteractCount(), true);
|
||||
|
||||
if (!result.isEmpty() && network.insertItem(result, result.getCount(), true) == null) {
|
||||
network.insertItemTracked(result, result.getCount());
|
||||
|
||||
handler.extractItem(currentSlot, upgrades.getItemInteractCount(), false);
|
||||
} else {
|
||||
currentSlot++;
|
||||
}
|
||||
}
|
||||
}
|
||||
currentSlot = behavior.doImport(getFacingTile(), getDirection().getOpposite(), currentSlot, itemFilters, mode, compare, ticks, upgrades, network);
|
||||
} else if (type == IType.FLUIDS && ticks % upgrades.getSpeed() == 0) {
|
||||
IFluidHandler handler = RSUtils.getFluidHandler(getFacingTile(), getDirection().getOpposite());
|
||||
|
||||
|
@@ -11,7 +11,6 @@ import com.raoulvdberge.refinedstorage.api.storage.IStorageProvider;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiStorage;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.integration.cyclopscore.IntegrationCyclopsCore;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
|
||||
@@ -205,8 +204,6 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
|
||||
|
||||
return f instanceof IDrawer ? (IDrawer) f : null;
|
||||
}));
|
||||
} else if (IntegrationCyclopsCore.isLoaded() && StorageItemCyclops.isValid(facing, getDirection().getOpposite())) {
|
||||
itemStorages.add(new StorageItemCyclops(this));
|
||||
} else if (facing != null && !(facing.hasCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, getDirection().getOpposite()) && facing.getCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, getDirection().getOpposite()).getNode() instanceof IStorageProvider)) {
|
||||
IItemHandler itemHandler = RSUtils.getItemHandler(facing, getDirection().getOpposite());
|
||||
|
||||
|
@@ -1,126 +0,0 @@
|
||||
package com.raoulvdberge.refinedstorage.apiimpl.network.node.externalstorage;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RSUtils;
|
||||
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.AccessType;
|
||||
import com.raoulvdberge.refinedstorage.integration.cyclopscore.SlotlessItemHandlerHelper;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraftforge.items.ItemHandlerHelper;
|
||||
import org.cyclops.cyclopscore.inventory.IndexedSlotlessItemHandlerWrapper;
|
||||
import org.cyclops.cyclopscore.inventory.SimpleInventory;
|
||||
import org.cyclops.cyclopscore.tileentity.InventoryTileEntityBase;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class StorageItemCyclops extends StorageItemExternal {
|
||||
private NetworkNodeExternalStorage externalStorage;
|
||||
private EnumFacing opposite;
|
||||
private Supplier<InventoryTileEntityBase> cyclopsInv;
|
||||
private int oldInventoryHash = -1;
|
||||
|
||||
public StorageItemCyclops(NetworkNodeExternalStorage externalStorage) {
|
||||
this.externalStorage = externalStorage;
|
||||
this.opposite = externalStorage.getDirection().getOpposite();
|
||||
this.cyclopsInv = () -> {
|
||||
TileEntity f = externalStorage.getFacingTile();
|
||||
|
||||
return f instanceof InventoryTileEntityBase ? (InventoryTileEntityBase) f : null;
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void detectChanges(INetwork network) {
|
||||
InventoryTileEntityBase inv = cyclopsInv.get();
|
||||
if (inv != null) {
|
||||
int inventoryHash = inv.getInventoryHash();
|
||||
|
||||
if (inventoryHash != oldInventoryHash) {
|
||||
super.detectChanges(network);
|
||||
|
||||
oldInventoryHash = inventoryHash;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<ItemStack> getStacks() {
|
||||
return getStacks(cyclopsInv.get());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getStored() {
|
||||
return getStacks(cyclopsInv.get()).stream().mapToInt(ItemStack::getCount).sum();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPriority() {
|
||||
return this.externalStorage.getPriority();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AccessType getAccessType() {
|
||||
return this.externalStorage.getAccessType();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCapacity() {
|
||||
InventoryTileEntityBase inv = cyclopsInv.get();
|
||||
|
||||
return inv != null ? inv.getInventory().getSizeInventory() * 64 : 0;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public ItemStack insert(@Nonnull ItemStack stack, int size, boolean simulate) {
|
||||
InventoryTileEntityBase inv = cyclopsInv.get();
|
||||
|
||||
if (inv != null && IFilterable.canTake(externalStorage.getItemFilters(), externalStorage.getMode(), externalStorage.getCompare(), stack)) {
|
||||
return RSUtils.transformEmptyToNull(SlotlessItemHandlerHelper.insertItem(inv, opposite, stack, size, simulate));
|
||||
}
|
||||
|
||||
return ItemHandlerHelper.copyStackWithSize(stack, size);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public ItemStack extract(@Nonnull ItemStack stack, int size, int flags, boolean simulate) {
|
||||
InventoryTileEntityBase inv = cyclopsInv.get();
|
||||
|
||||
return inv != null ? RSUtils.transformEmptyToNull(SlotlessItemHandlerHelper.extractItem(inv, opposite, stack, size, flags, simulate)) : null;
|
||||
}
|
||||
|
||||
private Collection<ItemStack> getStacks(@Nullable InventoryTileEntityBase inv) {
|
||||
if (inv != null) {
|
||||
if (inv.getInventory() instanceof IndexedSlotlessItemHandlerWrapper.IInventoryIndexReference) {
|
||||
return ((IndexedSlotlessItemHandlerWrapper.IInventoryIndexReference) inv.getInventory())
|
||||
.getIndex()
|
||||
.values()
|
||||
.stream()
|
||||
.flatMap(m -> m.valueCollection().stream())
|
||||
.map(ItemStack::copy)
|
||||
.collect(Collectors.toList());
|
||||
} else {
|
||||
return Arrays.stream(((SimpleInventory) inv.getInventory()).getItemStacks())
|
||||
.map(ItemStack::copy)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
} else {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isValid(TileEntity facingTE, EnumFacing facing) {
|
||||
return facingTE instanceof InventoryTileEntityBase
|
||||
&& (SlotlessItemHandlerHelper.isSlotless(facingTE, facing)
|
||||
|| ((InventoryTileEntityBase) facingTE).getInventory() instanceof SimpleInventory);
|
||||
}
|
||||
}
|
@@ -207,8 +207,8 @@ public abstract class GuiBase extends GuiContainer {
|
||||
|
||||
public SideButton addSideButton(SideButton button) {
|
||||
button.id = lastButtonId++;
|
||||
button.xPosition = guiLeft + -SideButton.WIDTH - 2;
|
||||
button.yPosition = guiTop + lastSideButtonY;
|
||||
button.x = guiLeft + -SideButton.WIDTH - 2;
|
||||
button.y = guiTop + lastSideButtonY;
|
||||
|
||||
lastSideButtonY += SideButton.HEIGHT + 2;
|
||||
|
||||
|
@@ -55,7 +55,7 @@ public class GuiFilter extends GuiBase {
|
||||
|
||||
toggleMode.setWidth(fontRenderer.getStringWidth(text) + 12);
|
||||
toggleMode.displayString = text;
|
||||
toggleModFilter.xPosition = toggleMode.xPosition + toggleMode.getButtonWidth() + 4;
|
||||
toggleModFilter.x = toggleMode.x + toggleMode.getButtonWidth() + 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -31,11 +31,11 @@ public class GuiSecurityManager extends GuiBase {
|
||||
int padding = 15;
|
||||
|
||||
permissions[0] = addCheckBox(x + 7, y + 93, I18n.format("gui.refinedstorage:security_manager.permission.0"), false);
|
||||
permissions[1] = addCheckBox(permissions[0].xPosition, permissions[0].yPosition + padding, I18n.format("gui.refinedstorage:security_manager.permission.1"), false);
|
||||
permissions[2] = addCheckBox(permissions[1].xPosition, permissions[1].yPosition + padding, I18n.format("gui.refinedstorage:security_manager.permission.2"), false);
|
||||
permissions[3] = addCheckBox(permissions[0].xPosition + 90, permissions[0].yPosition, I18n.format("gui.refinedstorage:security_manager.permission.3"), false);
|
||||
permissions[4] = addCheckBox(permissions[3].xPosition, permissions[3].yPosition + padding, I18n.format("gui.refinedstorage:security_manager.permission.4"), false);
|
||||
permissions[5] = addCheckBox(permissions[4].xPosition, permissions[4].yPosition + padding, I18n.format("gui.refinedstorage:security_manager.permission.5"), false);
|
||||
permissions[1] = addCheckBox(permissions[0].x, permissions[0].y + padding, I18n.format("gui.refinedstorage:security_manager.permission.1"), false);
|
||||
permissions[2] = addCheckBox(permissions[1].x, permissions[1].y + padding, I18n.format("gui.refinedstorage:security_manager.permission.2"), false);
|
||||
permissions[3] = addCheckBox(permissions[0].x + 90, permissions[0].y, I18n.format("gui.refinedstorage:security_manager.permission.3"), false);
|
||||
permissions[4] = addCheckBox(permissions[3].x, permissions[3].y + padding, I18n.format("gui.refinedstorage:security_manager.permission.4"), false);
|
||||
permissions[5] = addCheckBox(permissions[4].x, permissions[4].y + padding, I18n.format("gui.refinedstorage:security_manager.permission.5"), false);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -74,7 +74,7 @@ public class GuiSecurityManager extends GuiBase {
|
||||
for (int i = 0; i < permissions.length; ++i) {
|
||||
GuiCheckBox permission = permissions[i];
|
||||
|
||||
if (inBounds(permission.xPosition - guiLeft, permission.yPosition - guiTop, permission.width, permission.height, mouseX, mouseY)) {
|
||||
if (inBounds(permission.x - guiLeft, permission.y - guiTop, permission.width, permission.height, mouseX, mouseY)) {
|
||||
drawTooltip(mouseX, mouseY, I18n.format("gui.refinedstorage:security_manager.permission." + i + ".tooltip"));
|
||||
}
|
||||
}
|
||||
|
@@ -139,8 +139,8 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
|
||||
|
||||
updateSearchFieldFocus(grid.getSearchBoxMode());
|
||||
} else {
|
||||
searchField.xPosition = sx;
|
||||
searchField.yPosition = sy;
|
||||
searchField.x = sx;
|
||||
searchField.y = sy;
|
||||
}
|
||||
|
||||
if (grid.getType() == GridType.PATTERN) {
|
||||
@@ -176,7 +176,7 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
|
||||
|
||||
List<Predicate<IGridStack>> filters = GridFilterParser.getFilters(
|
||||
grid,
|
||||
searchField.getText(),
|
||||
searchField != null ? searchField.getText() : "",
|
||||
(grid.getTabSelected() >= 0 && grid.getTabSelected() < grid.getTabs().size()) ? grid.getTabs().get(grid.getTabSelected()).getFilters() : grid.getFilters()
|
||||
);
|
||||
|
||||
@@ -660,7 +660,7 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
|
||||
|
||||
private void updateJEI() {
|
||||
if (IntegrationJEI.isLoaded() && (grid.getSearchBoxMode() == NetworkNodeGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED || grid.getSearchBoxMode() == NetworkNodeGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED_AUTOSELECTED)) {
|
||||
RSJEIPlugin.INSTANCE.getRuntime().getItemListOverlay().setFilterText(searchField.getText());
|
||||
RSJEIPlugin.INSTANCE.getRuntime().getIngredientFilter().setFilterText(searchField.getText());
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -26,18 +26,18 @@ public abstract class SideButton extends GuiButton {
|
||||
public void drawButton(Minecraft mc, int mouseX, int mouseY) {
|
||||
GlStateManager.enableAlpha();
|
||||
|
||||
hovered = gui.inBounds(xPosition, yPosition, width, height, mouseX, mouseY);
|
||||
hovered = gui.inBounds(x, y, width, height, mouseX, mouseY);
|
||||
|
||||
gui.bindTexture("icons.png");
|
||||
gui.drawTexture(xPosition, yPosition, 238, hovered ? 35 : 16, 18, 18);
|
||||
gui.drawTexture(x, y, 238, hovered ? 35 : 16, 18, 18);
|
||||
|
||||
drawButtonIcon(xPosition + 1, yPosition + 1);
|
||||
drawButtonIcon(x + 1, y + 1);
|
||||
|
||||
if (hovered) {
|
||||
GlStateManager.enableBlend();
|
||||
GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
GlStateManager.color(1.0f, 1.0f, 1.0f, 0.5f);
|
||||
gui.drawTexture(xPosition, yPosition, 238, 54, 18, 18);
|
||||
gui.drawTexture(x, y, 238, 54, 18, 18);
|
||||
GlStateManager.disableBlend();
|
||||
}
|
||||
}
|
||||
|
@@ -1,34 +0,0 @@
|
||||
package com.raoulvdberge.refinedstorage.integration.cyclopscore;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
||||
import com.raoulvdberge.refinedstorage.inventory.IImportingBehavior;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ImportingBehaviorItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerUpgrade;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
|
||||
public class ImportingBehaviorCyclops implements IImportingBehavior {
|
||||
public static final IImportingBehavior INSTANCE = new ImportingBehaviorCyclops();
|
||||
|
||||
@Override
|
||||
public int doImport(TileEntity entity, EnumFacing facing, int currentSlot, IItemHandler itemFilters, int mode, int compare, int ticks, ItemHandlerUpgrade upgrades, INetwork network) {
|
||||
if (IFilterable.isEmpty(itemFilters)) {
|
||||
if (ticks % upgrades.getSpeed() == 0) {
|
||||
ItemStack result = SlotlessItemHandlerHelper.extractItem(entity, facing, upgrades.getItemInteractCount(), true);
|
||||
|
||||
if (result != null && !result.isEmpty() && network.insertItem(result, result.getCount(), true) == null) {
|
||||
network.insertItemTracked(result, result.getCount());
|
||||
|
||||
SlotlessItemHandlerHelper.extractItem(entity, facing, result.copy(), upgrades.getItemInteractCount(), false);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return ImportingBehaviorItemHandler.INSTANCE.doImport(entity, facing, currentSlot, itemFilters, mode, compare, ticks, upgrades, network);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
package com.raoulvdberge.refinedstorage.integration.cyclopscore;
|
||||
|
||||
import net.minecraftforge.fml.common.Loader;
|
||||
|
||||
public final class IntegrationCyclopsCore {
|
||||
public static boolean isLoaded() {
|
||||
return Loader.isModLoaded("cyclopscore") && Loader.isModLoaded("commoncapabilities");
|
||||
}
|
||||
}
|
@@ -1,139 +0,0 @@
|
||||
package com.raoulvdberge.refinedstorage.integration.cyclopscore;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.util.Comparer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraftforge.items.ItemHandlerHelper;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
import org.cyclops.commoncapabilities.api.capability.itemhandler.ISlotlessItemHandler;
|
||||
import org.cyclops.commoncapabilities.api.capability.itemhandler.ItemMatch;
|
||||
import org.cyclops.commoncapabilities.capability.itemhandler.SlotlessItemHandlerConfig;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.Iterator;
|
||||
|
||||
public class SlotlessItemHandlerHelper {
|
||||
public static boolean isSlotless(TileEntity entity, EnumFacing facing) {
|
||||
return entity != null && entity.hasCapability(SlotlessItemHandlerConfig.CAPABILITY, facing);
|
||||
}
|
||||
|
||||
public static ISlotlessItemHandler getSlotlessHandler(TileEntity tile, EnumFacing facing) {
|
||||
return tile.getCapability(SlotlessItemHandlerConfig.CAPABILITY, facing);
|
||||
}
|
||||
|
||||
public static ItemStack insertItem(TileEntity tile, EnumFacing facing, @Nonnull ItemStack stack, boolean simulate) {
|
||||
return insertItem(getSlotlessHandler(tile, facing), stack, stack.getCount(), simulate);
|
||||
}
|
||||
|
||||
public static ItemStack insertItem(TileEntity tile, EnumFacing facing, @Nonnull ItemStack stack, int size, boolean simulate) {
|
||||
return insertItem(getSlotlessHandler(tile, facing), stack, size, simulate);
|
||||
}
|
||||
|
||||
public static ItemStack insertItem(ISlotlessItemHandler handler, @Nonnull ItemStack stack, int size, boolean simulate) {
|
||||
ItemStack remainder = handler.insertItem(ItemHandlerHelper.copyStackWithSize(stack, size), simulate);
|
||||
int remainderCount = -1;
|
||||
|
||||
while (remainder.isEmpty() && remainder.getCount() != remainderCount) {
|
||||
remainderCount = remainder.getCount();
|
||||
|
||||
remainder = handler.insertItem(remainder.copy(), simulate);
|
||||
}
|
||||
|
||||
return remainder;
|
||||
}
|
||||
|
||||
public static ItemStack extractItem(TileEntity tile, EnumFacing facing, @Nonnull ItemStack stack, int size, int flags, boolean simulate) {
|
||||
return extractItem(getSlotlessHandler(tile, facing), stack, size, flags, simulate);
|
||||
}
|
||||
|
||||
public static ItemStack extractItem(TileEntity tile, EnumFacing facing, @Nonnull ItemStack stack, int size, boolean simulate) {
|
||||
return extractItem(getSlotlessHandler(tile, facing), stack, size, simulate);
|
||||
}
|
||||
|
||||
public static ItemStack extractItem(ISlotlessItemHandler handler, @Nonnull ItemStack stack, int size, boolean simulate) {
|
||||
return extractItem(handler, stack, size, IComparer.COMPARE_DAMAGE | IComparer.COMPARE_NBT, simulate);
|
||||
}
|
||||
|
||||
public static ItemStack extractItem(ISlotlessItemHandler handler, @Nonnull ItemStack stack, int size, int flags, boolean simulate) {
|
||||
int compare = comparerFlagsToItemMatch(flags, stack.getMetadata() == OreDictionary.WILDCARD_VALUE);
|
||||
stack = ItemHandlerHelper.copyStackWithSize(stack, size);
|
||||
if ((flags & IComparer.COMPARE_STRIP_NBT) == IComparer.COMPARE_STRIP_NBT) {
|
||||
stack = Comparer.stripTags(stack);
|
||||
}
|
||||
ItemStack extracted = handler.extractItem(stack, compare, simulate);
|
||||
|
||||
if (extracted.isEmpty() && (flags & IComparer.COMPARE_OREDICT) == IComparer.COMPARE_OREDICT) {
|
||||
for (int id : OreDictionary.getOreIDs(stack)) {
|
||||
Iterator<ItemStack> itr = OreDictionary.getOres(OreDictionary.getOreName(id)).iterator();
|
||||
while (itr.hasNext() && extracted.isEmpty()) {
|
||||
ItemStack oreStack = itr.next();
|
||||
int oreCompare = ItemMatch.NBT | (oreStack.getMetadata() == OreDictionary.WILDCARD_VALUE ? 0 : ItemMatch.DAMAGE);
|
||||
extracted = handler.extractItem(oreStack, oreCompare, simulate);
|
||||
}
|
||||
if (extracted.isEmpty()) {
|
||||
// We found one. Woooo!
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (extracted.isEmpty()) {
|
||||
while (extracted.getCount() < size) {
|
||||
ItemStack extraExtract = handler.extractItem(ItemHandlerHelper.copyStackWithSize(extracted, size - extracted.getCount()), compare, simulate);
|
||||
|
||||
if (extraExtract.isEmpty()) {
|
||||
extracted.grow(extraExtract.getCount());
|
||||
} else {
|
||||
// Nothing more to extract
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return extracted;
|
||||
}
|
||||
|
||||
public static ItemStack extractItem(TileEntity tile, EnumFacing facing, int size, boolean simulate) {
|
||||
return extractItem(getSlotlessHandler(tile, facing), size, simulate);
|
||||
}
|
||||
|
||||
public static ItemStack extractItem(ISlotlessItemHandler slotlessItemHandler, int size, boolean simulate) {
|
||||
return slotlessItemHandler.extractItem(size, simulate);
|
||||
}
|
||||
|
||||
public static int comparerFlagsToItemMatch(int flags) {
|
||||
return comparerFlagsToItemMatch(flags, false);
|
||||
}
|
||||
|
||||
public static int comparerFlagsToItemMatch(int flags, boolean oredictWildcard) {
|
||||
int itemMatch = 0;
|
||||
if (!oredictWildcard) {
|
||||
if ((flags & IComparer.COMPARE_DAMAGE) == IComparer.COMPARE_DAMAGE) {
|
||||
itemMatch |= ItemMatch.DAMAGE;
|
||||
}
|
||||
if ((flags & IComparer.COMPARE_NBT) == IComparer.COMPARE_NBT) {
|
||||
itemMatch |= ItemMatch.NBT;
|
||||
}
|
||||
}
|
||||
if ((flags & IComparer.COMPARE_QUANTITY) == IComparer.COMPARE_QUANTITY) {
|
||||
itemMatch |= ItemMatch.STACKSIZE;
|
||||
}
|
||||
return itemMatch;
|
||||
}
|
||||
|
||||
public static int itemMatchToComparerFlags(int itemMatch) {
|
||||
int flags = 0;
|
||||
if ((itemMatch & ItemMatch.DAMAGE) == ItemMatch.DAMAGE) {
|
||||
flags |= IComparer.COMPARE_DAMAGE;
|
||||
}
|
||||
if ((itemMatch & ItemMatch.NBT) == ItemMatch.NBT) {
|
||||
flags |= IComparer.COMPARE_NBT;
|
||||
}
|
||||
if ((itemMatch & ItemMatch.STACKSIZE) == ItemMatch.STACKSIZE) {
|
||||
flags |= IComparer.COMPARE_QUANTITY;
|
||||
}
|
||||
return flags;
|
||||
}
|
||||
}
|
@@ -7,6 +7,7 @@ import mezz.jei.api.BlankModPlugin;
|
||||
import mezz.jei.api.IJeiRuntime;
|
||||
import mezz.jei.api.IModRegistry;
|
||||
import mezz.jei.api.JEIPlugin;
|
||||
import mezz.jei.api.recipe.IRecipeCategoryRegistration;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
@JEIPlugin
|
||||
@@ -23,19 +24,22 @@ public class RSJEIPlugin extends BlankModPlugin {
|
||||
registry.getRecipeTransferRegistry().addRecipeTransferHandler(new RecipeTransferHandlerGrid(), "minecraft.crafting");
|
||||
registry.getRecipeTransferRegistry().addRecipeTransferHandler(ContainerSolderer.class, RecipeCategorySolderer.ID, 0, 3, 8, 36);
|
||||
|
||||
registry.addRecipeCategories(new RecipeCategorySolderer(registry.getJeiHelpers().getGuiHelper()));
|
||||
|
||||
registry.handleRecipes(RecipeWrapperSolderer.class, recipe -> recipe, RecipeCategorySolderer.ID);
|
||||
|
||||
registry.addRecipes(RecipeMakerSolderer.getRecipes(registry.getJeiHelpers().getGuiHelper()), RecipeCategorySolderer.ID);
|
||||
|
||||
registry.addRecipeCategoryCraftingItem(new ItemStack(RSBlocks.SOLDERER), RecipeCategorySolderer.ID);
|
||||
registry.addRecipeCatalyst(new ItemStack(RSBlocks.SOLDERER), RecipeCategorySolderer.ID);
|
||||
|
||||
registry.addAdvancedGuiHandlers(new GuiHandlerGrid());
|
||||
|
||||
registry.addRecipeClickArea(GuiSolderer.class, 80, 36, 22, 15, RecipeCategorySolderer.ID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerCategories(IRecipeCategoryRegistration registry) {
|
||||
registry.addRecipeCategories(new RecipeCategorySolderer(registry.getJeiHelpers().getGuiHelper()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRuntimeAvailable(IJeiRuntime runtime) {
|
||||
this.runtime = runtime;
|
||||
|
@@ -31,6 +31,11 @@ public class RecipeCategorySolderer extends BlankRecipeCategory<RecipeWrapperSol
|
||||
return I18n.format("gui.refinedstorage:solderer");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getModName() {
|
||||
return I18n.format("itemGroup.refinedstorage");
|
||||
}
|
||||
|
||||
@Override
|
||||
public IDrawable getBackground() {
|
||||
return background;
|
||||
|
@@ -1,10 +0,0 @@
|
||||
package com.raoulvdberge.refinedstorage.inventory;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
|
||||
public interface IImportingBehavior {
|
||||
int doImport(TileEntity entity, EnumFacing facing, int currentSlot, IItemHandler itemFilters, int mode, int compare, int ticks, ItemHandlerUpgrade upgrades, INetwork network);
|
||||
}
|
@@ -1,47 +0,0 @@
|
||||
package com.raoulvdberge.refinedstorage.inventory;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RSUtils;
|
||||
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileDiskDrive;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
|
||||
public class ImportingBehaviorItemHandler implements IImportingBehavior {
|
||||
public static final IImportingBehavior INSTANCE = new ImportingBehaviorItemHandler();
|
||||
|
||||
@Override
|
||||
public int doImport(TileEntity entity, EnumFacing facing, int currentSlot, IItemHandler itemFilters, int mode, int compare, int ticks, ItemHandlerUpgrade upgrades, INetwork network) {
|
||||
IItemHandler handler = RSUtils.getItemHandler(entity, facing);
|
||||
|
||||
if (entity instanceof TileDiskDrive || handler == null) {
|
||||
return currentSlot;
|
||||
}
|
||||
|
||||
if (currentSlot >= handler.getSlots()) {
|
||||
currentSlot = 0;
|
||||
}
|
||||
|
||||
if (handler.getSlots() > 0) {
|
||||
ItemStack stack = handler.getStackInSlot(currentSlot);
|
||||
|
||||
if (stack.isEmpty() || !IFilterable.canTake(itemFilters, mode, compare, stack)) {
|
||||
currentSlot++;
|
||||
} else if (ticks % upgrades.getSpeed() == 0) {
|
||||
ItemStack result = handler.extractItem(currentSlot, upgrades.getItemInteractCount(), true);
|
||||
|
||||
if (!result.isEmpty() && network.insertItem(result, result.getCount(), true) == null) {
|
||||
network.insertItemTracked(result, result.getCount());
|
||||
|
||||
handler.extractItem(currentSlot, upgrades.getItemInteractCount(), false);
|
||||
} else {
|
||||
currentSlot++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return currentSlot;
|
||||
}
|
||||
}
|
@@ -3,7 +3,7 @@
|
||||
"modid": "refinedstorage",
|
||||
"name": "Refined Storage",
|
||||
"description": "An elegant solution to your hoarding problem",
|
||||
"version": "1.4.11",
|
||||
"version": "1.4.12",
|
||||
"mcversion": "1.11.2",
|
||||
"url": "https://refinedstorage.raoulvdberge.com",
|
||||
"updateUrl": "",
|
||||
|
Reference in New Issue
Block a user