Added Redstone Kiln fully, but cannot fix #131.
parent
894754b028
commit
b507a50be0
|
@ -7,6 +7,7 @@ import net.einsteinsci.betterbeginnings.event.BBEventHandler;
|
|||
import net.einsteinsci.betterbeginnings.event.Worldgen;
|
||||
import net.einsteinsci.betterbeginnings.network.PacketCampfireState;
|
||||
import net.einsteinsci.betterbeginnings.network.PacketNetherBrickOvenFuelLevel;
|
||||
import net.einsteinsci.betterbeginnings.network.PacketPoweredBBFurnaceEnergy;
|
||||
import net.einsteinsci.betterbeginnings.network.ServerProxy;
|
||||
import net.einsteinsci.betterbeginnings.register.*;
|
||||
import net.einsteinsci.betterbeginnings.register.achievement.RegisterAchievements;
|
||||
|
@ -32,7 +33,7 @@ import net.minecraftforge.fml.relauncher.SideOnly;
|
|||
public class ModMain
|
||||
{
|
||||
public static final String MODID = "betterbeginnings";
|
||||
public static final String VERSION = "0.9.7-R1";
|
||||
public static final String VERSION = "0.9.8-pre1";
|
||||
public static final String NAME = "BetterBeginnings";
|
||||
public static final CreativeTabs tabBetterBeginnings = new CreativeTabs("tabBetterBeginnings")
|
||||
{
|
||||
|
@ -74,6 +75,8 @@ public class ModMain
|
|||
PacketNetherBrickOvenFuelLevel.class, 0, Side.CLIENT);
|
||||
network.registerMessage(PacketCampfireState.PacketHandler.class,
|
||||
PacketCampfireState.class, 1, Side.CLIENT);
|
||||
network.registerMessage(PacketPoweredBBFurnaceEnergy.PacketHandler.class,
|
||||
PacketPoweredBBFurnaceEnergy.class, 2, Side.CLIENT);
|
||||
|
||||
RegisterItems.register();
|
||||
RegisterBlocks.register();
|
||||
|
|
|
@ -3,6 +3,7 @@ package net.einsteinsci.betterbeginnings.blocks;
|
|||
import net.einsteinsci.betterbeginnings.ModMain;
|
||||
import net.einsteinsci.betterbeginnings.gui.BBGuiHandler;
|
||||
import net.einsteinsci.betterbeginnings.register.RegisterBlocks;
|
||||
import net.einsteinsci.betterbeginnings.tileentity.TileEntityRedstoneKiln;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
|
@ -10,6 +11,7 @@ import net.minecraft.item.Item;
|
|||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.EnumParticleTypes;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
@ -70,6 +72,12 @@ public class BlockRedstoneKiln extends BlockSpecializedFurnace
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public EnumParticleTypes getFlameParticle()
|
||||
{
|
||||
return EnumParticleTypes.REDSTONE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(IBlockState state, Random rand, int par3)
|
||||
{
|
||||
|
@ -80,7 +88,7 @@ public class BlockRedstoneKiln extends BlockSpecializedFurnace
|
|||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side,
|
||||
float clickX, float clickY, float clickZ)
|
||||
{
|
||||
//player.openGui(ModMain.modInstance, BBGuiHandler.OBSIDIANKILN_ID, world, pos.getX(), pos.getY(), pos.getZ());
|
||||
player.openGui(ModMain.modInstance, BBGuiHandler.REDSTONEKILN_ID, world, pos.getX(), pos.getY(), pos.getZ());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -95,7 +103,6 @@ public class BlockRedstoneKiln extends BlockSpecializedFurnace
|
|||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int par2)
|
||||
{
|
||||
//return new TileEntityObsidianKiln();
|
||||
return null;
|
||||
return new TileEntityRedstoneKiln();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -147,11 +147,13 @@ public abstract class BlockSpecializedFurnace extends BlockContainer implements
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected BlockState createBlockState()
|
||||
{
|
||||
return new BlockState(this, FACING);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getMetaFromState(IBlockState state)
|
||||
{
|
||||
return ((EnumFacing)state.getValue(FACING)).getIndex();
|
||||
|
|
|
@ -7,9 +7,6 @@ import net.minecraft.util.BlockPos;
|
|||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.common.network.IGuiHandler;
|
||||
|
||||
/**
|
||||
* Some issues with this. Please note the server doesn't register items or blocks. At all.
|
||||
*/
|
||||
public class BBGuiHandler implements IGuiHandler
|
||||
{
|
||||
public static final int KILN_ID = 0;
|
||||
|
@ -22,6 +19,10 @@ public class BBGuiHandler implements IGuiHandler
|
|||
public static final int ENDERSMELTER_ID = 8;
|
||||
public static final int CAMPFIRE_ID = 9;
|
||||
|
||||
public static final int REDSTONEKILN_ID = 10;
|
||||
public static final int FLUXEDOVEN_ID = 11;
|
||||
public static final int RESONANTSMELTER_ID = 12;
|
||||
|
||||
@Override
|
||||
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z)
|
||||
{
|
||||
|
@ -79,6 +80,12 @@ public class BBGuiHandler implements IGuiHandler
|
|||
return new ContainerCampfire(player.inventory, campfire);
|
||||
}
|
||||
|
||||
if (ID == REDSTONEKILN_ID)
|
||||
{
|
||||
TileEntityRedstoneKiln redKiln = (TileEntityRedstoneKiln)world.getTileEntity(pos);
|
||||
return new ContainerRedstoneKiln(player.inventory, redKiln);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -139,6 +146,12 @@ public class BBGuiHandler implements IGuiHandler
|
|||
return new GuiCampfire(player.inventory, campfire);
|
||||
}
|
||||
|
||||
if (ID == REDSTONEKILN_ID)
|
||||
{
|
||||
TileEntityRedstoneKiln redKiln = (TileEntityRedstoneKiln)world.getTileEntity(pos);
|
||||
return new GuiRedstoneKiln(player.inventory, redKiln);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,9 +8,6 @@ import net.minecraft.entity.player.InventoryPlayer;
|
|||
import net.minecraft.util.ResourceLocation;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
/**
|
||||
* Created by einsteinsci on 8/17/2014.
|
||||
*/
|
||||
public class GuiObsidianKiln extends GuiContainer
|
||||
{
|
||||
private static final ResourceLocation kilnGuiTextures = new ResourceLocation(
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
package net.einsteinsci.betterbeginnings.gui;
|
||||
|
||||
import net.einsteinsci.betterbeginnings.inventory.ContainerRedstoneKiln;
|
||||
import net.einsteinsci.betterbeginnings.tileentity.TileEntityRedstoneKiln;
|
||||
import net.minecraft.client.gui.inventory.GuiContainer;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class GuiRedstoneKiln extends GuiContainer
|
||||
{
|
||||
private static final ResourceLocation kilnGuiTextures = new ResourceLocation(
|
||||
"betterbeginnings:textures/gui/container/redstoneKiln.png");
|
||||
private TileEntityRedstoneKiln tileKiln;
|
||||
|
||||
public GuiRedstoneKiln(InventoryPlayer invPlayer, TileEntityRedstoneKiln tile)
|
||||
{
|
||||
super(new ContainerRedstoneKiln(invPlayer, tile));
|
||||
tileKiln = tile;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY)
|
||||
{
|
||||
String string = tileKiln.hasCustomName() ? tileKiln.getCommandSenderName() :
|
||||
I18n.format(tileKiln.getCommandSenderName());
|
||||
fontRendererObj.drawString(string, 38, 6, 4210752);
|
||||
fontRendererObj.drawString(I18n.format("container.inventory"), 40, ySize - 94, 4210752);
|
||||
|
||||
int k = (width - xSize) / 2;
|
||||
int l = (height - ySize) / 2;
|
||||
|
||||
// In fuel zone
|
||||
if (mouseX >= k + 17 && mouseX <= k + 32 && mouseY >= l + 10 && mouseY <= l + 57)
|
||||
{
|
||||
//_drawPowerTooltip(mouseX - k, mouseY - l);
|
||||
}
|
||||
}
|
||||
|
||||
private void _drawPowerTooltip(int x, int y)
|
||||
{
|
||||
List<String> lines = new ArrayList<>();
|
||||
|
||||
lines.add("" + tileKiln.getBattery().getEnergyStored() + " RF");
|
||||
|
||||
drawHoveringText(lines, x, y); //Draw tooltip
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3)
|
||||
{
|
||||
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
mc.getTextureManager().bindTexture(kilnGuiTextures);
|
||||
int k = (width - xSize) / 2;
|
||||
int l = (height - ySize) / 2;
|
||||
|
||||
drawTexturedModalRect(k, l, 0, 0, xSize, ySize);
|
||||
int i1;
|
||||
|
||||
if (tileKiln.getBattery().getEnergyStored() > 0)
|
||||
{
|
||||
i1 = tileKiln.getEnergyScaled(48);
|
||||
drawTexturedModalRect(k + 17, l + 10 + 48 - i1, 176, 31 + 48 - i1, 16, i1 + 2);
|
||||
}
|
||||
|
||||
if (tileKiln.isBurning())
|
||||
{
|
||||
drawTexturedModalRect(k + 56, l + 46, 176, 0, 14, 14);
|
||||
}
|
||||
|
||||
i1 = tileKiln.getCookProgressScaled(24);
|
||||
drawTexturedModalRect(k + 79, l + 34, 176, 14, i1 + 1, 16);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,84 @@
|
|||
package net.einsteinsci.betterbeginnings.inventory;
|
||||
|
||||
import cofh.api.energy.IEnergyStorage;
|
||||
|
||||
public class BatterySpecializedFurnace implements IEnergyStorage
|
||||
{
|
||||
private int maxEnergy;
|
||||
private int energyStored;
|
||||
|
||||
public BatterySpecializedFurnace(int maxRF)
|
||||
{
|
||||
maxEnergy = maxRF;
|
||||
}
|
||||
public BatterySpecializedFurnace(int maxRF, int startRF)
|
||||
{
|
||||
this(maxRF);
|
||||
energyStored = startRF;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int receiveEnergy(int maxReceive, boolean simulate)
|
||||
{
|
||||
if (energyStored + maxReceive <= maxEnergy)
|
||||
{
|
||||
if (!simulate)
|
||||
{
|
||||
energyStored += maxReceive;
|
||||
}
|
||||
|
||||
return maxReceive;
|
||||
}
|
||||
else
|
||||
{
|
||||
int received = maxEnergy - energyStored;
|
||||
if (!simulate)
|
||||
{
|
||||
energyStored = maxEnergy;
|
||||
}
|
||||
|
||||
return received;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int extractEnergy(int maxExtract, boolean simulate)
|
||||
{
|
||||
if (energyStored >= maxExtract)
|
||||
{
|
||||
if (!simulate)
|
||||
{
|
||||
energyStored -= maxExtract;
|
||||
}
|
||||
|
||||
return maxExtract;
|
||||
}
|
||||
else
|
||||
{
|
||||
int extracted = energyStored;
|
||||
if (!simulate)
|
||||
{
|
||||
energyStored = 0;
|
||||
}
|
||||
|
||||
return extracted;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyStored()
|
||||
{
|
||||
return energyStored;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxEnergyStored()
|
||||
{
|
||||
return maxEnergy;
|
||||
}
|
||||
|
||||
public void setEnergyStored(int rf)
|
||||
{
|
||||
energyStored = rf;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,106 @@
|
|||
package net.einsteinsci.betterbeginnings.inventory;
|
||||
|
||||
import cofh.api.energy.IEnergyContainerItem;
|
||||
import net.einsteinsci.betterbeginnings.register.recipe.KilnRecipeHandler;
|
||||
import net.einsteinsci.betterbeginnings.tileentity.TileEntityKilnBase;
|
||||
import net.einsteinsci.betterbeginnings.tileentity.TileEntityRedstoneKiln;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.inventory.SlotFurnaceOutput;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ContainerRedstoneKiln extends ContainerSpecializedFurnace
|
||||
{
|
||||
public ContainerRedstoneKiln(InventoryPlayer playerInv, TileEntityRedstoneKiln obsKiln)
|
||||
{
|
||||
tileSpecialFurnace = obsKiln;
|
||||
addSlotToContainer(new Slot(obsKiln, 0, 56, 27));
|
||||
addSlotToContainer(new Slot(obsKiln, 1, 17, 63));
|
||||
addSlotToContainer(new SlotFurnaceOutput(playerInv.player, obsKiln, 2, 116, 35));
|
||||
|
||||
int i;
|
||||
for (i = 0; i < 3; ++i)
|
||||
{
|
||||
for (int j = 0; j < 9; ++j)
|
||||
{
|
||||
addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 9; ++i)
|
||||
{
|
||||
addSlotToContainer(new Slot(playerInv, i, 8 + i * 18, 142));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer player, int par2)
|
||||
{
|
||||
ItemStack itemstack = null;
|
||||
Slot slot = (Slot)inventorySlots.get(par2);
|
||||
|
||||
TileEntityKilnBase kiln = (TileEntityKilnBase)tileSpecialFurnace;
|
||||
|
||||
if (slot != null && slot.getHasStack())
|
||||
{
|
||||
ItemStack itemstack1 = slot.getStack();
|
||||
itemstack = itemstack1.copy();
|
||||
|
||||
if (par2 == 2)
|
||||
{
|
||||
if (!mergeItemStack(itemstack1, 3, 39, true))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
slot.onSlotChange(itemstack1, itemstack);
|
||||
}
|
||||
else if (par2 != 1 && par2 != 0)
|
||||
{
|
||||
if (KilnRecipeHandler.instance().getSmeltingResult(itemstack1) != null)
|
||||
{
|
||||
if (!mergeItemStack(itemstack1, 0, 1, false))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else if (itemstack1.getItem() instanceof IEnergyContainerItem)
|
||||
{
|
||||
if (!mergeItemStack(itemstack1, 1, 2, false))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else if (par2 >= 3 && par2 < 30)
|
||||
{
|
||||
if (!mergeItemStack(itemstack1, 30, 39, false))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else if (par2 >= 30 && par2 < 39 && !mergeItemStack(itemstack1, 3, 30, false))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else if (!mergeItemStack(itemstack1, 3, 39, false))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
if (itemstack1.stackSize == 0)
|
||||
{
|
||||
slot.putStack(null);
|
||||
}
|
||||
else
|
||||
{
|
||||
slot.onSlotChanged();
|
||||
}
|
||||
if (itemstack1.stackSize == itemstack.stackSize)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
slot.onPickupFromSlot(player, itemstack1);
|
||||
}
|
||||
return itemstack;
|
||||
}
|
||||
}
|
|
@ -33,7 +33,7 @@ public class PacketNetherBrickOvenFuelLevel implements IMessage
|
|||
|
||||
public PacketNetherBrickOvenFuelLevel()
|
||||
{
|
||||
pos = new BlockPos(0, 0, 0);
|
||||
pos = BlockPos.ORIGIN;
|
||||
|
||||
fluid = null;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
package net.einsteinsci.betterbeginnings.network;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.einsteinsci.betterbeginnings.ModMain;
|
||||
import net.einsteinsci.betterbeginnings.tileentity.ITileEntityPoweredBBFurnace;
|
||||
import net.einsteinsci.betterbeginnings.tileentity.TileEntitySpecializedFurnace;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
||||
|
||||
public class PacketPoweredBBFurnaceEnergy implements IMessage
|
||||
{
|
||||
public static class PacketHandler implements IMessageHandler<PacketPoweredBBFurnaceEnergy, IMessage>
|
||||
{
|
||||
@Override
|
||||
public IMessage onMessage(PacketPoweredBBFurnaceEnergy message, MessageContext ctx)
|
||||
{
|
||||
EntityPlayer player = ModMain.proxy.getPlayerFromMessageContext(ctx);
|
||||
|
||||
TileEntitySpecializedFurnace tileEntity = (TileEntitySpecializedFurnace)player.worldObj.getTileEntity(message.pos);
|
||||
if (tileEntity instanceof ITileEntityPoweredBBFurnace)
|
||||
{
|
||||
ITileEntityPoweredBBFurnace itepbbf = (ITileEntityPoweredBBFurnace)tileEntity;
|
||||
itepbbf.setEnergy(message.energy);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private BlockPos pos;
|
||||
|
||||
private int energy;
|
||||
|
||||
public PacketPoweredBBFurnaceEnergy()
|
||||
{
|
||||
this(BlockPos.ORIGIN, 0);
|
||||
}
|
||||
public PacketPoweredBBFurnaceEnergy(BlockPos _pos, int _energy)
|
||||
{
|
||||
pos = _pos;
|
||||
energy = _energy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fromBytes(ByteBuf buf)
|
||||
{
|
||||
pos = new BlockPos(buf.readInt(), buf.readInt(), buf.readInt());
|
||||
energy = buf.readInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toBytes(ByteBuf buf)
|
||||
{
|
||||
buf.writeInt(pos.getX());
|
||||
buf.writeInt(pos.getY());
|
||||
buf.writeInt(pos.getZ());
|
||||
|
||||
buf.writeInt(energy);
|
||||
}
|
||||
}
|
|
@ -7,6 +7,9 @@ import net.einsteinsci.betterbeginnings.register.recipe.*;
|
|||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.common.ForgeHooks;
|
||||
import net.minecraftforge.fml.common.Loader;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
import net.minecraftforge.oredict.*;
|
||||
|
||||
|
@ -580,6 +583,8 @@ public class RegisterRecipes
|
|||
'B', Items.bone,
|
||||
'/', "stickWood");
|
||||
|
||||
// region Tools & Armor
|
||||
|
||||
// Leather armor
|
||||
AdvancedCraftingConfig.addAdvancedRecipe(new ItemStack(Items.leather_helmet),
|
||||
new Object[] {"itemString", 3,
|
||||
|
@ -1115,6 +1120,8 @@ public class RegisterRecipes
|
|||
'/', "stickWood");
|
||||
}
|
||||
|
||||
// endregion Tools & Armor
|
||||
|
||||
if (BBConfig.moduleInfusionRepair)
|
||||
{
|
||||
// Repair Infusion Station
|
||||
|
@ -1165,6 +1172,18 @@ public class RegisterRecipes
|
|||
'#', Blocks.end_stone,
|
||||
'S', RegisterBlocks.smelter,
|
||||
'E', Items.ender_eye);
|
||||
|
||||
if (Loader.isModLoaded("enderio") || Loader.isModLoaded("buildcraft") ||
|
||||
Loader.isModLoaded("cofhcore") || Loader.isModLoaded("immersiveengineering"))
|
||||
{
|
||||
AdvancedCraftingHandler.addAdvancedRecipe(new ItemStack(RegisterBlocks.redstoneKiln),
|
||||
new Object[]{ "dustRedstone", 32, "nuggetGold", 16, new ItemStack(Items.blaze_powder, 10) },
|
||||
"DED", "/K/", "DED",
|
||||
'K', RegisterBlocks.obsidianKiln,
|
||||
'/', Items.blaze_rod,
|
||||
'E', Items.ender_eye,
|
||||
'D', Items.diamond);
|
||||
}
|
||||
}
|
||||
|
||||
// Rock Hammer
|
||||
|
|
|
@ -9,12 +9,17 @@ public class RegisterTileEntities
|
|||
public static void register()
|
||||
{
|
||||
GameRegistry.registerTileEntity(TileEntityKiln.class, ModMain.MODID + ":TileEntityKiln");
|
||||
GameRegistry.registerTileEntity(TileEntityBrickOven.class, ModMain.MODID + ":TileEntityBrickOven");
|
||||
GameRegistry.registerTileEntity(TileEntitySmelter.class, ModMain.MODID + ":TileEntitySmelter");
|
||||
GameRegistry.registerTileEntity(TileEntityCampfire.class, ModMain.MODID + ":TileEntityCampfire");
|
||||
GameRegistry.registerTileEntity(TileEntityObsidianKiln.class, ModMain.MODID + ":TileEntityObsidianKiln");
|
||||
GameRegistry.registerTileEntity(TileEntityRedstoneKiln.class, ModMain.MODID + ":TileEntityRedstoneKiln");
|
||||
|
||||
GameRegistry.registerTileEntity(TileEntityBrickOven.class, ModMain.MODID + ":TileEntityBrickOven");
|
||||
GameRegistry.registerTileEntity(TileEntityNetherBrickOven.class, ModMain.MODID + ":TileEntityNetherBrickOven");
|
||||
|
||||
GameRegistry.registerTileEntity(TileEntitySmelter.class, ModMain.MODID + ":TileEntitySmelter");
|
||||
GameRegistry.registerTileEntity(TileEntityEnderSmelter.class, ModMain.MODID + ":TileEntityEnderSmelter");
|
||||
|
||||
GameRegistry.registerTileEntity(TileEntityCampfire.class, ModMain.MODID + ":TileEntityCampfire");
|
||||
|
||||
GameRegistry.registerTileEntity(TileEntityInfusionRepair.class, ModMain.MODID + ":TileEntityInfusionRepair");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
package net.einsteinsci.betterbeginnings.tileentity;
|
||||
|
||||
import cofh.api.energy.IEnergyReceiver;
|
||||
import cofh.api.energy.IEnergyStorage;
|
||||
|
||||
public interface ITileEntityPoweredBBFurnace extends IEnergyReceiver
|
||||
{
|
||||
IEnergyStorage getBattery();
|
||||
|
||||
int getEnergyScaled(int px);
|
||||
|
||||
void setEnergy(int rf);
|
||||
|
||||
public void updateNetwork();
|
||||
}
|
|
@ -185,7 +185,7 @@ public abstract class TileEntityBrickOvenBase extends TileEntitySpecializedFurna
|
|||
@Override
|
||||
public boolean isItemValidForSlot(int slot, ItemStack stack)
|
||||
{
|
||||
return slot == OUTPUT ? false : slot == FUEL ? isItemFuel(stack) : true;
|
||||
return slot != OUTPUT && (slot != FUEL || isItemFuel(stack));
|
||||
}
|
||||
|
||||
public ItemStack getStackInRowAndColumn(int row, int column)
|
||||
|
|
|
@ -28,11 +28,11 @@ public abstract class TileEntityKilnBase extends TileEntitySpecializedFurnace im
|
|||
public static final int[] SLOTS_BOTTOM = new int[] {SLOT_OUTPUT};
|
||||
public static final int[] SLOTS_SIDES = new int[] {SLOT_FUEL, SLOT_INPUT};
|
||||
|
||||
public TileEntityKilnBase()
|
||||
protected TileEntityKilnBase()
|
||||
{
|
||||
super(3);
|
||||
}
|
||||
public TileEntityKilnBase(int slots)
|
||||
protected TileEntityKilnBase(int slots)
|
||||
{
|
||||
super(slots);
|
||||
}
|
||||
|
@ -171,8 +171,8 @@ public abstract class TileEntityKilnBase extends TileEntitySpecializedFurnace im
|
|||
return false;
|
||||
}
|
||||
|
||||
int result = specialFurnaceStacks[SLOT_OUTPUT].stackSize + stack.stackSize;
|
||||
return result <= getInventoryStackLimit() && result <= specialFurnaceStacks[SLOT_OUTPUT].getMaxStackSize();
|
||||
int size = specialFurnaceStacks[SLOT_OUTPUT].stackSize + stack.stackSize;
|
||||
return size <= getInventoryStackLimit() && size <= specialFurnaceStacks[SLOT_OUTPUT].getMaxStackSize();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,227 @@
|
|||
package net.einsteinsci.betterbeginnings.tileentity;
|
||||
|
||||
import cofh.api.energy.IEnergyContainerItem;
|
||||
import cofh.api.energy.IEnergyReceiver;
|
||||
|
||||
import net.einsteinsci.betterbeginnings.ModMain;
|
||||
import net.einsteinsci.betterbeginnings.blocks.BlockRedstoneKiln;
|
||||
import net.einsteinsci.betterbeginnings.inventory.BatterySpecializedFurnace;
|
||||
import net.einsteinsci.betterbeginnings.inventory.ContainerRedstoneKiln;
|
||||
|
||||
import net.einsteinsci.betterbeginnings.network.PacketPoweredBBFurnaceEnergy;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraftforge.fml.common.network.NetworkRegistry;
|
||||
|
||||
public class TileEntityRedstoneKiln extends TileEntityKilnBase implements IEnergyReceiver, ITileEntityPoweredBBFurnace
|
||||
{
|
||||
public static final int MAX_RF = 100000; // 100,000
|
||||
public static final int SMELT_COST = 1500;
|
||||
public static final int CHARGE_RATE = 15;
|
||||
|
||||
private BatterySpecializedFurnace battery;
|
||||
|
||||
public TileEntityRedstoneKiln()
|
||||
{
|
||||
super();
|
||||
processTime = 200;
|
||||
burnTime = 1;
|
||||
|
||||
battery = new BatterySpecializedFurnace(MAX_RF);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound tagCompound)
|
||||
{
|
||||
super.readFromNBT(tagCompound);
|
||||
currentItemBurnLength = getItemBurnTime(specialFurnaceStacks[SLOT_FUEL]);
|
||||
battery.setEnergyStored(tagCompound.getInteger("Energy"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound tagCompound)
|
||||
{
|
||||
super.writeToNBT(tagCompound);
|
||||
tagCompound.setInteger("Energy", battery.getEnergyStored());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemBurnTime(ItemStack itemStack)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update()
|
||||
{
|
||||
if (!worldObj.isRemote)
|
||||
{
|
||||
|
||||
//if (burnTime > 0)
|
||||
//{
|
||||
// --burnTime;
|
||||
//}
|
||||
//
|
||||
//if (burnTime == 0 && canSmelt())
|
||||
//{
|
||||
// currentItemBurnLength = burnTime = getItemBurnTime(specialFurnaceStacks[SLOT_FUEL]);
|
||||
//
|
||||
// if (burnTime > 0)
|
||||
// {
|
||||
// flag1 = true;
|
||||
// if (specialFurnaceStacks[SLOT_FUEL] != null)
|
||||
// {
|
||||
// --specialFurnaceStacks[SLOT_FUEL].stackSize;
|
||||
//
|
||||
// if (specialFurnaceStacks[SLOT_FUEL].stackSize == 0)
|
||||
// {
|
||||
// specialFurnaceStacks[SLOT_FUEL] = specialFurnaceStacks[SLOT_FUEL].getItem()
|
||||
// .getContainerItem(specialFurnaceStacks[SLOT_FUEL]);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
if (isBurning() && canSmelt())
|
||||
{
|
||||
++cookTime;
|
||||
if (cookTime == processTime)
|
||||
{
|
||||
cookTime = 0;
|
||||
smeltItem();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cookTime = 0;
|
||||
}
|
||||
|
||||
updateBlockState();
|
||||
markDirty();
|
||||
|
||||
// Charge battery from "fuel" slot
|
||||
ItemStack fuel = specialFurnaceStacks[SLOT_FUEL];
|
||||
if (fuel != null && fuel.getItem() instanceof IEnergyContainerItem)
|
||||
{
|
||||
IEnergyContainerItem capacitor = (IEnergyContainerItem)fuel.getItem();
|
||||
|
||||
int extracted = capacitor.extractEnergy(fuel, CHARGE_RATE, true);
|
||||
|
||||
if (battery.receiveEnergy(extracted, true) == extracted)
|
||||
{
|
||||
capacitor.extractEnergy(fuel, CHARGE_RATE, false);
|
||||
battery.receiveEnergy(extracted, false);
|
||||
}
|
||||
}
|
||||
|
||||
if (fuel != null && fuel.getItem() == Items.fire_charge)
|
||||
{
|
||||
battery.receiveEnergy(CHARGE_RATE, false);
|
||||
}
|
||||
|
||||
updateNetwork();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBurning()
|
||||
{
|
||||
boolean hasEnergy = battery.extractEnergy(SMELT_COST, true) == SMELT_COST;
|
||||
return specialFurnaceStacks[SLOT_INPUT] != null && hasEnergy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void smeltItem()
|
||||
{
|
||||
super.smeltItem();
|
||||
|
||||
if (canSmelt())
|
||||
{
|
||||
battery.extractEnergy(SMELT_COST, false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCommandSenderName()
|
||||
{
|
||||
return hasCustomName() ? customName : "container.redstoneKiln";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateBlockState()
|
||||
{
|
||||
worldObj.markBlockForUpdate(pos);
|
||||
BlockRedstoneKiln.updateBlockState(isBurning(), worldObj, pos);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Container createContainer(InventoryPlayer playerInventory, EntityPlayer playerIn)
|
||||
{
|
||||
return new ContainerRedstoneKiln(playerInventory, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGuiID()
|
||||
{
|
||||
return ModMain.MODID + ":redstoneKiln";
|
||||
}
|
||||
|
||||
@Override
|
||||
public BatterySpecializedFurnace getBattery()
|
||||
{
|
||||
return battery;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyScaled(int px)
|
||||
{
|
||||
float outOfOne = (float)battery.getEnergyStored() / (float)battery.getMaxEnergyStored();
|
||||
return (int)(outOfOne * px);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEnergy(int rf)
|
||||
{
|
||||
battery.setEnergyStored(rf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateNetwork()
|
||||
{
|
||||
NetworkRegistry.TargetPoint point = new NetworkRegistry.TargetPoint(
|
||||
worldObj.provider.getDimensionId(), pos.getX(), pos.getY(), pos.getZ(), 16.0d);
|
||||
ModMain.network.sendToAllAround(new PacketPoweredBBFurnaceEnergy(
|
||||
pos, battery.getEnergyStored()), point);
|
||||
}
|
||||
|
||||
// region IEnergyReceiver
|
||||
@Override
|
||||
public int receiveEnergy(EnumFacing from, int maxReceive, boolean simulate)
|
||||
{
|
||||
return battery.receiveEnergy(maxReceive, simulate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyStored(EnumFacing from)
|
||||
{
|
||||
return battery.getEnergyStored();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxEnergyStored(EnumFacing from)
|
||||
{
|
||||
return battery.getMaxEnergyStored();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnectEnergy(EnumFacing from)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
// endregion IEnergyReceiver
|
||||
}
|
|
@ -24,7 +24,7 @@ public abstract class TileEntitySpecializedFurnace extends TileEntity implements
|
|||
public int cookTime;
|
||||
protected int processTime;
|
||||
|
||||
public TileEntitySpecializedFurnace(int numStacks)
|
||||
protected TileEntitySpecializedFurnace(int numStacks)
|
||||
{
|
||||
specialFurnaceStacks = new ItemStack[numStacks];
|
||||
}
|
||||
|
@ -217,7 +217,11 @@ public abstract class TileEntitySpecializedFurnace extends TileEntity implements
|
|||
tagCompound.setTag("Items", tagList);
|
||||
|
||||
//The Nether Brick oven doesn't use burnTime
|
||||
if (!(this instanceof TileEntityNetherBrickOven)) tagCompound.setShort("BurnTime", (short)burnTime);
|
||||
if (!(this instanceof TileEntityNetherBrickOven))
|
||||
{
|
||||
tagCompound.setShort("BurnTime", (short)burnTime);
|
||||
}
|
||||
|
||||
tagCompound.setShort("CookTime", (short)cookTime);
|
||||
|
||||
if (hasCustomName())
|
||||
|
|
|
@ -70,6 +70,7 @@ container.infusion.level=L
|
|||
container.obsidianKiln=Obsidian Kiln
|
||||
container.netherbrickoven=Nether Brick Oven
|
||||
container.enderSmelter=Ender Smelter
|
||||
container.redstoneKiln=Redstone Kiln
|
||||
container.campfire=Campfire
|
||||
container.campfire.woodFuelsOnly=Only wood fuels are accepted.
|
||||
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 612 B After Width: | Height: | Size: 634 B |
Binary file not shown.
After Width: | Height: | Size: 4.1 KiB |
|
@ -3,7 +3,7 @@
|
|||
"modid": "betterbeginnings",
|
||||
"name": "BetterBeginnings",
|
||||
"description": "Rebalances early stages of Minecraft, and creates alternatives to the typical vanilla grind.",
|
||||
"version": "0.9.7-R1",
|
||||
"version": "0.9.8-R1",
|
||||
"mcversion": "${mcversion}",
|
||||
"url": "http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/wip-mods/2192122-betterbeginnings-mod-9000-downloads",
|
||||
"updateUrl": "",
|
||||
|
|
Loading…
Reference in New Issue