Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

CrazyBit

Members
  • Joined

  • Last visited

  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; } } }

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.