Résolu j'ai un Generateur avec la RF API qui ne genere rien
-
bon tout est in the title
Blocpackage com.daichmff.modaichmod; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class BlockBlueIngot extends BlockContainer { public BlockBlueIngot(Material materialIn) { super(materialIn); // TODO Auto-generated constructor stub } @Override public TileEntity createNewTileEntity(World worldIn, int meta) { return new TileEntityE(); } }
Tile
package com.daichmff.modaichmod; import cofh.api.energy.IEnergyProvider; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; 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.IChatComponent; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.Constants; public class TileEntityE extends TileEntity implements IEnergyProvider,IInventory, net.minecraft.util.ITickable{ private static int iPC = 200; private ItemStack[] contents = new ItemStack[1]; private String customName; private int maxRF = 100000; private int currentRF = 0; @Override public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); // exécute ce qui se trouve dans la fonction readFromNBT de la classe mère (lecture de la position du tile entity) if(compound.hasKey("CustomName", Constants.NBT.TAG_STRING)) // si un tag custom name de type string existe { this.customName = compound.getString("CustomName"); // on le lit } NBTTagList nbttaglist = compound.getTagList("Items", Constants.NBT.TAG_COMPOUND); // on obtient la liste de tags nommée Items this.contents = new ItemStack[this.getSizeInventory()]; // on réinitialise le tableau for(int i = 0; i < nbttaglist.tagCount(); ++i) // i varie de 0 à la taille la liste { NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i); // on lit le tag nbt int j = nbttagcompound1.getByte("Slot") & 255; // on lit à quel slot se trouve l'item stack if(j >= 0 && j < this.contents.length) { this.contents[j] = ItemStack.loadItemStackFromNBT(nbttagcompound1); // on lit l'item stack qui se trouve dans le tag } } super.readFromNBT(compound); this.currentRF = compound.getInteger("currentRF"); } @Override public void writeToNBT(NBTTagCompound compound) { super.writeToNBT(compound); // exécute se qui se trouve dans la fonction writeToNBT de la classe mère (écriture de la position du tile entity) if(this.hasCustomName()) // s'il y a un nom custom { compound.setString("CustomName", this.customName); // on le met dans le tag nbt } NBTTagList nbttaglist = new NBTTagList(); // on créé une nouvelle liste de tags for(int i = 0; i < this.contents.length; ++i) // i varie de 0 à la taille de notre tableau { if(this.contents[ i] != null) // si l'item stack à l'emplacement i du tableau n'est pas null { NBTTagCompound nbttagcompound1 = new NBTTagCompound(); // on créé un tag nbt nbttagcompound1.setByte("Slot", (byte)i); // on enregistre son emplacement dans le tableau this.contents[ i].writeToNBT(nbttagcompound1); // on écrit l'item dans le tag nbttaglist.appendTag(nbttagcompound1); // on ajoute le tab à la liste } } compound.setTag("Items", nbttaglist); // on enregistre la liste dans le tag nbt super.writeToNBT(compound); compound.setInteger("currentRF", this.currentRF); } @Override public int getEnergyStored(EnumFacing from) { // TODO Auto-generated method stub return this.currentRF; } @Override public int getMaxEnergyStored(EnumFacing from) { // TODO Auto-generated method stub return maxRF; } @Override public boolean canConnectEnergy(EnumFacing from) { // TODO Auto-generated method stub return true; } @Override public int extractEnergy(EnumFacing from, int maxExtract, boolean simulate) { // TODO Auto-generated method stub currentRF -=maxExtract; return maxExtract; } @Override public int getSizeInventory() { return this.contents.length; } @Override public ItemStack getStackInSlot(int slotIndex) { return this.contents[slotIndex]; } @Override public ItemStack decrStackSize(int slotIndex, int amount) { if(this.contents[slotIndex] != null) // si le contenu dans l'emplacement n'est pas null { ItemStack itemstack; if(this.contents[slotIndex].stackSize <= amount) // si la quantité est inférieur où égale à ce qu'on souhaite retirer { itemstack = this.contents[slotIndex]; // la variable itemstack prends la valeur du contenu this.contents[slotIndex] = null; // on retire ce qui est dans la variable contents this.markDirty(); // met à jour le tile entity return itemstack; // renvoie itemstack } else // sinon { itemstack = this.contents[slotIndex].splitStack(amount); // la fonction splitStack(quantité) retire dans this.contents[slotIndex] le contenu et le met dans itemstack if(this.contents[slotIndex].stackSize == 0) // au cas où la quantité passe à 0 (ce qui ne devrait pas arriver en temps normal) { this.contents[slotIndex] = null; // on met sur null, ça évite de se retrouver avec des itemstack bugué qui contiennent 0 } this.markDirty(); // met à jour le tile entity return itemstack; // renvoie itemstack } } else // sinon si le contenu dans cette emplacement est null { return null; // renvoie null, puisqu'il n'y a rien dans cette emplacement } } @Override public String getName() { // TODO Auto-generated method stub return this.hasCustomName() ? this.customName : "tile.cupboard"; } @Override public boolean hasCustomName() { // TODO Auto-generated method stub return false; } public void setCustomName(String customName) { this.customName = customName; } @Override public boolean isUseableByPlayer(EntityPlayer player) { return true; } @Override public boolean isItemValidForSlot(int slotIndex, ItemStack stack) { return stack.getItem() == MoDaichMod.ingotblue || stack.getItem() == MoDaichMod.blueBow || stack.getItem() == MoDaichMod.bootsTuto || stack.getItem() == MoDaichMod.leggingsTuto || stack.getItem() == MoDaichMod.chestPlateTuto || stack.getItem() == MoDaichMod.helmetTuto; } @Override public int getInventoryStackLimit() { return 64; } @Override public IChatComponent getDisplayName() { // TODO Auto-generated method stub return null; } @Override public ItemStack removeStackFromSlot(int index) { // TODO Auto-generated method stub return null; } @Override public void openInventory(EntityPlayer player) { // TODO Auto-generated method stub } @Override public void closeInventory(EntityPlayer player) { } @Override public int getField(int id) { switch(id) { case 0: return this.currentRF; case 1: return this.maxRF; } return 0; } @Override public void setField(int id, int value) { switch(id) { case 0: this.currentRF = value; case 1: this.maxRF = value; } } @Override public int getFieldCount() { // TODO Auto-generated method stub return 2; } @Override public void clear() { // TODO Auto-generated method stub } @Override public void setInventorySlotContents(int slotIndex, ItemStack stack) { this.contents[slotIndex] = stack; // met l'item stack dans le tableau if(stack != null && stack.stackSize > this.getInventoryStackLimit()) // si la taille de l'item stack dépasse la limite maximum de l'inventaire { stack.stackSize = this.getInventoryStackLimit(); // on le remet sur la limite } this.markDirty(); // met à jour le tile entity } @Override public void update() { if(worldObj.isRemote) { if(this.currentRF == 9999999) { } else { System.out.println("Your RF level is : " + currentRF); } if(worldObj.canSeeSky(pos)) { this.iPC =+1; } else { this.iPC =-1; } if(currentRF == 1) { System.out.println("[14:00:26] [Client thread/INFO]: [CHAT] <PlayerBambi> lol you have 1 rf lol you are a giant lol"); } } this.currentRF += iPC; this.markDirty(); // TODO Auto-generated method stu } }
-
@SpyMan a dit dans j'ai un Generateur avec la RF API qui ne genere rien :
l’implémentation de cette fonction int extractEnergy(EnumFacing from, int maxExtract, boolean simulate) est mal defini dans ta class
alors je mets quoi dans la fonction sachant que le max et de 100 et que l’EnumFacing je pense qui soit de tout les coté
EDIT:
et es ce que lepublic void update() { //Reste du code }
est bon
-
yo, tes methodes de l’interface IEnergyProvder de ne sont pas definie correctement
-
wut?
Il y en a un mais c’est celui de la rf api il est censé pas etre mauvas sinon je te balance le code pour voir ce qui est fauxpackage cofh.api.energy; import net.minecraft.util.EnumFacing; /** * Implement this interface on Tile Entities which should provide energy, generally storing it in one or more internal {@link IEnergyStorage} objects. * <p> * A reference implementation is provided {@link TileEnergyHandler}. * * @author King Lemming * */ public interface IEnergyProvider extends IEnergyHandler { /** * Remove energy from an IEnergyProvider, internal distribution is left entirely to the IEnergyProvider. * * @param from * Orientation the energy is extracted from. * @param maxExtract * Maximum amount of energy to extract. * @param simulate * If TRUE, the extraction will only be simulated. * @return Amount of energy that was (or would have been, if simulated) extracted. */ int extractEnergy(EnumFacing from, int maxExtract, boolean simulate); }
-
l’implémentation de cette fonction
int extractEnergy(EnumFacing from, int maxExtract, boolean simulate)
est mal defini dans ta class -
@SpyMan a dit dans j'ai un Generateur avec la RF API qui ne genere rien :
l’implémentation de cette fonction int extractEnergy(EnumFacing from, int maxExtract, boolean simulate) est mal defini dans ta class
alors je mets quoi dans la fonction sachant que le max et de 100 et que l’EnumFacing je pense qui soit de tout les coté
EDIT:
et es ce que lepublic void update() { //Reste du code }
est bon
-
up