GUI追加でエラー

Modding・サーバPlugin制作・ツール制作など、開発関連の質問があればこちらにお願い致します。
フォーラムルール
質問関連フォーラムで質問する時は、必ず次のトピックを一読/厳守お願い致します。
viewtopic.php?f=5&t=999
  • (PostNo.306621)

GUI追加でエラー

投稿記事by フラワイト » 2017年8月21日(月) 10:15

GUIを追加してみたのですが、エラーが出ました。
インターネットで検索してやってみたので、いまいちどこがいけないのかわかりません。
GUIは、バニラのラージチェストと同じようにしたいです。
必要なソースがあれば貼り付けます。

クラッシュレポート
---- Minecraft Crash Report ----
// You're mean.

Time: 17/08/21 10:05
Description: Initializing game

java.lang.NullPointerException: Initializing game
at cpw.mods.fml.common.network.NetworkRegistry.registerGuiHandler(NetworkRegistry.java:219)
at com.OgaMod.OgaMod.preInit(OgaMod.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
at com.google.common.eventbus.EventBus.post(EventBus.java:275)
at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
at com.google.common.eventbus.EventBus.post(EventBus.java:275)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
at cpw.mods.fml.common.Loader.initializeMods(Loader.java:742)
at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:311)
at net.minecraft.client.Minecraft.startGame(Minecraft.java:597)
at net.minecraft.client.Minecraft.run(Minecraft.java:942)
at net.minecraft.client.main.Main.main(Main.java:164)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
at GradleStart.main(Unknown Source)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
at cpw.mods.fml.common.network.NetworkRegistry.registerGuiHandler(NetworkRegistry.java:219)
at com.OgaMod.OgaMod.preInit(OgaMod.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
at com.google.common.eventbus.EventBus.post(EventBus.java:275)
at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
at com.google.common.eventbus.EventBus.post(EventBus.java:275)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
at cpw.mods.fml.common.Loader.initializeMods(Loader.java:742)
at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:311)
at net.minecraft.client.Minecraft.startGame(Minecraft.java:597)

-- Initialization --
Details:
Stacktrace:
at net.minecraft.client.Minecraft.run(Minecraft.java:942)
at net.minecraft.client.main.Main.main(Main.java:164)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
at GradleStart.main(Unknown Source)

-- System Details --
Details:
Minecraft Version: 1.7.10
Operating System: Windows 10 (amd64) version 10.0
Java Version: 1.8.0_131, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 675876544 bytes (644 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1558 6 mods loaded, 6 mods active
States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
UCHIJ mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
UCHIJ FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar)
UCHIJ Forge{10.13.4.1558} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar)
UCHIE OgaMod{1.7.10-1.0.7} [OgaMod] (bin)
UCHIJ IC2{2.2.827-experimental} [IndustrialCraft 2] (industrialcraft-2-2.2.827-experimental-dev.jar)
UCHIJ craftguide{1.6.8.2-pr1} [CraftGuide] (CraftGuide-1.6.8.2-pr1-dev.jar)
GL info: ' Vendor: 'Intel' Version: '4.4.0 - Build 20.19.15.4352' Renderer: 'Intel(R) HD Graphics'
Launched Version: 1.7.10
LWJGL: 2.9.1
OpenGL: Intel(R) HD Graphics GL version 4.4.0 - Build 20.19.15.4352, Intel
GL Caps: Using GL 1.3 multitexturing.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Anisotropic filtering is supported and maximum anisotropy is 16.
Shaders are available because OpenGL 2.1 is supported.

Is Modded: Definitely; Client brand changed to 'fml,forge'
Type: Client (map_client.txt)
Resource Packs: []
Current Language: 日本語 (日本)
Profiler Position: N/A (disabled)
Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
Anisotropic Filtering: Off (1)
フラワイト
ID:da05adc8
 

  • (PostNo.306623)

Re: GUI追加でエラー

投稿記事by elise_blacklab » 2017年8月21日(月) 11:16

フラワイト さんが書きました:java.lang.NullPointerException: Initializing game
at cpw.mods.fml.common.network.NetworkRegistry.registerGuiHandler(NetworkRegistry.java:219)
at com.OgaMod.OgaMod.preInit(OgaMod.java:39)

必要な…とは言わず全部ほしいところですが,とりあえずpreInitでnullアクセス違反を起こしているのは間違いないので,OgaModのソースくらいはください.
質問の際は開発環境のバージョン情報等を詳細に記載してください.
viewtopic.php?f=5&t=999


GUIは、バニラのラージチェストと同じようにしたいです。

Inventoryを追加する場合はGUIに加えてContainerの処理も必要になるので,慌てずにまずGUIの表示だけを確認することにしましょう.
メイドつくってたりします.http://6docvc.net/
アバター
elise_blacklab
ID:04d0d16e
掘り廃人
 
記事: 2448
登録日時: 2014年6月25日(水) 18:30

  • (PostNo.306691)

