diff options
author | bloodshot <jdroque@gmail.com> | 2014-01-06 00:17:16 -0500 |
---|---|---|
committer | Nate Mortensen <nate.richard.mortensen@gmail.com> | 2014-04-23 21:25:55 -0600 |
commit | 576758bc55941e673b1c4bf5727a1e1329ef29cd (patch) | |
tree | b3e114f8d5852efafe2827a9a392d11a7ce519f2 /src/main/java/net/minecraft/server/ItemBlock.java | |
parent | de97b62b8945ec7a05c7b6813a6317606f46faaf (diff) | |
download | craftbukkit-576758bc55941e673b1c4bf5727a1e1329ef29cd.tar craftbukkit-576758bc55941e673b1c4bf5727a1e1329ef29cd.tar.gz craftbukkit-576758bc55941e673b1c4bf5727a1e1329ef29cd.tar.lz craftbukkit-576758bc55941e673b1c4bf5727a1e1329ef29cd.tar.xz craftbukkit-576758bc55941e673b1c4bf5727a1e1329ef29cd.zip |
Refactored BlockPlaceEvent and BlockChangeDelegate. Adds BUKKIT-5558
23 classes have been removed as they are no longer needed using the new
capture logic. This should help quite a bit with future MC updates.
BlockPlaceEvent Refactor
Before calling Item.interactWith, a recording flag is turned on for
setTypeAndData to capture a blockstate for each block that attempts to be set.
When a block place event is cancelled, the recorded blockstate, stack
size, and metadata will revert back to the captured state. If the event is
not cancelled, a notification will be sent to clients and block physics
will be updated.
BlockChangeDelegate Refactor
Now that we have the ability to capture blockstates through world, there
is no need to modify world gen classes with BlockChangeDelegate. Instead
we will simply capture blocks during world generation in order to "replay"
all of the captured blockstates to send back to delegates.
StructureGrowDelegate and BlockSapling.TreeGenerator have also been
removed as part of this change. BlockSapling and BlockMushroom will
capture blockstates the same as block placement and revert back any grow
events if needed.
Diffstat (limited to 'src/main/java/net/minecraft/server/ItemBlock.java')
-rw-r--r-- | src/main/java/net/minecraft/server/ItemBlock.java | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/src/main/java/net/minecraft/server/ItemBlock.java b/src/main/java/net/minecraft/server/ItemBlock.java deleted file mode 100644 index 3cb4f839..00000000 --- a/src/main/java/net/minecraft/server/ItemBlock.java +++ /dev/null @@ -1,138 +0,0 @@ -package net.minecraft.server; - -public class ItemBlock extends Item { - - protected final Block block; - - public ItemBlock(Block block) { - this.block = block; - } - - public ItemBlock b(String s) { - super.c(s); - return this; - } - - public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, int i, int j, int k, int l, float f, float f1, float f2) { - final int clickedX = i, clickedY = j, clickedZ = k; // CraftBukkit - Block block = world.getType(i, j, k); - - if (block == Blocks.SNOW && (world.getData(i, j, k) & 7) < 1) { - l = 1; - } else if (block != Blocks.VINE && block != Blocks.LONG_GRASS && block != Blocks.DEAD_BUSH) { - if (l == 0) { - --j; - } - - if (l == 1) { - ++j; - } - - if (l == 2) { - --k; - } - - if (l == 3) { - ++k; - } - - if (l == 4) { - --i; - } - - if (l == 5) { - ++i; - } - } - - if (itemstack.count == 0) { - return false; - } else if (!entityhuman.a(i, j, k, l, itemstack)) { - return false; - } else if (j == 255 && this.block.getMaterial().isBuildable()) { - return false; - } else if (world.mayPlace(this.block, i, j, k, false, l, entityhuman, itemstack)) { - int i1 = this.filterData(itemstack.getData()); - int j1 = this.block.getPlacedData(world, i, j, k, l, f, f1, f2, i1); - - // CraftBukkit start - Redirect to common function handler - /* - if (world.setTypeAndData(i, j, k, this.block, j1, 3)) { - if (world.getType(i, j, k) == this.block) { - this.block.postPlace(world, i, j, k, entityhuman, itemstack); - this.block.postPlace(world, i, j, k, j1); - } - - world.makeSound((double) ((float) i + 0.5F), (double) ((float) j + 0.5F), (double) ((float) k + 0.5F), this.block.stepSound.getPlaceSound(), (this.block.stepSound.getVolume1() + 1.0F) / 2.0F, this.block.stepSound.getVolume2() * 0.8F); - --itemstack.count; - } - - return true; - */ - return processBlockPlace(world, entityhuman, itemstack, i, j, k, this.block, j1, clickedX, clickedY, clickedZ); - // CraftBukkit end - } else { - return false; - } - } - - // CraftBukkit start - Add method to process block placement - static boolean processBlockPlace(final World world, final EntityHuman entityhuman, final ItemStack itemstack, final int x, final int y, final int z, final Block id, final int data, final int clickedX, final int clickedY, final int clickedZ) { - org.bukkit.block.BlockState blockstate = org.bukkit.craftbukkit.block.CraftBlockState.getBlockState(world, x, y, z); - - world.callingPlaceEvent = true; - // Sign is now 3 not 2. - int flag = (id == Blocks.SIGN_POST || id == Blocks.WALL_SIGN) ? 3 : 2; - world.setTypeAndData(x, y, z, id, data, flag); - - org.bukkit.event.block.BlockPlaceEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callBlockPlaceEvent(world, entityhuman, blockstate, clickedX, clickedY, clickedZ); - if (event.isCancelled() || !event.canBuild()) { - blockstate.update(true, false); - world.callingPlaceEvent = false; - return false; - } - - world.callingPlaceEvent = false; - - Block block = world.getType(x, y, z); - int newData = world.getData(x, y, z); - - if (block != null && !(block instanceof BlockContainer)) { // Containers get placed automatically - block.onPlace(world, x, y, z); - } - - world.update(x, y, z, block); - - // Cocoa beans placed via ItemDye do not need the rest of the processing - if (block == Blocks.COCOA && itemstack != null && itemstack.getItem() instanceof ItemDye) { - return true; - } - - // Skulls don't get block data applied to them - if (block != null && block != Blocks.SKULL) { - block.postPlace(world, x, y, z, entityhuman, itemstack); - block.postPlace(world, x, y, z, newData); - - world.makeSound((double) ((float) x + 0.5F), (double) ((float) y + 0.5F), (double) ((float) z + 0.5F), block.stepSound.getPlaceSound(), (block.stepSound.getVolume1() + 1.0F) / 2.0F, block.stepSound.getVolume2() * 0.8F); - } - - if (itemstack != null) { - --itemstack.count; - } - - return true; - } - // CraftBukkit end - - public String a(ItemStack itemstack) { - return this.block.a(); - } - - public String getName() { - return this.block.a(); - } - - public Item c(String s) { - return this.b(s); - } -} |