- 77
- 2
- 2
Добрый день, хотел бы узнать про способы добавление нового слота в инвентарь игроку.
Не хочу создавать новый контейнер и копипастить код из обычного.
Я решил на клиенте при открытии инвентаря подменять его.
Код контейнера
Вопрос, можно ли так делать? Или есть другие способы добавить новый слот?
С настоящим кодом выходит ошибка
Не хочу создавать новый контейнер и копипастить код из обычного.
Я решил на клиенте при открытии инвентаря подменять его.
Java:
@Override
public void tickStart(EnumSet<TickType> enumSet, Object... objects) {}
@Override
public void tickEnd(EnumSet<TickType> types, Object... objects) {
if(types.contains(TickType.CLIENT)) {
Minecraft minecraft = Minecraft.getMinecraft();
GuiScreen guiscreen = minecraft.currentScreen;
if(guiscreen instanceof GuiInventory && !(guiscreen instanceof GuiNewInventory)) {
PacketDispatcher.sendPacketToServer(new Packet250CustomPayload(Main.channel, new byte[]{(byte)0}));
}
}
}
@Override
public EnumSet<TickType> ticks() {
return EnumSet.of(TickType.CLIENT, TickType.WORLD);
}
@Override
public String getLabel() {
return "Corban Client";
}
Код контейнера
Java:
public class ContainerNewInventory extends ContainerPlayer {
private final EntityPlayer player;
public ContainerNewInventory(InventoryPlayer inventoryPlayer, boolean p_i1819_2_, EntityPlayer player) {
super(inventoryPlayer, p_i1819_2_, player);
this.player = player;
ExtendedPlayer ex = ExtendedPlayer.get(this.player);
this.addSlotToContainer(new ExtendedSlot(ExtendedSlot.Access.IO, ex.inventory, 0, 20, 108, 1));
}
public boolean canInteractWith(EntityPlayer p) {
return true;
}
public ItemStack transferStackInSlot(EntityPlayer a, int b) {
return null;
}
}
Вопрос, можно ли так делать? Или есть другие способы добавить новый слот?
С настоящим кодом выходит ошибка