GUI箱子存东西的地方是 TileEntityChest , 绘制界面的地方在 GuiChest
分析发射器dispenser
这个类里的onBlockActivated方法里`playerIn.displayGUIChest((TileEntityDispenser)tileentity);`但是displayGUIChest方法的参数是`public void displayGUIChest(IInventory chestInventory)`所以说现在是把tileEntityDispenser当成IInventory用了,这还不算完,`ILockableContainer ilockablecontainer = (ILockableContainer)chestInventory;`又把IInventory转成ILockableContainer了. 呜呜呜
分析植物魔法GUI
1.
先@instance ,要不然报错
@Mod.Instance(MODID)
public static civ instance;
2.
mod主文件里 注册网络处理函数
NetworkRegistry.INSTANCE.registerGuiHandler(Botania.instance, new GuiHandler());
3.
实现GUIHandle类,这个类实现了fml.common.network.simpleimpl.IGuiHandle接口,类放在了botania.common.network包里。
感觉这里有点局限性。
4.
然后自己实现这三个类就可以了。
public class ContainerFlowerBag extends Container //实现背包的鼠标操作,拖拽,丢弃什么的
public class GuiFlowerBag extends GuiContainer //绘制工作
public class InventoryFlowerBag implements IItemHandlerModifiable //有一个ItemStack保存背包里的物品。背包里装的物品的操作。
显示层
GuiContainer 绘制这样一个界面,接收鼠标输入并简单处理。
控制层
数据层
植物魔法和zzzz的教程的gui一致
评论区