Posted August 21, 201411 yr hey guys i have a wind turbine that creates power by taking its height but the problem isnt the turbines power the problem is taking the turbines power (a non static float) and adding it to another blocks power (a non static float) every time i try to do this it tells me i need to change the modifier of the block i am giving power to to static turbine tileEntity the connect method is were this happens package Mine_EE_GUI; import Mine_EE.Mine_EE; import Mine_EE_Blocks.TileEntityCable; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; 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.INetworkManager; import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.Packet132TileEntityData; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; public class TileEntityTurbine extends TileEntity implements IInventory { public float power; public float MAX; public float LOW; public ForgeDirection[] connect = new ForgeDirection[6]; TileEntityCable C; public ItemStack[] inventory; public TileEntityTurbine() { inventory = new ItemStack[2]; MAX = 100; LOW = 0; } private int item; @Override public void updateEntity() { if(worldObj.getHeightValue(xCoord, zCoord) >= 64 && !worldObj.isRemote && this.power < MAX && this.worldObj.canBlockSeeTheSky(this.xCoord, this.yCoord + 1, this.zCoord)) { this.addpower(worldObj.getHeightValue(xCoord, zCoord) - 63); } else if(worldObj.getHeightValue(xCoord, zCoord) >= 64 && !worldObj.isRemote && worldObj.isRaining() && this.power < MAX && worldObj.canBlockSeeTheSky(xCoord, yCoord, zCoord) && this.worldObj.canBlockSeeTheSky(this.xCoord, this.yCoord + 1, this.zCoord)) { this.addpower(worldObj.getHeightValue(xCoord, zCoord) + 4); } connect(); if(this.power > MAX){ power = MAX; } if(this.power < LOW){ power = LOW; } } private void connect() { if(this.isCable(xCoord, yCoord-1, zCoord) && this.power > 10 && TileEntityCable.power < 10) { TileEntityCable.power = TileEntityCable.power + 10; this.power = power - 10; } } private boolean isCable(int x, int y, int z) { return this.worldObj.getBlockTileEntity(x, y, z) instanceof TileEntityCable; } public int GetPowerScaled(int scale) { return (int) (this.power * scale / MAX); } @Override public int getSizeInventory() { return inventory.length; } @Override public ItemStack getStackInSlot(int i) { return inventory[i]; } @Override public ItemStack decrStackSize(int slot, int count) { ItemStack itemstack = getStackInSlot(slot); if(itemstack != null) { if(itemstack.stackSize <= count) { setInventorySlotContents(slot, null); } else { itemstack = itemstack.splitStack(count); onInventoryChanged(); } } return itemstack; } @Override public ItemStack getStackInSlotOnClosing(int slot) { ItemStack itemstack = getStackInSlot(slot); setInventorySlotContents(slot, null); return itemstack; } @Override public void setInventorySlotContents(int slot, ItemStack itemstack) { inventory[slot] = itemstack; this.recipes(slot, itemstack); if(itemstack != null && itemstack.stackSize > getInventoryStackLimit()) { itemstack.stackSize = getInventoryStackLimit(); } onInventoryChanged(); } private void recipes(int slot, ItemStack itemstack) { inventory[slot] = itemstack; ItemStack slot0 = getStackInSlot(0); ItemStack slot1 = getStackInSlot(1); if(power < MAX){ if(slot0 != null && slot0.itemID == Item.redstone.itemID && power < MAX) { removestack(slot,itemstack); addpower(2 * slot0.stackSize); onInventoryChanged(); } } } public void removestack(int slot, ItemStack itemstack) { setInventorySlotContents(slot, null); } public void addpower(int mpw) { power = this.power + mpw; if(this.power <= 0) { power = LOW; } if(this.power >= MAX) { power = MAX; } } @Override public String getInvName() { return "Again a Test Gui"; } @Override public boolean isInvNameLocalized() { return true; } @Override public int getInventoryStackLimit() { return 64; } @Override public boolean isUseableByPlayer(EntityPlayer player) { if(player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 64) { this.updateEntity(); return true; } else { return false; } } @Override public void openChest() { } @Override public void closeChest() { } @Override public boolean isItemValidForSlot(int i, ItemStack itemstack) { return false; } public boolean canExtractItem(int s, ItemStack item, int side) { if(side == 0 && s == 0 && item.getItemDamage() == 0) { return true; } if(side == 0 && s == 1 && item.getItemDamage() == item.getMaxDamage()) { return true; } return side != 0 || s != 1; } @Override public void writeToNBT(NBTTagCompound compound) { super.writeToNBT(compound); if(this.power > 1000) this.power = 1000; compound.setFloat("power", this.power); NBTTagList list = new NBTTagList(); for(int i = 0; i < getSizeInventory(); i++) { ItemStack itemstack = getStackInSlot(i); if(itemstack != null) { NBTTagCompound item = new NBTTagCompound(); item.setByte("SlotDeployer", (byte) i); itemstack.writeToNBT(item); list.appendTag(item); } } compound.setTag("ItemsDeployer", list); } @Override public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); if(this.power < 0) this.power = 0; this.power = compound.getFloat("power"); NBTTagList list = compound.getTagList("ItemsDeployer"); for(int i = 0; i < list.tagCount(); i++) { NBTTagCompound item = (NBTTagCompound) list.tagAt(i); int slot = item.getByte("SlotDeployer"); if(slot >= 0 && slot < getSizeInventory()) { setInventorySlotContents(slot, ItemStack.loadItemStackFromNBT(item)); } } } @Override public Packet getDescriptionPacket() { Packet132TileEntityData packet = (Packet132TileEntityData) super.getDescriptionPacket(); NBTTagCompound tag = packet != null ? packet.data : new NBTTagCompound(); writeToNBT(tag); return new Packet132TileEntityData(xCoord, yCoord, zCoord, 1, tag); } @Override public void onDataPacket(INetworkManager net, Packet132TileEntityData pkt) { super.onDataPacket(net, pkt); NBTTagCompound tag = pkt.data; readFromNBT(tag); } } CableTileEntity package Mine_EE_Blocks; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import Mine_EE_GUI.TileEntityElectricTable; import Mine_EE_GUI.TileEntitySolar; import Mine_EE_GUI.TileEntityTurbine; public class TileEntityCable extends TileEntity { public ForgeDirection[] connect = new ForgeDirection[6]; public float power; public float MAX = 10; public float LOW = 0; public boolean powered = false; TileEntitySolar solar; TileEntityTurbine turbine; TileEntityElectricTable table; public TileEntityCable() { } public void updateEntity() { if(power > MAX)power= MAX; if(power < LOW)power= LOW; this.Connect(); } public void Connect() { if(this.isTurbine(xCoord, yCoord+1, zCoord) && this.power < 10) { this.power = power + 10; } if(this.isCable(xCoord, yCoord+1, zCoord) || this.isTable(xCoord, yCoord+1, zCoord) || this.isTurbine(xCoord, yCoord+1, zCoord)|| this.isSolar(xCoord, yCoord+1, zCoord)) { connect[0] = ForgeDirection.UP; }else {connect[0] = null;} if(this.isCable(xCoord, yCoord-1, zCoord) || this.isTable(xCoord, yCoord-1, zCoord) || this.isTurbine(xCoord, yCoord-1, zCoord)|| this.isSolar(xCoord, yCoord-1, zCoord)) { connect[1] = ForgeDirection.DOWN; }else {connect[1] = null;} if(this.isCable(xCoord, yCoord, zCoord-1) ||this.isTable(xCoord, yCoord, zCoord-1) || this.isTurbine(xCoord, yCoord, zCoord-1)|| this.isSolar(xCoord, yCoord, zCoord-1)) { connect[2] = ForgeDirection.NORTH; }else {connect[2] = null;} if(this.isCable(xCoord+1, yCoord, zCoord) || this.isTable(xCoord+1, yCoord, zCoord) || this.isTurbine(xCoord+1, yCoord, zCoord)|| this.isSolar(xCoord+1, yCoord, zCoord)) { connect[3] = ForgeDirection.EAST; }else {connect[3] = null;} if(this.isCable(xCoord, yCoord, zCoord+1) || this.isTable(xCoord, yCoord, zCoord+1) || this.isTurbine(xCoord, yCoord, zCoord+1)|| this.isSolar(xCoord, yCoord, zCoord+1)) { connect[4] = ForgeDirection.SOUTH; }else {connect[4] = null;} if(this.isCable(xCoord-1, yCoord, zCoord) ||this.isTable(xCoord-1, yCoord, zCoord) ||this.isTurbine(xCoord-1, yCoord, zCoord)||this.isSolar(xCoord-1, yCoord, zCoord)) { connect[5] = ForgeDirection.WEST; }else {connect[5] = null;} } public boolean isCable(int x, int y, int z) { return this.worldObj.getBlockTileEntity(x, y, z) instanceof TileEntityCable; } public boolean isTable(int x, int y, int z) { return this.worldObj.getBlockTileEntity(x, y, z) instanceof TileEntityElectricTable && worldObj.getBlockMetadata(x, y, z) != 0; } public boolean isTurbine(int x, int y, int z) { return this.worldObj.getBlockTileEntity(x, y, z) instanceof TileEntityTurbine; } public boolean isSolar(int x, int y, int z) { return this.worldObj.getBlockTileEntity(x, y, z) instanceof TileEntitySolar; } @Override public void writeToNBT(NBTTagCompound compound) { super.writeToNBT(compound); if(this.power > 10) this.power = 10; compound.setFloat("power", this.power); compound.setBoolean("powered", this.powered); } @Override public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); if(this.power < 0) this.power = 0; this.power = compound.getFloat("power"); this.powered = compound.getBoolean("powered"); } } Its best to only ask questions when you did most of the work yourself.
August 21, 201411 yr are you grabbing an instance of the other class? "TileEntity te= getWorldObj().getTileEntity(x,y,z);" then check to see if the gotten one around your windmill is an instance of the cable and cast it to the cable "if (te instanceof CableTileEntity)CableTileEntity cable = (CableTileEntity)te;" then make calls like "cable.power += 5; windmill.power -= 5;" Currently updating my Mod to 1.10.2 https://bitbucket.org/hugo_the_dwarf/riseoftristram2016/src?at=master
August 21, 201411 yr if (te instanceof CableTileEntity)CableTileEntity cable = (CableTileEntity)te;" It's generally bad to put a variable declaration as the target statement of an if. -S- (if I helped, please click Thank and applaud) http://6upnqa.dm2301.livefilestore.com/y2mtf-vG7Tqq1TiiVpIm53KWj7294NDPoHfSHHb4PzZiMAUfRCfK0UY0MwOu7Q3zTBNVTKqWjr2-xgBfFRpQT5p-QivtvknPpoABMNUw9br9WuZcBFkjePhnAbW500gVm-P/sequiturian.png[/img]
August 21, 201411 yr This is true, but judging from his code that he posted he understood enough of java for declaring and using variables. And thus I did not need to give him the full code of how to use it, but the methods and idea to do so. Currently updating my Mod to 1.10.2 https://bitbucket.org/hugo_the_dwarf/riseoftristram2016/src?at=master
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.