diff --git a/src/main/java/vazkii/botania/api/internal/DummyMethodHandler.java b/src/main/java/vazkii/botania/api/internal/DummyMethodHandler.java index e50b693e0..c04188e23 100644 --- a/src/main/java/vazkii/botania/api/internal/DummyMethodHandler.java +++ b/src/main/java/vazkii/botania/api/internal/DummyMethodHandler.java @@ -216,4 +216,9 @@ public class DummyMethodHandler implements IInternalMethodHandler { return false; } + @Override + public void sendBaubleUpdatePacket(EntityPlayer player, int slot) { + // NO-OP + } + } diff --git a/src/main/java/vazkii/botania/api/internal/IInternalMethodHandler.java b/src/main/java/vazkii/botania/api/internal/IInternalMethodHandler.java index afbd5ff2a..9badae108 100644 --- a/src/main/java/vazkii/botania/api/internal/IInternalMethodHandler.java +++ b/src/main/java/vazkii/botania/api/internal/IInternalMethodHandler.java @@ -120,4 +120,6 @@ public interface IInternalMethodHandler { public boolean isBotaniaFlower(World world, int x, int y, int z); + public void sendBaubleUpdatePacket(EntityPlayer player, int slot); + } diff --git a/src/main/java/vazkii/botania/api/mana/ManaItemHandler.java b/src/main/java/vazkii/botania/api/mana/ManaItemHandler.java index e05be508d..d261d5503 100644 --- a/src/main/java/vazkii/botania/api/mana/ManaItemHandler.java +++ b/src/main/java/vazkii/botania/api/mana/ManaItemHandler.java @@ -39,7 +39,8 @@ public final class ManaItemHandler { for(int i = 0; i < size; i++) { boolean useBaubles = i >= invSize; IInventory inv = useBaubles ? baublesInv : mainInv; - ItemStack stackInSlot = inv.getStackInSlot(i - (useBaubles ? invSize : 0)); + int slot = i - (useBaubles ? invSize : 0); + ItemStack stackInSlot = inv.getStackInSlot(slot); if(stackInSlot == stack) continue; @@ -53,6 +54,8 @@ public final class ManaItemHandler { if(remove) manaItem.addMana(stackInSlot, -mana); + if(useBaubles) + BotaniaAPI.internalHandler.sendBaubleUpdatePacket(player, slot); return mana; } @@ -84,7 +87,8 @@ public final class ManaItemHandler { for(int i = 0; i < size; i++) { boolean useBaubles = i >= invSize; IInventory inv = useBaubles ? baublesInv : mainInv; - ItemStack stackInSlot = inv.getStackInSlot(i - (useBaubles ? invSize : 0)); + int slot = i - (useBaubles ? invSize : 0); + ItemStack stackInSlot = inv.getStackInSlot(slot); if(stackInSlot == stack) continue; @@ -96,6 +100,8 @@ public final class ManaItemHandler { if(remove) manaItemSlot.addMana(stackInSlot, -manaToGet); + if(useBaubles) + BotaniaAPI.internalHandler.sendBaubleUpdatePacket(player, slot); return true; } @@ -127,7 +133,8 @@ public final class ManaItemHandler { for(int i = 0; i < size; i++) { boolean useBaubles = i >= invSize; IInventory inv = useBaubles ? baublesInv : mainInv; - ItemStack stackInSlot = inv.getStackInSlot(i - (useBaubles ? invSize : 0)); + int slot = i - (useBaubles ? invSize : 0); + ItemStack stackInSlot = inv.getStackInSlot(slot); if(stackInSlot == stack) continue; @@ -146,6 +153,8 @@ public final class ManaItemHandler { if(add) manaItemSlot.addMana(stackInSlot, manaToSend); + if(useBaubles) + BotaniaAPI.internalHandler.sendBaubleUpdatePacket(player, slot); return received; } @@ -177,7 +186,8 @@ public final class ManaItemHandler { for(int i = 0; i < size; i++) { boolean useBaubles = i >= invSize; IInventory inv = useBaubles ? baublesInv : mainInv; - ItemStack stackInSlot = inv.getStackInSlot(i - (useBaubles ? invSize : 0)); + int slot = i - (useBaubles ? invSize : 0); + ItemStack stackInSlot = inv.getStackInSlot(slot); if(stackInSlot == stack) continue; @@ -189,6 +199,8 @@ public final class ManaItemHandler { if(add) manaItemSlot.addMana(stackInSlot, manaToSend); + if(useBaubles) + BotaniaAPI.internalHandler.sendBaubleUpdatePacket(player, slot); return true; } diff --git a/src/main/java/vazkii/botania/common/block/decor/slabs/BlockModSlab.java b/src/main/java/vazkii/botania/common/block/decor/slabs/BlockModSlab.java index 37b50b6af..472d1b346 100644 --- a/src/main/java/vazkii/botania/common/block/decor/slabs/BlockModSlab.java +++ b/src/main/java/vazkii/botania/common/block/decor/slabs/BlockModSlab.java @@ -46,6 +46,11 @@ public abstract class BlockModSlab extends BlockSlab implements ILexiconable { public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { return Item.getItemFromBlock(getSingleBlock()); } + + @Override + public int quantityDropped(int meta, int fortune, Random random) { + return super.quantityDropped(meta, fortune, random); + } @Override public ItemStack createStackedBlock(int par1) { diff --git a/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileHopperhock.java b/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileHopperhock.java index 7b79c713a..d8409b885 100644 --- a/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileHopperhock.java +++ b/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileHopperhock.java @@ -168,7 +168,9 @@ public class SubTileHopperhock extends SubTileFunctional { }; for(ForgeDirection dir : LibMisc.CARDINAL_DIRECTIONS) { - List frames = supertile.getWorldObj().getEntitiesWithinAABB(EntityItemFrame.class, AxisAlignedBB.getBoundingBox(x+ dir.offsetX, y + dir.offsetY, z + dir.offsetZ, x + dir.offsetX + 1, y + dir.offsetY + 1, z + dir.offsetZ + 1)); + AxisAlignedBB aabb = AxisAlignedBB.getBoundingBox(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, x + dir.offsetX + 1, y + dir.offsetY + 1, z + dir.offsetZ + 1); + List frames = supertile.getWorldObj().getEntitiesWithinAABB(EntityItemFrame.class, aabb); + System.out.println(aabb + " " + frames); for(EntityItemFrame frame : frames) { int orientation = frame.hangingDirection; if(orientationToDir[orientation] == dir.ordinal()) diff --git a/src/main/java/vazkii/botania/common/core/handler/InternalMethodHandler.java b/src/main/java/vazkii/botania/common/core/handler/InternalMethodHandler.java index 125a5908d..b1c9133f3 100644 --- a/src/main/java/vazkii/botania/common/core/handler/InternalMethodHandler.java +++ b/src/main/java/vazkii/botania/common/core/handler/InternalMethodHandler.java @@ -16,6 +16,7 @@ import net.minecraft.block.Block; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; @@ -59,6 +60,8 @@ import vazkii.botania.common.lexicon.page.PagePetalRecipe; import vazkii.botania.common.lexicon.page.PageRuneRecipe; import vazkii.botania.common.lexicon.page.PageText; import baubles.common.lib.PlayerHandler; +import baubles.common.network.PacketHandler; +import baubles.common.network.PacketSyncBauble; import buildcraft.api.transport.IPipeTile; import cpw.mods.fml.common.Optional; @@ -244,4 +247,10 @@ public class InternalMethodHandler extends DummyMethodHandler { Block block = world.getBlock(x, y, z); return block == ModBlocks.flower || block == ModBlocks.shinyFlower || block == ModBlocks.specialFlower; } + + @Override + public void sendBaubleUpdatePacket(EntityPlayer player, int slot) { + if(player instanceof EntityPlayerMP) + PacketHandler.INSTANCE.sendTo(new PacketSyncBauble(player, slot), (EntityPlayerMP) player); + } } diff --git a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemMagnetRing.java b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemMagnetRing.java index 8c8afc378..8d4071311 100644 --- a/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemMagnetRing.java +++ b/src/main/java/vazkii/botania/common/item/equipment/bauble/ItemMagnetRing.java @@ -22,6 +22,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.IIcon; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.item.ItemTossEvent; +import vazkii.botania.api.BotaniaAPI; import vazkii.botania.api.item.IRelic; import vazkii.botania.api.mana.IManaItem; import vazkii.botania.client.core.helper.IconHelper; @@ -76,8 +77,7 @@ public class ItemMagnetRing extends ItemBauble { ItemStack stack = inv.getStackInSlot(i); if(stack != null && stack.getItem() == this) { setCooldown(stack, 100); - if(event.player instanceof EntityPlayerMP) - PacketHandler.INSTANCE.sendTo(new PacketSyncBauble(event.player, i), (EntityPlayerMP) event.player); + BotaniaAPI.internalHandler.sendBaubleUpdatePacket(event.player, i); } } }