aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core/handler
diff options
context:
space:
mode:
authorDraknyte1 <Draknyte1@hotmail.com>2016-11-29 00:47:46 +1000
committerDraknyte1 <Draknyte1@hotmail.com>2016-11-29 00:47:46 +1000
commit3369fc3ca7553eaaff688f5de5399464d8a0d8d7 (patch)
tree8b344b2c7a52ab2a077d4a43328b7d48e9dba5b5 /src/Java/gtPlusPlus/core/handler
parent9fc8b38599a4a58741e490ebf4fc1c802f7cac7e (diff)
downloadGT5-Unofficial-3369fc3ca7553eaaff688f5de5399464d8a0d8d7.tar.gz
GT5-Unofficial-3369fc3ca7553eaaff688f5de5399464d8a0d8d7.tar.bz2
GT5-Unofficial-3369fc3ca7553eaaff688f5de5399464d8a0d8d7.zip
+ Added some Thaumcraft Shards, they will not generate unless Thaumcraft is missing.
+ Added recipes to create these shards. + Added a texture for shards. + Added a class to handle Block Events. BlockEventHandler.java % Improved formatting on the 'Infused' dusts.
Diffstat (limited to 'src/Java/gtPlusPlus/core/handler')
-rw-r--r--src/Java/gtPlusPlus/core/handler/events/BlockEventHandler.java99
1 files changed, 99 insertions, 0 deletions
diff --git a/src/Java/gtPlusPlus/core/handler/events/BlockEventHandler.java b/src/Java/gtPlusPlus/core/handler/events/BlockEventHandler.java
new file mode 100644
index 0000000000..6707bcbdfd
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/handler/events/BlockEventHandler.java
@@ -0,0 +1,99 @@
+package gtPlusPlus.core.handler.events;
+
+import gtPlusPlus.core.util.Utils;
+
+import java.util.Random;
+
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockLog;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLiving;
+import net.minecraft.entity.passive.EntityPig;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.ChatComponentText;
+import net.minecraft.util.EntityDamageSource;
+import net.minecraftforge.common.util.ForgeDirection;
+import net.minecraftforge.event.entity.living.LivingDropsEvent;
+import net.minecraftforge.event.entity.player.PlayerInteractEvent;
+import net.minecraftforge.event.world.BlockEvent;
+import cpw.mods.fml.common.eventhandler.Event;
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+
+public class BlockEventHandler {
+ private Random random = new Random();
+
+ @SubscribeEvent
+ public void onBlockLeftClicked(PlayerInteractEvent event) {
+ if (event.action != PlayerInteractEvent.Action.LEFT_CLICK_BLOCK) return;
+
+ ItemStack heldItem = event.entityPlayer.getHeldItem();
+ Block block = event.world.getBlock(event.x, event.y, event.z);
+
+ // If the block clicked was Stone, the player was holding an Iron Pickaxe and a random integer from 0 (inclusive) to 2 (exclusive) is 0 (50% chance)
+ if (block == Blocks.stone && heldItem != null && heldItem.getItem() == Items.iron_pickaxe && random.nextInt(2) == 0) {
+ ForgeDirection direction = ForgeDirection.getOrientation(event.face); // Convert the numeric face to a ForgeDirection
+ int fireX = event.x + direction.offsetX, fireY = event.y + direction.offsetY, fireZ = event.z + direction.offsetZ; // Offset the block's coordinates according to the direction
+
+ if (event.world.isAirBlock(fireX, fireY, fireZ)) { // If the block at the new coordinates is Air
+ event.world.setBlock(fireX, fireY, fireZ, Blocks.fire); // Replace it with Fire
+ event.useBlock = Event.Result.DENY; // Prevent the Fire from being extinguished (also prevents Block#onBlockClicked from being called)
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onEntityDrop(LivingDropsEvent event) {
+ if (event.entityLiving instanceof EntityPig && event.source instanceof EntityDamageSource) {
+ // getEntity will return the Entity that caused the damage,even for indirect damage sources like arrows/fireballs
+ // (where it will return the Entity that shot the projectile rather than the projectile itself)
+ Entity sourceEntity = event.source.getEntity();
+ ItemStack heldItem = sourceEntity instanceof EntityLiving ? ((EntityLiving) sourceEntity).getHeldItem() :
+ sourceEntity instanceof EntityPlayer ? ((EntityPlayer) sourceEntity).getHeldItem() : null;
+
+ if (heldItem != null && heldItem.getItem() == Items.iron_pickaxe) {
+ System.out.println("EntityPig drops event");
+ event.drops.clear();
+ event.entityLiving.dropItem(Items.diamond, 64);
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onBlockBreak(BlockEvent.BreakEvent event) {
+ if (event.block == Blocks.stone) {
+ event.setCanceled(true);
+ event.world.setBlock(event.x, event.y, event.z, Blocks.flowing_lava);
+ }
+ }
+
+ @SubscribeEvent
+ public void harvestDrops(BlockEvent.HarvestDropsEvent event) {
+ if (event.block == Blocks.cocoa && event.harvester != null) {
+ event.harvester.addChatComponentMessage(new ChatComponentText("Cocoa!"));
+ }
+ }
+
+ @SubscribeEvent
+ public void logsHarvest(BlockEvent.HarvestDropsEvent event) {
+ if (event.block instanceof BlockLog) {
+ // http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/modification-development/2444501-harvestdropevent-changing-drops-of-vanilla-blocks
+
+ // Utils.sendServerMessage("Logs! Harvester: %s Drops: %s", event.harvester != null ? event.harvester.getCommandSenderName() : "<none>", event.drops.stream().map(ItemStack.toString()).collect(Collectors.joining(", ")));
+ if (event.harvester != null) {
+ ItemStack heldItem = event.harvester.getHeldItem();
+ if (heldItem == null || heldItem.getItem().getHarvestLevel(heldItem, "axe") < 1) {
+ event.drops.clear();
+ Utils.sendServerMessage("Harvester had wrong tool, clearing drops");
+ } else {
+ Utils.sendServerMessage("Harvester had correct tool, not clearing drops");
+ }
+ } else {
+ event.drops.clear();
+ Utils.sendServerMessage("No harvester, clearing drops");
+ }
+ }
+ }
+}