Иногда при открытий GUI моего предмета майн вылетает а в консоле , совершенно ничего не говорящая ошибка:
Container:
GUI:
Сам не могу понять в чем дело. GUI без слотов.
Код:
net.minecraft.util.ReportedException: Ticking memory connection
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:198) ~[NetworkSystem.class:?]
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) ~[MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) ~[MinecraftServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) ~[IntegratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [MinecraftServer$2.class:?]
Caused by: java.lang.NullPointerException
at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:657) ~[NetHandlerPlayServer.class:?]
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74) ~[C08PacketPlayerBlockPlacement.class:?]
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122) ~[C08PacketPlayerBlockPlacement.class:?]
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) ~[NetworkManager.class:?]
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) ~[NetworkSystem.class:?]
... 5 more
[11:52:35] [Server thread/ERROR]: This crash report has been saved to: D:\forge\forge 1.7.10 1492 rebuild\eclipse\.\crash-reports\crash-2016-04-05_11.52.35-server.txt
[11:52:35] [Server thread/INFO]: Stopping server
[11:52:35] [Client thread/INFO] [STDOUT]: [net.minecraft.client.Minecraft:displayCrashReport:388]: ---- Minecraft Crash Report ----
// Who set us up the TNT?
Time: 05.04.16 11:52
Description: Ticking memory connection
java.lang.NullPointerException: Ticking memory connection
at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:657)
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Stacktrace:
at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:657)
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241)
-- Ticking connection --
Details:
Connection: net.minecraft.network.NetworkManager@1ac67250
Stacktrace:
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485)
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752)
Container:
Код:
public class ContainerBuilder extends Container {
public InventoryPlayer inventory;
public ContainerBuilder(InventoryPlayer inv)
{
this.inventory = inv;
}
@Override
public boolean canInteractWith(EntityPlayer p_75145_1_) {
return true;
}
//anti-crash lines
@Override
public ItemStack transferStackInSlot(EntityPlayer player, int slotRaw)
{
return null;
}
public void addCraftingToCrafters(ICrafting p_75132_1_)
{
}
public Slot getSlot(int p_75139_1_)
{
return null;
}
public ItemStack slotClick(int p_75144_1_, int p_75144_2_, int p_75144_3_, EntityPlayer p_75144_4_)
{
return null;
}
public void putStacksInSlots(ItemStack[] p_75131_1_)
{
}
public void putStackInSlot(int p_75141_1_, ItemStack p_75141_2_)
{
}
protected boolean mergeItemStack(ItemStack p_75135_1_, int p_75135_2_, int p_75135_3_, boolean p_75135_4_)
{
return false;
}
public boolean canDragIntoSlot(Slot p_94531_1_)
{
return false;
}
public List getInventory()
{
return null;
}
@Override
public void onContainerClosed(EntityPlayer p_75134_1_) {
super.onContainerClosed(p_75134_1_);
}
}
GUI:
Код:
public class GuiBuilder extends GuiContainer {
private InventoryPlayer inventory;
public static Map strucutures = new HashMap<Integer, Structure>();
private ResourceLocation texture = new ResourceLocation(GliderModInfo.ModTestures, "textures/Builder.png");
private int Xsize = 224;
private int Ysize = 160;
private int x;
private int y;
private int z;
private ForgeDirection Ndir;
private int Bid;
private int STRlastid = -1;
private int rot = 0;
public static Map AstG = new HashMap<String, Integer>();
public Map Ast = new HashMap<Integer, Structure>();
protected MovingObjectPosition getMovingObjectPositionFromPlayer(World p_77621_1_, EntityPlayer p_77621_2_, boolean p_77621_3_)
{
float f = 1.0F;
float f1 = p_77621_2_.prevRotationPitch + (p_77621_2_.rotationPitch - p_77621_2_.prevRotationPitch) * f;
float f2 = p_77621_2_.prevRotationYaw + (p_77621_2_.rotationYaw - p_77621_2_.prevRotationYaw) * f;
double d0 = p_77621_2_.prevPosX + (p_77621_2_.posX - p_77621_2_.prevPosX) * (double)f;
double d1 = p_77621_2_.prevPosY + (p_77621_2_.posY - p_77621_2_.prevPosY) * (double)f + (double)(p_77621_1_.isRemote ? p_77621_2_.getEyeHeight() - p_77621_2_.getDefaultEyeHeight() : p_77621_2_.getEyeHeight()); // isRemote check to revert changes to ray trace position due to adding the eye height clientside and player yOffset differences
double d2 = p_77621_2_.prevPosZ + (p_77621_2_.posZ - p_77621_2_.prevPosZ) * (double)f;
Vec3 vec3 = Vec3.createVectorHelper(d0, d1, d2);
float f3 = MathHelper.cos(-f2 * 0.017453292F - (float)Math.PI);
float f4 = MathHelper.sin(-f2 * 0.017453292F - (float)Math.PI);
float f5 = -MathHelper.cos(-f1 * 0.017453292F);
float f6 = MathHelper.sin(-f1 * 0.017453292F);
float f7 = f4 * f5;
float f8 = f3 * f5;
double d3 = 5.0D;
if (p_77621_2_ instanceof EntityPlayerMP)
{
d3 = ((EntityPlayerMP)p_77621_2_).theItemInWorldManager.getBlockReachDistance();
}
Vec3 vec31 = vec3.addVector((double)f7 * d3, (double)f6 * d3, (double)f8 * d3);
return p_77621_1_.func_147447_a(vec3, vec31, p_77621_3_, !p_77621_3_, false);
}
public GuiBuilder(EntityPlayer player) {
super(new ContainerBuilder(player.inventory));
MovingObjectPosition mop = getMovingObjectPositionFromPlayer((World)Minecraft.getMinecraft().theWorld, player, false);
x = mop.blockX;
y = mop.blockY;
z = mop.blockZ;
Ndir = ForgeDirection.getOrientation(mop.sideHit).getOpposite();
if (Ndir == ForgeDirection.EAST)
{
x = x - 1;
}else if (Ndir == ForgeDirection.WEST)
{
x = x + 1;
}else if (Ndir == ForgeDirection.SOUTH)
{
z = z - 1;
}else if (Ndir == ForgeDirection.NORTH)
{
z = z + 1;
}
inventory = player.inventory;
}
public static String HOLLID = "hall";
public static String CORNERID = "corner";
public static String CROSSROADID = "crossroad";
public static String HALLAIRLOCKID = "hallairlock";
public static String WINDOWID = "window";
public static String CUPOLAID = "cupola";
public static String DOCKPORTID = "dockport";
public static String SOLARPANELID = "solarpanel";
public static String THALLID = "thall";
public static String BIGHHALL = "bighall";
public static void init()
{
RegisterStructure(0,new StructureHoll(false));
RegisterStructure(1, new StructureCornerHall(false),0);
RegisterStructure(2, new StructureCrossroad(false));
RegisterStructure(3, new StructureHallWAirlock(false));
RegisterStructure(4, new StructureWindow(false),0);
RegisterStructure(5, new StructureCupola(false));
RegisterStructure(6, new StructureDockingPort(false));
RegisterStructure(7, new StructureSolarPanel(false));
RegisterStructure(8, new StructureThall(false),0);
RegisterStructure(9, new StructureBigHall(false),0);
}
public static void RegisterStructure(int id, Structure strc)
{
strucutures.put(id, strc);
}
public static void RegisterStructure(int id, StructureRotatable strc,int rot)
{
strc.setRotation(rot);
strucutures.put(id, strc);
}
private int getLines(int size)
{
if (size < 3)
{
return 0;
}else if (size > 2 && size < 6)
{
return 1;
}else if (size > 5)
{
return 2;
}
return 0;
}
@Override
public void initGui() {
AstG.clear();
Ast.clear();
boolean disp;
int x = (width - Xsize-40) / 2;
int y = (height - Ysize) / 2;
for (int a=0;a < strucutures.size();a++)
{
World world = (World)Minecraft.getMinecraft().theWorld;
if (((Structure)strucutures.get(a)).Check(world, Ndir, x, y, z))
{
Ast.put(Ast.size(), ((Structure)strucutures.get(a)));
}
}
int xm = 0;
int ym = 0;
for (int i=0;i < Ast.size();i++)
{
ym = getLines(i);
xm = i - (ym*3);
GLoger.logInfo(xm+" "+ym+" "+i);
buttonList.add(new GuiButtonBulder(i, x + 12 +((xm)*68), y +22 + (ym*38), ((Structure)Ast.get(i)).getName()));
((GuiButtonBulder)buttonList.get(i)).setDirection(Ndir);
AstG.put(((Structure)Ast.get(i)).getUnlocalizedName(),i);
Bid++;
}
buttonList.add(new GuiButton(Bid, x + 159, y + 135,40,20, "Build"));
super.initGui();
}
public boolean compareItems(ItemStack[] is)
{
int Ifinded = 0;
for (int iss=0;iss < is.length;iss++)
{
for (int i=0;i < inventory.getSizeInventory();i++)
{
if (inventory.getStackInSlot(i) == is[iss])
{
Ifinded++;
}
}
}
if (Ifinded == is.length) return true;
return false;
}
@Override
protected void actionPerformed(GuiButton button) {
super.actionPerformed(button);
if (button.id == Bid)
{
if (STRlastid != -1)
{
boolean send = false;
if (((Structure)Ast.get(STRlastid)).getRequiredItems() != null)
{
if (compareItems(((Structure)Ast.get(STRlastid)).getRequiredItems()))
{
send = true;
}
}else send = true;
if (send)
{
PacketHandler.sendToServer(new BuildPacket(Ndir,((Structure)Ast.get(STRlastid)).getUnlocalizedName(),x,y,z,rot));
GLoger.logInfo("Sending packet");
Minecraft.getMinecraft().displayGuiScreen(null);
}
}
}else
{
if (STRlastid == button.id)
{
rot = ((GuiButtonBulder)button).rot;
if (Ast.get(STRlastid) instanceof StructureRotatable)
{
int N;
for (int i = rot+1;i<5+rot;i++)
{
if (i >= 4)
N = (i - 4);
else
N = i;
if (((StructureRotatable)Ast.get(STRlastid)).isPossible(Ndir,N))
{
rot = N;
break;
}
}
((GuiButtonBulder)button).setRotation(rot);
}
}else
{
if (STRlastid != -1)
{
((GuiButtonBulder)buttonList.get(STRlastid)).setEnabled(false);
}
STRlastid = button.id;
((GuiButtonBulder)button).setEnabled(true);
if (AstG.containsKey(GuiBuilder.CORNERID) && button.id == (int)AstG.get(GuiBuilder.CORNERID))
{
if (Ndir == ForgeDirection.EAST)
{
rot = 2;
}else if (Ndir == ForgeDirection.NORTH)
{
rot = 1;
}
}else if (GuiBuilder.AstG.containsKey(GuiBuilder.THALLID) && button.id == (int)GuiBuilder.AstG.get(GuiBuilder.THALLID) )
{
if (Ndir == ForgeDirection.NORTH) rot = 1;
}
((GuiButtonBulder)button).setRotation(rot);
}
}
}
@Override
protected void drawGuiContainerBackgroundLayer(float p_146976_1_,int p_146976_2_, int p_146976_3_) {
Minecraft.getMinecraft().renderEngine.bindTexture(texture);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
int x = (width - Xsize-40) / 2;
int y = (height - Ysize) / 2;
drawTexturedModalRect(x, y, 0, 0, Xsize, Ysize);
}
@Override
protected void drawGuiContainerForegroundLayer(int par1, int par2)
{
fontRendererObj.drawString(StatCollector.translateToLocal("builder.name"), (int)(xSize /4.5D) - (fontRendererObj.getStringWidth(I18n.format("builder.name")) / 2) - 20, 10, 4210752, false);
}
}
Сам не могу понять в чем дело. GUI без слотов.