aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/items/Item_ThaumiumReinforcedJarFilled.java
blob: 4f8775b714723f1ea7533a4e84eb0a3c5728721e (plain)
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package items;

import common.blocks.Block_ThaumiumReinforcedJar;
import common.tileentities.TE_ThaumiumReinforcedJar;
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectList;
import thaumcraft.common.blocks.ItemJarFilled;

public class Item_ThaumiumReinforcedJarFilled extends ItemJarFilled {
	
	private static final Item_ThaumiumReinforcedJarFilled instance = new Item_ThaumiumReinforcedJarFilled();
	
	private Item_ThaumiumReinforcedJarFilled() {
		super();
	}
	
	public static Item_ThaumiumReinforcedJarFilled getInstance() {
		return instance;
	}
	
	public void registerItem() {
		super.setHasSubtypes(false);
		final String unlocalizedName = "kekztech_thaumiumreinforcedjarfilled_item";
		super.setUnlocalizedName(unlocalizedName);
		GameRegistry.registerItem(getInstance(), unlocalizedName);
	}
	
	@Override
	public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side,
			float par8, float par9, float par10) {
		
		final Block block = world.getBlock(x, y, z);
		if(block == Blocks.snow_layer && (world.getBlockMetadata(x, y, z) & 7) < 1) {
			side = 1;
		} else if(block != Blocks.vine && block != Blocks.tallgrass 
				&& block != Blocks.deadbush && !block.isReplaceable(world, x, y, z)) {
			// Displace target location if original target can't be replaced
			if(side == 0) {
				y--;
			}
			if(side == 1) {
				y++;
			}
			if(side == 2) {
				z--;
			}
			if(side == 3) {
				z++;
			}
			if(side == 4) {
				x--;
			}
			if(side == 5) {
				x++;
			}
		}
		
		if(stack.stackSize == 0) {
			return false;
		} else if(!player.canPlayerEdit(x, y, z, side, stack)) {
			return false;
		} else if(world.canPlaceEntityOnSide(Block_ThaumiumReinforcedJar.getInstance(), x, y, z, 
				false, side, player, stack)) {
			
			final Block jar = Block_ThaumiumReinforcedJar.getInstance();
			final int meta = this.getMetadata(stack.getItemDamage());
			final int idk = block.onBlockPlaced(world, x, y, z, side, par8, par9, par10, meta);
			
			if(placeBlockAt(stack, player, world, x, y, z, side, par9, par9, par10, idk)) {
				
				final TileEntity te = world.getTileEntity(x, y, z);
				if(te != null && te instanceof TE_ThaumiumReinforcedJar && stack.hasTagCompound()) {
					
					final AspectList aspects = getAspects(stack);
					if(aspects != null && aspects.size() == 1) {
						((TE_ThaumiumReinforcedJar) te).amount = aspects.getAmount(aspects.getAspects()[0]);
						((TE_ThaumiumReinforcedJar) te).aspect = aspects.getAspects()[0];
					}
					
					final String filter = stack.stackTagCompound.getString("AspectFilter");
					if(filter != null) {
						((TE_ThaumiumReinforcedJar) te).aspectFilter = Aspect.getAspect(filter);
					}
				}
				
				world.playSoundEffect((double) ((float) x + 0.5F), (double) ((float) y + 0.5F),
						(double) ((float) z + 0.5F), jar.stepSound.func_150496_b(),
						(jar.stepSound.getVolume() + 1.0F) / 2.0F, jar.stepSound.getPitch() * 0.8F);
				--stack.stackSize;
			}
			
			return true;
		} else {
			return false;
		}
	}
	
	@Override
	public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side,
			float hitX, float hitY, float hitZ, int metadata) {
		if (!world.setBlock(x, y, z, Block_ThaumiumReinforcedJar.getInstance(), metadata, 3)) {
			return false;
		} else {
			if (world.getBlock(x, y, z) == Block_ThaumiumReinforcedJar.getInstance()) {
				Block_ThaumiumReinforcedJar.getInstance().onBlockPlacedBy(world, x, y, z, player, stack);
				Block_ThaumiumReinforcedJar.getInstance().onPostBlockPlaced(world, x, y, z, metadata);
			}

			return true;
		}
	}
}