Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions src/main/java/practicalities/BucketHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package practicalities;

import java.util.HashMap;
import java.util.Map;

import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.FillBucketEvent;
import practicalities.blocks.ModBlocks;
import practicalities.items.ModItems;
import cpw.mods.fml.common.eventhandler.Event.Result;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;

public class BucketHandler {

public static BucketHandler INSTANCE = new BucketHandler();
public Map<Block, Item> buckets = new HashMap<Block, Item>();

public static void init() {
BucketHandler.INSTANCE.buckets.put(ModBlocks.blockPreChewedFood, ModItems.bucketPreChewedFood);
MinecraftForge.EVENT_BUS.register(BucketHandler.INSTANCE);
}

private BucketHandler() {
}

@SubscribeEvent
public void onBucketFill(FillBucketEvent event) {

ItemStack result = fillCustomBucket(event.world, event.target);

if (result == null)
return;

event.result = result;
event.setResult(Result.ALLOW);
}

private ItemStack fillCustomBucket(World world, MovingObjectPosition pos) {

Block block = world.getBlock(pos.blockX, pos.blockY, pos.blockZ);

Item bucket = buckets.get(block);
if (bucket != null && world.getBlockMetadata(pos.blockX, pos.blockY, pos.blockZ) == 0) {
world.setBlockToAir(pos.blockX, pos.blockY, pos.blockZ);
return new ItemStack(bucket);
} else
return null;

}
}
12 changes: 10 additions & 2 deletions src/main/java/practicalities/ConfigMan.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package practicalities;

import net.minecraft.launchwrapper.Launch;
import net.minecraftforge.common.config.Configuration;

public class ConfigMan
Expand All @@ -9,8 +10,10 @@ public class ConfigMan
* Sure, they will take up an ID for no reason
* but I feel that is an ok trade off for not having
* to worry about it when making recipes
*/

*/

public static boolean isDev = (Boolean)Launch.blackboard.get("fml.deobfuscatedEnvironment");

private static Configuration config;

//blocks
Expand All @@ -27,6 +30,8 @@ public class ConfigMan
public static boolean enableImbuedItems;
public static boolean enableNetherBlade;

public static boolean enablePreChewedFood;

public static void init(Configuration configuration)
{
config = configuration;
Expand All @@ -51,5 +56,8 @@ public static void hydrateConifg()
enableImbuedItems = config.getBoolean("enableImbuedItems", "general", true, "");
enableNetherBlade = config.getBoolean("enableNetherBlade", "general", true, "");

enablePreChewedFood = config.getBoolean("enablePreChewedFood", "general", true, "");


}
}
11 changes: 11 additions & 0 deletions src/main/java/practicalities/Getter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package practicalities;

