Everything posted by Villfuk02
-
[1.10.2]TileEntity not Working properly (page 2)
Are you going to try it, or just look at the code?
-
[1.10.2]TileEntity not Working properly (page 2)
you mean also? done
-
[1.10.2]TileEntity not Working properly (page 2)
https://github.com/Villfuk02/Essence better?
-
[1.10.2]TileEntity not Working properly (page 2)
k
-
[1.10.2]TileEntity not Working properly (page 2)
Oh I forgot, I have my own modded items in the code. I'll need to send you the whole workspace Here it is: https://mega.nz/#!wZkj0C7J!vFoklfUrMM2A6tgaUFi3qwIrMycFg6kb201gWZd0-9A
-
[1.10.2]TileEntity not Working properly (page 2)
Ok, so where's the problem? Why does it just reset when i reload the world? And the items are doing totally wierd things. When i update one slot, it just resets to how it was before the processing. Try it yourself: BlockManualMill: package com.villfuk02.essence.blocks; import java.util.Random; import com.villfuk02.essence.client.Reference; import com.villfuk02.essence.gui.GuiHandler; import com.villfuk02.essence.init.ModBlocks; import com.villfuk02.essence.tileentities.TileEntityComparingChest; import com.villfuk02.essence.tileentities.TileEntityManualMill; import net.minecraft.block.BlockContainer; import net.minecraft.block.SoundType; import net.minecraft.block.material.MapColor; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.InventoryHelper; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class BlockManualMill extends BlockContainer{ public BlockManualMill(String unlocalizedName, String registryName) { super(Material.IRON); this.setUnlocalizedName(unlocalizedName); this.setRegistryName(new ResourceLocation(Reference.MOD_ID, registryName)); this.setHardness(3.0f); this.setResistance(40.0f); this.setHarvestLevel("pickaxe", 0); this.setSoundType(SoundType.METAL); } @Override public void breakBlock(World world, BlockPos pos, IBlockState state) { TileEntityComparingChest te = (TileEntityComparingChest)world.getTileEntity(pos); InventoryHelper.spawnItemStack(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Item.getItemFromBlock(ModBlocks.manual_mill), 1, 0, te.writeToNBT(new NBTTagCompound()))); super.breakBlock(world, pos, state); } @Override public MapColor getMapColor(IBlockState state) { return MapColor.STONE; } @Override public TileEntity createNewTileEntity(World worldIn, int meta) { return new TileEntityManualMill(); } @Override public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) { if (worldIn.isRemote){ return true; } playerIn.openGui(Reference.MOD_ID, GuiHandler.MANUAL_MILL_GUI, worldIn, pos.getX(), pos.getY(), pos.getZ()); return true; } @Override public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) { if (stack.hasDisplayName()){ ((TileEntityManualMill)world.getTileEntity(pos)).setCustomName(stack.getDisplayName()); } } @Override public boolean isFullCube(IBlockState state) { return false; } @Override public boolean isNormalCube(IBlockState state){ return false; } } GuiManualMill: package com.villfuk02.essence.gui; import java.io.IOException; import java.util.ArrayList; import java.util.List; import com.villfuk02.essence.client.Reference; import com.villfuk02.essence.tileentities.TileEntityManualMill; import io.netty.util.concurrent.ProgressiveFuture; import jline.internal.Log; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class GuiManualMill extends GuiContainer{ private static final ResourceLocation texture = new ResourceLocation(Reference.MOD_ID + ":" + "textures/gui/container/manual_mill_gui.png"); private TileEntityManualMill entity; private InventoryPlayer player; public GuiManualMill(InventoryPlayer player, TileEntityManualMill entity) { super(new ContainerManualMill(player, entity)); xSize = 176; ySize = 207; this.entity = entity; this.player = player; } final int progress_bar_xpos = 78; final int progress_bar_ypos = 38; final int progress_bar_icon_u = 176; final int progress_bar_icon_v = 0; final int progress_bar_width = 20; final int progress_bar_height = 58; final int gear_xpos = 80; final int gear_ypos = 58; final int gear_icon_u = 0; final int gear_icon_v = 210; final int gear_width = 16; final int gear_height = 16; final int speed_xpos = 8; final int speed_ypos = 74; final int speed_icon_u = 0; final int speed_icon_v = 230; final int speed_width = 40; final int speed_height = 15; final int essence_xpos = 117; final int essence_ypos = 73; final int essence_icon_u = 70; final int essence_icon_v = 210; final int essence_width = 16; final int essence_height = 40; @Override public void initGui() { super.initGui(); this.buttonList.add(new GuiButton( 1, this.guiLeft + 8, this.guiTop + 60, 40, 12, "Mill")); } @Override protected void actionPerformed(GuiButton button){ if(button.id == 1){ entity.powered = true; } } @Override protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f); drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, xSize, ySize); double progress = entity.fractionProgress(); this.drawTexturedModalRect(this.guiLeft + progress_bar_xpos, this.guiTop + progress_bar_ypos, progress_bar_icon_u, progress_bar_icon_v, progress_bar_width, (int)(progress * (double)progress_bar_height)); int rotate = entity.getRotationStage(); this.drawTexturedModalRect(this.guiLeft + gear_xpos, this.guiTop + gear_ypos, gear_icon_u + rotate * 16, gear_icon_v, gear_width, gear_height); double speed = entity.fractionSpeed(); this.drawTexturedModalRect(this.guiLeft + speed_xpos, this.guiTop + speed_ypos, speed_icon_u,speed_icon_v, (int)(speed * (double)speed_width), speed_height); double essence = entity.fractionEssence(); int type = entity.getEssenceType(); this.drawTexturedModalRect(this.guiLeft + essence_xpos, this.guiTop + essence_ypos + essence_height - (int)essence, essence_icon_u + type * essence_width, essence_icon_v + essence_height - (int)essence, essence_width, (int)essence); } @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY){ super.drawGuiContainerForegroundLayer(mouseX, mouseY); String s = this.entity.getName(); this.fontRendererObj.drawString(s, 88 - this.fontRendererObj.getStringWidth(s) / 2, 6, 4210752); this.fontRendererObj.drawString(this.player.getDisplayName().getUnformattedText(), 8, 115, 4210752); List<String> text = new ArrayList<String>(); if(isInRect(guiLeft + progress_bar_xpos, guiTop + progress_bar_ypos, progress_bar_width, progress_bar_height, mouseX, mouseY)){ text.add("Progress: "); int percentage = (int)(entity.fractionProgress() * 100.0); text.add(percentage + "%"); } if(isInRect(guiLeft + speed_xpos, guiTop + speed_ypos, speed_width, speed_height, mouseX, mouseY)){ text.add("Speed: "); text.add(entity.getAvgSpeed() + " RPM"); } if(isInRect(guiLeft + essence_xpos, guiTop + essence_ypos, essence_width, essence_height, mouseX, mouseY)){ text.add("Stored essence:"); text.add(entity.getEssence() + "u"); switch (entity.getEssenceType()){ case 0: text.add("White essence"); break; case 1: text.add("Green essence"); break; case 2: text.add("Orange essence"); break; case 3: text.add("Blue essence"); break; case 4: text.add("Yellow essence"); break; case 5: text.add("Cyan essence"); break; case 6: text.add("Gray essence"); break; case 7: text.add("Light gray essence"); break; default: break; } } if(!text.isEmpty()){ drawHoveringText(text, mouseX - guiLeft, mouseY - guiTop, fontRendererObj); } } public static boolean isInRect(int x, int y, int xSize, int ySize,int mouseX, int mouseY){ return((mouseX >= x && mouseX <= x + xSize)&&(mouseY >= y && mouseY <= y + ySize)); } } ContainerManualMill: package com.villfuk02.essence.gui; import com.villfuk02.essence.tileentities.TileEntityManualMill; import jline.internal.Log; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.IContainerListener; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.SlotItemHandler; public class ContainerManualMill extends Container{ private TileEntityManualMill te; private int [] cachedFields; private final int hotbar = 9; private final int inventory_rows = 3; private final int inventory_columns = 9; private final int inventory = inventory_rows * inventory_columns; private final int player_slots = hotbar + inventory; public final int input_slots = 4; public final int output_slots = 1; public final int machine_slots = input_slots + output_slots; private final int first_player_index = 0; private final int first_machine_index = first_player_index; public ContainerManualMill(InventoryPlayer player, TileEntityManualMill te){ this.te = te; //Hotbar for(int x = 0; x < hotbar; x++){ addSlotToContainer(new Slot(player, x, 8 + 18 * x, 183)); } //Inventory for(int y = 0; y < inventory_rows; y++){ for(int x = 0; x < inventory_columns; x++){ addSlotToContainer(new Slot(player, hotbar + x + y * inventory_columns, 8 + 18 * x, 125 + y * 18)); } } //Machine for (int x = 0; x < input_slots; x++){ addSlotToContainer(new SlotItemHandler(te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, EnumFacing.UP), first_machine_index + x, 44 + 24 * x, 19)); } addSlotToContainer(new SlotItemHandler(te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, EnumFacing.UP), first_machine_index + input_slots, 80, 97)); } @Override public boolean canInteractWith(EntityPlayer player) { return this.te.isUseableByPlayer(player); } @Override public ItemStack transferStackInSlot (EntityPlayer player, int fromSlot) { ItemStack previous = null; Slot slot = (Slot)this.inventorySlots.get(fromSlot); if(slot != null && slot.getHasStack()){ ItemStack current = slot.getStack(); previous = current.copy(); if(fromSlot < 15){ if(!this.mergeItemStack(current, 36, 41, true)) return null; } else { if (!this.mergeItemStack(current, 0, 36, false)) return null; } if (current.stackSize == 0) slot.putStack((ItemStack)null); else slot.onSlotChanged(); if (current.stackSize == previous.stackSize) return null; slot.onPickupFromSlot(player, current); } return previous; } @Override public void detectAndSendChanges(){ super.detectAndSendChanges(); boolean haveFieldsChanged = false; boolean fieldChanged[] = new boolean[this.te.getFieldCount()]; if(cachedFields == null){ cachedFields = new int[this.te.getFieldCount()]; haveFieldsChanged = true; } for(int i = 0; i < cachedFields.length; i++){ if(haveFieldsChanged || cachedFields[i] != this.te.getField(i)){ cachedFields[i] = this.te.getField(i); haveFieldsChanged = true; } } for(int i = 0; i < this.listeners.size(); i++){ IContainerListener iListener = (IContainerListener)this.listeners.get(i); for(int fieldID = 0; fieldID < this.te.getFieldCount(); ++fieldID){ if(fieldChanged[fieldID]){ Log.info("field " + fieldID + " changed to " + cachedFields[fieldID]); iListener.sendProgressBarUpdate(this, fieldID, cachedFields[fieldID]); } } } } @SideOnly(Side.CLIENT) @Override public void updateProgressBar(int id, int data){ this.te.setField(id, data); } } TileEntityManualMill: package com.villfuk02.essence.tileentities; import org.xml.sax.InputSource; import com.villfuk02.essence.Essence; import com.villfuk02.essence.gui.ContainerManualMill; import com.villfuk02.essence.init.ModItems; import jline.internal.Log; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; 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.SPacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.ITickable; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemStackHandler; public class TileEntityManualMill extends TileEntity implements ITickable { private static int recipe_count = 3; public boolean powered = false; private String customName; private static ItemStack[] inputs = {new ItemStack(Items.FEATHER),new ItemStack(Items.STRING),new ItemStack(Items.GLOWSTONE_DUST),new ItemStack(Items.PAPER),new ItemStack(Blocks.LEAVES),new ItemStack(Blocks.TALLGRASS),new ItemStack(Items.WHEAT),new ItemStack(Items.MELON),new ItemStack(Blocks.LEAVES2),new ItemStack(Blocks.TALLGRASS),new ItemStack(Items.WHEAT),new ItemStack(Items.MELON)}; private static ItemStack[] outputs = {new ItemStack(ModItems.essence_dust, 1, 0),new ItemStack(ModItems.essence_dust, 1, 1),new ItemStack(ModItems.essence_dust, 1, 1)}; private static Essence[] essence_outputs ={new Essence(40, 0),new Essence(40, 1),new Essence(40, 1)}; private int speed = 0; private int average_speed = 0; private int cache_speed = -1; private int speed_decrement = 3; private int power_needed = 8000; private int progress = 0; private int rotation = 0; private int rotation_stage = 0; private int max_essence = 1000; private int essence_stored = 0; private int essence_type = -1; public ItemStackHandler itemHandler = new ItemStackHandler(getSizeInventory()){ @Override protected void onContentsChanged(int slot){ markDirty(); Log.info("marked"); } }; @Override public boolean hasCapability(Capability capability, EnumFacing facing) { return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY ? true : super.hasCapability(capability, facing); } @Override public <T> T getCapability(Capability<T> capability, EnumFacing facing) { if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { return (T) itemHandler; } return super.getCapability(capability, facing); } @Override public SPacketUpdateTileEntity getUpdatePacket() { BlockPos blockPos=getPos(); return new SPacketUpdateTileEntity(blockPos,0,getUpdateTag()); } @Override public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) { NBTTagCompound nbtTagCompound=pkt.getNbtCompound(); super.readFromNBT(nbtTagCompound); readFromNBT(nbtTagCompound); } @Override public NBTTagCompound getUpdateTag() { NBTTagCompound supertag=super.getUpdateTag(); writeToNBT(supertag); return supertag; } @Override public void handleUpdateTag(NBTTagCompound tag) { super.handleUpdateTag(tag); readFromNBT(tag); } public int getAvgSpeed(){ return average_speed; } public int getSpeed(){ return speed; } public boolean getPowered(){ return powered; } public int getEssence(){ return essence_stored; } public int getEssenceType(){ return essence_type; } public double fractionEssence(){ double fraction = 39.0 *((double)essence_stored / (double)max_essence); if (fraction > 0.0) fraction++; return MathHelper.clamp_double(fraction, 0.0, 40.0); } public double fractionProgress(){ double fraction = ((double)progress / (double)power_needed); return MathHelper.clamp_double(fraction, 0.0, 1.0); } public double fractionSpeed(){ double fraction = ((double)average_speed / (double)(30 * speed_decrement)); return MathHelper.clamp_double(fraction, 0.0, 1.0); } public int getRotationStage() { return rotation_stage; } @Override public void update(){ if (essence_stored == 0){ essence_type = -1; } if(powered){ speed += 80; }else if(speed > 0){ speed -= 1 + (int)((double)speed / (double)speed_decrement); } if (speed < 0) speed = 0; if (progress >= power_needed){ finishRecipe(); progress = 0; } average_speed = (average_speed * 39 + speed) / 40; if(validRecipe()){ if(average_speed > 0){ rotation += average_speed; progress += average_speed; } if (progress <0) progress = 0; rotation_stage = ((int)((double)rotation / 37.5)) % 4; if (rotation > 149) rotation -= 150; }else { progress = 0; } if (essence_stored == 0){ essence_type = -1; } powered = false; } private boolean validRecipe(){ ItemStack result = null; boolean validi = false; boolean valide = false; result = getOutput(itemHandler.getStackInSlot(0),itemHandler.getStackInSlot(1),itemHandler.getStackInSlot(2),itemHandler.getStackInSlot(3)); if (result != null) { ItemStack outputStack = itemHandler.getStackInSlot(4); if (outputStack == null){ validi = true; }else if (outputStack.getItem() == result.getItem() && outputStack.getMetadata() == result.getMetadata() && ItemStack.areItemStackTagsEqual(outputStack, result)){ int combinedSize = outputStack.stackSize + result.stackSize; if (combinedSize <= 64 && combinedSize <= outputStack.getMaxStackSize()){ validi = true; } } } if (validi){ Essence essence = getEssenceOutput(itemHandler.getStackInSlot(0),itemHandler.getStackInSlot(1),itemHandler.getStackInSlot(2),itemHandler.getStackInSlot(3)); if (essence != null){ if(essence_type == -1){ valide = true; }else if(essence.getType() == essence_type){ int combined_amount = essence.getAmount() + essence_stored; if (combined_amount <= max_essence){ valide = true; } } } } if (!valide){ validi = false; } return validi; } public void finishRecipe(){ ItemStack out = getOutput(itemHandler.getStackInSlot(0),itemHandler.getStackInSlot(1),itemHandler.getStackInSlot(2),itemHandler.getStackInSlot(3)); itemHandler.insertItem(4, out, false); for(int i = 0; i < 4; i++){ itemHandler.extractItem(i, 1, false); } essence_stored += getEssenceOutput(itemHandler.getStackInSlot(0),itemHandler.getStackInSlot(1),itemHandler.getStackInSlot(2),itemHandler.getStackInSlot(3)).getAmount(); essence_type = getEssenceOutput(itemHandler.getStackInSlot(0),itemHandler.getStackInSlot(1),itemHandler.getStackInSlot(2),itemHandler.getStackInSlot(3)).getType(); //---Something to write to NBT here--- markDirty(); Log.info("marked"); } public static ItemStack getOutput(ItemStack in1, ItemStack in2, ItemStack in3, ItemStack in4){ ItemStack result = null; ItemStack[] in = {in1, in2, in3, in4}; if (in1 == null || in2 == null || in3 == null || in4 == null){ return null; }else{ for(int x = 0; x < recipe_count; x++){ for (int a = 0; a < 4; a++){ if (in[a].getItem() == inputs[4*x].getItem()){ for (int b = 0; b < 4; b++){ if (in[b].getItem() == inputs[4*x + 1].getItem()){ for (int c = 0; c < 4; c++){ if (in[c].getItem() == inputs[4*x + 2].getItem()){ for (int d = 0; d < 4; d++){ if (in[d].getItem() == inputs[4*x + 3].getItem()){ result = outputs[x]; } } } } } } } } } if (in1.getItem() == ModItems.essence_dust && in2.getItem() == ModItems.essence_dust && in3.getItem() == ModItems.essence_dust && in4.getItem() == ModItems.essence_dust){ int data = in1.getMetadata(); if (in2.getMetadata() == data && in3.getMetadata() == data && in4.getMetadata() == data) result = new ItemStack(ModItems.essence_dust, 3, data); } } return result; } public static Essence getEssenceOutput(ItemStack in1, ItemStack in2, ItemStack in3, ItemStack in4){ Essence result = null; ItemStack[] in = {in1, in2, in3, in4}; if (in1 == null || in2 == null || in3 == null || in4 == null){ return null; }else{ for(int x = 0; x < recipe_count; x++){ for (int a = 0; a < 4; a++){ if (in[a].getItem() == inputs[4*x].getItem()){ for (int b = 0; b < 4; b++){ if (in[b].getItem() == inputs[4*x + 1].getItem()){ for (int c = 0; c < 4; c++){ if (in[c].getItem() == inputs[4*x + 2].getItem()){ for (int d = 0; d < 4; d++){ if (in[d].getItem() == inputs[4*x + 3].getItem()){ result = essence_outputs[x]; } } } } } } } } } if (in1.getItem() == ModItems.essence_dust && in2.getItem() == ModItems.essence_dust && in3.getItem() == ModItems.essence_dust && in4.getItem() == ModItems.essence_dust){ int data = in1.getMetadata(); if (in2.getMetadata() == data && in3.getMetadata() == data && in4.getMetadata() == data) result = new Essence(20, data); } } return result; } public String getCustomName(){ return this.customName; } public void setCustomName(String customName){ this.customName = customName; } public ItemStack[] getStacks(){ ItemStack[] itemStacks = new ItemStack[5]; for (int i = 0; i < getSizeInventory(); i++) itemStacks[i] = itemHandler.getStackInSlot(i); return itemStacks; } public String getName() { return this.hasCustomName() ? this.customName : "Manual Essence Mill"; } public boolean hasCustomName() { return this.customName != null && !this.customName.equals(""); } public int getSizeInventory() { return 5; } public boolean isUseableByPlayer(EntityPlayer player) { return this.worldObj.getTileEntity(this.getPos()) == this && player.getDistanceSq(this.pos.add(0.5, 0.5, 0.5)) <= 64; } public int getField(int id) { int value = 0; if (id == 0) value = progress; if (id == 1) value = speed; if (id == 2) value = rotation; if (id == 3) value = essence_stored; if (id == 4) value = essence_type; return value; } public void setField(int id, int value) { if (id == 0) progress = value; if (id == 1) speed = value; if (id == 2) rotation = value; if (id == 3) essence_stored = value; if (id == 4) essence_type = value; } public int getFieldCount() { return 5; } @Override public NBTTagCompound writeToNBT(NBTTagCompound nbt){ super.writeToNBT(nbt); nbt.setTag("Items", itemHandler.serializeNBT()); nbt.setInteger("progress", progress); nbt.setInteger("speed", speed); nbt.setInteger("rotation", rotation); nbt.setInteger("essence_stored", essence_stored); nbt.setInteger("essence_type", essence_type); if (this.hasCustomName()){ nbt.setString("CustomName",this.getCustomName()); } return nbt; } @Override public void readFromNBT(NBTTagCompound nbt){ super.readFromNBT(nbt); itemHandler.deserializeNBT(nbt.getCompoundTag("Items")); progress = nbt.getInteger("progress"); speed = nbt.getInteger("speed"); rotation = nbt.getInteger("rotation"); essence_stored = nbt.getInteger("essence_stored"); essence_type = nbt.getInteger("essence_type"); if(nbt.hasKey(customName, ){ this.setCustomName(nbt.getString("CustomName")); } } } And also, when the input slots have one last item in them and you process them, the world crashes.
-
[1.10.2]TileEntity not Working properly (page 2)
nice, BUT markDirty doesn't save data to NBT. How do i do dis?
-
[1.10.2]TileEntity not Working properly (page 2)
I have new tileEntity here, and it is simple machine, but when the process is finished, the nbt doesn't update and the items in it reset. I dont know, how to make it write to nbt and what to do with the resetting items. package com.villfuk02.essence.tileentities; import org.xml.sax.InputSource; import com.villfuk02.essence.Essence; import com.villfuk02.essence.gui.ContainerManualMill; import com.villfuk02.essence.init.ModItems; import jline.internal.Log; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; 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.SPacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.ITickable; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemStackHandler; public class TileEntityManualMill extends TileEntity implements ITickable { private static int recipe_count = 3; public boolean powered = false; private String customName; private static ItemStack[] inputs = {new ItemStack(Items.FEATHER),new ItemStack(Items.STRING),new ItemStack(Items.GLOWSTONE_DUST),new ItemStack(Items.PAPER),new ItemStack(Blocks.LEAVES),new ItemStack(Blocks.TALLGRASS),new ItemStack(Items.WHEAT),new ItemStack(Items.MELON),new ItemStack(Blocks.LEAVES2),new ItemStack(Blocks.TALLGRASS),new ItemStack(Items.WHEAT),new ItemStack(Items.MELON)}; private static ItemStack[] outputs = {new ItemStack(ModItems.essence_dust, 1, 0),new ItemStack(ModItems.essence_dust, 1, 1),new ItemStack(ModItems.essence_dust, 1, 1)}; private static Essence[] essence_outputs ={new Essence(40, 0),new Essence(40, 1),new Essence(40, 1)}; private int speed = 0; private int average_speed = 0; private int cache_speed = -1; private int speed_decrement = 3; private int power_needed = 8000; private int progress = 0; private int rotation = 0; private int rotation_stage = 0; private int max_essence = 1000; private int essence_stored = 0; private int essence_type = -1; public ItemStackHandler itemHandler = new ItemStackHandler(getSizeInventory()); @Override public boolean hasCapability(Capability capability, EnumFacing facing) { return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY ? true : super.hasCapability(capability, facing); } @Override public <T> T getCapability(Capability<T> capability, EnumFacing facing) { if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { return (T) itemHandler; } return super.getCapability(capability, facing); } @Override public SPacketUpdateTileEntity getUpdatePacket() { BlockPos blockPos=getPos(); return new SPacketUpdateTileEntity(blockPos,0,getUpdateTag()); } @Override public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) { NBTTagCompound nbtTagCompound=pkt.getNbtCompound(); super.readFromNBT(nbtTagCompound); readFromNBT(nbtTagCompound); } @Override public NBTTagCompound getUpdateTag() { NBTTagCompound supertag=super.getUpdateTag(); writeToNBT(supertag); return supertag; } @Override public void handleUpdateTag(NBTTagCompound tag) { super.handleUpdateTag(tag); readFromNBT(tag); } public int getAvgSpeed(){ return average_speed; } public int getSpeed(){ return speed; } public boolean getPowered(){ return powered; } public int getEssence(){ return essence_stored; } public int getEssenceType(){ return essence_type; } public double fractionEssence(){ double fraction = 39.0 *((double)essence_stored / (double)max_essence); if (fraction > 0.0) fraction++; return MathHelper.clamp_double(fraction, 0.0, 40.0); } public double fractionProgress(){ double fraction = ((double)progress / (double)power_needed); return MathHelper.clamp_double(fraction, 0.0, 1.0); } public double fractionSpeed(){ double fraction = ((double)average_speed / (double)(30 * speed_decrement)); return MathHelper.clamp_double(fraction, 0.0, 1.0); } public int getRotationStage() { return rotation_stage; } @Override public void update(){ if (essence_stored == 0){ essence_type = -1; } if(powered){ speed += 80; }else if(speed > 0){ speed -= 1 + (int)((double)speed / (double)speed_decrement); } if (speed < 0) speed = 0; if (progress >= power_needed){ finishRecipe(); progress = 0; } average_speed = (average_speed * 39 + speed) / 40; if(validRecipe()){ if(average_speed > 0){ rotation += average_speed; progress += average_speed; } if (progress <0) progress = 0; rotation_stage = ((int)((double)rotation / 37.5)) % 4; if (rotation > 149) rotation -= 150; }else { progress = 0; } if (essence_stored == 0){ essence_type = -1; } powered = false; this.markDirty(); } private boolean validRecipe(){ ItemStack result = null; boolean validi = false; boolean valide = false; result = getOutput(itemHandler.getStackInSlot(0),itemHandler.getStackInSlot(1),itemHandler.getStackInSlot(2),itemHandler.getStackInSlot(3)); if (result != null) { ItemStack outputStack = itemHandler.getStackInSlot(4); if (outputStack == null){ validi = true; }else if (outputStack.getItem() == result.getItem() && outputStack.getMetadata() == result.getMetadata() && ItemStack.areItemStackTagsEqual(outputStack, result)){ int combinedSize = outputStack.stackSize + result.stackSize; if (combinedSize <= 64 && combinedSize <= outputStack.getMaxStackSize()){ validi = true; } } } if (validi){ Essence essence = getEssenceOutput(itemHandler.getStackInSlot(0),itemHandler.getStackInSlot(1),itemHandler.getStackInSlot(2),itemHandler.getStackInSlot(3)); if (essence != null){ if(essence_type == -1){ valide = true; }else if(essence.getType() == essence_type){ int combined_amount = essence.getAmount() + essence_stored; if (combined_amount <= max_essence){ valide = true; } } } } if (!valide){ validi = false; } this.markDirty(); return validi; } public void finishRecipe(){ ItemStack out = getOutput(itemHandler.getStackInSlot(0),itemHandler.getStackInSlot(1),itemHandler.getStackInSlot(2),itemHandler.getStackInSlot(3)); if (itemHandler.getStackInSlot(4) == null){ itemHandler.insertItem(4, out, false); }else{ itemHandler.insertItem(4, new ItemStack(itemHandler.getStackInSlot(4).getItem(), itemHandler.getStackInSlot(4).stackSize + out.stackSize, itemHandler.getStackInSlot(4).getMetadata()), false); } for(int i = 0; i < 4; i++){ ItemStack stack = itemHandler.getStackInSlot(i); stack.stackSize--; if (stack.stackSize <= 0){ stack = null; } itemHandler.insertItem(i, stack, false); } essence_stored += getEssenceOutput(itemHandler.getStackInSlot(0),itemHandler.getStackInSlot(1),itemHandler.getStackInSlot(2),itemHandler.getStackInSlot(3)).getAmount(); essence_type = getEssenceOutput(itemHandler.getStackInSlot(0),itemHandler.getStackInSlot(1),itemHandler.getStackInSlot(2),itemHandler.getStackInSlot(3)).getType(); //---Something to write to NBT here--- this.markDirty(); } public static ItemStack getOutput(ItemStack in1, ItemStack in2, ItemStack in3, ItemStack in4){ ItemStack result = null; ItemStack[] in = {in1, in2, in3, in4}; if (in1 == null || in2 == null || in3 == null || in4 == null){ return null; }else{ for(int x = 0; x < recipe_count; x++){ for (int a = 0; a < 4; a++){ if (in[a].getItem() == inputs[4*x].getItem()){ for (int b = 0; b < 4; b++){ if (in[b].getItem() == inputs[4*x + 1].getItem()){ for (int c = 0; c < 4; c++){ if (in[c].getItem() == inputs[4*x + 2].getItem()){ for (int d = 0; d < 4; d++){ if (in[d].getItem() == inputs[4*x + 3].getItem()){ result = outputs[x]; } } } } } } } } } if (in1.getItem() == ModItems.essence_dust && in2.getItem() == ModItems.essence_dust && in3.getItem() == ModItems.essence_dust && in4.getItem() == ModItems.essence_dust){ int data = in1.getMetadata(); if (in2.getMetadata() == data && in3.getMetadata() == data && in4.getMetadata() == data) result = new ItemStack(ModItems.essence_dust, 3, data); } } return result; } public static Essence getEssenceOutput(ItemStack in1, ItemStack in2, ItemStack in3, ItemStack in4){ Essence result = null; ItemStack[] in = {in1, in2, in3, in4}; if (in1 == null || in2 == null || in3 == null || in4 == null){ return null; }else{ for(int x = 0; x < recipe_count; x++){ for (int a = 0; a < 4; a++){ if (in[a].getItem() == inputs[4*x].getItem()){ for (int b = 0; b < 4; b++){ if (in[b].getItem() == inputs[4*x + 1].getItem()){ for (int c = 0; c < 4; c++){ if (in[c].getItem() == inputs[4*x + 2].getItem()){ for (int d = 0; d < 4; d++){ if (in[d].getItem() == inputs[4*x + 3].getItem()){ result = essence_outputs[x]; } } } } } } } } } if (in1.getItem() == ModItems.essence_dust && in2.getItem() == ModItems.essence_dust && in3.getItem() == ModItems.essence_dust && in4.getItem() == ModItems.essence_dust){ int data = in1.getMetadata(); if (in2.getMetadata() == data && in3.getMetadata() == data && in4.getMetadata() == data) result = new Essence(20, data); } } return result; } public String getCustomName(){ return this.customName; } public void setCustomName(String customName){ this.customName = customName; } public ItemStack[] getStacks(){ ItemStack[] itemStacks = new ItemStack[5]; for (int i = 0; i < getSizeInventory(); i++) itemStacks[i] = itemHandler.getStackInSlot(i); return itemStacks; } public String getName() { return this.hasCustomName() ? this.customName : "Manual Essence Mill"; } public boolean hasCustomName() { return this.customName != null && !this.customName.equals(""); } public int getSizeInventory() { return 5; } public boolean isUseableByPlayer(EntityPlayer player) { return this.worldObj.getTileEntity(this.getPos()) == this && player.getDistanceSq(this.pos.add(0.5, 0.5, 0.5)) <= 64; } public int getField(int id) { int value = 0; if (id == 0) value = progress; if (id == 1) value = speed; if (id == 2) value = rotation; if (id == 3) value = essence_stored; if (id == 4) value = essence_type; return value; } public void setField(int id, int value) { if (id == 0) progress = value; if (id == 1) speed = value; if (id == 2) rotation = value; if (id == 3) essence_stored = value; if (id == 4) essence_type = value; } public int getFieldCount() { return 5; } @Override public NBTTagCompound writeToNBT(NBTTagCompound nbt){ super.writeToNBT(nbt); nbt.setTag("Items", itemHandler.serializeNBT()); nbt.setInteger("progress", progress); nbt.setInteger("speed", speed); nbt.setInteger("rotation", rotation); nbt.setInteger("essence_stored", essence_stored); nbt.setInteger("essence_type", essence_type); if (this.hasCustomName()){ nbt.setString("CustomName",this.getCustomName()); } return nbt; } @Override public void readFromNBT(NBTTagCompound nbt){ super.readFromNBT(nbt); itemHandler.deserializeNBT(nbt.getCompoundTag("Items")); progress = nbt.getInteger("progress"); speed = nbt.getInteger("speed"); rotation = nbt.getInteger("rotation"); essence_stored = nbt.getInteger("essence_stored"); essence_type = nbt.getInteger("essence_type"); if(nbt.hasKey(customName, ){ this.setCustomName(nbt.getString("CustomName")); } } } Thanks for any response
-
Crash when opening world
From the things you said, it looks like my mechanical users have problem with solidified experience inside them. But why does it crash and how can i fix this?
-
[1.10.2]TileEntity not Working properly (page 2)
You're right
-
[1.10.2] GUI changes not saving
fixed i made new thread here, because people were scared of this, and ignored it. http://www.minecraftforge.net/forum/index.php?topic=43754.0
-
[1.10.2]TileEntity not Working properly (page 2)
Works perfectly, thanks I did it like this: for (int i = 0; i < te.getSizeInventory(); i++){ ItemStack stack = te.itemHandler.getStackInSlot(i); if (stack != null && stack.stackSize != 0) te.getWorld().spawnEntityInWorld(new EntityItem(world, pos.getX(), pos.getY(), pos.getZ(), stack)); } But i have a problem, it doesn't save to nbt. When i put items in it and reload the world, the items disappear.
-
[1.10.2]TileEntity not Working properly (page 2)
Everything works, but now i want to make the stone crate drop the items inside it when broken. How? btw, should i make new topic, or leave this here?
-
[1.10.2]TileEntity not Working properly (page 2)
I haven't noticed that, but i totally havent expected it to behave like this. THX
-
[1.10.2]TileEntity not Working properly (page 2)
Oh shet
-
[1.10.2]TileEntity not Working properly (page 2)
So somebody told me, that i should use IItemHandler instead of IInventory. I've got something, but when i place itemstack in slot, it goes in there, but it is also left in my cursor and when i remove itemstack it just disappears. I think everything happens twice and doesnt sync perfectly, because when i place less than 32 items in the slot, it just doubles in the slot. When i put 48 items in, in the slot goes 64 and i get 32 back. when i split the stack with rightclicking, in the slot is left just quarter of the items and in my cursor too. TileEntity: package com.villfuk02.essence.tileentities; import java.awt.ItemSelectable; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.text.ITextComponent; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.fml.common.gameevent.TickEvent; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.ItemStackHandler; public class TileEntityStoneCrate extends TileEntity implements ICapabilityProvider{ private String customName; private static ItemStackHandler itemHandler = new ItemStackHandler(81); @Override public boolean hasCapability(Capability capability, EnumFacing facing) { return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY ? true : super.hasCapability(capability, facing); } @Override public <T> T getCapability(Capability<T> capability, EnumFacing facing) { if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { return (T) itemHandler; } return super.getCapability(capability, facing); } public String getCustomName(){ return this.customName; } public void setCustomName(String customName){ this.customName = customName; } public String getName() { return this.hasCustomName() ? this.customName : "Stone Storage Crate"; } public boolean hasCustomName() { return this.customName != null && !this.customName.equals(""); } public int getSizeInventory() { return 81; } public boolean isUseableByPlayer(EntityPlayer player) { return this.worldObj.getTileEntity(this.getPos()) == this && player.getDistanceSq(this.pos.add(0.5, 0.5, 0.5)) <= 64; } } Container: package com.villfuk02.essence.gui; import org.apache.logging.log4j.core.net.Facility; import com.villfuk02.essence.tileentities.TileEntityStoneCrate; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumFacing; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.SlotItemHandler; public class ContainerStoneCrate extends Container{ private TileEntityStoneCrate te; public ContainerStoneCrate(IInventory playerInv, TileEntityStoneCrate te) { this.te = te; //Tile Entity, Slot 0-80, Slot IDs 0-80 for (int y = 0; y < 9; ++y){ for (int x = 0; x < 9; ++x){ this.addSlotToContainer(new SlotItemHandler(te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, EnumFacing.UP), x + y * 9, 15 + x * 16, 15 + y * 16)); } } //Player Inventory, Slot 9-35, Slot IDs 81-107 for (int y = 0; y < 3; ++y){ for (int x = 0; x < 9; ++x){ this.addSlotToContainer(new Slot(playerInv, x + 9 + y * 9, 8 + x * 18, 174 + y * 18)); } } //Player Inventory, Slot 0-8, SLot IDs 108-116 for (int x = 0; x < 9; ++x){ this.addSlotToContainer(new Slot(playerInv, x, 8 + x * 18, 232)); } } @Override public ItemStack transferStackInSlot (EntityPlayer player, int fromSlot) { ItemStack previous = null; Slot slot = (Slot)this.inventorySlots.get(fromSlot); if(slot != null && slot.getHasStack()){ ItemStack current = slot.getStack(); previous = current.copy(); if(fromSlot < 81){ if(!this.mergeItemStack(current, 81, 117, true)) return null; } else { if (!this.mergeItemStack(current, 0, 81, false)) return null; } if (current.stackSize == 0) slot.putStack((ItemStack)null); else slot.onSlotChanged(); if (current.stackSize == previous.stackSize) return null; slot.onPickupFromSlot(player, current); } return previous; } @Override public boolean canInteractWith(EntityPlayer player) { return this.te.isUseableByPlayer(player); } } What am i doing wrong? pls help
-
[1.10.2] GUI changes not saving
PLEASE HELP :'(
-
Crash when opening world
---- Minecraft Crash Report ---- WARNING: coremods are present: LoadingPlugin (Quark-r1.0-56.jar) ShetiPhian-ASM (shetiphiancore-1.10.0-3.3.1.jar) LoadingPlugin (RandomThings-MC1.10.2-3.7.6.jar) EnderCorePlugin (EnderCore-1.10.2-0.4.1.58-beta.jar) ItemPatchingLoader (ItemPhysic Full 1.3.4 mc1.10.2.jar) LoadingPlugin (ResourceLoader-MC1.9.4-1.5.1.jar) NWRTweak (redstonepaste-mc1.9.4-1.7.4.jar) FMLPlugin (InventoryTweaks-1.61-58.jar) LoadingHook (Mekanism-1.10.2-9.2.0.292.jar) CreativePatchingLoader (CreativeCore v1.6.6 mc1.10.2.jar) Contact their authors BEFORE contacting forge // Surprise! Haha. Well, this is awkward. Time: 3.12.16 11:55 Description: Ticking block entity java.lang.RuntimeException: Error while interacting with block minecraft:stone_pressure_plate[powered=true] with 1xitem.actuallyadditions.itemSolidifiedExperience@0. Method:GENERIC_CLICK Button:RIGHT_CLICK at com.rwtema.extrautils2.tile.TileUse.operate(TileUse.java:303) at com.rwtema.extrautils2.tile.TileAdvInteractor.func_73660_a(TileAdvInteractor.java:64) at net.minecraft.world.World.func_72939_s(World.java:1804) at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:619) at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:709) at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:613) at net.minecraft.server.integrated.IntegratedServer.func_71217_p(IntegratedServer.java:240) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:471) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.NullPointerException at net.minecraft.server.management.PlayerInteractionManager.func_187250_a(PlayerInteractionManager.java:386) at com.rwtema.extrautils2.tile.TileUse.operate(TileUse.java:167) ... 8 more A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Server thread Stacktrace: at com.rwtema.extrautils2.tile.TileUse.operate(TileUse.java:303) at com.rwtema.extrautils2.tile.TileAdvInteractor.func_73660_a(TileAdvInteractor.java:64) -- Block entity being ticked -- Details: Name: XU2:TileUse // com.rwtema.extrautils2.tile.TileUse Block type: ID #820 (tile.ExtraUtils2:User // com.rwtema.extrautils2.blocks.BlockAdvInteractor.Use) Block data value: 5 / 0x5 / 0b0101 Block location: World: (-3155,78,537), Chunk: (at 13,4,9 in -198,33; contains blocks -3168,0,528 to -3153,255,543), Region: (-7,1; contains chunks -224,32 to -193,63, blocks -3584,0,512 to -3073,255,1023) Actual block type: ID #820 (tile.ExtraUtils2:User // com.rwtema.extrautils2.blocks.BlockAdvInteractor.Use) Actual block data value: 5 / 0x5 / 0b0101 Stacktrace: at net.minecraft.world.World.func_72939_s(World.java:1804) at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:619) -- Affected level -- Details: Level name: HPL All players: 0 total; [] Chunk stats: ServerChunkCache: 636 Drop: 0 Level seed: -3796594800977191275 Level generator: ID 00 - default, ver 1. Features enabled: true Level generator options: {"diamondSize":8,"lapisCenterHeight":16,"lavaLakeChance":80,"redstoneMaxHeight":16,"diamondMaxHeight":16,"coalMaxHeight":128,"coalMinHeight":0,"seaLevel":63,"graniteCount":10,"riverSize":4,"gravelMinHeight":0,"graniteSize":33,"redstoneSize":8,"fixedBiome":-1,"waterLakeChance":4,"dioriteMinHeight":0,"andesiteCount":10,"graniteMaxHeight":80,"redstoneMinHeight":0,"lapisSize":7,"dirtCount":10,"ironMinHeight":0,"dioriteMaxHeight":80,"coalCount":20,"gravelCount":8,"coalSize":17,"gravelSize":33,"ironMaxHeight":64,"lapisSpread":16,"dioriteCount":10,"andesiteSize":33,"biomeSize":4,"graniteMinHeight":0,"goldCount":2,"diamondCount":1,"dirtSize":33,"gravelMaxHeight":256,"goldSize":9,"ironCount":20,"diamondMinHeight":0,"ironSize":9,"redstoneCount":8,"andesiteMinHeight":0,"dioriteSize":33,"goldMaxHeight":32,"dungeonChance":8,"andesiteMaxHeight":80,"dirtMinHeight":0,"lapisCount":1,"goldMinHeight":0,"dirtMaxHeight":256,"lowerLimitScale":512.0,"biomeDepthOffset":0.0,"upperLimitScale":512.0,"heightScale":684.412,"biomeScaleWeight":1.0,"biomeDepthWeight":1.0,"mainNoiseScaleZ":80.0,"mainNoiseScaleY":160.0,"depthNoiseScaleX":200.0,"mainNoiseScaleX":80.0,"baseSize":8.5,"depthNoiseScaleZ":200.0,"stretchY":12.0,"depthNoiseScaleExponent":0.5,"biomeScaleOffset":0.0,"coordinateScale":684.412,"useStrongholds":true,"useMineShafts":true,"useTemples":true,"useLavaOceans":false,"useCaves":true,"useWaterLakes":true,"useLavaLakes":true,"useMonuments":true,"useRavines":true,"useDungeons":true,"useVillages":true} Level spawn location: World: (116,64,128), Chunk: (at 4,4,0 in 7,8; contains blocks 112,0,128 to 127,255,143), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511) Level time: 4617769 game time, 4847435 day time Level dimension: 0 Level storage version: 0x04ABD - Anvil Level weather: Rain time: 73147 (now: false), thunder time: 78536 (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:709) at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:613) at net.minecraft.server.integrated.IntegratedServer.func_71217_p(IntegratedServer.java:240) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:471) at java.lang.Thread.run(Thread.java:745) -- System Details -- Details: Minecraft Version: 1.10.2 Operating System: Windows 10 (amd64) version 10.0 Java Version: 1.8.0_25, Oracle Corporation Java VM Version: Java HotSpot 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 659687840 bytes (629 MB) / 2540699648 bytes (2423 MB) up to 2863661056 bytes (2731 MB) JVM Flags: 2 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xmx3G IntCache: cache: 1, tcache: 1, allocated: 12, tallocated: 94 FML: MCP 9.32 Powered by Forge 12.18.2.2099 Optifine OptiFine_1.10.2_HD_U_C4_pre 79 mods loaded, 79 mods active States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored UCHIJAAAA mcp{9.19} [Minecraft Coder Pack] (minecraft.jar) UCHIJAAAA FML{8.0.99.99} [Forge Mod Loader] (forge-1.10.2-12.18.2.2099.jar) UCHIJAAAA Forge{12.18.2.2099} [Minecraft Forge] (forge-1.10.2-12.18.2.2099.jar) UCHIJAAAA creativecoredummy{1.0.0} [CreativeCoreDummy] (minecraft.jar) UCHIJAAAA itemphysic{1.3.0} [itemPhysic] (minecraft.jar) UCHIJAAAA actuallyadditions{1.10.2-r81} [Actually Additions] (ActuallyAdditions-1.10.2-r81.jar) UCHIJAAAA autopackager{1.6.3} [AutoPackager] (autopackager-1.6.3.jar) UCHIJAAAA Psi{r1.0-42} [Psi] (Psi-r1.0-42.jar) UCHIJAAAA Quark{r1.0-56} [Quark] (Quark-r1.0-56.jar) UCHIJAAAA AutoRegLib{1.0-2} [AutoRegLib] (AutoRegLib-1.0-2.jar) UCHIJAAAA Baubles{1.3.3} [baubles] (Baubles-1.10.2-1.3.3.jar) UCHIJAAAA betterbuilderswands{0.6.5} [better Builder's Wands] (BetterBuildersWands-0.6.5-1.10r138+8595fc7.jar) UCHIJAAAA Botania{r1.9-337} [botania] (Botania r1.9-337.jar) UCHIJAAAA Chameleon{1.10-2.1.7} [Chameleon] (Chameleon-1.10-2.1.7.jar) UCHIJAAAA ChestTransporter{2.5.3} [Chest Transporter] (ChestTransporter-1.10.2-2.5.3.jar) UCHIJAAAA chisel{MC1.9.4-0.0.6.46} [Chisel] (Chisel-MC1.9.4-0.0.6.46.jar) UCHIJAAAA mcmultipart{1.2.1} [MCMultiPart] (MCMultiPart-1.2.1-universal.jar) UCHIJAAAA chiselsandbits{12.4} [Chisels & Bits] (chiselsandbits-12.4.jar) UCHIJAAAA cookingforblockheads{4.2.15} [Cooking for Blockheads] (CookingForBlockheads_1.10.2-4.2.15.jar) UCHIJAAAA MineTweaker3{3.0.11} [MineTweaker 3] (CraftTweaker-1.10.2-3.0.11.jar) UCHIJAAAA creativecore{1.5.0} [CreativeCore] (CreativeCore v1.6.6 mc1.10.2.jar) UCHIJAAAA JEI{3.12.5.303} [Just Enough Items] (jei_1.10.2-3.12.5.303.jar) UCHIJAAAA cyclicmagic{1.8.6} [Cyclic] (Cyclic-1.10.2-1.8.6.jar) UCHIJAAAA ElecCore{1.5.311} [ElecCore] (ElecCore-1.9.4-1.5.311.jar) UCHIJAAAA deepresonance{1.2.8} [DeepResonance] (deepresonance-1.10-1.2.8.jar) UCHIJAAAA StorageDrawers{1.10.2-3.2.7} [storage Drawers] (StorageDrawers-1.10.2-3.2.7.jar) UCHIJAAAA bitdrawers{0.31} [Drawers & Bits] (DrawersBits-1.10.2-0.31.jar) UCHIJAAAA endercore{1.10.2-0.4.1.58-beta} [EnderCore] (EnderCore-1.10.2-0.4.1.58-beta.jar) UCHIJAAAA Waila{1.7.0} [Waila] (Waila-1.7.0-B3_1.9.4.jar) UCHIJAAAA EnderIO{1.10.2-3.0.1.125_beta} [Ender IO] (EnderIO-1.10.2-3.0.1.125_beta.jar) UCHIJAAAA shetiphiancore{3.3.1} [shetiPhian-Core] (shetiphiancore-1.10.0-3.3.1.jar) UCHIJAAAA endertanks{1.4.2} [EnderTanks] (endertanks-1.10.0-1.4.2.jar) UCHIJAAAA EnderZoo{1.10-1.2.3.43} [Ender Zoo] (EnderZoo-1.10-1.2.3.43.jar) UCHIJAAAA ExtraUtils2{1.0} [ExtraUtils2] (extrautils2-1.10.2-alpha-1.2.1.jar) UCHIJAAAA fastleafdecay{v11} [Fast Leaf Decay] (FastLeafDecay-v11.jar) UCHIJAAAA flatcoloredblocks{mc1.10-v4.2} [Flat Colored Blocks] (flatcoloredblocks-mc1.10-v4.2.jar) UCHIJAAAA flighttweaks{0.0.6-alpha} [Flight Tweaks] (flighttweaks-1.10.2-0.0.6-alpha.jar) UCHIJAAAA ftbl{3.0.0} [FTBLib] (FTBLib-1.10.2-3.0.0.3.jar) UCHIJAAAA ftbu{3.0.0} [FTBUtilities] (FTBUtilities-1.10.2-3.0.0.2.jar) UCHIJAAAA gravestone{1.5.9} [Gravestone] (GraveStone Mod 1.5.9.jar) UCHIJAAAA guideapi{@VERSION@} [Guide-API] (Guide-API-1.10.2-2.0.2-45.jar) UCHIJAAAA hermitquest{1.1.25} [HermitQuest] (hermitquest-1.10.2-1.1.25.jar) UCHIJAAAA hopperducts{1.4.8} [Hopper Ducts] (hopperducts-mc1.9.4-1.4.8.jar) UCHIJAAAA inventorytweaks{1.61-58-a1fd884} [inventory Tweaks] (InventoryTweaks-1.61-58.jar) UCHIJAAAA ironchest{1.10.2-7.0.11.797} [iron Chest] (ironchest-1.10.2-7.0.11.797.jar) UCHIJAAAA journeymap{1.10.2-5.2.4} [JourneyMap] (journeymap-1.10.2-5.2.4-unlimited.jar) UCHIJAAAA jeresources{0.5.1.56} [Just Enough Resources] (JustEnoughResources-1.10.2-0.5.1.56.jar) UCHIJAAAA mantle{1.10.2-1.1.1.194} [Mantle] (Mantle-1.10.2-1.1.1.jar) UCHIJAAAA Mekanism{9.2.0} [Mekanism] (Mekanism-1.10.2-9.2.0.292.jar) UCHIJAAAA MekanismGenerators{9.2.0} [MekanismGenerators] (MekanismGenerators-1.10.2-9.2.0.292.jar) UCHIJAAAA MekanismTools{9.2.0} [MekanismTools] (MekanismTools-1.10.2-9.2.0.292.jar) UCHIJAAAA mercurius{1.0.1} [Mercurius] (Mercurius-1.10.2-1.0.1.jar) UCHIJAAAA modtweaker{2.0.4} [Mod Tweaker] (ModTweaker2-1.10.2-2.0.4.jar) UCHIJAAAA Morpheus{1.10.2-3.1.7} [Morpheus] (Morpheus-1.10.2-3.1.7.jar) UCHIJAAAA mousetweaks{2.6.4} [Mouse Tweaks] (MouseTweaks-2.6.4-mc1.10.2.jar) UCHIJAAAA multistorage{1.2.3} [Multi-Storage] (multistorage-1.10.0-1.2.3b.jar) UCHIJAAAA notenoughwands{1.3.7} [Not Enough Wands] (notenoughwands-1.10-1.3.7.jar) UCHIJAAAA harvestcraft{1.9.4-1.10.2g} [Pam's HarvestCraft] (Pam's HarvestCraft 1.9.4-1.10.2h.jar) UCHIJAAAA reborncore{2.7.3.46} [RebornCore] (RebornCore-1.10.2-2.7.3.46-universal.jar) UCHIJAAAA quantumstorage{3.2.6} [QuantumStorage] (QuantumStorage-1.10.2-3.2.6.jar) UCHIJAAAA randomthings{3.7.6} [Random Things] (RandomThings-MC1.10.2-3.7.6.jar) UCHIJAAAA rangedpumps{0.3} [Ranged Pumps] (rangedpumps-0.3.jar) UCHIJAAAA reborncore-mcmultipart{2.7.3.46} [reborncore-MCMultiPart] (RebornCore-1.10.2-2.7.3.46-universal.jar) UCHIJAAAA redstonepaste{1.7.4} [Redstone Paste] (redstonepaste-mc1.9.4-1.7.4.jar) UCHIJAAAA refinedstorage{1.1.3} [Refined Storage] (refinedstorage-1.1.3.jar) UCHIJAAAA xreliquary{1.10.2-1.3.3.571} [Reliquary] (Reliquary-1.10.2-1.3.3.571.jar) UCHIJAAAA ResourceLoader{1.5.1} [Resource Loader] (ResourceLoader-MC1.9.4-1.5.1.jar) UCHIJAAAA rftools{5.62} [RFTools] (rftools-1.10-5.62.jar) UCHIJAAAA rftoolsdim{4.45} [RFTools Dimensions] (rftoolsdim-1.10-4.45.jar) UCHIJAAAA roots{0.204} [Roots] (roots-1.10.2-0.204.0.jar) UCHIJAAAA shadowmc{3.4.8} [shadowMC] (ShadowMC-1.10.2-3.4.8.jar) UCHIJAAAA SleepingBag{1.3.0} [sleeping Bag] (SleepingBag-1.10.2-1.3.0.jar) UCHIJAAAA soundfilters{0.9_for_1.9} [sound Filters] (SoundFilters-0.9_for_1.9.4.jar) UCHIJAAAA tconstruct{1.10.2-2.5.6b.jenkins424} [Tinkers' Construct] (TConstruct-1.10.2-2.5.6b.jar) UCHIJAAAA theoneprobe{1.1.3} [The One Probe] (theoneprobe-1.10-1.1.3.jar) UCHIJAAAA TinkersAddons{1.0.3} [Tinkers' Addons] (Tinkers' Addons-1.10.x-1.0.3.jar) UCHIJAAAA tinkertoolleveling{1.10.2-1.0.1.DEV.f5def58} [Tinkers Tool Leveling] (TinkerToolLeveling-1.10.2-1.0.1.jar) UCHIJAAAA weaponcaseloot{4.0.1} [WeaponCaseLoot] (weaponcaseloot-1.10.2-4.0.1.jar) UCHIJAAAA zerocore{1.10.2-0.0.8.0} [Zero CORE] (zerocore-1.10.2-0.0.8.0.jar) Loaded coremods (and transformers): LoadingPlugin (Quark-r1.0-56.jar) vazkii.quark.base.asm.ClassTransformer ShetiPhian-ASM (shetiphiancore-1.10.0-3.3.1.jar) shetiphian.core.asm.ClassTransformer LoadingPlugin (RandomThings-MC1.10.2-3.7.6.jar) lumien.randomthings.asm.ClassTransformer EnderCorePlugin (EnderCore-1.10.2-0.4.1.58-beta.jar) com.enderio.core.common.transform.EnderCoreTransformer ItemPatchingLoader (ItemPhysic Full 1.3.4 mc1.10.2.jar) com.creativemd.itemphysic.ItemTransformer LoadingPlugin (ResourceLoader-MC1.9.4-1.5.1.jar) lumien.resourceloader.asm.ClassTransformer NWRTweak (redstonepaste-mc1.9.4-1.7.4.jar) net.fybertech.nwr.NWRTransformer FMLPlugin (InventoryTweaks-1.61-58.jar) invtweaks.forge.asm.ContainerTransformer LoadingHook (Mekanism-1.10.2-9.2.0.292.jar) CreativePatchingLoader (CreativeCore v1.6.6 mc1.10.2.jar) GL info: ~~ERROR~~ RuntimeException: No OpenGL context found in the current thread. Pulsar/tconstruct loaded Pulses: - TinkerCommons (Enabled/Forced) - TinkerWorld (Enabled/Not Forced) - TinkerTools (Enabled/Not Forced) - TinkerHarvestTools (Enabled/Forced) - TinkerMeleeWeapons (Enabled/Forced) - TinkerRangedWeapons (Enabled/Forced) - TinkerModifiers (Enabled/Forced) - TinkerSmeltery (Enabled/Not Forced) - TinkerGadgets (Enabled/Not Forced) - TinkerOredict (Enabled/Forced) - TinkerIntegration (Enabled/Forced) - TinkerFluids (Enabled/Forced) - TinkerMaterials (Enabled/Forced) - TinkerModelRegister (Enabled/Forced) - chiselsandbitsIntegration (Enabled/Not Forced) - WailaIntegration (Enabled/Not Forced) - theoneprobeIntegration (Enabled/Not Forced) EnderIO: Found the following problem(s) with your installation (That does NOT mean that Ender IO caused the crash or was involved in it in any way. We add this information to help finding common problems, not as an invitation to post any crash you encounter to Ender IO's issue tracker. Always check the stack trace above to see which mod is most likely failing.): * Optifine is installed. This is NOT supported. This may (look up the meaning of 'may' in the dictionary if you're not sure what it means) have caused the error. Try reproducing the crash WITHOUT this/these mod(s) before reporting it. Detailed RF API diagnostics: * RF API class 'EnergyStorage' is loaded from: jar:file:/C:/Users/Villfuk/AppData/Roaming/.minecraft/mods/Mekanism-1.10.2-9.2.0.292.jar!/cofh/api/energy/EnergyStorage.class * RF API class 'IEnergyConnection' is loaded from: jar:file:/C:/Users/Villfuk/AppData/Roaming/.minecraft/mods/Mekanism-1.10.2-9.2.0.292.jar!/cofh/api/energy/IEnergyConnection.class * RF API class 'IEnergyContainerItem' is loaded from: jar:file:/C:/Users/Villfuk/AppData/Roaming/.minecraft/mods/Mekanism-1.10.2-9.2.0.292.jar!/cofh/api/energy/IEnergyContainerItem.class * RF API class 'IEnergyHandler' is loaded from: jar:file:/C:/Users/Villfuk/AppData/Roaming/.minecraft/mods/Mekanism-1.10.2-9.2.0.292.jar!/cofh/api/energy/IEnergyHandler.class * RF API class 'IEnergyProvider' is loaded from: jar:file:/C:/Users/Villfuk/AppData/Roaming/.minecraft/mods/Mekanism-1.10.2-9.2.0.292.jar!/cofh/api/energy/IEnergyProvider.class * RF API class 'IEnergyReceiver' is loaded from: jar:file:/C:/Users/Villfuk/AppData/Roaming/.minecraft/mods/Mekanism-1.10.2-9.2.0.292.jar!/cofh/api/energy/IEnergyReceiver.class * RF API class 'IEnergyStorage' is loaded from: jar:file:/C:/Users/Villfuk/AppData/Roaming/.minecraft/mods/Mekanism-1.10.2-9.2.0.292.jar!/cofh/api/energy/IEnergyStorage.class * RF API class 'ItemEnergyContainer' is loaded from: jar:file:/C:/Users/Villfuk/AppData/Roaming/.minecraft/mods/Mekanism-1.10.2-9.2.0.292.jar!/cofh/api/energy/ItemEnergyContainer.class * RF API class 'TileEnergyHandler' is loaded from: jar:file:/C:/Users/Villfuk/AppData/Roaming/.minecraft/mods/Mekanism-1.10.2-9.2.0.292.jar!/cofh/api/energy/TileEnergyHandler.class Detailed Tesla API diagnostics: * Tesla API class 'Tesla' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.Tesla) * Tesla API class 'TeslaCapabilities' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.capability.TeslaCapabilities) * Tesla API class 'ITeslaConsumer' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.api.ITeslaConsumer) * Tesla API class 'ITeslaHolder' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.api.ITeslaHolder) * Tesla API class 'ITeslaProducer' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.api.ITeslaProducer) * Tesla API class 'BaseTeslaContainer' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.api.implementation.BaseTeslaContainer) * Tesla API class 'BaseTeslaContainerProvider' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.api.implementation.BaseTeslaContainerProvider) * Tesla API class 'InfiniteTeslaConsumer' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.api.implementation.InfiniteTeslaConsumer) * Tesla API class 'InfiniteTeslaConsumerProvider' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.api.implementation.InfiniteTeslaConsumerProvider) * Tesla API class 'InfiniteTeslaProducer' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.api.implementation.InfiniteTeslaProducer) * Tesla API class 'InfiniteTeslaProducerProvider' could not be loaded (reason: java.lang.ClassNotFoundException: net.darkhax.tesla.api.implementation.InfiniteTeslaProducerProvider) Profiler Position: N/A (disabled) Player Count: 0 / 8; [] Type: Integrated Server (map_client.txt) Is Modded: Definitely; Client brand changed to 'fml,forge' OptiFine Version: OptiFine_1.10.2_HD_U_C4_pre Render Distance Chunks: 6 Mipmaps: 4 Anisotropic Filtering: 1 Antialiasing: 0 Multitexture: false Shaders: null OpenGlVersion: 4.5.0 NVIDIA 369.09 OpenGlRenderer: GeForce GT 610/PCIe/SSE2 OpenGlVendor: NVIDIA Corporation CpuCount: 2
-
[1.10.2] GUI changes not saving
I think everything happens twice and doesnt sync perfectly, because when i place less than 32 items in the slot, it just doubles in the slot. When i put 48 items in, in the slot goes 64 and i get 32 back. when i split the stack with rightclicking, in the slot is left just quarter of the items and in my cursor too.
-
[1.10.2] GUI changes not saving
I'm back now. i mde some changes and it works, but when i place itemstack in slot, it goes in there, but it is also left in my cursor and when i remove itemstack it just disappears. package com.villfuk02.essence.tileentities; import java.awt.ItemSelectable; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.text.ITextComponent; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.fml.common.gameevent.TickEvent; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.ItemStackHandler; public class TileEntityStoneCrate extends TileEntity implements ICapabilityProvider{ private String customName; private static ItemStackHandler itemHandler = new ItemStackHandler(81); @Override public boolean hasCapability(Capability capability, EnumFacing facing) { return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY ? true : super.hasCapability(capability, facing); } @Override public <T> T getCapability(Capability<T> capability, EnumFacing facing) { if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { return (T) itemHandler; } return super.getCapability(capability, facing); } public String getCustomName(){ return this.customName; } public void setCustomName(String customName){ this.customName = customName; } public String getName() { return this.hasCustomName() ? this.customName : "Stone Storage Crate"; } public boolean hasCustomName() { return this.customName != null && !this.customName.equals(""); } public int getSizeInventory() { return 81; } public boolean isUseableByPlayer(EntityPlayer player) { return this.worldObj.getTileEntity(this.getPos()) == this && player.getDistanceSq(this.pos.add(0.5, 0.5, 0.5)) <= 64; } }
-
[1.10.2] GUI changes not saving
What should I do with this?
-
[1.10.2] GUI changes not saving
i dont know
-
[1.10.2] GUI changes not saving
I think i have this wrong: ItemStackHandler itemHandler = new ItemStackHandler(81); @Override public boolean hasCapability(Capability capability, EnumFacing facing) { return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY ? true : super.hasCapability(capability, facing); } @Override public Capability getCapability(Capability capability, EnumFacing facing) { if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { return itemHandler; } return super.getCapability(capability, facing); }
-
[1.10.2] GUI changes not saving
Multiple markers at this line - The constructor SlotItemHandler(TileEntityStoneCrate, int, int, int) is undefined - The constructor SlotItemHandler(Capability, int, int, int) is undefined
-
[1.10.2] GUI changes not saving
I tried this: this.addSlotToContainer(new SlotItemHandler(te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, EnumFacing.UP), x + y * 9, 15 + x * 16, 15 + y * 16)); } doesn't work
IPS spam blocked by CleanTalk.