/** * Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team * http://www.mod-buildcraft.com * <p/> * BuildCraft is distributed under the terms of the Minecraft Mod Public * License 1.0, or MMPL. Please check the contents of the license located in * http://www.mod-buildcraft.com/MMPL-1.0.txt */ package buildcraft.core.proxy; import java.lang.ref.WeakReference; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.network.INetHandler; import net.minecraft.network.NetHandlerPlayServer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraft.world.WorldServer; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.SidedProxy; import net.minecraftforge.common.util.FakePlayerFactory; import buildcraft.BuildCraftCore; import buildcraft.api.core.ICoreProxy; import buildcraft.core.LaserKind; import buildcraft.core.lib.EntityBlock; public class CoreProxy implements ICoreProxy { @SidedProxy(clientSide = "buildcraft.core.proxy.CoreProxyClient", serverSide = "buildcraft.core.proxy.CoreProxy") public static CoreProxy proxy; /* BUILDCRAFT PLAYER */ protected static WeakReference<EntityPlayer> buildCraftPlayer = new WeakReference<EntityPlayer>(null); public String getMinecraftVersion() { return Loader.instance().getMinecraftModContainer().getVersion(); } /* INSTANCES */ public Object getClient() { return null; } public World getClientWorld() { return null; } /* ENTITY HANDLING */ public void removeEntity(Entity entity) { entity.worldObj.removeEntity(entity); } public String getItemDisplayName(ItemStack newStack) { return ""; } /* GFX */ public void initializeRendering() { } public void initializeEntityRendering() { } public void onCraftingPickup(World world, EntityPlayer player, ItemStack stack) { stack.onCrafting(world, player, stack.stackSize); } public String playerName() { return ""; } private WeakReference<EntityPlayer> createNewPlayer(WorldServer world) { EntityPlayer player = FakePlayerFactory.get(world, BuildCraftCore.gameProfile); return new WeakReference<EntityPlayer>(player); } private WeakReference<EntityPlayer> createNewPlayer(WorldServer world, int x, int y, int z) { EntityPlayer player = FakePlayerFactory.get(world, BuildCraftCore.gameProfile); player.posX = x; player.posY = y; player.posZ = z; return new WeakReference<EntityPlayer>(player); } @Override public final WeakReference<EntityPlayer> getBuildCraftPlayer(WorldServer world) { if (CoreProxy.buildCraftPlayer.get() == null) { CoreProxy.buildCraftPlayer = createNewPlayer(world); } else { CoreProxy.buildCraftPlayer.get().worldObj = world; } return CoreProxy.buildCraftPlayer; } public final WeakReference<EntityPlayer> getBuildCraftPlayer(WorldServer world, int x, int y, int z) { if (CoreProxy.buildCraftPlayer.get() == null) { CoreProxy.buildCraftPlayer = createNewPlayer(world, x, y, z); } else { CoreProxy.buildCraftPlayer.get().worldObj = world; CoreProxy.buildCraftPlayer.get().posX = x; CoreProxy.buildCraftPlayer.get().posY = y; CoreProxy.buildCraftPlayer.get().posZ = z; } return CoreProxy.buildCraftPlayer; } public EntityBlock newEntityBlock(World world, double i, double j, double k, double iSize, double jSize, double kSize, LaserKind laserKind) { return new EntityBlock(world, i, j, k, iSize, jSize, kSize); } /** * This function returns either the player from the handler if it's on the * server, or directly from the minecraft instance if it's the client. */ public EntityPlayer getPlayerFromNetHandler(INetHandler handler) { if (handler instanceof NetHandlerPlayServer) { return ((NetHandlerPlayServer) handler).playerEntity; } else { return null; } } public TileEntity getServerTile(TileEntity source) { return source; } public EntityPlayer getClientPlayer() { return null; } }