11package com .cleanroommc .modularui .factory ;
22
33import com .cleanroommc .modularui .api .IGuiHolder ;
4+ import com .cleanroommc .modularui .api .MCHelper ;
5+ import com .cleanroommc .modularui .utils .Platform ;
46
57import net .minecraft .entity .player .EntityPlayer ;
68import net .minecraft .entity .player .EntityPlayerMP ;
79import net .minecraft .network .PacketBuffer ;
810import net .minecraft .tileentity .TileEntity ;
911import net .minecraft .util .math .BlockPos ;
12+ import net .minecraftforge .fml .relauncher .Side ;
13+ import net .minecraftforge .fml .relauncher .SideOnly ;
1014
1115import org .jetbrains .annotations .NotNull ;
1216
@@ -22,14 +26,7 @@ private TileEntityGuiFactory() {
2226
2327 public <T extends TileEntity & IGuiHolder <PosGuiData >> void open (EntityPlayer player , T tile ) {
2428 Objects .requireNonNull (player );
25- Objects .requireNonNull (tile );
26- if (tile .isInvalid ()) {
27- throw new IllegalArgumentException ("Can't open invalid TileEntity GUI!" );
28- }
29- if (player .world != tile .getWorld ()) {
30- throw new IllegalArgumentException ("TileEntity must be in same dimension as the player!" );
31- }
32- BlockPos pos = tile .getPos ();
29+ BlockPos pos = getPosFromTile (tile );
3330 PosGuiData data = new PosGuiData (player , pos .getX (), pos .getY (), pos .getZ ());
3431 GuiManager .open (this , data , (EntityPlayerMP ) player );
3532 }
@@ -41,6 +38,18 @@ public void open(EntityPlayer player, BlockPos pos) {
4138 GuiManager .open (this , data , (EntityPlayerMP ) player );
4239 }
4340
41+ @ SideOnly (Side .CLIENT )
42+ public <T extends TileEntity & IGuiHolder <PosGuiData >> void openClient (T tile ) {
43+ BlockPos pos = getPosFromTile (tile );
44+ GuiManager .openFromClient (this , new PosGuiData (MCHelper .getPlayer (), pos .getX (), pos .getY (), pos .getZ ()));
45+ }
46+
47+ @ SideOnly (Side .CLIENT )
48+ public void openClient (BlockPos pos ) {
49+ Objects .requireNonNull (pos );
50+ GuiManager .openFromClient (this , new PosGuiData (MCHelper .getPlayer (), pos .getX (), pos .getY (), pos .getZ ()));
51+ }
52+
4453 @ Override
4554 public @ NotNull IGuiHolder <PosGuiData > getGuiHolder (PosGuiData data ) {
4655 return Objects .requireNonNull (castGuiHolder (data .getTileEntity ()), "Found TileEntity is not a gui holder!" );
@@ -62,4 +71,15 @@ public void writeGuiData(PosGuiData guiData, PacketBuffer buffer) {
6271 public @ NotNull PosGuiData readGuiData (EntityPlayer player , PacketBuffer buffer ) {
6372 return new PosGuiData (player , buffer .readVarInt (), buffer .readVarInt (), buffer .readVarInt ());
6473 }
74+
75+ public static BlockPos getPosFromTile (TileEntity tile ) {
76+ Objects .requireNonNull (tile );
77+ if (tile .isInvalid ()) {
78+ throw new IllegalArgumentException ("Can't open invalid TileEntity GUI!" );
79+ }
80+ if (Platform .getClientPlayer ().world != tile .getWorld ()) {
81+ throw new IllegalArgumentException ("TileEntity must be in same dimension as the player!" );
82+ }
83+ return tile .getPos ();
84+ }
6585}
0 commit comments