public abstract class Getter<DataType, Operand> {
public Operand op;

public Getter(Operand op) {
this.op = op;
}

public abstract DataType get();
}
9 changes: 6 additions & 3 deletions src/main/java/practicalities/PracticalitiesMod.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@
import net.minecraft.item.Item;
import net.minecraftforge.common.config.Configuration;
import practicalities.gui.GuiHandler;
import practicalities.items.ModItems;
import practicalities.machine.playerinterface.TilePlayerInterface;
import practicalities.machine.inventoryfilter.TileInventoryFilter;
import practicalities.items.ModItems;
import practicalities.machine.inventoryfilter.TileInventoryFilter;
import practicalities.machine.masher.TileMasher;
import practicalities.machine.playerinterface.TilePlayerInterface;
import practicalities.machine.shippingcrate.TileShippingCrate;
import practicalities.machine.vampiricgenerator.TileVampiricGenerator;
import practicalities.network.Proxy;
Expand Down Expand Up @@ -46,6 +47,7 @@ public void preInit(FMLPreInitializationEvent event) {
@EventHandler
public void init(FMLInitializationEvent event) {
NetworkRegistry.INSTANCE.registerGuiHandler(instance, guiHandler);
BucketHandler.init();
}

@EventHandler
Expand All @@ -63,6 +65,7 @@ private void initMachines() {
TilePlayerInterface.initialize();
TileVampiricGenerator.initialize();
TileInventoryFilter.initialize();
TileMasher.initialize();
initializedMachines = true;
}
}
Expand Down
30 changes: 25 additions & 5 deletions src/main/java/practicalities/blocks/ModBlocks.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,13 @@

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import practicalities.ConfigMan;
import practicalities.machine.playerinterface.BlockPlayerInterface;
import practicalities.machine.inventoryfilter.BlockInventoryFilter;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry;
import practicalities.ConfigMan;
import practicalities.fluid.prechewedfood.BlockPreChewedFood;
import practicalities.machine.inventoryfilter.BlockInventoryFilter;
import practicalities.machine.masher.BlockMasher;
import practicalities.machine.playerinterface.BlockPlayerInterface;
import practicalities.machine.polaritynegator.BlockPolarityNegator;
import practicalities.machine.shippingcrate.BlockShippingCrate;
import practicalities.machine.vampiricgenerator.BlockVampiricGenerator;
Expand All @@ -13,16 +17,28 @@ public class ModBlocks {
public static Block shippingCrate;
public static Block stoneWall;
public static Block vampiricGenerator;
public static Block polarityNegator;
public static Block polarityNegator;
public static Block inventoryFilter;
public static Block masher;
public static Block blockPreChewedFood;
public static Fluid preChewedFood;
public static Block playerInterface;
public static Block inventoryFilter;

public static void init() {

preChewedFood = new Fluid("preChewedFood");
preChewedFood.setDensity(2000).setTemperature(310).setViscosity(15000);
FluidRegistry.registerFluid(preChewedFood);

stoneWall = new BlockDecor(Material.rock, "stonewall", 1, Block.soundTypeStone);
if(ConfigMan.enablePlayerInterface)
playerInterface = new BlockPlayerInterface();

if(ConfigMan.enablePreChewedFood) {
blockPreChewedFood = new BlockPreChewedFood(preChewedFood);
masher = new BlockMasher();
}

if(ConfigMan.enableInventoryFilter)
inventoryFilter = new BlockInventoryFilter();

Expand All @@ -35,4 +51,8 @@ public static void init() {
if(ConfigMan.enableMagnet)
polarityNegator = new BlockPolarityNegator();
}

public static void postInit() {

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package practicalities.fluid.prechewedfood;

import practicalities.PracticalitiesMod;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fluids.BlockFluidClassic;
import net.minecraftforge.fluids.Fluid;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class BlockPreChewedFood extends BlockFluidClassic {

@SideOnly(Side.CLIENT)
protected IIcon stillIcon;
@SideOnly(Side.CLIENT)
protected IIcon flowingIcon;
protected Fluid fluid;

public BlockPreChewedFood(Fluid fluid) {
super(fluid, Material.water);
this.fluid = fluid;
setCreativeTab(CreativeTabs.tabMisc);
setBlockName("preChewedFood");
GameRegistry.registerBlock(this, fluid.getUnlocalizedName());
}

@Override
public IIcon getIcon(int side, int meta) {
return (side == 0 || side == 1)? stillIcon : flowingIcon;
}

@SideOnly(Side.CLIENT)
@Override
public void registerBlockIcons(IIconRegister register) {
stillIcon = register.registerIcon(PracticalitiesMod.TEXTURE_BASE + "preChewedFood/still");
flowingIcon = register.registerIcon(PracticalitiesMod.TEXTURE_BASE + "preChewedFood/flow");
fluid.setStillIcon(stillIcon);
fluid.setFlowingIcon(flowingIcon);
}

// @Override
// public boolean canDisplace(IBlockAccess world, int x, int y, int z) {
//// if (world.getBlock(x, y, z).getMaterial().isLiquid()) return false;
// return super.canDisplace(world, x, y, z);
// }
//
// @Override
// public boolean displaceIfPossible(World world, int x, int y, int z) {
//// if (world.getBlock(x, y, z).getMaterial().isLiquid()) return false;
// return super.displaceIfPossible(world, x, y, z);
// }

}
42 changes: 16 additions & 26 deletions src/main/java/practicalities/gui/ContainerBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import cofh.lib.util.helpers.MathHelper;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
Expand All @@ -16,6 +15,10 @@
//todo: remove this once CoFHLib ships with it.
public abstract class ContainerBase extends Container {

@SuppressWarnings("unused")
protected SlotRegion mainInv, hotbar;
private SlotRegion[] regions;

public ContainerBase() {

}
Expand All @@ -28,7 +31,9 @@ protected int getPlayerInventoryHorizontalOffset() {
}

protected void bindPlayerInventory(InventoryPlayer inventoryPlayer) {


int firstIndex = this.inventorySlots.size();

int yOff = getPlayerInventoryVerticalOffset();
int xOff = getPlayerInventoryHorizontalOffset();
for (int i = 0; i < 3; i++) {
Expand All @@ -40,10 +45,17 @@ protected void bindPlayerInventory(InventoryPlayer inventoryPlayer) {
for (int i = 0; i < 9; i++) {
addSlotToContainer(new Slot(inventoryPlayer, i, xOff + i * 18, yOff + 58));
}

mainInv = new SlotRegion("mainInventory", firstIndex + 0, firstIndex + 26);
hotbar = new SlotRegion("hotbar", firstIndex + 27, firstIndex + 35);
}

protected abstract int getSizeInventory();

protected void setShiftClickRegions(SlotRegion... regions) {
this.regions = regions;
}

protected boolean supportsShiftClick(EntityPlayer player, int slotIndex) {

return supportsShiftClick(slotIndex);
Expand All @@ -69,37 +81,15 @@ protected boolean performMerge(int slotIndex, ItemStack stack) {
}
return mergeItemStack(stack, 0, invBase, true);
}

@Override
public ItemStack transferStackInSlot(EntityPlayer player, int slotIndex) {

if (!supportsShiftClick(player, slotIndex)) {
return null;
}

ItemStack stack = null;
Slot slot = (Slot) inventorySlots.get(slotIndex);

if (slot != null && slot.getHasStack()) {
ItemStack stackInSlot = slot.getStack();
stack = stackInSlot.copy();

if (!performMerge(player, slotIndex, stackInSlot)) {
return null;
}

if (stackInSlot.stackSize <= 0) {
slot.putStack((ItemStack) null);
} else {
slot.putStack(stackInSlot);
}

if (stackInSlot.stackSize == stack.stackSize) {
return null;
}
slot.onPickupFromSlot(player, stackInSlot);
}
return stack;
return SlotRegion.shiftClick(this, slotIndex, player, regions);
}

@SuppressWarnings("unchecked")
Expand Down
59 changes: 59 additions & 0 deletions src/main/java/practicalities/gui/ElementEnergyBar.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package practicalities.gui;

import practicalities.PracticalitiesMod;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.util.ResourceLocation;
import cofh.api.energy.IEnergyStorage;
import cofh.lib.gui.GuiBase;
import cofh.lib.gui.element.ElementEnergyStored;
import cofh.lib.render.RenderHelper;
import cofh.lib.util.helpers.MathHelper;

public class ElementEnergyBar extends ElementEnergyStored {

public ElementEnergyBar(GuiBase gui, int x, int y, IEnergyStorage storage, int width, int height) {
super(gui, x, y, storage);
this.sizeX = width;
this.sizeY = height;
this.texW = 128;
this.texH = 32;
texture = new ResourceLocation(PracticalitiesMod.TEXTURE_BASE + "textures/gui/element/energy.png");
}


int getPixelsFull()
{
if (this.storage.getMaxEnergyStored() <= 0) {
return 0;
}
double percentage = this.storage.getEnergyStored() / (double)this.storage.getMaxEnergyStored();
int pixels = (int)( this.sizeY * percentage );

return (this.alwaysShowMinimum) && (this.storage.getEnergyStored() > 0) ? Math.max(1, MathHelper.round(pixels)) : MathHelper.round(pixels);
}

public void drawRect(int x, int y, int w, int h, double u, double v, double texW, double texH) {
Tessellator localTessellator = Tessellator.instance;
localTessellator.startDrawingQuads();
localTessellator.addVertexWithUV(x+0, y+h, 10, u, v+texH);
localTessellator.addVertexWithUV(x+w, y+h, 10, u+texW, v+texH);
localTessellator.addVertexWithUV(x+w, y+0, 10, u+texW, v );
localTessellator.addVertexWithUV(x+0, y+0, 10, u, v );
localTessellator.draw();
}

public void drawBackground(int paramInt1, int paramInt2, float paramFloat) {
int i = getScaled();

RenderHelper.bindTexture(this.texture);

int bottom = this.posY + this.sizeY;

drawRect(this.posX, this.posY, this.sizeX, this.sizeY,
0, 0, 0.5, 1);

drawRect(this.posX, bottom -i, this.sizeX, i,
0.5, 0, 0.5, 1);
}

}
Loading