Jump to content

CrazyBit

Members
  • Posts

    2
  • Joined

  • Last visited

Everything posted by CrazyBit

  1. I see the input in game with Flux Networks Mod and EnderIO Mod (with a capacitor bank). here my code: BlockFastFurnace.java package com.crazybit.instantfurnace.furnace; import net.minecraft.block.Block; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; import net.minecraft.block.properties.PropertyDirection; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; 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.EnumHand; import net.minecraft.util.NonNullList; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.ChunkCache; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.common.util.Constants; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import org.apache.commons.lang3.StringUtils; import com.crazybit.instantfurnace.MyMod; import com.crazybit.instantfurnace.tools.GenericBlock; import com.crazybit.instantfurnace.tools.IRestorableTileEntity; import javax.annotation.Nullable; import java.util.Collections; import java.util.List; import java.util.regex.Pattern; public class BlockFastFurnace extends GenericBlock implements ITileEntityProvider { public static final PropertyDirection FACING = PropertyDirection.create("facing"); public static final PropertyEnum<FurnaceState> STATE = PropertyEnum.<FurnaceState>create("state", FurnaceState.class); public static final ResourceLocation FAST_FURNACE = new ResourceLocation(MyMod.MODID, "fast_furnace"); public BlockFastFurnace() { super(Material.IRON); // mymod:furnace setRegistryName(FAST_FURNACE); setHarvestLevel("pickaxe", 1); setDefaultState(blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH)); } @Nullable @Override public TileEntity createNewTileEntity(World worldIn, int meta) { return new TileFastFurnace(); } @Override public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) { TileEntity te = world instanceof ChunkCache ? ((ChunkCache)world).getTileEntity(pos, Chunk.EnumCreateEntityType.CHECK) : world.getTileEntity(pos); if (te instanceof TileFastFurnace) { return state.withProperty(STATE, ((TileFastFurnace) te).getState()); } return super.getActualState(state, world, pos); } @Override public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer) { return this.getDefaultState().withProperty(FACING, EnumFacing.getDirectionFromEntityLiving(pos, placer)); } @Override protected BlockStateContainer createBlockState() { return new BlockStateContainer(this, FACING, STATE); } @Override public IBlockState getStateFromMeta(int meta) { return this.getDefaultState().withProperty(FACING, EnumFacing.getFront(meta & 7)); } @Override public int getMetaFromState(IBlockState state) { return state.getValue(FACING).getIndex(); } } TileFastFurnace.java: package com.crazybit.instantfurnace.furnace; import net.minecraft.block.state.IBlockState; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetworkManager; import net.minecraft.network.play.server.SPacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityChest; import net.minecraft.util.EnumFacing; import net.minecraft.util.ITickable; import net.minecraft.util.math.BlockPos; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.energy.CapabilityEnergy; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.ItemStackHandler; import net.minecraftforge.items.wrapper.CombinedInvWrapper; import javax.annotation.Nonnull; import javax.annotation.Nullable; import com.crazybit.instantfurnace.config.FastFurnaceConfig; import com.crazybit.instantfurnace.tools.IGuiTile; import com.crazybit.instantfurnace.tools.IRestorableTileEntity; import com.crazybit.instantfurnace.tools.MyEnergyStorage; public class TileFastFurnace extends TileEntity implements ITickable, IRestorableTileEntity { private int progress = 0; private int clientProgress = -1; private int clientEnergy = -1; private FurnaceState state = FurnaceState.OFF; private boolean canCook = false; private int i = 0; private BlockPos inputPos, outputPos; private IBlockState inputBS, outputBS; private TileEntityChest input, output; private ItemStack stack, inputStack; private int minStack; @Override public void update() { if (!world.isRemote) { if (energyStorage.getEnergyStored() < 10) { return; } //TODO: CONSUME POWER } } public int getProgress() { return progress; } public void setProgress(int progress) { this.progress = progress; } public int getClientProgress() { return clientProgress; } public void setClientProgress(int clientProgress) { this.clientProgress = clientProgress; } public int getClientEnergy() { return energyStorage.getEnergyStored(); } public void setClientEnergy(int clientEnergy) { this.clientEnergy = clientEnergy; } public int getEnergy() { return energyStorage.getEnergyStored(); } @Override public NBTTagCompound getUpdateTag() { NBTTagCompound nbtTag = super.getUpdateTag(); return nbtTag; } @Nullable @Override public SPacketUpdateTileEntity getUpdatePacket() { return new SPacketUpdateTileEntity(pos, 1, getUpdateTag()); } @Override public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity packet) { int stateIndex = packet.getNbtCompound().getInteger("state"); if (world.isRemote && stateIndex != state.ordinal()) { state = FurnaceState.VALUES[stateIndex]; world.markBlockRangeForRenderUpdate(pos, pos); } } public void setState(FurnaceState state) { if (this.state != state) { this.state = state; markDirty(); IBlockState blockState = world.getBlockState(pos); getWorld().notifyBlockUpdate(pos, blockState, blockState, 3); } } public FurnaceState getState() { return state; } public MyEnergyStorage energyStorage = new MyEnergyStorage(100000, 10000); @Override public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); readRestorableFromNBT(compound); } @Override public void readRestorableFromNBT(NBTTagCompound compound) { progress = compound.getInteger("progress"); energyStorage.setEnergy(compound.getInteger("energy")); } @Override public NBTTagCompound writeToNBT(NBTTagCompound compound) { super.writeToNBT(compound); writeRestorableToNBT(compound); compound.setInteger("state", state.ordinal()); return compound; } @Override public void writeRestorableToNBT(NBTTagCompound compound) { compound.setInteger("progress", progress); compound.setInteger("energy", energyStorage.getEnergyStored()); } public boolean canInteractWith(EntityPlayer playerIn) { // If we are too far away from this tile entity you cannot use it return !isInvalid() && playerIn.getDistanceSq(pos.add(0.5D, 0.5D, 0.5D)) <= 64D; } @Override public boolean hasCapability(Capability<?> capability, EnumFacing facing) { if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { return false; } if (capability == CapabilityEnergy.ENERGY) { return true; } return super.hasCapability(capability, facing); } @Override public <T> T getCapability(Capability<T> capability, EnumFacing facing) { if (capability == CapabilityEnergy.ENERGY) { return CapabilityEnergy.ENERGY.cast(energyStorage); } return super.getCapability(capability, facing); } } MyEnergyStorage.java: package com.crazybit.instantfurnace.tools; import net.minecraftforge.energy.EnergyStorage; public class MyEnergyStorage extends EnergyStorage { public MyEnergyStorage(int capacity, int maxReceive) { super(capacity, maxReceive, 0); } public void setEnergy(int energy) { this.energy = energy; } public void consumePower(int energy) { this.energy -= energy; if (this.energy < 0) { this.energy = 0; } } public void generatePower(int energy) { this.energy += energy; if (this.energy > capacity) { this.energy = capacity; } } }
  2. Hi, I'm developing my first mod with FE support, but I find a problem: the maximum input of FE is 100 FE/tick, but I set 10'000 FE. How can I increase the limit of input? In Tile: public MyEnergyStorage energyStorage = new MyEnergyStorage(100000, 10000); In MyEnergyStorage: import net.minecraftforge.energy.EnergyStorage; public class MyEnergyStorage extends EnergyStorage { public MyEnergyStorage(int capacity, int maxReceive) { super(capacity, maxReceive, 0); } public void setEnergy(int energy) { this.energy = energy; } public void consumePower(int energy) { this.energy -= energy; if (this.energy < 0) { this.energy = 0; } } public void generatePower(int energy) { this.energy += energy; if (this.energy > capacity) { this.energy = capacity; } } }
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.