View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0001720 | Industrial-Craft² | machines | public | 2015-09-07 22:10 | 2015-09-10 21:33 |
| Reporter | Artmoneyse | Assigned To | Aroma1997 | ||
| Priority | high | Severity | minor | Reproducibility | always |
| Status | closed | Resolution | won't fix | ||
| Summary | 0001720: MolecularTransformer + ItemBuffer = Crash server | ||||
| Description | Array Index Out Of Bounds Exception. Details can be seen in this video https://youtu.be/2aOQ1Hfc-7A | ||||
| Additional Information | Server #1 cauldron-1.7.10-1.1207 AdvancedSolarPanel-1.7.10-3.5.1 industrialcraft-2-2.2.736-experimental Server #2 KCauldron-1.7.10-1481 AdvancedSolarPanel-1.7.10-3.5.1 industrialcraft-2-2.2.767-experimental | ||||
| Tags | No tags attached. | ||||
| Minecraft Version | |||||
|
|
crash-2015-09-08_00.12.28-server.txt (8,939 bytes)
---- Minecraft Crash Report ----
// You're mean.
Time: 08.09.15 0:12
Description: Ticking block entity
java.lang.ArrayIndexOutOfBoundsException: -1
at advsolar.common.tiles.TileEntityMolecularTransformer.func_70301_a(TileEntityMolecularTransformer.java:715)
at ic2.core.util.StackUtil.getInventorySlots(StackUtil.java:356)
at ic2.core.util.StackUtil.transfer(StackUtil.java:144)
at ic2.core.item.ItemUpgradeModule.onTick(ItemUpgradeModule.java:330)
at ic2.core.block.machine.tileentity.TileEntityItemBuffer.func_145845_h(TileEntityItemBuffer.java:63)
at net.minecraft.world.World.func_72939_s(World.java:2492)
at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:669)
at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:943)
at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:423)
at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:798)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:658)
at java.lang.Thread.run(Unknown Source)
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Stacktrace:
at advsolar.common.tiles.TileEntityMolecularTransformer.func_70301_a(TileEntityMolecularTransformer.java:715)
at ic2.core.util.StackUtil.getInventorySlots(StackUtil.java:356)
at ic2.core.util.StackUtil.transfer(StackUtil.java:144)
at ic2.core.item.ItemUpgradeModule.onTick(ItemUpgradeModule.java:330)
at ic2.core.block.machine.tileentity.TileEntityItemBuffer.func_145845_h(TileEntityItemBuffer.java:63)
-- Block entity being ticked --
Details:
Name: Item Buffer // ic2.core.block.machine.tileentity.TileEntityItemBuffer
Block type: ID #231 (blockMachine3 // ic2.core.block.machine.BlockMachine3)
Block data value: 6 / 0x6 / 0b0110
Block location: World: (542,71,-10), Chunk: (at 14,4,6 in 33,-1; contains blocks 528,0,-16 to 543,255,-1), Region: (1,-1; contains chunks 32,-32 to 63,-1, blocks 512,0,-512 to 1023,255,-1)
Actual block type: ID #231 (blockMachine3 // ic2.core.block.machine.BlockMachine3)
Actual block data value: 6 / 0x6 / 0b0110
Stacktrace:
at net.minecraft.world.World.func_72939_s(World.java:2492)
at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:669)
-- Affected level --
Details:
Level name: world
All players: 4 total; [EntityPlayerMP['Artmoneyse'/60, l='world', x=544,01, y=69,00, z=-11,82](Artmoneyse at 544.005175440452,69.0,-11.820013644013311), EntityPlayerMP['Antsev'/279, l='world', x=335,30, y=61,20, z=-242,76](Antsev at 335.30000001192093,61.20000004768375,-242.7629822534347), EntityPlayerMP['Bahmak'/535, l='world', x=542,42, y=68,95, z=-11,40](Bahmak at 542.4190094516694,68.94999998807907,-11.39741136528705), EntityPlayerMP['Andrek'/544, l='world', x=682,90, y=88,00, z=-3270,04](Andrek at 682.9034255873845,88.0,-3270.038546823222)]
Chunk stats: ServerChunkCache: 944 Drop: 0
Level seed: -6853958084155560198
Level generator: ID 00 - default, ver 1. Features enabled: true
Level generator options:
Level spawn location: World: (0,72,0), Chunk: (at 0,4,0 in 0,0; contains blocks 0,0,0 to 15,255,15), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
Level time: 370231034 game time, 375722536 day time
Level dimension: 0
Level storage version: 0x04ABD - Anvil
Level weather: Rain time: 38557 (now: false), thunder time: 103255 (now: false)
Level game mode: Game mode: survival (ID 0). Hardcore: false. Cheats: false
Stacktrace:
at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:943)
at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:423)
at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:798)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:658)
at java.lang.Thread.run(Unknown Source)
-- System Details --
Details:
Minecraft Version: 1.7.10
Operating System: Windows Server 2008 R2 (amd64) version 6.1
Java Version: 1.7.0_75, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 668108864 bytes (637 MB) / 1056309248 bytes (1007 MB) up to 5351276544 bytes (5103 MB)
JVM Flags: 8 total; -XX:+UseParNewGC -XX:+CMSIncrementalPacing -XX:+UseConcMarkSweepGC -XX:ParallelGCThreads=2 -XX:+AggressiveOpts -Xincgc -Xmx5G -Xms1024M
AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 15, tallocated: 95
FML: MCP v9.05 FML v7.10.25.1207 Minecraft Forge 10.13.0.1207 19 mods loaded, 19 mods active
mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
FML{7.10.25.1207} [Forge Mod Loader] (cauldron-1.7.10-1.1207.01.187-server.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Forge{10.13.0.1207} [Minecraft Forge] (cauldron-1.7.10-1.1207.01.187-server.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
CodeChickenCore{1.0.4.29} [CodeChicken Core] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
MobiusCore{1.2.5} [MobiusCore] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
NotEnoughItems{1.0.3.76} [Not Enough Items] (NotEnoughItems-1.7.10-1.0.3.76-universal.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
IC2{2.2.736-experimental} [IndustrialCraft 2] (industrialcraft-2-2.2.736-experimental.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
AdvancedSolarPanel{1.7.10-3.5.1} [Advanced Solar Panels] (AdvancedSolarPanel-1.7.10-3.5.1.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
BuildCraft|Core{6.0.17} [BuildCraft] (buildcraft-6.0.17.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
BuildCraft|Transport{6.0.17} [BC Transport] (buildcraft-6.0.17.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
BuildCraft|Silicon{6.0.17} [BC Silicon] (buildcraft-6.0.17.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
BuildCraft|Builders{6.0.17} [BC Builders] (buildcraft-6.0.17.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
BuildCraft|Factory{6.0.17} [BC Factory] (buildcraft-6.0.17.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
BuildCraft|Energy{6.0.17} [BC Energy] (buildcraft-6.0.17.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Dynmap{2.1-alpha-1-84} [Dynmap] (Dynmap-2.1-alpha-1-forge-1.7.10.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
GraviSuite{1.7.10-2.0.3} [Graviation Suite] (GraviSuite-1.7.10-2.0.3.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
IronChest{6.0.41.729} [Iron Chest] (iron_chests_mod_1.7.10.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
MapWriter{2.1.2} [MapWriter] (Opis-1.2.5_1.7.10.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Opis{1.2.5} [Opis] (Opis-1.2.5_1.7.10.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Profiler Position: N/A (disabled)
Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
Player Count: 4 / 100; [EntityPlayerMP['Artmoneyse'/60, l='world', x=544,01, y=69,00, z=-11,82](Artmoneyse at 544.005175440452,69.0,-11.820013644013311), EntityPlayerMP['Antsev'/279, l='world', x=335,30, y=61,20, z=-242,76](Antsev at 335.30000001192093,61.20000004768375,-242.7629822534347), EntityPlayerMP['Bahmak'/535, l='world', x=542,42, y=68,95, z=-11,40](Bahmak at 542.4190094516694,68.94999998807907,-11.39741136528705), EntityPlayerMP['Andrek'/544, l='world', x=682,90, y=88,00, z=-3270,04](Andrek at 682.9034255873845,88.0,-3270.038546823222)]
Is Modded: Definitely; Server brand changed to 'cauldron,craftbukkit,mcpc,fml,forge'
Type: Dedicated Server (map_server.txt) |
|
|
It works in single player. Electricity is not necessary. P.S. Sorry for bad english. |
|
|
Looks a lot like an advanced solars bug not IC2, caused by KCauldron which is known to break things. |
|
|
TileEntityMolecularTransformer.txt (21,079 bytes)
package advsolar.common.tiles;
import advsolar.common.AdvancedSolarPanel;
import advsolar.common.container.ContainerMolecularTransformer;
import advsolar.network.IReceiveServerEvents;
import advsolar.network.PacketChangeState;
import advsolar.utils.MTRecipeManager;
import advsolar.utils.MTRecipeRecord;
import cpw.mods.fml.common.eventhandler.EventBus;
import ic2.api.energy.event.EnergyTileLoadEvent;
import ic2.api.energy.event.EnergyTileUnloadEvent;
import ic2.api.energy.tile.IEnergySink;
import ic2.api.energy.tile.IEnergyTile;
import ic2.api.network.INetworkDataProvider;
import ic2.api.network.INetworkTileEntityEventListener;
import ic2.api.network.INetworkUpdateListener;
import ic2.api.tile.IWrenchable;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMolecularTransformer
extends TileEntityBase
implements IEnergyTile, IWrenchable, IInventory, IEnergySink, ISidedInventory, INetworkDataProvider, INetworkUpdateListener, INetworkTileEntityEventListener, IReceiveServerEvents
{
private static final int[] slots_top = { 0 };
private static final int[] slots_bottom = { 1, 1 };
private static final int[] slots_sides = { 1 };
public static Random randomizer = new Random();
public int ticker;
public boolean initialized;
private short facing;
public boolean addedToEnergyNet;
private boolean created;
public boolean doWork;
public boolean waitOutputSlot;
public ItemStack lastRecipeInput;
public ItemStack lastRecipeOutput;
public int lastRecipeEnergyUsed;
public int lastRecipeEnergyPerOperation;
public int lastRecipeNumber;
private int machineTire;
private ItemStack[] workSlots;
private int lastX;
private int lastY;
private int lastZ;
private Boolean deactiveTimer = Boolean.valueOf(false);
private int deactiveTicker = 0;
private int deactiveTickrate = 40;
private int energyTicker = 0;
private int energyTickRate = 60;
public short lastProgress;
public int energyBuffer;
private boolean isActive;
private boolean prevActiveState;
public int inputEU;
public boolean loaded = false;
public TileEntityMolecularTransformer()
{
this.created = false;
this.facing = 2;
this.workSlots = new ItemStack[2];
this.initialized = false;
this.machineTire = Integer.MAX_VALUE;
this.ticker = randomizer.nextInt(tickRate());
this.lastX = this.field_145851_c;
this.lastY = this.field_145848_d;
this.lastZ = this.field_145849_e;
}
public void func_145829_t()
{
super.func_145829_t();
if ((func_145837_r()) || (!this.field_145850_b.func_72899_e(this.field_145851_c, this.field_145848_d, this.field_145849_e))) {
return;
}
onLoaded();
}
public void func_145843_s()
{
if (this.loaded) {
onUnloaded();
}
super.func_145843_s();
}
public void onLoaded()
{
if (!this.field_145850_b.field_72995_K)
{
MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this));
this.addedToEnergyNet = true;
}
this.loaded = true;
}
public void onChunkUnload()
{
if (this.loaded) {
onUnloaded();
}
super.onChunkUnload();
}
public void onUnloaded()
{
if ((!this.field_145850_b.field_72995_K) && (this.addedToEnergyNet))
{
MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this));
this.addedToEnergyNet = false;
}
this.loaded = false;
}
public void intialize()
{
updateVisibility();
this.initialized = true;
if (!this.addedToEnergyNet) {
onLoaded();
}
}
public void func_145845_h()
{
super.func_145845_h();
if ((!this.initialized) && (this.field_145850_b != null)) {
intialize();
}
if (!AdvancedSolarPanel.isSimulating()) {
return;
}
if ((this.lastX != this.field_145851_c) || (this.lastZ != this.field_145849_e) || (this.lastY != this.field_145848_d))
{
this.lastX = this.field_145851_c;
this.lastY = this.field_145848_d;
this.lastZ = this.field_145849_e;
onUnloaded();
intialize();
}
flushSlots();
if ((!this.doWork) && (this.workSlots[0] != null))
{
if (canSmelt())
{
this.workSlots[0].field_77994_a -= this.lastRecipeInput.field_77994_a;
this.lastRecipeEnergyUsed = 0;
this.waitOutputSlot = false;
this.lastProgress = 0;
this.doWork = true;
this.deactiveTimer = Boolean.valueOf(false);
}
}
else if (this.doWork)
{
if (this.energyBuffer > 0)
{
this.energyTicker = 0;
if (!this.waitOutputSlot) {
setActive(true, true);
}
}
else
{
this.energyTicker += 1;
if (this.energyTicker >= this.energyTickRate)
{
this.energyTicker = 0;
if (this.isActive) {
setActive(false, true);
}
}
}
this.energyBuffer = gainFuel(this.energyBuffer);
}
if (this.deactiveTimer.booleanValue() == true) {
checkDeactivateMachine();
}
}
public void checkDeactivateMachine()
{
if (this.deactiveTimer.booleanValue())
{
this.deactiveTicker += 1;
if (this.deactiveTicker == this.deactiveTickrate)
{
this.deactiveTicker = 0;
this.deactiveTimer = Boolean.valueOf(false);
setActive(false, true);
}
}
}
private boolean canSmelt()
{
if (this.workSlots[0] == null) {
return false;
}
for (int i = 0; i < MTRecipeManager.transformerRecipes.size(); i++)
{
ItemStack tmpItemStack = ((MTRecipeRecord)MTRecipeManager.transformerRecipes.get(i)).inputStack;
if (isItemEqual(this.workSlots[0], tmpItemStack))
{
if (this.workSlots[1] != null) {
if (isItemEqual(this.workSlots[1], ((MTRecipeRecord)MTRecipeManager.transformerRecipes.get(i)).outputStack))
{
if (this.workSlots[1].field_77994_a + ((MTRecipeRecord)MTRecipeManager.transformerRecipes.get(i)).outputStack.field_77994_a > this.workSlots[1].func_77976_d()) {
return false;
}
}
else {
return false;
}
}
if (this.workSlots[0].field_77994_a < ((MTRecipeRecord)MTRecipeManager.transformerRecipes.get(i)).inputStack.field_77994_a) {
return false;
}
this.lastRecipeInput = ((MTRecipeRecord)MTRecipeManager.transformerRecipes.get(i)).inputStack.func_77946_l();
this.lastRecipeOutput = ((MTRecipeRecord)MTRecipeManager.transformerRecipes.get(i)).outputStack.func_77946_l();
this.lastRecipeEnergyPerOperation = ((MTRecipeRecord)MTRecipeManager.transformerRecipes.get(i)).energyPerOperation;
this.lastRecipeNumber = i;
return true;
}
}
return false;
}
public int gainFuel(int energyPacket)
{
int energyLeft = energyPacket;
if (energyPacket >= 0) {
if (this.lastRecipeEnergyPerOperation - this.lastRecipeEnergyUsed > energyPacket)
{
energyLeft = 0;
this.lastRecipeEnergyUsed += energyPacket;
}
else
{
energyLeft = energyPacket - (this.lastRecipeEnergyPerOperation - this.lastRecipeEnergyUsed);
this.lastRecipeEnergyUsed = this.lastRecipeEnergyPerOperation;
this.lastProgress = 100;
this.waitOutputSlot = true;
if (this.workSlots[1] != null)
{
if (isItemEqual(this.lastRecipeOutput, this.workSlots[1])) {
if (this.workSlots[1].func_77976_d() >= this.workSlots[1].field_77994_a + this.lastRecipeOutput.field_77994_a)
{
this.workSlots[1].field_77994_a += this.lastRecipeOutput.field_77994_a;
this.doWork = false;
this.deactiveTicker = 0;
this.deactiveTimer = Boolean.valueOf(true);
super.func_70296_d();
this.waitOutputSlot = false;
}
else if (isActive())
{
setActive(false, true);
}
}
}
else
{
this.workSlots[1] = this.lastRecipeOutput.func_77946_l();
this.doWork = false;
this.deactiveTicker = 0;
this.deactiveTimer = Boolean.valueOf(true);
this.waitOutputSlot = false;
super.func_70296_d();
}
}
}
updateProgress();
return energyLeft;
}
private void updateProgress()
{
if (this.doWork)
{
float tmpProgress = this.lastRecipeEnergyUsed / this.lastRecipeEnergyPerOperation * 100.0F;
this.lastProgress = ((short)Math.round(tmpProgress));
if (this.lastRecipeEnergyUsed == this.lastRecipeEnergyPerOperation) {
this.lastProgress = 100;
}
}
else
{
this.lastProgress = 0;
if (this.isActive)
{
this.deactiveTicker = 0;
this.deactiveTimer = Boolean.valueOf(true);
}
}
}
private void flushSlots()
{
if ((this.workSlots[0] != null) &&
(this.workSlots[0].field_77994_a <= 0)) {
this.workSlots[0] = null;
}
if ((this.workSlots[1] != null) &&
(this.workSlots[1].field_77994_a <= 0)) {
this.workSlots[1] = null;
}
}
private boolean isItemEqual(ItemStack inputStack, ItemStack outputStack)
{
if ((inputStack.func_77973_b() == outputStack.func_77973_b()) && (inputStack.func_77960_j() == outputStack.func_77960_j())) {
return true;
}
return false;
}
public void updateVisibility() {}
public void func_145839_a(NBTTagCompound nbttagcompound)
{
super.func_145839_a(nbttagcompound);
this.lastX = nbttagcompound.func_74762_e("lastX");
this.lastY = nbttagcompound.func_74762_e("lastY");
this.lastZ = nbttagcompound.func_74762_e("lastZ");
this.doWork = nbttagcompound.func_74767_n("doWork");
this.lastRecipeEnergyUsed = nbttagcompound.func_74762_e("lastRecipeEnergyUsed");
this.lastRecipeEnergyPerOperation = nbttagcompound.func_74762_e("lastRecipeEnergyPerOperation");
this.lastProgress = nbttagcompound.func_74765_d("lastProgress");
NBTTagList nbttaglist_recipe = nbttagcompound.func_150295_c("Recipes", 10);
for (int i = 0; i < nbttaglist_recipe.func_74745_c(); i++)
{
NBTTagCompound nbttagcompound_recipe = nbttaglist_recipe.func_150305_b(i);
if (i == 0) {
this.lastRecipeInput = ItemStack.func_77949_a(nbttagcompound_recipe);
}
if (i == 1) {
this.lastRecipeOutput = ItemStack.func_77949_a(nbttagcompound_recipe);
}
}
if ((this.lastRecipeInput == null) || (this.lastRecipeOutput == null))
{
this.lastRecipeNumber = 0;
this.doWork = false;
this.lastProgress = 0;
this.lastRecipeEnergyUsed = 0;
}
else
{
int i = searchRecipeNumber(this.lastRecipeInput, this.lastRecipeOutput);
if (i < 0)
{
this.lastRecipeNumber = 0;
this.doWork = false;
this.lastProgress = 0;
this.lastRecipeEnergyUsed = 0;
}
else
{
this.lastRecipeNumber = i;
}
}
NBTTagList nbttaglist = nbttagcompound.func_150295_c("Items", 10);
this.workSlots = new ItemStack[func_70302_i_()];
for (int i = 0; i < nbttaglist.func_74745_c(); i++)
{
NBTTagCompound nbttagcompound1 = nbttaglist.func_150305_b(i);
int j = nbttagcompound1.func_74771_c("Slot") & 0xFF;
if ((j >= 0) && (j < this.workSlots.length)) {
this.workSlots[j] = ItemStack.func_77949_a(nbttagcompound1);
}
}
}
public int searchRecipeNumber(ItemStack inputStack, ItemStack outputStack)
{
for (int i = 0; i < MTRecipeManager.transformerRecipes.size(); i++)
{
ItemStack tmpInputStack = ((MTRecipeRecord)MTRecipeManager.transformerRecipes.get(i)).inputStack;
ItemStack tmpOutputStack = ((MTRecipeRecord)MTRecipeManager.transformerRecipes.get(i)).outputStack;
if ((isItemEqual(inputStack, tmpInputStack)) && (isItemEqual(outputStack, tmpOutputStack))) {
return i;
}
}
return -1;
}
public void func_145841_b(NBTTagCompound nbttagcompound)
{
super.func_145841_b(nbttagcompound);
NBTTagList nbttaglist = new NBTTagList();
NBTTagList nbttaglist_recipe = new NBTTagList();
nbttagcompound.func_74768_a("lastX", this.lastX);
nbttagcompound.func_74768_a("lastY", this.lastY);
nbttagcompound.func_74768_a("lastZ", this.lastZ);
nbttagcompound.func_74757_a("doWork", this.doWork);
nbttagcompound.func_74768_a("lastRecipeEnergyUsed", this.lastRecipeEnergyUsed);
nbttagcompound.func_74768_a("lastRecipeEnergyPerOperation", this.lastRecipeEnergyPerOperation);
nbttagcompound.func_74777_a("lastProgress", this.lastProgress);
nbttagcompound.func_74768_a("lastRecipeNumber", this.lastRecipeNumber);
NBTTagCompound nbttagcompound_recipe = new NBTTagCompound();
if (this.lastRecipeInput != null)
{
nbttagcompound_recipe.func_74757_a("lastRecipeInput", true);
this.lastRecipeInput.func_77955_b(nbttagcompound_recipe);
}
else
{
nbttagcompound_recipe.func_74757_a("lastRecipeInput", false);
}
nbttaglist_recipe.func_74742_a(nbttagcompound_recipe);
nbttagcompound_recipe = new NBTTagCompound();
if (this.lastRecipeOutput != null)
{
nbttagcompound_recipe.func_74757_a("lastRecipeOutput", true);
this.lastRecipeOutput.func_77955_b(nbttagcompound_recipe);
}
else
{
nbttagcompound_recipe.func_74757_a("lastRecipeOutput", false);
}
nbttaglist_recipe.func_74742_a(nbttagcompound_recipe);
nbttagcompound.func_74782_a("Recipes", nbttaglist_recipe);
for (int i = 0; i < this.workSlots.length; i++) {
if (this.workSlots[i] != null)
{
NBTTagCompound nbttagcompound1 = new NBTTagCompound();
nbttagcompound1.func_74774_a("Slot", (byte)i);
this.workSlots[i].func_77955_b(nbttagcompound1);
nbttaglist.func_74742_a(nbttagcompound1);
}
}
nbttagcompound.func_74782_a("Items", nbttaglist);
}
public boolean isAddedToEnergyNet()
{
return this.addedToEnergyNet;
}
public boolean isActive()
{
return this.isActive;
}
public void setActive(boolean activeState, boolean network)
{
if ((network) && (activeState != this.isActive)) {
PacketChangeState.issue(this, activeState == true ? 1 : 0, null);
}
if (activeState != this.isActive) {
this.field_145850_b.func_147471_g(this.field_145851_c, this.field_145848_d, this.field_145849_e);
}
this.isActive = activeState;
if (!activeState) {
this.inputEU = 0;
}
}
public int gaugeFuelScaled(int i)
{
return i;
}
public boolean func_70300_a(EntityPlayer entityplayer)
{
return entityplayer.func_70011_f(this.field_145851_c + 0.5D, this.field_145848_d + 0.5D, this.field_145849_e + 0.5D) <= 64.0D;
}
public int tickRate()
{
return 20;
}
public short getFacing()
{
return this.facing;
}
public void setFacing(short facing)
{
this.facing = facing;
}
public boolean wrenchCanSetFacing(EntityPlayer entityplayer, int i)
{
return false;
}
public boolean wrenchCanRemove(EntityPlayer entityplayer)
{
return true;
}
public float getWrenchDropRate()
{
return 1.0F;
}
public ItemStack getWrenchDrop(EntityPlayer entityPlayer)
{
return new ItemStack(this.field_145850_b.func_147439_a(this.field_145851_c, this.field_145848_d, this.field_145849_e), 1, this.field_145850_b.func_72805_g(this.field_145851_c, this.field_145848_d, this.field_145849_e));
}
public ItemStack[] getContents()
{
return this.workSlots;
}
public int func_70302_i_()
{
return this.workSlots.length;
}
public ItemStack func_70301_a(int i)
{
return this.workSlots[i];
}
public ItemStack func_70298_a(int index, int amount)
{
ItemStack itemStack = func_70301_a(index);
if (itemStack == null) {
return null;
}
if (amount >= itemStack.field_77994_a)
{
func_70299_a(index, null);
return itemStack;
}
itemStack.field_77994_a -= amount;
ItemStack ret = itemStack.func_77946_l();
ret.field_77994_a = amount;
return ret;
}
public void func_70299_a(int i, ItemStack itemstack)
{
this.workSlots[i] = itemstack;
if ((itemstack != null) && (itemstack.field_77994_a > func_70297_j_())) {
itemstack.field_77994_a = func_70297_j_();
}
}
public int func_70297_j_()
{
return 64;
}
public Container getGuiContainer(InventoryPlayer inventoryplayer)
{
return new ContainerMolecularTransformer(inventoryplayer, this);
}
public ItemStack func_70304_b(int var1)
{
if (this.workSlots[var1] != null)
{
ItemStack var2 = this.workSlots[var1];
this.workSlots[var1] = null;
return var2;
}
return null;
}
private static List<String> fields = Arrays.asList(new String[0]);
public void onNetworkUpdate(String field) {}
public List<String> getNetworkedFields()
{
return fields;
}
public void onServerEvent(int event, NBTTagCompound nbtData)
{
Thread.getAllStackTraces();
switch (event)
{
case 0:
setActive(false, false);
break;
case 1:
setActive(true, false);
}
}
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt)
{
NBTTagCompound nbt = pkt.func_148857_g();
this.isActive = nbt.func_74767_n("active");
}
public Packet func_145844_m()
{
NBTTagCompound nbttagcompound = new NBTTagCompound();
nbttagcompound.func_74757_a("active", this.isActive);
func_145841_b(nbttagcompound);
return new S35PacketUpdateTileEntity(this.field_145851_c, this.field_145848_d, this.field_145849_e, 3, nbttagcompound);
}
public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction)
{
return true;
}
public double getDemandedEnergy()
{
if (!this.doWork)
{
this.inputEU = 0;
return 0.0D;
}
if (this.lastRecipeEnergyPerOperation - this.lastRecipeEnergyUsed >= 0) {
return this.lastRecipeEnergyPerOperation - this.lastRecipeEnergyUsed;
}
return 0.0D;
}
public double injectEnergy(ForgeDirection directionFrom, double amount, double voltage)
{
this.inputEU = ((int)amount);
if (!this.doWork) {
return amount;
}
if (this.lastRecipeEnergyPerOperation - this.lastRecipeEnergyUsed >= amount)
{
this.energyBuffer = ((int)(this.energyBuffer + amount));
return 0.0D;
}
this.energyBuffer = ((int)(this.energyBuffer + (amount - (this.lastRecipeEnergyPerOperation - this.lastRecipeEnergyUsed))));
return amount - (this.lastRecipeEnergyPerOperation - this.lastRecipeEnergyUsed);
}
public int getSinkTier()
{
return this.machineTire;
}
public boolean func_94041_b(int i, ItemStack itemstack)
{
return i != 1;
}
public int[] func_94128_d(int side)
{
return side == 1 ? slots_top : side == 0 ? slots_bottom : slots_sides;
}
public boolean func_102007_a(int index, ItemStack itemStack, int side)
{
return index != 1;
}
public boolean func_102008_b(int index, ItemStack itemStack, int side)
{
return true;
}
public String func_145825_b()
{
return "Molecular Transformer";
}
public boolean func_145818_k_()
{
return false;
}
public void func_70295_k_() {}
public void func_70305_f() {}
}
|
|
|
a developer of solar panels has thrown development of this add-on. I was hoping that there will help with the solution. Now it is very often used Cauldron or KCauldron. The Cauldron is not guilty! The bug is present in single player. |
|
|
Deobfuscate_TileEntityMolecularTransformer.txt (21,079 bytes)
package advsolar.common.tiles;
import advsolar.common.AdvancedSolarPanel;
import advsolar.common.container.ContainerMolecularTransformer;
import advsolar.network.IReceiveServerEvents;
import advsolar.network.PacketChangeState;
import advsolar.utils.MTRecipeManager;
import advsolar.utils.MTRecipeRecord;
import cpw.mods.fml.common.eventhandler.EventBus;
import ic2.api.energy.event.EnergyTileLoadEvent;
import ic2.api.energy.event.EnergyTileUnloadEvent;
import ic2.api.energy.tile.IEnergySink;
import ic2.api.energy.tile.IEnergyTile;
import ic2.api.network.INetworkDataProvider;
import ic2.api.network.INetworkTileEntityEventListener;
import ic2.api.network.INetworkUpdateListener;
import ic2.api.tile.IWrenchable;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMolecularTransformer
extends TileEntityBase
implements IEnergyTile, IWrenchable, IInventory, IEnergySink, ISidedInventory, INetworkDataProvider, INetworkUpdateListener, INetworkTileEntityEventListener, IReceiveServerEvents
{
private static final int[] slots_top = { 0 };
private static final int[] slots_bottom = { 1, 1 };
private static final int[] slots_sides = { 1 };
public static Random randomizer = new Random();
public int ticker;
public boolean initialized;
private short facing;
public boolean addedToEnergyNet;
private boolean created;
public boolean doWork;
public boolean waitOutputSlot;
public ItemStack lastRecipeInput;
public ItemStack lastRecipeOutput;
public int lastRecipeEnergyUsed;
public int lastRecipeEnergyPerOperation;
public int lastRecipeNumber;
private int machineTire;
private ItemStack[] workSlots;
private int lastX;
private int lastY;
private int lastZ;
private Boolean deactiveTimer = Boolean.valueOf(false);
private int deactiveTicker = 0;
private int deactiveTickrate = 40;
private int energyTicker = 0;
private int energyTickRate = 60;
public short lastProgress;
public int energyBuffer;
private boolean isActive;
private boolean prevActiveState;
public int inputEU;
public boolean loaded = false;
public TileEntityMolecularTransformer()
{
this.created = false;
this.facing = 2;
this.workSlots = new ItemStack[2];
this.initialized = false;
this.machineTire = Integer.MAX_VALUE;
this.ticker = randomizer.nextInt(tickRate());
this.lastX = this.field_145851_c;
this.lastY = this.field_145848_d;
this.lastZ = this.field_145849_e;
}
public void func_145829_t()
{
super.func_145829_t();
if ((func_145837_r()) || (!this.field_145850_b.func_72899_e(this.field_145851_c, this.field_145848_d, this.field_145849_e))) {
return;
}
onLoaded();
}
public void func_145843_s()
{
if (this.loaded) {
onUnloaded();
}
super.func_145843_s();
}
public void onLoaded()
{
if (!this.field_145850_b.field_72995_K)
{
MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this));
this.addedToEnergyNet = true;
}
this.loaded = true;
}
public void onChunkUnload()
{
if (this.loaded) {
onUnloaded();
}
super.onChunkUnload();
}
public void onUnloaded()
{
if ((!this.field_145850_b.field_72995_K) && (this.addedToEnergyNet))
{
MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this));
this.addedToEnergyNet = false;
}
this.loaded = false;
}
public void intialize()
{
updateVisibility();
this.initialized = true;
if (!this.addedToEnergyNet) {
onLoaded();
}
}
public void func_145845_h()
{
super.func_145845_h();
if ((!this.initialized) && (this.field_145850_b != null)) {
intialize();
}
if (!AdvancedSolarPanel.isSimulating()) {
return;
}
if ((this.lastX != this.field_145851_c) || (this.lastZ != this.field_145849_e) || (this.lastY != this.field_145848_d))
{
this.lastX = this.field_145851_c;
this.lastY = this.field_145848_d;
this.lastZ = this.field_145849_e;
onUnloaded();
intialize();
}
flushSlots();
if ((!this.doWork) && (this.workSlots[0] != null))
{
if (canSmelt())
{
this.workSlots[0].field_77994_a -= this.lastRecipeInput.field_77994_a;
this.lastRecipeEnergyUsed = 0;
this.waitOutputSlot = false;
this.lastProgress = 0;
this.doWork = true;
this.deactiveTimer = Boolean.valueOf(false);
}
}
else if (this.doWork)
{
if (this.energyBuffer > 0)
{
this.energyTicker = 0;
if (!this.waitOutputSlot) {
setActive(true, true);
}
}
else
{
this.energyTicker += 1;
if (this.energyTicker >= this.energyTickRate)
{
this.energyTicker = 0;
if (this.isActive) {
setActive(false, true);
}
}
}
this.energyBuffer = gainFuel(this.energyBuffer);
}
if (this.deactiveTimer.booleanValue() == true) {
checkDeactivateMachine();
}
}
public void checkDeactivateMachine()
{
if (this.deactiveTimer.booleanValue())
{
this.deactiveTicker += 1;
if (this.deactiveTicker == this.deactiveTickrate)
{
this.deactiveTicker = 0;
this.deactiveTimer = Boolean.valueOf(false);
setActive(false, true);
}
}
}
private boolean canSmelt()
{
if (this.workSlots[0] == null) {
return false;
}
for (int i = 0; i < MTRecipeManager.transformerRecipes.size(); i++)
{
ItemStack tmpItemStack = ((MTRecipeRecord)MTRecipeManager.transformerRecipes.get(i)).inputStack;
if (isItemEqual(this.workSlots[0], tmpItemStack))
{
if (this.workSlots[1] != null) {
if (isItemEqual(this.workSlots[1], ((MTRecipeRecord)MTRecipeManager.transformerRecipes.get(i)).outputStack))
{
if (this.workSlots[1].field_77994_a + ((MTRecipeRecord)MTRecipeManager.transformerRecipes.get(i)).outputStack.field_77994_a > this.workSlots[1].func_77976_d()) {
return false;
}
}
else {
return false;
}
}
if (this.workSlots[0].field_77994_a < ((MTRecipeRecord)MTRecipeManager.transformerRecipes.get(i)).inputStack.field_77994_a) {
return false;
}
this.lastRecipeInput = ((MTRecipeRecord)MTRecipeManager.transformerRecipes.get(i)).inputStack.func_77946_l();
this.lastRecipeOutput = ((MTRecipeRecord)MTRecipeManager.transformerRecipes.get(i)).outputStack.func_77946_l();
this.lastRecipeEnergyPerOperation = ((MTRecipeRecord)MTRecipeManager.transformerRecipes.get(i)).energyPerOperation;
this.lastRecipeNumber = i;
return true;
}
}
return false;
}
public int gainFuel(int energyPacket)
{
int energyLeft = energyPacket;
if (energyPacket >= 0) {
if (this.lastRecipeEnergyPerOperation - this.lastRecipeEnergyUsed > energyPacket)
{
energyLeft = 0;
this.lastRecipeEnergyUsed += energyPacket;
}
else
{
energyLeft = energyPacket - (this.lastRecipeEnergyPerOperation - this.lastRecipeEnergyUsed);
this.lastRecipeEnergyUsed = this.lastRecipeEnergyPerOperation;
this.lastProgress = 100;
this.waitOutputSlot = true;
if (this.workSlots[1] != null)
{
if (isItemEqual(this.lastRecipeOutput, this.workSlots[1])) {
if (this.workSlots[1].func_77976_d() >= this.workSlots[1].field_77994_a + this.lastRecipeOutput.field_77994_a)
{
this.workSlots[1].field_77994_a += this.lastRecipeOutput.field_77994_a;
this.doWork = false;
this.deactiveTicker = 0;
this.deactiveTimer = Boolean.valueOf(true);
super.func_70296_d();
this.waitOutputSlot = false;
}
else if (isActive())
{
setActive(false, true);
}
}
}
else
{
this.workSlots[1] = this.lastRecipeOutput.func_77946_l();
this.doWork = false;
this.deactiveTicker = 0;
this.deactiveTimer = Boolean.valueOf(true);
this.waitOutputSlot = false;
super.func_70296_d();
}
}
}
updateProgress();
return energyLeft;
}
private void updateProgress()
{
if (this.doWork)
{
float tmpProgress = this.lastRecipeEnergyUsed / this.lastRecipeEnergyPerOperation * 100.0F;
this.lastProgress = ((short)Math.round(tmpProgress));
if (this.lastRecipeEnergyUsed == this.lastRecipeEnergyPerOperation) {
this.lastProgress = 100;
}
}
else
{
this.lastProgress = 0;
if (this.isActive)
{
this.deactiveTicker = 0;
this.deactiveTimer = Boolean.valueOf(true);
}
}
}
private void flushSlots()
{
if ((this.workSlots[0] != null) &&
(this.workSlots[0].field_77994_a <= 0)) {
this.workSlots[0] = null;
}
if ((this.workSlots[1] != null) &&
(this.workSlots[1].field_77994_a <= 0)) {
this.workSlots[1] = null;
}
}
private boolean isItemEqual(ItemStack inputStack, ItemStack outputStack)
{
if ((inputStack.func_77973_b() == outputStack.func_77973_b()) && (inputStack.func_77960_j() == outputStack.func_77960_j())) {
return true;
}
return false;
}
public void updateVisibility() {}
public void func_145839_a(NBTTagCompound nbttagcompound)
{
super.func_145839_a(nbttagcompound);
this.lastX = nbttagcompound.func_74762_e("lastX");
this.lastY = nbttagcompound.func_74762_e("lastY");
this.lastZ = nbttagcompound.func_74762_e("lastZ");
this.doWork = nbttagcompound.func_74767_n("doWork");
this.lastRecipeEnergyUsed = nbttagcompound.func_74762_e("lastRecipeEnergyUsed");
this.lastRecipeEnergyPerOperation = nbttagcompound.func_74762_e("lastRecipeEnergyPerOperation");
this.lastProgress = nbttagcompound.func_74765_d("lastProgress");
NBTTagList nbttaglist_recipe = nbttagcompound.func_150295_c("Recipes", 10);
for (int i = 0; i < nbttaglist_recipe.func_74745_c(); i++)
{
NBTTagCompound nbttagcompound_recipe = nbttaglist_recipe.func_150305_b(i);
if (i == 0) {
this.lastRecipeInput = ItemStack.func_77949_a(nbttagcompound_recipe);
}
if (i == 1) {
this.lastRecipeOutput = ItemStack.func_77949_a(nbttagcompound_recipe);
}
}
if ((this.lastRecipeInput == null) || (this.lastRecipeOutput == null))
{
this.lastRecipeNumber = 0;
this.doWork = false;
this.lastProgress = 0;
this.lastRecipeEnergyUsed = 0;
}
else
{
int i = searchRecipeNumber(this.lastRecipeInput, this.lastRecipeOutput);
if (i < 0)
{
this.lastRecipeNumber = 0;
this.doWork = false;
this.lastProgress = 0;
this.lastRecipeEnergyUsed = 0;
}
else
{
this.lastRecipeNumber = i;
}
}
NBTTagList nbttaglist = nbttagcompound.func_150295_c("Items", 10);
this.workSlots = new ItemStack[func_70302_i_()];
for (int i = 0; i < nbttaglist.func_74745_c(); i++)
{
NBTTagCompound nbttagcompound1 = nbttaglist.func_150305_b(i);
int j = nbttagcompound1.func_74771_c("Slot") & 0xFF;
if ((j >= 0) && (j < this.workSlots.length)) {
this.workSlots[j] = ItemStack.func_77949_a(nbttagcompound1);
}
}
}
public int searchRecipeNumber(ItemStack inputStack, ItemStack outputStack)
{
for (int i = 0; i < MTRecipeManager.transformerRecipes.size(); i++)
{
ItemStack tmpInputStack = ((MTRecipeRecord)MTRecipeManager.transformerRecipes.get(i)).inputStack;
ItemStack tmpOutputStack = ((MTRecipeRecord)MTRecipeManager.transformerRecipes.get(i)).outputStack;
if ((isItemEqual(inputStack, tmpInputStack)) && (isItemEqual(outputStack, tmpOutputStack))) {
return i;
}
}
return -1;
}
public void func_145841_b(NBTTagCompound nbttagcompound)
{
super.func_145841_b(nbttagcompound);
NBTTagList nbttaglist = new NBTTagList();
NBTTagList nbttaglist_recipe = new NBTTagList();
nbttagcompound.func_74768_a("lastX", this.lastX);
nbttagcompound.func_74768_a("lastY", this.lastY);
nbttagcompound.func_74768_a("lastZ", this.lastZ);
nbttagcompound.func_74757_a("doWork", this.doWork);
nbttagcompound.func_74768_a("lastRecipeEnergyUsed", this.lastRecipeEnergyUsed);
nbttagcompound.func_74768_a("lastRecipeEnergyPerOperation", this.lastRecipeEnergyPerOperation);
nbttagcompound.func_74777_a("lastProgress", this.lastProgress);
nbttagcompound.func_74768_a("lastRecipeNumber", this.lastRecipeNumber);
NBTTagCompound nbttagcompound_recipe = new NBTTagCompound();
if (this.lastRecipeInput != null)
{
nbttagcompound_recipe.func_74757_a("lastRecipeInput", true);
this.lastRecipeInput.func_77955_b(nbttagcompound_recipe);
}
else
{
nbttagcompound_recipe.func_74757_a("lastRecipeInput", false);
}
nbttaglist_recipe.func_74742_a(nbttagcompound_recipe);
nbttagcompound_recipe = new NBTTagCompound();
if (this.lastRecipeOutput != null)
{
nbttagcompound_recipe.func_74757_a("lastRecipeOutput", true);
this.lastRecipeOutput.func_77955_b(nbttagcompound_recipe);
}
else
{
nbttagcompound_recipe.func_74757_a("lastRecipeOutput", false);
}
nbttaglist_recipe.func_74742_a(nbttagcompound_recipe);
nbttagcompound.func_74782_a("Recipes", nbttaglist_recipe);
for (int i = 0; i < this.workSlots.length; i++) {
if (this.workSlots[i] != null)
{
NBTTagCompound nbttagcompound1 = new NBTTagCompound();
nbttagcompound1.func_74774_a("Slot", (byte)i);
this.workSlots[i].func_77955_b(nbttagcompound1);
nbttaglist.func_74742_a(nbttagcompound1);
}
}
nbttagcompound.func_74782_a("Items", nbttaglist);
}
public boolean isAddedToEnergyNet()
{
return this.addedToEnergyNet;
}
public boolean isActive()
{
return this.isActive;
}
public void setActive(boolean activeState, boolean network)
{
if ((network) && (activeState != this.isActive)) {
PacketChangeState.issue(this, activeState == true ? 1 : 0, null);
}
if (activeState != this.isActive) {
this.field_145850_b.func_147471_g(this.field_145851_c, this.field_145848_d, this.field_145849_e);
}
this.isActive = activeState;
if (!activeState) {
this.inputEU = 0;
}
}
public int gaugeFuelScaled(int i)
{
return i;
}
public boolean func_70300_a(EntityPlayer entityplayer)
{
return entityplayer.func_70011_f(this.field_145851_c + 0.5D, this.field_145848_d + 0.5D, this.field_145849_e + 0.5D) <= 64.0D;
}
public int tickRate()
{
return 20;
}
public short getFacing()
{
return this.facing;
}
public void setFacing(short facing)
{
this.facing = facing;
}
public boolean wrenchCanSetFacing(EntityPlayer entityplayer, int i)
{
return false;
}
public boolean wrenchCanRemove(EntityPlayer entityplayer)
{
return true;
}
public float getWrenchDropRate()
{
return 1.0F;
}
public ItemStack getWrenchDrop(EntityPlayer entityPlayer)
{
return new ItemStack(this.field_145850_b.func_147439_a(this.field_145851_c, this.field_145848_d, this.field_145849_e), 1, this.field_145850_b.func_72805_g(this.field_145851_c, this.field_145848_d, this.field_145849_e));
}
public ItemStack[] getContents()
{
return this.workSlots;
}
public int func_70302_i_()
{
return this.workSlots.length;
}
public ItemStack func_70301_a(int i)
{
return this.workSlots[i];
}
public ItemStack func_70298_a(int index, int amount)
{
ItemStack itemStack = func_70301_a(index);
if (itemStack == null) {
return null;
}
if (amount >= itemStack.field_77994_a)
{
func_70299_a(index, null);
return itemStack;
}
itemStack.field_77994_a -= amount;
ItemStack ret = itemStack.func_77946_l();
ret.field_77994_a = amount;
return ret;
}
public void func_70299_a(int i, ItemStack itemstack)
{
this.workSlots[i] = itemstack;
if ((itemstack != null) && (itemstack.field_77994_a > func_70297_j_())) {
itemstack.field_77994_a = func_70297_j_();
}
}
public int func_70297_j_()
{
return 64;
}
public Container getGuiContainer(InventoryPlayer inventoryplayer)
{
return new ContainerMolecularTransformer(inventoryplayer, this);
}
public ItemStack func_70304_b(int var1)
{
if (this.workSlots[var1] != null)
{
ItemStack var2 = this.workSlots[var1];
this.workSlots[var1] = null;
return var2;
}
return null;
}
private static List<String> fields = Arrays.asList(new String[0]);
public void onNetworkUpdate(String field) {}
public List<String> getNetworkedFields()
{
return fields;
}
public void onServerEvent(int event, NBTTagCompound nbtData)
{
Thread.getAllStackTraces();
switch (event)
{
case 0:
setActive(false, false);
break;
case 1:
setActive(true, false);
}
}
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt)
{
NBTTagCompound nbt = pkt.func_148857_g();
this.isActive = nbt.func_74767_n("active");
}
public Packet func_145844_m()
{
NBTTagCompound nbttagcompound = new NBTTagCompound();
nbttagcompound.func_74757_a("active", this.isActive);
func_145841_b(nbttagcompound);
return new S35PacketUpdateTileEntity(this.field_145851_c, this.field_145848_d, this.field_145849_e, 3, nbttagcompound);
}
public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction)
{
return true;
}
public double getDemandedEnergy()
{
if (!this.doWork)
{
this.inputEU = 0;
return 0.0D;
}
if (this.lastRecipeEnergyPerOperation - this.lastRecipeEnergyUsed >= 0) {
return this.lastRecipeEnergyPerOperation - this.lastRecipeEnergyUsed;
}
return 0.0D;
}
public double injectEnergy(ForgeDirection directionFrom, double amount, double voltage)
{
this.inputEU = ((int)amount);
if (!this.doWork) {
return amount;
}
if (this.lastRecipeEnergyPerOperation - this.lastRecipeEnergyUsed >= amount)
{
this.energyBuffer = ((int)(this.energyBuffer + amount));
return 0.0D;
}
this.energyBuffer = ((int)(this.energyBuffer + (amount - (this.lastRecipeEnergyPerOperation - this.lastRecipeEnergyUsed))));
return amount - (this.lastRecipeEnergyPerOperation - this.lastRecipeEnergyUsed);
}
public int getSinkTier()
{
return this.machineTire;
}
public boolean func_94041_b(int i, ItemStack itemstack)
{
return i != 1;
}
public int[] func_94128_d(int side)
{
return side == 1 ? slots_top : side == 0 ? slots_bottom : slots_sides;
}
public boolean func_102007_a(int index, ItemStack itemStack, int side)
{
return index != 1;
}
public boolean func_102008_b(int index, ItemStack itemStack, int side)
{
return true;
}
public String func_145825_b()
{
return "Molecular Transformer";
}
public boolean func_145818_k_()
{
return false;
}
public void func_70295_k_() {}
public void func_70305_f() {}
}
|
|
|
Adv. Solars bug. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2015-09-07 22:10 | Artmoneyse | New Issue | |
| 2015-09-07 22:10 | Artmoneyse | File Added: crash-2015-09-08_00.12.28-server.txt | |
| 2015-09-07 23:32 | Artmoneyse | Note Added: 0004185 | |
| 2015-09-08 16:01 | Chocohead | Note Added: 0004186 | |
| 2015-09-08 16:20 | Artmoneyse | File Added: TileEntityMolecularTransformer.txt | |
| 2015-09-08 16:24 | Artmoneyse | Note Added: 0004187 | |
| 2015-09-08 17:54 | Artmoneyse | File Added: Deobfuscate_TileEntityMolecularTransformer.txt | |
| 2015-09-08 19:19 | Artmoneyse | Note Edited: 0004187 | |
| 2015-09-10 21:33 | Aroma1997 | Note Added: 0004188 | |
| 2015-09-10 21:33 | Aroma1997 | Status | new => closed |
| 2015-09-10 21:33 | Aroma1997 | Assigned To | => Aroma1997 |
| 2015-09-10 21:33 | Aroma1997 | Resolution | open => won't fix |