Проблемы с Gui

Версия Minecraft
1.6.4
Доброго времени суток, я задался вопросом :"как написать свой код для сундука?"
Проблема в том, что я совершенно не понимаю суть Гуи ( Кроме вывода на экран окна сундука), и сам код. Мои навыки в java = 0 . Но очень хочется написать свой сундук ("Холодильник") . Именно свое, но гайдов на 1.6.4 версию для этого я не обнаружил.
Суть вот в чем : если есть гайды хорошие по GUI на 1.6.4!!!!!!!! То , скинь ссылку пожалуйста.
 
Решение
getBlockTileEntity
player.getDistanceSq((double)xCoord
Java:
    @Override
    public boolean isUseableByPlayer(EntityPlayer player) {
        return worldObj.getBlockTileEntity(xCoord, yCoord, zCoord) != this ? false : player.getDistanceSq((double)xCoord + 0.5D, (double)yCoord + 0.5D, (double)zCoord + 0.5D) <= 64.0D;
    }
Вроде не используется или onInventoryChanged().
1,038
57
229
в соседней теме тот же вопрос [1.7.10] Мини-инвентарь/процессинг/рецепт (пример кода).
может правильное название для начала дашь. У тя не проблема с GUI, тебе бы назвать: как создать свой сундук. А ещё лучше, поискать такую тему, их наверное тут 1000
Представляешь как это комично звучит: Ребят у меня проблемы с компом, у меня его просто нет.
 
в соседней теме тот же вопрос [1.7.10] Мини-инвентарь/процессинг/рецепт (пример кода).
может правильное название для начала дашь. У тя не проблема с GUI, тебе бы назвать: как создать свой сундук. А ещё лучше, поискать такую тему, их наверное тут 1000
Представляешь как это комично звучит: Ребят у меня проблемы с компом, у меня его просто нет.
Мне нужно именно на версию 1.6.4.
 

timaxa007

Модератор
5,831
409
672
Мне нужно именно на версию 1.6.4.
Отличаются: в названии метдов, место Block/Item используются int blockID/itemID и добавление аннотации NetworkMod на главный класс.
Для главного класса ставишь типа:
Java:
@NetworkMod(clientSideRequired = true, serverSideRequired = false)
Java:
@Mod(modid = PotionMakingMod.MODID, name = PotionMakingMod.NAME, version = PotionMakingMod.VERSION)
@NetworkMod(clientSideRequired = true, serverSideRequired = false)
public class PotionMakingMod {
Смотришь пример как сделаны ванильные печки/сундуки и т.п. (Block'и и TileEntity'ы с их Container и Gui)
У меня портация моего мода с 1.7.10 на 1.6.4 заняло около 10 минут и большее время я убил на то, что я забыл про аннотацию NetworkMod.
 
Отличаются: в названии метдов, место Block/Item используются int blockID/itemID и добавление аннотации NetworkMod на главный класс.
Для главного класса ставишь типа:
Java:
@NetworkMod(clientSideRequired = true, serverSideRequired = false)
Java:
@Mod(modid = PotionMakingMod.MODID, name = PotionMakingMod.NAME, version = PotionMakingMod.VERSION)
@NetworkMod(clientSideRequired = true, serverSideRequired = false)
public class PotionMakingMod {
Смотришь пример как сделаны ванильные печки/сундуки и т.п. (Block'и и TileEntity'ы с их Container и Gui)
У меня портация моего мода с 1.7.10 на 1.6.4 заняло около 10 минут и большее время я убил на то, что я забыл про аннотацию NetworkMod.
package assets.testmod.src;


import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity;

public class TileEntityStorage extends TileEntity implements IInventory{

private ItemStack[] items = new ItemStack[15];

@Override
public int getSizeInventory()
{
return items.length;
}


@Override
public ItemStack getStackInSlot(int slot)
{
return items[slot];
}

@Override
public ItemStack decrStackSize(int slot, int amount)
{
if (items[slot] != null)
{
ItemStack itemstack;

if (items[slot].stackSize == amount)
{
itemstack = items[slot];
items[slot] = null;
markDirty();
return itemstack; } } }

@Override
public ItemStack getStackInSlotOnClosing(int slot) {
if (items[slot] != null)
{
ItemStack itemstack = items[slot];
items[slot] = null;

return itemstack; }
return null; }

@Override
public void setInventorySlotContents(int slot, ItemStack itemstack) {
items[slot] = itemstack;
if (itemstack != null && itemstack.stackSize > getInventoryStackLimit())
{
itemstack.stackSize = getInventoryStackLimit();
}
markDirty();

}

@Override
public String getInvName() {

return "container.storage";
}

@Override
public boolean isInvNameLocalized() {
// TODO Auto-generated method stub
return false;
}

@Override
public int getInventoryStackLimit() {

return 64;
}

@Override
public boolean isUseableByPlayer(EntityPlayer entityplayer) {
// TODO Auto-generated method stub
return worldObj.getTileEntity(xCoord, yCoord, zCoord) != this ? false : player.getDistanceSq((double)xCoord + 0.5D, (double)yCoord + 0.5D, (double)zCoord + 0.5D) <= 64.0D;
}

@Override
public void openChest() {
// TODO Auto-generated method stub

}

@Override
public void closeChest() {
// TODO Auto-generated method stub

}

@Override
public boolean isItemValidForSlot(int slot, ItemStack itemstack) {
// TODO Auto-generated method stub
return true;
} }
Вопрос : где найти markDirty и getTileEntity и player "player.getDistanceSq((double)xCoord "
 

timaxa007

Модератор
5,831
409
672
getBlockTileEntity
player.getDistanceSq((double)xCoord
Java:
    @Override
    public boolean isUseableByPlayer(EntityPlayer player) {
        return worldObj.getBlockTileEntity(xCoord, yCoord, zCoord) != this ? false : player.getDistanceSq((double)xCoord + 0.5D, (double)yCoord + 0.5D, (double)zCoord + 0.5D) <= 64.0D;
    }
Вроде не используется или onInventoryChanged().
 
getBlockTileEntity

Java:
    @Override
    public boolean isUseableByPlayer(EntityPlayer player) {
        return worldObj.getBlockTileEntity(xCoord, yCoord, zCoord) != this ? false : player.getDistanceSq((double)xCoord + 0.5D, (double)yCoord + 0.5D, (double)zCoord + 0.5D) <= 64.0D;
    }

Вроде не используется или onInventoryChanged().
NetworkRegistry.INSTANCE.registerGuiHandler(StorageMod.instance, new GuiHandler());
Подчеркнута запятая и последняя скобка

package assets.testmod.src;

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.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.inventory.Container;
import net.minecraft.item.EnumToolMaterial;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.EnumHelper;
import net.minecraftforge.common.MinecraftForge;

@Mod(modid=ModInfo.MODID, name=ModInfo.NAME, version=ModInfo.VERSION)
@NetworkMod(clientSideRequired = true, serverSideRequired = false)



public class TestMod {
public static final Block testBlock = new TestBlock(2000).setUnlocalizedName("Asphalt");
public static final Block Asphalt2 = new Asphalt2(2001).setUnlocalizedName("Asphalt2");
public static final Block Asphalt3 = new Asphalt3(2002).setUnlocalizedName("Asphalt3");
public static final Block Beton = new Beton(2003).setUnlocalizedName("Concrete");
public static final Block HardBeton = new HardBeton(2004).setUnlocalizedName("HardConcrete");
public static final Block IronBeton = new IronBeton(2005).setUnlocalizedName("IronBeton");
public static final Block OldBeton = new OldBeton(2006).setUnlocalizedName("OldBeton");
public static final Block OldBrick = new OldBrick(2007).setUnlocalizedName("OldBrick");
public static final Block OldFloor = new OldFloor(2008).setUnlocalizedName("OldFloor");
public static final Block OldWood = new OldWood(2009).setUnlocalizedName("OldWood");
public static final Block Tile1 = new Tile(2010).setUnlocalizedName("Tile");
public static final Block Tile2 = new Tile2(2011).setUnlocalizedName("Tile2");
public static final Block Tile3 = new Tile3(2012).setUnlocalizedName("Tile3");
public static final Item Concrete = new Concrete(2013).setUnlocalizedName("Concrete");
public static final Item Cigarettes = new Cigarettes(2014).setUnlocalizedName("Cigarettes");
public static final Block AsphaltD = new AsphaltD(2016).setUnlocalizedName("Asphalt");
public static final Block AsphaltF = new AsphaltF(2017).setUnlocalizedName("Asphalt");
public static final Block AsphaltC = new AsphaltC(2018).setUnlocalizedName("Asphalt");
public static final Block AsphaltX = new AsphaltX(2019).setUnlocalizedName("Asphalt");
public static final Block AsphaltO = new AsphaltO(2020).setUnlocalizedName("Asphalt");
public static final Block Lamp = new Lamp(2028).setUnlocalizedName("Lamp");


public static Item testFood = new testFood(2021,0, 2.5F, true).setUnlocalizedName("Sausage");
public static Item CannedFish = new CannedFish(2022, 2, 2.0F, false).setUnlocalizedName("Canned fish");
public static Item Chips = new Chips(2023, 0, 0.5F, false).setUnlocalizedName("Chips");
public static Item Cannedfood = new CannedFood(2024, 2, 4.0F, false).setUnlocalizedName("Canned food");
public static Item Cola = new Cola(2025, 0, 0.5F, false).setUnlocalizedName("Cola");
public static Item Alcohol = new Alcohol(2026, 0, 0.01F, false).setUnlocalizedName("Alcohol");




public static EnumToolMaterial BATTOOLMATERIAL = EnumHelper.addToolMaterial("Bludgeon", 3, 480, 0, 1, 10);
public static final Item Bludgeon = new Bludgeon(2027).setUnlocalizedName("Bludgeon");
public static EnumToolMaterial KNIFES = EnumHelper.addToolMaterial("Knife", 2, 150, 0, 0, 10);
public static final Item Knife = new Knife(2029).setUnlocalizedName("Knife");
public static EnumToolMaterial MINIKNIFE = EnumHelper.addToolMaterial("MiniKnife", 2, 50, 0, -1, 10);
public static final Item MiniKnife = new MiniKnife(2030).setUnlocalizedName("MiniKnife");
public static final EnumToolMaterial ICEAXEMATTERIAL = EnumHelper.addToolMaterial("IceAxe", 3, 1500, 16, 4, 10);
public static final Item IceAxe = new IceAxe(2015).setUnlocalizedName("IceAxe");


@Mod.Instance(ModInfo.MODID)
public static TestMod mod;

@EventHandler
public void preInit(FMLPreInitializationEvent event)
{

}


@EventHandler
public void init(FMLInitializationEvent event)
{
NetworkRegistry.INSTANCE.registerGuiHandler(TestMod.instance, new GuiHandler());
 

timaxa007

Модератор
5,831
409
672
NetworkRegistry.INSTANCE.registerGuiHandler(StorageMod.instance, new GuiHandler());
Скорее всего ошибка не в запятой, а том что у тебя место instance используеться mod. Т.ё. должно даже:
Java:
NetworkRegistry.INSTANCE.registerGuiHandler(TestMod.mod, new GuiHandler());
 
Скорее всего ошибка не в запятой, а том что у тебя место instance используеться mod. Т.ё. должно даже:
Java:
NetworkRegistry.INSTANCE.registerGuiHandler(TestMod.mod, new GuiHandler());
NetworkRegistry.INSTANCE.registerGuiHandler(TestMod.mod, new GuiHandler()); По прежнему жалуется на INSTANCE
 
Скорее всего ошибка не в запятой, а том что у тебя место instance используеться mod. Т.ё. должно даже:
Java:
NetworkRegistry.INSTANCE.registerGuiHandler(TestMod.mod, new GuiHandler());
package assets.testmod.src;

import org.lwjgl.opengl.GL11;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.util.ResourceLocation;

public class GuiStorage extends GuiContainer {

private ResourceLocation texture = new ResourceLocation(ModInfo.MODID, "textures/gui/container/storage.png");

private InventoryPlayer inventory;
private TileEntityStorage te;

public GuiStorage(TileEntityStorage te, EntityPlayer player)
{
super(new ContainerStorage(te, player));
inventory = player.inventory;
this.te = te;
}
@Override
protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3)
{
Minecraft.getMinecraft().renderEngine.bindTexture(texture);

GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);

int x = (width - xSize) / 2;
int y = (height - ySize) / 2;

drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
}

@Override
protected void drawGuiContainerForegroundLayer(int par1, int par2)
{
FontRenderer.drawString(I18n.format(te.getInvName()), (xSize / 2) - (FontRenderer.getStringWidth(I18n.format(te.getInvName())) / 2), 6, 4210752, false);
FontRenderer.drawString(I18n.format(inventory.getInvName()), 8, ySize - 96 + 2, 4210752);
}
}



Жалуется на format
 
Последнее редактирование:

timaxa007

Модератор
5,831
409
672
Сверху