Bump to 1.4.12; updated Forge, dependencies and mappings; removed Cyclops support

This commit is contained in:
raoulvdberge
2017-06-09 22:39:11 +02:00
parent 9fa2fcc772
commit 7dd79cd453
22 changed files with 84 additions and 429 deletions

View File

@@ -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)

View File

@@ -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 {

View File

@@ -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";

View File

@@ -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) {

View File

@@ -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());

View File

@@ -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);
}
}
}

View File

@@ -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());

View File

@@ -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());

View File

@@ -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);
}
}

View File

@@ -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;

View File

@@ -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

View File

@@ -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"));
}
}

View File

@@ -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());
}
}

View File

@@ -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();
}
}

View File

@@ -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;
}
}

View File

@@ -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");
}
}

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -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;
}
}

View File

@@ -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": "",