Второй инвентарь или вкладка

Версия Minecraft
1.7.10
API
Forge
Вопрос 1. Как сделать второй инвентарь и переход между первым и вторым
Желательно ссылку на гайд (там где 1 - инвент от майнкрафта , Там где 2 - инвет мой)
 

Вложения

  • 1628481247299.png
    1628481247299.png
    19.3 KB · Просмотры: 12
Добавить к ид твоей кнопки действие на открытие
Так со всем я разобрался, только не понимаю что сделать в данном случае

вариант 1 но не понимаю как(не отлично знаком с пакетами)
отправить пакет на сервер об нажатие кнопки для открытия контейнера моего или ванилы
 
7,099
324
1,510
Че-то типо
Java:
@ElegantPacket
public class PressButton implements ClientToServerPacket{
    public void onReceive(EntityPlayerMP player){
        player.openGui(...);
    }
}


//client event handler

KeyBinding key = new KeyBinding("Open gui key", Keyboard.KEY_H, "key.categories.inventory");

@SubscribeEvent
public void onPress(PlayerTickEvent event){
    if (key.getIsKeyPressed() && FMLClientHandler.instance().getClient().inGameHasFocus)
        new PressButton().sendToServer();
}
Подробнее про пакеты:
 
7,099
324
1,510
У кнопки есть mousePressed, переопредели его и в нем отправляй пакет new PressButton().sendToServer()
 
EventHandler:
@SideOnly(value = Side.CLIENT)
    @SubscribeEvent
    public void guiPostAction(GuiScreenEvent.ActionPerformedEvent.Post event) {
                if (event.gui instanceof GuiInventory) {
            if (event.button.id == 2000) {
                System.out.println("Work job, open Inventory player");
                PacketHandler.INSTANCE.sendToServer(new PacketTest(event.gui.mc.thePlayer));
                event.gui.mc.thePlayer.addChatMessage(new ChatComponentText(String.valueOf("Поздравляю ты открыл его")));

            }
        }
    }

PacketHandler:
public class PacketHandler {

    public static final SimpleNetworkWrapper INSTANCE = NetworkRegistry.INSTANCE.newSimpleChannel(Magic.MODID.toLowerCase());
    public static void init()
    {
        INSTANCE.registerMessage(PacketTest.class, PacketTest.class, 0, Side.SERVER);

    }
}

PacketTest:
public class PacketTest implements IMessage, IMessageHandler<PacketTest, IMessage> {

    public PacketTest() {}

    public PacketTest(EntityPlayer player) {}

    @Override
    public void toBytes(ByteBuf buffer) {}

    @Override
    public void fromBytes(ByteBuf buffer) {}

    @Override
    public IMessage onMessage(PacketTest message, MessageContext ctx) {
        ctx.getServerHandler().playerEntity.openGui(Magic.instance, Magic.GUI, ctx.getServerHandler().playerEntity.worldObj, (int)ctx.getServerHandler().playerEntity.posX, (int)ctx.getServerHandler().playerEntity.posY, (int)ctx.getServerHandler().playerEntity.posZ);
        return null;
    }
}

Происходит при открытие просто инвентаря
 

Вложения

  • 1629292682573.png
    1629292682573.png
    9 KB · Просмотры: 12
7,099
324
1,510
Просто юзай ElegantNetwoking и не парься. Фреймворк сделает за тебя правильную регистрацию и сериализацию
 
7,099
324
1,510
ForgeGradle 4? Если версия ниже, то используй deobfCompile или добавь в сборку CodeChickenCore, он деобфусцирует все
 
build.gradle:
buildscript {
    repositories {
        mavenCentral()
        maven {
            name = "forge"
            url = "https://files.minecraftforge.net/maven"
        }
        maven {
            name = "sonatype"
            url = "https://oss.sonatype.org/content/repositories/snapshots/"
        }
    }
    dependencies {

        classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
        classpath 'mysql:mysql-connector-java:5.1.44'

    }
}

apply plugin: 'forge'
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'signing'

sourceCompatibility = targetCompatibility = '1.8'

repositories {
    maven {
        name = "chickenbones"
        url = "http://chickenbones.net/maven"
    }
}

dependencies {
    //compile fg.deobf("io.gitlab.hohserg.elegant.networking:elegant-networking-1.12:3.10")
    compile "io.gitlab.hohserg.elegant.networking:elegant-networking-1.12:2.4"
    compileOnly "io.gitlab.hohserg.elegant.networking:annotation-processor:3.10"
    compile 'mysql:mysql-connector-java:5.1.44'
    compile "codechicken:CodeChickenLib:1.7.10-1.1.3.140:dev"
    compile "codechicken:CodeChickenCore:1.7.10-1.0.4.29:dev"
    compile "codechicken:NotEnoughItems:1.7.10-1.0.3.75:dev"
}

version = "1"
group = "test"
archivesBaseName = "Spokers"

minecraft {
    version = "1.7.10-10.13.4.1614-1.7.10"
    runDir = "run"
}

configurations {
    extraLibs
}

compileJava {
    options.compilerArgs += [
            '-Aelegantnetworking.printDetails'
    ]
}


processResources
{
    // replace stuff in mcmod.info, nothing else
    from(sourceSets.main.resources.srcDirs) {
        include 'mcmod/info'
                
        // replace version and mcversion
        expand 'version':project.version, 'mcversion':project.minecraft.version
    }
        
    // copy everything else, thats not the mcmod.info
    from(sourceSets.main.resources.srcDirs) {
        exclude 'mcmod.info'
    }
}
compileJava.options.encoding = 'UTF-8'

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}
 
7,099
324
1,510
//compile fg.deobf("io.gitlab.hohserg.elegant.networking:elegant-networking-1.12:3.10")
Закомментировал строку, добавляющую либу и ожидаешь, что ее апи откуда-то появится?
Поменяй эту строчку на
Java:
compile "io.gitlab.hohserg.elegant.networking:elegant-networking-1.7.10:3.10"
 
7,099
324
1,510
Последнее редактирование:
7,099
324
1,510
Straaaange
Если при запуске в клиенте есть мод, то он есть в зависимостях. Как тогда его классы могут быть не видны? :unsure:
 
Сверху