This repository has been archived by the owner on Mar 10, 2021. It is now read-only.
forked from iguanaman/IguanaTweaksTConstruct
/
ClayBucketHandler.java
101 lines (86 loc) · 3.69 KB
/
ClayBucketHandler.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package iguanaman.iguanatweakstconstruct.claybuckets;
import cpw.mods.fml.common.eventhandler.Event;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.passive.EntityCow;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.util.MovingObjectPosition;
import net.minecraftforge.event.entity.player.EntityInteractEvent;
import net.minecraftforge.event.entity.player.FillBucketEvent;
import tconstruct.smeltery.TinkerSmeltery;
public class ClayBucketHandler {
// milking cows
@SubscribeEvent
public void EntityInteract(EntityInteractEvent event)
{
if(event.target == null || !(event.target instanceof EntityCow))
return;
if(event.entityPlayer == null)
return;
ItemStack equipped = event.entityPlayer.getCurrentEquippedItem();
// bucket present?
if(equipped == null || equipped.getItem() != IguanaItems.clayBucketFired)
return;
EntityPlayer player = event.entityPlayer;
if (equipped.stackSize-- == 1)
{
player.inventory.setInventorySlotContents(player.inventory.currentItem, new ItemStack(IguanaItems.clayBucketMilk));
}
else if (!player.inventory.addItemStackToInventory(new ItemStack(IguanaItems.clayBucketMilk)))
{
player.dropPlayerItemWithRandomChoice(new ItemStack(IguanaItems.clayBucketMilk, 1, 0), false);
}
}
// filling buckets with molten metal, same behaviour as regular buckets from TConstruct, but with clay buckets
@SubscribeEvent
public void bucketFill (FillBucketEvent event)
{
if (event.current.getItem() == IguanaItems.clayBucketFired && event.target.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK)
{
if(event.getResult() == Event.Result.ALLOW)
return;
int hitX = event.target.blockX;
int hitY = event.target.blockY;
int hitZ = event.target.blockZ;
if (event.entityPlayer != null && !event.entityPlayer.canPlayerEdit(hitX, hitY, hitZ, event.target.sideHit, event.current))
{
return;
}
Block bID = event.world.getBlock(hitX, hitY, hitZ);
// tinkers fluids
for (int id = 0; id < TinkerSmeltery.fluidBlocks.length; id++)
{
if (bID == TinkerSmeltery.fluidBlocks[id])
{
event.world.setBlockToAir(hitX, hitY, hitZ);
if (!event.entityPlayer.capabilities.isCreativeMode)
{
event.world.setBlockToAir(hitX, hitY, hitZ);
event.setResult(Event.Result.ALLOW);
event.result = new ItemStack(IguanaItems.clayBucketsTinkers, 1, id);
return;
}
}
}
// water and lava
if(bID == Blocks.water || bID == Blocks.flowing_water)
{
event.setResult(Event.Result.ALLOW);
event.result = new ItemStack(IguanaItems.clayBucketWater);
event.world.setBlockToAir(hitX, hitY, hitZ);
return;
}
if(bID == Blocks.lava || bID == Blocks.flowing_lava)
{
event.setResult(Event.Result.ALLOW);
event.result = new ItemStack(IguanaItems.clayBucketLava);
event.world.setBlockToAir(hitX, hitY, hitZ);
return;
}
event.setCanceled(true);
}
}
}