Re: GUI追加でエラー

投稿記事by フラワイト » 2017年8月22日(火) 15:47

OgaModのソース

package com.OgaMod;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import com.OgaMod.blocks.OgamodBlocks;
import com.OgaMod.blocks.OgamodGenerator;
import com.OgaMod.items.OgamodItems;
import com.OgaMod.tileentities.TileEntityExclusionChest;

import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.creativetab.CreativeTabs;

@Mod(modid = OgaMod.MODID, name = OgaMod.NAME, version = OgaMod.VERSION)
public class OgaMod
{
public static final String MODID = "OgaMod";
public static final String NAME = "OgaMod";
public static final String VERSION = "1.7.10-1.0.7";

public static Logger logger = LogManager.getLogger("OgaMod");

public static OgaMod instance;

public static CreativeTabs tabOgaMod18X =new tabOgaMod18X("OgaMod1.8Xtab"){};

@EventHandler
public void preInit(FMLPostInitializationEvent event){
OgamodItems.registerItems();
OgamodBlocks.registerBlocks();
GameRegistry.registerWorldGenerator(new OgamodGenerator(), 0);
Recipes.registerRecipes();
GameRegistry.registerTileEntity(TileEntityExclusionChest.class, "TileEntityExclusionChest");
NetworkRegistry.INSTANCE.registerGuiHandler(this.instance, new OgaModGUIHandler());
}

@EventHandler
public void Init(FMLInitializationEvent event) {


}
@EventHandler
public void postInit(FMLPostInitializationEvent event){

}
}

バージョンはMC1.7.10,forgeは安定板の13.4.1558です。
フラワイト
ID:da05adc8
 

  • (PostNo.307475)

Re: GUI追加でエラー

投稿記事by dark snow » 2017年9月08日(金) 16:33

フラワイト さんが書きました:NetworkRegistry.INSTANCE.registerGuiHandler(this.instance, new OgaModGUIHandler());

レポートでは、この部分が間違っていると書かれています。
OgaModGUIHandler.javaがあるのならこのファイルのコードが間違っていて、ないのなら作成してください。
あと、GUI追加でエラーが出ているのでしたら、GUIを作成するときに作ったソース(ファイル)くらいは貼り付けてください。
dark snow
ID:0d07cd99
木を殴ってる
 
記事: 29
登録日時: 2017年2月09日(木) 17:55

  • (PostNo.307513)

Re: GUI追加でエラー

投稿記事by フラワイト » 2017年9月09日(土) 08:56

GUIHandler.java
package com.OgaMod;

import cpw.mods.fml.common.network.IGuiHandler;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;

import com.OgaMod.tileentities.ContainerExclusionChest;
import com.OgaMod.tileentities.GUIExclusionChest;
import com.OgaMod.tileentities.TileEntityExclusionChest;

public class OgaModGUIHandler implements IGuiHandler {

@Override
public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) {
if (!world.blockExists(x, y, z))
return null;
TileEntity tileentity = world.getTileEntity(x, y, z);
if (tileentity instanceof TileEntityExclusionChest) {
return new ContainerExclusionChest(player, (TileEntityExclusionChest) tileentity);
}
return null;
}

@Override
public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) {
if (!world.blockExists(x, y, z))
return null;
TileEntity tileentity = world.getTileEntity(x, y, z);
if (tileentity instanceof TileEntityExclusionChest) {
return new GUIExclusionChest(player, (TileEntityExclusionChest) tileentity);
}
return null;
}

}


後、GUI追加の時に作ったファイルでもう一つ
ContainerExclusionChest.java
package com.OgaMod.tileentities;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;

public class ContainerExclusionChest extends Container {

private TileEntityExclusionChest tileEntity;
/** 耐爆チェストのインベントリの第一スロットの番号 */
private static final int index0 = 0;
/** プレイヤーのインベントリの第一スロットの番号 */
private static final int index1 = 54;
/** クイックスロットの第一スロットの番号 */
private static final int index2 = 81;
/** このコンテナの全体のスロット数 */
private static final int index3 = 90;

public ContainerExclusionChest(EntityPlayer player, TileEntityExclusionChest tileEntity) {
// スロットを設定する。
this.tileEntity = tileEntity;
for (int iy = 0; iy < 6; iy++) {
for (int ix = 0; ix < 9; ix++) {
this.addSlotToContainer(new Slot(tileEntity, ix + (iy * 9), 8 + (ix * 18), 18 + (iy * 18)));
}
}
for (int iy = 0; iy < 3; iy++) {
for (int ix = 0; ix < 9; ix++) {
this.addSlotToContainer(new Slot(player.inventory, ix + (iy * 9) + 9, 8 + (ix * 18), 140 + (iy * 18)));
}
}
for (int ix = 0; ix < 9; ix++) {
this.addSlotToContainer(new Slot(player.inventory, ix, 8 + (ix * 18), 198));
}
}

@Override
public boolean canInteractWith(EntityPlayer player) {
return tileEntity.isUseableByPlayer(player);
}

@Override
public ItemStack transferStackInSlot(EntityPlayer player, int slotNumber) {
ItemStack itemStack = null;
Slot slot = (Slot) inventorySlots.get(slotNumber);
if (slot != null && slot.getHasStack()) {
ItemStack itemStack1 = slot.getStack();
itemStack = itemStack1.copy();
if (index0 <= slotNumber && slotNumber < index1) {
// 耐爆チェストのインベントリならプレイヤーのインベントリに移動。
if (!this.mergeItemStack(itemStack1, index1, index3, true)) {
return null;
}
} else {
// プレイヤーのインベントリなら耐爆チェストのインベントリに移動。
if (!this.mergeItemStack(itemStack1, index0, index1, false)) {
return null;
}
}

if (itemStack1.stackSize == 0) {
slot.putStack((ItemStack) null);
} else {
slot.onSlotChanged();
}
if (itemStack1.stackSize == itemStack.stackSize) {
return null;
}
slot.onPickupFromSlot(player, itemStack1);
}
return itemStack;
}

}
です。
フラワイト
ID:da05adc8
 

  • (PostNo.307554)

