diff --git a/patches/minecraft/net/minecraft/entity/player/EntityPlayerMP.java.patch b/patches/minecraft/net/minecraft/entity/player/EntityPlayerMP.java.patch index 87a149b95..3da6a132d 100644 --- a/patches/minecraft/net/minecraft/entity/player/EntityPlayerMP.java.patch +++ b/patches/minecraft/net/minecraft/entity/player/EntityPlayerMP.java.patch @@ -73,7 +73,39 @@ { BlockPos blockpos1 = blockpos.func_177977_b(); IBlockState iblockstate1 = this.field_70170_p.func_180495_p(blockpos1); -@@ -921,6 +937,7 @@ +@@ -740,6 +756,7 @@ + this.field_71070_bA = p_180468_1_.func_174876_a(this.field_71071_by, this); + this.field_71070_bA.field_75152_c = this.field_71139_cq; + this.field_71070_bA.func_75132_a(this); ++ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.player.PlayerContainerEvent.Open(this, this.field_71070_bA)); + } + } + +@@ -783,6 +800,7 @@ + + this.field_71070_bA.field_75152_c = this.field_71139_cq; + this.field_71070_bA.func_75132_a(this); ++ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.player.PlayerContainerEvent.Open(this, this.field_71070_bA)); + } + } + +@@ -792,6 +810,7 @@ + this.field_71070_bA = new ContainerMerchant(this.field_71071_by, p_180472_1_, this.field_70170_p); + this.field_71070_bA.field_75152_c = this.field_71139_cq; + this.field_71070_bA.func_75132_a(this); ++ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.player.PlayerContainerEvent.Open(this, this.field_71070_bA)); + IInventory iinventory = ((ContainerMerchant)this.field_71070_bA).func_75174_d(); + ITextComponent itextcomponent = p_180472_1_.func_145748_c_(); + this.field_71135_a.func_147359_a(new SPacketOpenWindow(this.field_71139_cq, "minecraft:villager", itextcomponent, iinventory.func_70302_i_())); +@@ -890,6 +909,7 @@ + public void func_71128_l() + { + this.field_71070_bA.func_75134_a(this); ++ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.player.PlayerContainerEvent.Close(this, this.field_71070_bA)); + this.field_71070_bA = this.field_71069_bz; + } + +@@ -921,6 +941,7 @@ { if (p_71064_1_ != null) { diff --git a/src/main/java/net/minecraftforge/event/entity/player/PlayerContainerEvent.java b/src/main/java/net/minecraftforge/event/entity/player/PlayerContainerEvent.java new file mode 100644 index 000000000..6fee29be0 --- /dev/null +++ b/src/main/java/net/minecraftforge/event/entity/player/PlayerContainerEvent.java @@ -0,0 +1,53 @@ +/* + * Minecraft Forge + * Copyright (c) 2016. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation version 2.1 + * of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package net.minecraftforge.event.entity.player; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; + +public class PlayerContainerEvent extends PlayerEvent +{ + private final Container container; + public PlayerContainerEvent(EntityPlayer player, Container container) + { + super(player); + this.container = container; + } + + public static class Open extends PlayerContainerEvent + { + public Open(EntityPlayer player, Container container) + { + super(player, container); + } + } + public static class Close extends PlayerContainerEvent + { + public Close(EntityPlayer player, Container container) + { + super(player, container); + } + } + + public Container getContainer() + { + return container; + } +} diff --git a/src/main/java/net/minecraftforge/fml/common/network/internal/FMLNetworkHandler.java b/src/main/java/net/minecraftforge/fml/common/network/internal/FMLNetworkHandler.java index 1c1b2e25c..344cff289 100644 --- a/src/main/java/net/minecraftforge/fml/common/network/internal/FMLNetworkHandler.java +++ b/src/main/java/net/minecraftforge/fml/common/network/internal/FMLNetworkHandler.java @@ -98,6 +98,7 @@ public class FMLNetworkHandler entityPlayerMP.openContainer = remoteGuiContainer; entityPlayerMP.openContainer.windowId = windowId; entityPlayerMP.openContainer.addListener(entityPlayerMP); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.player.PlayerContainerEvent.Open(entityPlayer, entityPlayer.openContainer)); } } else if (entityPlayer instanceof FakePlayer)