package buildcraftAdditions.core;
import java.util.HashMap;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import cpw.mods.fml.common.eventhandler.Event;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.client.MinecraftForgeClient;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.FillBucketEvent;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidContainerRegistry;
import buildcraftAdditions.client.render.items.BucketItemRenderer;
import buildcraftAdditions.items.ItemBucketBCA;
/**
* Copyright (c) 2014-2015, AEnterprise
* http://buildcraftadditions.wordpress.com/
* Buildcraft Additions is distributed under the terms of GNU GPL v3.0
* Please check the contents of the license located in
* http://buildcraftadditions.wordpress.com/wiki/licensing-stuff/
*/
public final class BucketHandler {
private static final BucketHandler INSTANCE = new BucketHandler();
private final HashMap<Block, ItemStack> bucketMap = new HashMap<Block, ItemStack>();
private BucketHandler() {
MinecraftForge.EVENT_BUS.register(this);
}
public static void registerBucket(Fluid fluid, ItemStack bucket) {
if (fluid != null && fluid.getBlock() != null && bucket != null && bucket.getItem() != null && bucket.stackSize > 0) {
FluidContainerRegistry.registerFluidContainer(fluid, bucket.copy(), FluidContainerRegistry.EMPTY_BUCKET);
INSTANCE.bucketMap.put(fluid.getBlock(), bucket.copy());
}
}
public static void registerRenderers() {
for (ItemStack stack : INSTANCE.bucketMap.values())
if (stack != null && stack.getItem() != null && stack.getItem() instanceof ItemBucketBCA)
MinecraftForgeClient.registerItemRenderer(stack.getItem(), BucketItemRenderer.INSTANCE);
}
@SubscribeEvent
public void onBucketFill(FillBucketEvent event) {
ItemStack bucket = bucketMap.get(event.world.getBlock(event.target.blockX, event.target.blockY, event.target.blockZ));
if (bucket != null && event.world.getBlockMetadata(event.target.blockX, event.target.blockY, event.target.blockZ) == 0) {
event.world.setBlockToAir(event.target.blockX, event.target.blockY, event.target.blockZ);
event.result = bucket.copy();
event.setResult(Event.Result.ALLOW);
}
}
}