Reworked EntityPlayerMP.openGui to hopefully be more compatible with PlayerAPI
This commit is contained in:
parent
dd17ebd009
commit
2230ca7c54
|
@ -1,17 +1,21 @@
|
||||||
--- ../src_base/minecraft_server/net/minecraft/src/EntityPlayer.java 0000-00-00 00:00:00.000000000 -0000
|
--- ../src_base/minecraft_server/net/minecraft/src/EntityPlayer.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
+++ ../src_work/minecraft_server/net/minecraft/src/EntityPlayer.java 0000-00-00 00:00:00.000000000 -0000
|
+++ ../src_work/minecraft_server/net/minecraft/src/EntityPlayer.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
@@ -3,6 +3,10 @@
|
@@ -3,6 +3,14 @@
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
+import net.minecraft.src.forge.ArmorProperties;
|
+import net.minecraft.src.forge.ArmorProperties;
|
||||||
+import net.minecraft.src.forge.ForgeHooks;
|
+import net.minecraft.src.forge.ForgeHooks;
|
||||||
|
+import net.minecraft.src.forge.IGuiHandler;
|
||||||
+import net.minecraft.src.forge.ISpecialArmor;
|
+import net.minecraft.src.forge.ISpecialArmor;
|
||||||
|
+import net.minecraft.src.forge.MinecraftForge;
|
||||||
|
+import net.minecraft.src.forge.NetworkMod;
|
||||||
|
+import net.minecraft.src.forge.packets.PacketOpenGUI;
|
||||||
+
|
+
|
||||||
public abstract class EntityPlayer extends EntityLiving
|
public abstract class EntityPlayer extends EntityLiving
|
||||||
{
|
{
|
||||||
/** Inventory of the player */
|
/** Inventory of the player */
|
||||||
@@ -172,6 +176,7 @@
|
@@ -172,6 +180,7 @@
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -19,7 +23,7 @@
|
||||||
if (this.itemInUseCount <= 25 && this.itemInUseCount % 4 == 0)
|
if (this.itemInUseCount <= 25 && this.itemInUseCount % 4 == 0)
|
||||||
{
|
{
|
||||||
this.updateItemUse(var1, 5);
|
this.updateItemUse(var1, 5);
|
||||||
@@ -361,6 +366,10 @@
|
@@ -361,6 +370,10 @@
|
||||||
*/
|
*/
|
||||||
protected void closeScreen()
|
protected void closeScreen()
|
||||||
{
|
{
|
||||||
|
@ -30,7 +34,7 @@
|
||||||
this.craftingInventory = this.inventorySlots;
|
this.craftingInventory = this.inventorySlots;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -544,7 +553,16 @@
|
@@ -544,7 +557,16 @@
|
||||||
*/
|
*/
|
||||||
public EntityItem dropOneItem()
|
public EntityItem dropOneItem()
|
||||||
{
|
{
|
||||||
|
@ -48,7 +52,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -609,10 +627,18 @@
|
@@ -609,10 +631,18 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns how strong the player is against the specified block at this moment
|
* Returns how strong the player is against the specified block at this moment
|
||||||
|
@ -68,7 +72,7 @@
|
||||||
float var3 = var2;
|
float var3 = var2;
|
||||||
int var4 = EnchantmentHelper.getEfficiencyModifier(this.inventory);
|
int var4 = EnchantmentHelper.getEfficiencyModifier(this.inventory);
|
||||||
|
|
||||||
@@ -908,7 +934,11 @@
|
@@ -908,7 +938,11 @@
|
||||||
par2 = 1 + par2 >> 1;
|
par2 = 1 + par2 >> 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,7 +85,7 @@
|
||||||
par2 = this.applyPotionDamageCalculations(par1DamageSource, par2);
|
par2 = this.applyPotionDamageCalculations(par1DamageSource, par2);
|
||||||
this.addExhaustion(par1DamageSource.getHungerDamage());
|
this.addExhaustion(par1DamageSource.getHungerDamage());
|
||||||
this.health -= par2;
|
this.health -= par2;
|
||||||
@@ -939,6 +969,10 @@
|
@@ -939,6 +973,10 @@
|
||||||
*/
|
*/
|
||||||
public void useCurrentItemOnEntity(Entity par1Entity)
|
public void useCurrentItemOnEntity(Entity par1Entity)
|
||||||
{
|
{
|
||||||
|
@ -92,7 +96,7 @@
|
||||||
if (!par1Entity.interact(this))
|
if (!par1Entity.interact(this))
|
||||||
{
|
{
|
||||||
ItemStack var2 = this.getCurrentEquippedItem();
|
ItemStack var2 = this.getCurrentEquippedItem();
|
||||||
@@ -969,7 +1003,9 @@
|
@@ -969,7 +1007,9 @@
|
||||||
*/
|
*/
|
||||||
public void destroyCurrentEquippedItem()
|
public void destroyCurrentEquippedItem()
|
||||||
{
|
{
|
||||||
|
@ -102,7 +106,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -998,6 +1034,16 @@
|
@@ -998,6 +1038,16 @@
|
||||||
*/
|
*/
|
||||||
public void attackTargetEntityWithCurrentItem(Entity par1Entity)
|
public void attackTargetEntityWithCurrentItem(Entity par1Entity)
|
||||||
{
|
{
|
||||||
|
@ -119,7 +123,7 @@
|
||||||
if (par1Entity.canAttackWithItem())
|
if (par1Entity.canAttackWithItem())
|
||||||
{
|
{
|
||||||
int var2 = this.inventory.getDamageVsEntity(par1Entity);
|
int var2 = this.inventory.getDamageVsEntity(par1Entity);
|
||||||
@@ -1136,6 +1182,12 @@
|
@@ -1136,6 +1186,12 @@
|
||||||
*/
|
*/
|
||||||
public EnumStatus sleepInBedAt(int par1, int par2, int par3)
|
public EnumStatus sleepInBedAt(int par1, int par2, int par3)
|
||||||
{
|
{
|
||||||
|
@ -132,7 +136,7 @@
|
||||||
if (!this.worldObj.isRemote)
|
if (!this.worldObj.isRemote)
|
||||||
{
|
{
|
||||||
if (this.isPlayerSleeping() || !this.isEntityAlive())
|
if (this.isPlayerSleeping() || !this.isEntityAlive())
|
||||||
@@ -1717,4 +1769,16 @@
|
@@ -1717,4 +1773,45 @@
|
||||||
{
|
{
|
||||||
return !this.capabilities.isFlying;
|
return !this.capabilities.isFlying;
|
||||||
}
|
}
|
||||||
|
@ -147,5 +151,34 @@
|
||||||
+ * @param Y Y Position
|
+ * @param Y Y Position
|
||||||
+ * @param Z Z Position
|
+ * @param Z Z Position
|
||||||
+ */
|
+ */
|
||||||
+ public void openGui(BaseMod mod, int ID, World world, int x, int y, int z){}
|
+ public void openGui(BaseMod mod, int ID, World world, int x, int y, int z)
|
||||||
|
+ {
|
||||||
|
+ if (!(this instanceof EntityPlayerMP))
|
||||||
|
+ {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ EntityPlayerMP player = (EntityPlayerMP)this;
|
||||||
|
+
|
||||||
|
+ if (!(mod instanceof NetworkMod))
|
||||||
|
+ {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ IGuiHandler handler = MinecraftForge.getGuiHandler(mod);
|
||||||
|
+ if (handler != null)
|
||||||
|
+ {
|
||||||
|
+ Container container = handler.getGuiContainer(ID, player, world, x, y, z);
|
||||||
|
+ if (container != null)
|
||||||
|
+ {
|
||||||
|
+ player.realGetNextWidowId();
|
||||||
|
+ player.closeCraftingGui();
|
||||||
|
+ PacketOpenGUI pkt = new PacketOpenGUI(player.getCurrentWindowIdField(), MinecraftForge.getModID((NetworkMod)mod), ID, x, y, z);
|
||||||
|
+ player.playerNetServerHandler.sendPacket(pkt.getPacket());
|
||||||
|
+ craftingInventory = container;
|
||||||
|
+ craftingInventory.windowId = player.getCurrentWindowIdField();
|
||||||
|
+ craftingInventory.onCraftGuiOpened(player);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,100 +1,69 @@
|
||||||
--- ../src_base/minecraft_server/net/minecraft/src/EntityPlayerMP.java 0000-00-00 00:00:00.000000000 -0000
|
--- ../src_base/minecraft_server/net/minecraft/src/EntityPlayerMP.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
+++ ../src_work/minecraft_server/net/minecraft/src/EntityPlayerMP.java 0000-00-00 00:00:00.000000000 -0000
|
+++ ../src_work/minecraft_server/net/minecraft/src/EntityPlayerMP.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
@@ -5,6 +5,10 @@
|
@@ -551,6 +551,7 @@
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
import net.minecraft.server.MinecraftServer;
|
|
||||||
+import net.minecraft.src.forge.IGuiHandler;
|
|
||||||
+import net.minecraft.src.forge.MinecraftForge;
|
|
||||||
+import net.minecraft.src.forge.NetworkMod;
|
|
||||||
+import net.minecraft.src.forge.packets.PacketOpenGUI;
|
|
||||||
|
|
||||||
public class EntityPlayerMP extends EntityPlayer implements ICrafting
|
|
||||||
{
|
|
||||||
@@ -551,6 +555,7 @@
|
|
||||||
public void displayWorkbenchGUI(int par1, int par2, int par3)
|
public void displayWorkbenchGUI(int par1, int par2, int par3)
|
||||||
{
|
{
|
||||||
this.getNextWidowId();
|
this.getNextWidowId();
|
||||||
+ closeCraftingGui(); //TODO: This is a bug fix for chests staying open in SMP
|
+ closeCraftingGui(); //NOTE: This is a bug fix for chests staying open in SMP
|
||||||
this.playerNetServerHandler.sendPacket(new Packet100OpenWindow(this.currentWindowId, 1, "Crafting", 9));
|
this.playerNetServerHandler.sendPacket(new Packet100OpenWindow(this.currentWindowId, 1, "Crafting", 9));
|
||||||
this.craftingInventory = new ContainerWorkbench(this.inventory, this.worldObj, par1, par2, par3);
|
this.craftingInventory = new ContainerWorkbench(this.inventory, this.worldObj, par1, par2, par3);
|
||||||
this.craftingInventory.windowId = this.currentWindowId;
|
this.craftingInventory.windowId = this.currentWindowId;
|
||||||
@@ -560,6 +565,7 @@
|
@@ -560,6 +561,7 @@
|
||||||
public void displayGUIEnchantment(int par1, int par2, int par3)
|
public void displayGUIEnchantment(int par1, int par2, int par3)
|
||||||
{
|
{
|
||||||
this.getNextWidowId();
|
this.getNextWidowId();
|
||||||
+ closeCraftingGui(); //TODO: This is a bug fix for chests staying open in SMP
|
+ closeCraftingGui(); //NOTE: This is a bug fix for chests staying open in SMP
|
||||||
this.playerNetServerHandler.sendPacket(new Packet100OpenWindow(this.currentWindowId, 4, "Enchanting", 9));
|
this.playerNetServerHandler.sendPacket(new Packet100OpenWindow(this.currentWindowId, 4, "Enchanting", 9));
|
||||||
this.craftingInventory = new ContainerEnchantment(this.inventory, this.worldObj, par1, par2, par3);
|
this.craftingInventory = new ContainerEnchantment(this.inventory, this.worldObj, par1, par2, par3);
|
||||||
this.craftingInventory.windowId = this.currentWindowId;
|
this.craftingInventory.windowId = this.currentWindowId;
|
||||||
@@ -572,6 +578,7 @@
|
@@ -572,6 +574,7 @@
|
||||||
public void displayGUIChest(IInventory par1IInventory)
|
public void displayGUIChest(IInventory par1IInventory)
|
||||||
{
|
{
|
||||||
this.getNextWidowId();
|
this.getNextWidowId();
|
||||||
+ closeCraftingGui(); //TODO: This is a bug fix for chests staying open in SMP
|
+ closeCraftingGui(); //NOTE: This is a bug fix for chests staying open in SMP
|
||||||
this.playerNetServerHandler.sendPacket(new Packet100OpenWindow(this.currentWindowId, 0, par1IInventory.getInvName(), par1IInventory.getSizeInventory()));
|
this.playerNetServerHandler.sendPacket(new Packet100OpenWindow(this.currentWindowId, 0, par1IInventory.getInvName(), par1IInventory.getSizeInventory()));
|
||||||
this.craftingInventory = new ContainerChest(this.inventory, par1IInventory);
|
this.craftingInventory = new ContainerChest(this.inventory, par1IInventory);
|
||||||
this.craftingInventory.windowId = this.currentWindowId;
|
this.craftingInventory.windowId = this.currentWindowId;
|
||||||
@@ -584,6 +591,7 @@
|
@@ -584,6 +587,7 @@
|
||||||
public void displayGUIFurnace(TileEntityFurnace par1TileEntityFurnace)
|
public void displayGUIFurnace(TileEntityFurnace par1TileEntityFurnace)
|
||||||
{
|
{
|
||||||
this.getNextWidowId();
|
this.getNextWidowId();
|
||||||
+ closeCraftingGui(); //TODO: This is a bug fix for chests staying open in SMP
|
+ closeCraftingGui(); //NOTE: This is a bug fix for chests staying open in SMP
|
||||||
this.playerNetServerHandler.sendPacket(new Packet100OpenWindow(this.currentWindowId, 2, par1TileEntityFurnace.getInvName(), par1TileEntityFurnace.getSizeInventory()));
|
this.playerNetServerHandler.sendPacket(new Packet100OpenWindow(this.currentWindowId, 2, par1TileEntityFurnace.getInvName(), par1TileEntityFurnace.getSizeInventory()));
|
||||||
this.craftingInventory = new ContainerFurnace(this.inventory, par1TileEntityFurnace);
|
this.craftingInventory = new ContainerFurnace(this.inventory, par1TileEntityFurnace);
|
||||||
this.craftingInventory.windowId = this.currentWindowId;
|
this.craftingInventory.windowId = this.currentWindowId;
|
||||||
@@ -596,6 +604,7 @@
|
@@ -596,6 +600,7 @@
|
||||||
public void displayGUIDispenser(TileEntityDispenser par1TileEntityDispenser)
|
public void displayGUIDispenser(TileEntityDispenser par1TileEntityDispenser)
|
||||||
{
|
{
|
||||||
this.getNextWidowId();
|
this.getNextWidowId();
|
||||||
+ closeCraftingGui(); //TODO: This is a bug fix for chests staying open in SMP
|
+ closeCraftingGui(); //NOTE: This is a bug fix for chests staying open in SMP
|
||||||
this.playerNetServerHandler.sendPacket(new Packet100OpenWindow(this.currentWindowId, 3, par1TileEntityDispenser.getInvName(), par1TileEntityDispenser.getSizeInventory()));
|
this.playerNetServerHandler.sendPacket(new Packet100OpenWindow(this.currentWindowId, 3, par1TileEntityDispenser.getInvName(), par1TileEntityDispenser.getSizeInventory()));
|
||||||
this.craftingInventory = new ContainerDispenser(this.inventory, par1TileEntityDispenser);
|
this.craftingInventory = new ContainerDispenser(this.inventory, par1TileEntityDispenser);
|
||||||
this.craftingInventory.windowId = this.currentWindowId;
|
this.craftingInventory.windowId = this.currentWindowId;
|
||||||
@@ -608,6 +617,7 @@
|
@@ -608,6 +613,7 @@
|
||||||
public void displayGUIBrewingStand(TileEntityBrewingStand par1TileEntityBrewingStand)
|
public void displayGUIBrewingStand(TileEntityBrewingStand par1TileEntityBrewingStand)
|
||||||
{
|
{
|
||||||
this.getNextWidowId();
|
this.getNextWidowId();
|
||||||
+ closeCraftingGui(); //TODO: This is a bug fix for chests staying open in SMP
|
+ closeCraftingGui(); //NOTE: This is a bug fix for chests staying open in SMP
|
||||||
this.playerNetServerHandler.sendPacket(new Packet100OpenWindow(this.currentWindowId, 5, par1TileEntityBrewingStand.getInvName(), par1TileEntityBrewingStand.getSizeInventory()));
|
this.playerNetServerHandler.sendPacket(new Packet100OpenWindow(this.currentWindowId, 5, par1TileEntityBrewingStand.getInvName(), par1TileEntityBrewingStand.getSizeInventory()));
|
||||||
this.craftingInventory = new ContainerBrewingStand(this.inventory, par1TileEntityBrewingStand);
|
this.craftingInventory = new ContainerBrewingStand(this.inventory, par1TileEntityBrewingStand);
|
||||||
this.craftingInventory.windowId = this.currentWindowId;
|
this.craftingInventory.windowId = this.currentWindowId;
|
||||||
@@ -797,4 +807,38 @@
|
@@ -797,4 +803,18 @@
|
||||||
EntityTracker var2 = this.mcServer.getEntityTracker(this.dimension);
|
EntityTracker var2 = this.mcServer.getEntityTracker(this.dimension);
|
||||||
var2.sendPacketToTrackedPlayersAndTrackedEntity(this, new Packet18Animation(par1Entity, 7));
|
var2.sendPacketToTrackedPlayersAndTrackedEntity(this, new Packet18Animation(par1Entity, 7));
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+ /**
|
+ /* These functions are added to have compatibility with PlayerAPI.
|
||||||
+ * Opens a Gui for the player.
|
+ * If Divisor does not implement these functions, it is his fault,
|
||||||
+ *
|
+ * these are specifically the functions he told me to use and would be guaranteed to be in PAPI.
|
||||||
+ * @param mod The mod associated with the gui
|
|
||||||
+ * @param ID The ID number for the Gui
|
|
||||||
+ * @param world The World
|
|
||||||
+ * @param x X Position
|
|
||||||
+ * @param y Y Position
|
|
||||||
+ * @param z Z Position
|
|
||||||
+ */
|
+ */
|
||||||
+ @Override
|
+ public final void realGetNextWidowId()
|
||||||
+ public void openGui(BaseMod mod, int ID, World world, int x, int y, int z)
|
|
||||||
+ {
|
+ {
|
||||||
+ if (!(mod instanceof NetworkMod))
|
+ getNextWidowId();
|
||||||
+ {
|
+ }
|
||||||
+ return;
|
+
|
||||||
+ }
|
+ public final int getCurrentWindowIdField()
|
||||||
+ IGuiHandler handler = MinecraftForge.getGuiHandler(mod);
|
+ {
|
||||||
+ if (handler != null)
|
+ return currentWindowId;
|
||||||
+ {
|
|
||||||
+ Container container = handler.getGuiContainer(ID, this, world, x, y, z);
|
|
||||||
+ if (container != null)
|
|
||||||
+ {
|
|
||||||
+ getNextWidowId();
|
|
||||||
+ closeCraftingGui();
|
|
||||||
+ PacketOpenGUI pkt = new PacketOpenGUI(currentWindowId, MinecraftForge.getModID((NetworkMod)mod), ID, x, y, z);
|
|
||||||
+ playerNetServerHandler.sendPacket(pkt.getPacket());
|
|
||||||
+ craftingInventory = container;
|
|
||||||
+ craftingInventory.windowId = currentWindowId;
|
|
||||||
+ craftingInventory.onCraftGuiOpened(this);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
+ }
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue