Создание TileEntity c хранилищем жидкости.

Nix13Chanel написал(а):
Там есть мультиблоки.
ПРИТСТАВЛЯИШЬ А Я И В ДРУГИХ МАДАХ ВИДИЛ ТАКОИ -_-
[merge_posts_bbcode]Добавлено: 09.10.2015 16:35:48[/merge_posts_bbcode]

Вообще, тебе никто не запрещает посмотреть на то как устроен танк в OpenBlocks. Вот, учи:
Тайл : Блок
 
FanKar написал(а):
Nix13Chanel написал(а):
Там есть мультиблоки.
ПРИТСТАВЛЯИШЬ А Я И В ДРУГИХ МАДАХ ВИДИЛ ТАКОИ -_-
[merge_posts_bbcode]Добавлено: 09.10.2015 16:35:48[/merge_posts_bbcode]

Вообще, тебе никто не запрещает посмотреть на то как устроен танк в OpenBlocks. Вот, учи:
Тайл : Блок
Если вы мне, то я про раилкрафт знаю да и туда я сначала и посмотрел и решил сделать свою систему.
 
Asd1995sse написал(а):
Если вы мне, то я про раилкрафт знаю да и туда я сначала и посмотрел и решил сделать свою систему.
Да я тебе. И да, я не про Railcraft говорил, а про то как это в OpenBlocks делается. А как я понимаю (Да в принципе по-другому и не должно быть), то твой танк такой же как и в OB.
 
Я конечно не Конфуций что бы такое понимать,но эти патерны какие то не понятные.Не пишется что подразумевается под "А" , "О".А вот класс самого патерна https://github.com/CovertJaguar/Railcraft/blob/4f9be645734b8018fee19c6c8476cbfeda1041c8/src/main/java/mods/railcraft/common/blocks/machine/MultiBlockPattern.java
И мне кажется сложные структуры он не потянет,только 5х5
 
Тебе одному так кажется. Глядите BeefCore от автора BigReactors, библиотека как раз для мультмблоков. Ну и сам BigReactors можно глянуть, там крутые примеры.
 
Ясненько) Короче сделаю на первое время нубовскую проверку через if, ну а потом со временем придумаю этакий простенький конструктор)
 
timaxa007 написал(а):
Отправкой пакета с сервера по просьбе клиента.
[merge_posts_bbcode]Добавлено: 08.10.2015 21:21:37[/merge_posts_bbcode]

Вот что у меня получилось, конечно без Gui, но всё-же:
Код:
public class BlockTest extends Block implements ITileEntityProvider {

    public BlockTest(String tag) {
        super(Material.wood);
        setCreativeTab(CreativeTabs.tabBlock);
    }

    public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) {

    }

    @Override
    public TileEntity createNewTileEntity(World world, int meta) {
        return new TileEntityTest();
    }

    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
        if (player.isSneaking()) return false;
        TileEntityTest tile = (TileEntityTest)world.getTileEntity(x, y, z);
        if (tile != null) {
            ItemStack is = player.getCurrentEquippedItem();
            if (is != null) {
                if (is.getItem() == Items.water_bucket) {
                    if (tile.tank.getFluid() != null && tile.tank.getFluid().getFluid().equals(FluidRegistry.WATER)) 
                        tile.tank.setFluid(new FluidStack(FluidRegistry.WATER, tile.tank.getFluid().amount + 1000));
                    else if (tile.tank.getFluid() == null)
                        tile.tank.setFluid(new FluidStack(FluidRegistry.WATER, 1000));
                }
                if (is.getItem() == Items.lava_bucket) {
                    if (tile.tank.getFluid() != null && tile.tank.getFluid().getFluid().equals(FluidRegistry.LAVA)) 
                        tile.tank.setFluid(new FluidStack(FluidRegistry.LAVA, tile.tank.getFluid().amount + 1000));
                    else if (tile.tank.getFluid() == null)
                        tile.tank.setFluid(new FluidStack(FluidRegistry.LAVA, 1000));
                }
            } else {
                if (tile.tank.getInfo() != null && tile.tank.getInfo().fluid != null)
                    if (world.isRemote) player.addChatMessage(new ChatComponentText("Fluid: " + tile.tank.getInfo().fluid.getLocalizedName() + ", Capacity:" + tile.tank.getInfo().fluid.amount + ""));
            }
            return true;
        }
        return onBlockActivated(world, x, y, z, player, side, hitX, hitY, hitZ);
    }

}
Код:
public class TileEntityTest extends TileEntity {

    public FluidTank tank;
    private int capacity;

    public TileEntityTest() {
        capacity = 5000;
        tank = new FluidTank(capacity);
    }

    @Override
    public void readFromNBT(NBTTagCompound nbt) {
        super.readFromNBT(nbt);
        tank.readFromNBT(nbt);
    }

    @Override
    public void writeToNBT(NBTTagCompound nbt) {
        super.writeToNBT(nbt);
        tank.writeToNBT(nbt);
    }

    public Packet getDescriptionPacket() {
        NBTTagCompound nbt = new NBTTagCompound();
        writeToNBT(nbt);
        return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, 0, nbt);
    }

    public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet) {
        readFromNBT(packet.func_148857_g());
    }

}
Проверил и пере-заходил в мир, работает в одиночной игре как надо.

Да, я знаю что я в onBlockActivated написал  не так как надо, ну я просто набросок делал.
Ладно, но как мне в из в гуи получить переменные?
 
Asd1995sse, нет в GuiHandler'е. Для гуи и контейнера, передавай аргументы координатов или передавай аргумент TileEntity и из него бери его координаты.
 
timaxa007 написал(а):
Asd1995sse, нет в GuiHandler'е. Для гуи и контейнера, передавай аргументы координатов или передавай аргумент TileEntity и из него бери его координаты.
Понял) А теперь самое смешное:
Сделал в том же тайле хранилище энергии ис2 , так она с первого раза видимой стала...
[merge_posts_bbcode]Добавлено: 10.10.2015 23:39:14[/merge_posts_bbcode]

Все заробило. Просто в гуи не так давал доступ к своему тайлу.
 
Назад
Сверху