mirror of
https://github.com/GTNewHorizons/EnderCore.git
synced 2026-11-14 01:04:18 +00:00
delete furnace ASM
This commit is contained in:
1 parent
3e9c316023
commit
c6f5802f58
2 files changed
-173
No files matched your search
@@ -1,13 +1,5 @@
|
||||
package com.enderio.core.common.transform;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.inventory.ContainerFurnace;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.FurnaceRecipes;
|
||||
import net.minecraft.tileentity.TileEntityFurnace;
|
||||
|
||||
import com.enderio.core.common.config.ConfigHandler;
|
||||
|
||||
public class EnderCoreMethods {
|
||||
@@ -15,136 +7,4 @@ public class EnderCoreMethods {
|
||||
public static int getMaxAnvilCost() {
|
||||
return ConfigHandler.anvilMaxLevel;
|
||||
}
|
||||
|
||||
// mostly copied from ContainerFurnace
|
||||
public static ItemStack transferStackInSlot(ContainerFurnace inv, EntityPlayer p_82846_1_, int p_82846_2_) {
|
||||
ItemStack itemstack = null;
|
||||
Slot slot = (Slot) inv.inventorySlots.get(p_82846_2_);
|
||||
|
||||
if (slot != null && slot.getHasStack()) {
|
||||
ItemStack itemstack1 = slot.getStack();
|
||||
itemstack = itemstack1.copy();
|
||||
|
||||
if (p_82846_2_ == 2) {
|
||||
if (!mergeItemStack(inv, itemstack1, 3, 39, true)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
slot.onSlotChange(itemstack1, itemstack);
|
||||
} else if (p_82846_2_ != 1 && p_82846_2_ != 0) {
|
||||
// I have moved this check to the beginning
|
||||
if (TileEntityFurnace.isItemFuel(itemstack1)) {
|
||||
if (!mergeItemStack(inv, itemstack1, 1, 2, false)) {
|
||||
// Nest this inside so that if the above fails it will
|
||||
// attempt to do the input slot
|
||||
if (FurnaceRecipes.smelting().getSmeltingResult(itemstack1) != null) {
|
||||
if (!mergeItemStack(inv, itemstack1, 0, 1, false)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (FurnaceRecipes.smelting().getSmeltingResult(itemstack1) != null) {
|
||||
if (!mergeItemStack(inv, itemstack1, 0, 1, false)) {
|
||||
return null;
|
||||
}
|
||||
} else if (p_82846_2_ >= 3 && p_82846_2_ < 30) {
|
||||
if (!mergeItemStack(inv, itemstack1, 30, 39, false)) {
|
||||
return null;
|
||||
}
|
||||
} else if (p_82846_2_ >= 30 && p_82846_2_ < 39 && !mergeItemStack(inv, itemstack1, 3, 30, false)) {
|
||||
return null;
|
||||
}
|
||||
} else if (!mergeItemStack(inv, itemstack1, 3, 39, false)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (itemstack1.stackSize == 0) {
|
||||
slot.putStack((ItemStack) null);
|
||||
} else {
|
||||
slot.onSlotChanged();
|
||||
}
|
||||
|
||||
if (itemstack1.stackSize == itemstack.stackSize) {
|
||||
return null;
|
||||
}
|
||||
|
||||
slot.onPickupFromSlot(p_82846_1_, itemstack1);
|
||||
}
|
||||
|
||||
return itemstack;
|
||||
}
|
||||
|
||||
// copied from Container
|
||||
private static boolean mergeItemStack(Container inv, ItemStack p_75135_1_, int p_75135_2_, int p_75135_3_,
|
||||
boolean p_75135_4_) {
|
||||
boolean flag1 = false;
|
||||
int k = p_75135_2_;
|
||||
|
||||
if (p_75135_4_) {
|
||||
k = p_75135_3_ - 1;
|
||||
}
|
||||
|
||||
Slot slot;
|
||||
ItemStack itemstack1;
|
||||
|
||||
if (p_75135_1_.isStackable()) {
|
||||
while (p_75135_1_.stackSize > 0 && (!p_75135_4_ && k < p_75135_3_ || p_75135_4_ && k >= p_75135_2_)) {
|
||||
slot = (Slot) inv.inventorySlots.get(k);
|
||||
itemstack1 = slot.getStack();
|
||||
|
||||
if (itemstack1 != null && itemstack1.getItem() == p_75135_1_.getItem()
|
||||
&& (!p_75135_1_.getHasSubtypes() || p_75135_1_.getItemDamage() == itemstack1.getItemDamage())
|
||||
&& ItemStack.areItemStackTagsEqual(p_75135_1_, itemstack1)) {
|
||||
int l = itemstack1.stackSize + p_75135_1_.stackSize;
|
||||
|
||||
if (l <= p_75135_1_.getMaxStackSize()) {
|
||||
p_75135_1_.stackSize = 0;
|
||||
itemstack1.stackSize = l;
|
||||
slot.onSlotChanged();
|
||||
flag1 = true;
|
||||
} else if (itemstack1.stackSize < p_75135_1_.getMaxStackSize()) {
|
||||
p_75135_1_.stackSize -= p_75135_1_.getMaxStackSize() - itemstack1.stackSize;
|
||||
itemstack1.stackSize = p_75135_1_.getMaxStackSize();
|
||||
slot.onSlotChanged();
|
||||
flag1 = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (p_75135_4_) {
|
||||
--k;
|
||||
} else {
|
||||
++k;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (p_75135_1_.stackSize > 0) {
|
||||
if (p_75135_4_) {
|
||||
k = p_75135_3_ - 1;
|
||||
} else {
|
||||
k = p_75135_2_;
|
||||
}
|
||||
|
||||
while (!p_75135_4_ && k < p_75135_3_ || p_75135_4_ && k >= p_75135_2_) {
|
||||
slot = (Slot) inv.inventorySlots.get(k);
|
||||
itemstack1 = slot.getStack();
|
||||
|
||||
if (itemstack1 == null) {
|
||||
slot.putStack(p_75135_1_.copy());
|
||||
slot.onSlotChanged();
|
||||
p_75135_1_.stackSize = 0;
|
||||
flag1 = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (p_75135_4_) {
|
||||
--k;
|
||||
} else {
|
||||
++k;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return flag1;
|
||||
}
|
||||
}
|
||||
@@ -60,10 +60,6 @@ public class EnderCoreTransformer implements IClassTransformer {
|
||||
"drawGuiContainerForegroundLayer",
|
||||
"func_146979_b");
|
||||
|
||||
private static final String containerFurnaceClass = "net.minecraft.inventory.ContainerFurnace";
|
||||
private static final ObfSafeName containerFurnaceMethod = new ObfSafeName("transferStackInSlot", "func_82846_b");
|
||||
private static final String containerFurnaceMethodSig = "(Lnet/minecraft/inventory/ContainerFurnace;Lnet/minecraft/entity/player/EntityPlayer;I)Lnet/minecraft/item/ItemStack;";
|
||||
|
||||
@Override
|
||||
public byte[] transform(String name, String transformedName, byte[] basicClass) {
|
||||
// Anvil max level
|
||||
@@ -95,35 +91,6 @@ public class EnderCoreTransformer implements IClassTransformer {
|
||||
}
|
||||
});
|
||||
}
|
||||
// Furnace Shift Click Fix
|
||||
else if (transformedName.equals(containerFurnaceClass)) {
|
||||
basicClass = transform(basicClass, containerFurnaceClass, containerFurnaceMethod, new Transform() {
|
||||
|
||||
@Override
|
||||
void transform(Iterator<MethodNode> methods) {
|
||||
while (methods.hasNext()) {
|
||||
MethodNode m = methods.next();
|
||||
if (containerFurnaceMethod.equals(m.name)) {
|
||||
m.instructions.clear();
|
||||
|
||||
m.instructions.add(new VarInsnNode(ALOAD, 0));
|
||||
m.instructions.add(new VarInsnNode(ALOAD, 1));
|
||||
m.instructions.add(new VarInsnNode(ILOAD, 2));
|
||||
m.instructions.add(
|
||||
new MethodInsnNode(
|
||||
INVOKESTATIC,
|
||||
"com/enderio/core/common/transform/EnderCoreMethods",
|
||||
"transferStackInSlot",
|
||||
containerFurnaceMethodSig,
|
||||
false));
|
||||
m.instructions.add(new InsnNode(ARETURN));
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return basicClass;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user