Re: GUI追加でエラー

投稿記事by dark snow » 2017年9月09日(土) 20:27

フラワイト さんが書きました:GUIHandler.java

とありますが、ファイル名は"GUIHandler.java"でしょうか?
もしそうなのでしたらファイル名を"OgaModGUIHandler.java"に変更してください。
あと、何でModを開発していますか?記述間違いなどならEclipseなどを使っていれば分かると思います。
今更で悪いのですが、ソースはなるべくCodeタグで囲んでいただけるとこちら側も見やすいので、今度からはCodeタグで囲んでください。
dark snow
ID:0d07cd99
木を殴ってる
 
記事: 29
登録日時: 2017年2月09日(木) 17:55

  • (PostNo.307577)

Re: GUI追加でエラー

投稿記事by CrafterKina » 2017年9月10日(日) 04:29

OgaMod.instanceがnullなだけでは?
@Instanceをつけるかthisを何処かのタイミングで代入しないと、何の意味もありません。
アバター
CrafterKina
ID:10ad58cf
石炭掘り
 
記事: 190
登録日時: 2013年4月06日(土) 14:42
お住まい: 廃坑

  • (PostNo.307596)

Re: GUI追加でエラー

投稿記事by フラワイト » 2017年9月10日(日) 13:35

記述が悪くてすみません。
GUIHandler.javaはちゃんとOgaModGUIHandler.javaになっているので大丈夫です。
開発環境はEclipseです。
後、codeタグってどうやればいいのでしょうか。
フラワイト
ID:da05adc8
 

  • (PostNo.307598)

Re: GUI追加でエラー

投稿記事by フラワイト » 2017年9月10日(日) 13:55

@Instanceをつけてみました。
minecraftは起動するのですが、ブロックを持った状態でほかのブロック右クリックすると、なぜか持っているブロックが右クリックしたブロックになります。
どこを直せばいいか教えてください。
フラワイト
ID:da05adc8
 

  • (PostNo.307604)

Re: GUI追加でエラー

投稿記事by elise_blacklab » 2017年9月10日(日) 14:47

フラワイト さんが書きました:@Instanceをつけてみました。
minecraftは起動するのですが、ブロックを持った状態でほかのブロック右クリックすると、なぜか持っているブロックが右クリックしたブロックになります。
どこを直せばいいか教えてください。

まず自分の書いたソースがどこでどのような動きをしているのか,理解してから質問されるのが良いと思われます.
ちなみにBlockを右クリックした"瞬間"の処理はBlock内にあるはずなので,そこが読めないとどうしようもありません.
斜め読みで申し訳ありませんが,気になるのは
slot.onPickupFromSlot(player, itemStack1);
こことかですかね.
メイドつくってたりします.http://6docvc.net/
アバター
elise_blacklab
ID:0f87040f
掘り廃人
 
記事: 2448
登録日時: 2014年6月25日(水) 18:30

  • (PostNo.307802)

Re: GUI追加でエラー

投稿記事by フラワイト » 2017年9月15日(金) 05:07

すみません
slot.onPickupFromSlot(player, itemStack1);を消してみたのですが、やっぱり駄目でした。
フラワイト
ID:da05adc8
 

  • (PostNo.308321)

Re: GUI追加でエラー

投稿記事by フラワイト » 2017年9月26日(火) 05:19

[quote="フラワイト"]minecraftは起動するのですが、ブロックを持った状態でほかのブロック右クリックすると、なぜか持っているブロックが右クリックしたブロックになります。[/quote]
すみません。キー設定が間違っていただけでした。
ご迷惑をおかけしました。

それで、キー設定を直してやってみたのですが、GUIが開きません。
フラワイト
ID:da05adc8
 


Return to 質問:開発・制作関連

x