Jump to content

[SOLVED] Are entity extended properties saved in world?


IamMaxim

Recommended Posts

I wrote this code:

CustomPlayer.java

 

public class CustomPlayer implements IExtendedEntityProperties {

    public final static String EXT_PROP_NAME = "CustomPlayer";

    private final EntityPlayer player;

    public CustomPlayerInventory inventory;

 

    public CustomPlayer(EntityPlayer player) {

        this.player = player;

 

    }

 

    public static void register(EntityPlayer player) {

        player.registerExtendedProperties(CustomPlayer.EXT_PROP_NAME, new CustomPlayer(player));

        NBTTagCompound compound = new NBTTagCompound();

        compound.setInteger("size", 2);

        player.getExtendedProperties(CustomPlayer.EXT_PROP_NAME).saveNBTData(compound);

    }

 

    public static CustomPlayer get(EntityPlayer player) {

        return (CustomPlayer) player.getExtendedProperties(EXT_PROP_NAME);

    }

 

    @Override

    public void saveNBTData(NBTTagCompound compound) {

        System.out.println("saveNBTData()");

        NBTTagCompound properties = new NBTTagCompound();

        int size = compound.getInteger("size");

        properties.setInteger("size", size);

        properties.setTag(EXT_PROP_NAME, compound);

        if (inventory == null) inventory = new CustomPlayerInventory(size);

        this.inventory.writeToNBT(properties);

    }

 

    @Override

    public void loadNBTData(NBTTagCompound compound) {

        System.out.println("loadNBTData(); compound == null: " + (compound == null));

        NBTTagCompound properties = (NBTTagCompound) compound.getTag(EXT_PROP_NAME);

        inventory = new CustomPlayerInventory(compound.getInteger("size"));

        this.inventory.readFromNBT(properties);

    }

 

    @Override

    public void init(Entity entity, World world) {

 

    }

}

 

 

 

CustomPlayerInventory.java

 

public class CustomPlayerInventory implements IInventory {

    private ItemStack[] inventory;

    private String name = "Inventory";

 

    public CustomPlayerInventory(int size) {

        inventory = new ItemStack[6 + size];

    }

 

    public boolean isInvNameLocalized() {

        return name.length() > 0;

    }

 

    @Override

    public int getSizeInventory() {

        return inventory.length;

    }

 

    @Override

    public ItemStack getStackInSlot(int slot) {

//        System.out.println("getStackInSlot(); slot: " + slot);

        if (slot < inventory.length)

            return inventory[slot];

        else

            return null;

    }

 

    @Override

    public ItemStack decrStackSize(int slot, int amount) {

        System.out.println("decrStackSize(); slot: " + slot + " amount: " + amount);

        ItemStack stack = getStackInSlot(slot);

        if (stack != null)

        {

            if (stack.stackSize > amount)

            {

                stack = stack.splitStack(amount);

                this.markDirty();

            }

            else

            {

                setInventorySlotContents(slot, null);

            }

        }

        return stack;

    }

 

    @Override

    public ItemStack getStackInSlotOnClosing(int slot) {

        System.out.println("getStackInSlotOnClosing(); slot: " + slot);

        ItemStack stack = getStackInSlot(slot);

        setInventorySlotContents(slot, null);

        return stack;

    }

 

    @Override

    public void setInventorySlotContents(int slot, ItemStack itemStack) {

        System.out.println("setInventorySlotContents(); slot: " + slot);

        if (slot < inventory.length) {

            this.inventory[slot] = itemStack;

            if (itemStack != null && itemStack.stackSize > this.getInventoryStackLimit()) {

                itemStack.stackSize = this.getInventoryStackLimit();

            }

            this.markDirty();

        } else {

            Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("Error occurred. Inventory size: " + inventory.length));

        }

    }

 

    @Override

    public String getInventoryName() {

        return name;

    }

 

    @Override

    public boolean hasCustomInventoryName() {

        return false;

    }

 

    @Override

    public int getInventoryStackLimit() {

        return 64;

    }

 

 

    public void updateSize(int newSize) {

        ItemStack[] inv = new ItemStack[newSize];

        for (int i = 0; i < newSize; i++) {

            if (i < getSizeInventory())

                inv = inventory;

        }

        inventory = inv;

    }

 

    @Override

    public void markDirty() {

        for (int i = 0; i < getSizeInventory(); ++i)

        {

            if (getStackInSlot(i) != null && getStackInSlot(i).stackSize == 0) {

                inventory = null;

            }

        }

    }

 

    @Override

    public boolean isUseableByPlayer(EntityPlayer player) {

        return true;

    }

 

    @Override

    public void openInventory() {

 

    }

 

    @Override

    public void closeInventory() {

 

    }

 

    @Override

    public boolean isItemValidForSlot(int slot, ItemStack itemStack) {

        return true;

    }

 

    public void writeToNBT(NBTTagCompound compound)

    {

        NBTTagList items = new NBTTagList();

 

        compound.setInteger("size", getSizeInventory());

        for (int i = 0; i < getSizeInventory(); ++i)

        {

            if (getStackInSlot(i) != null)

            {

                NBTTagCompound item = new NBTTagCompound();

                item.setByte("Slot", (byte) i);

                getStackInSlot(i).writeToNBT(item);

                items.appendTag(item);

            }

        }

 

        compound.setTag("CustomPlayerInventory", items);

    }

 

    public void readFromNBT(NBTTagCompound compound)

    {

        System.out.println("readFromNBT(); compound == null: " + (compound == null));

        NBTTagList items = compound.getTagList("CustomPlayerInventory", 9);

 

        for (int i = 0; i < items.tagCount(); ++i)

        {

            NBTTagCompound item = (NBTTagCompound) items.getCompoundTagAt(i);

            byte slot = item.getByte("Slot");

 

            if (slot >= 0 && slot < getSizeInventory()) {

                inventory[slot] = ItemStack.loadItemStackFromNBT(item);

            }

        }

    }

}

 

 

 

CustomPlayerContainer.java

public class CustomPlayerContainer extends Container {

    private static final int ARMOR_START = 0, ARMOR_END = 3, HANDS_START = 4, HANDS_END = 5, INV_START = 6;

    private static int INV_END;

 

    InventoryPlayer inventoryPlayer;

    CustomPlayerInventory customPlayerInventory;

 

    @Override

    public boolean canInteractWith(EntityPlayer player) {

        return true;

    }

 

    private int size;

 

    public CustomPlayerContainer(EntityPlayer player, InventoryPlayer inventoryPlayer, CustomPlayerInventory customPlayerInventory) {

        this.inventoryPlayer = inventoryPlayer;

        this.customPlayerInventory = customPlayerInventory;

        size = customPlayerInventory.getSizeInventory();

        INV_END = size-1;

        addSlotToContainer(new ArmorSlot(player, customPlayerInventory, 0, 10, 10, 0));//helmet

        addSlotToContainer(new ArmorSlot(player, customPlayerInventory, 1, 10, 29, 1));//chestplate

        addSlotToContainer(new ArmorSlot(player, customPlayerInventory, 2, 10, 48, 2));//leggings

        addSlotToContainer(new ArmorSlot(player, customPlayerInventory, 3, 10, 67, 3));//boots

        addSlotToContainer(new Slot(customPlayerInventory, 4, 29, 29));//hand 1

        addSlotToContainer(new Slot(customPlayerInventory, 5, 48, 29));//hand 2

        System.out.println("Creating container: " + size + " " + inventorySlots.size());

        for (int i = 0; i < size; i++) {

            addSlotToContainer(new Slot(customPlayerInventory, 6 + i, 29 + i * 19, 10));

        }

    }

 

    public void updateSlots() {

        if (customPlayerInventory.getSizeInventory() > size) {

            for (int i = size; i < customPlayerInventory.getSizeInventory(); i++) {

                addSlotToContainer(new Slot(customPlayerInventory, 6 + size, 29 + i * 19, 10));

            }

        }

    }

 

    @Override

    public ItemStack transferStackInSlot(EntityPlayer player, int par2)

    {

        System.out.println("TransferSlot(); par2: " + par2);

        ItemStack itemstack = null;

        Slot slot = (Slot) this.inventorySlots.get(par2);

        if (slot != null && slot.getHasStack()) {

            ItemStack itemstack1 = slot.getStack();

            itemstack = itemstack1.copy();

            if (par2 < HANDS_START) {

                if (!this.mergeItemStack(itemstack1, HANDS_START, INV_END + 1, true)) {

                    return null;

                }

                slot.onSlotChange(itemstack1, itemstack);

            } else {

                if (itemstack1.getItem() instanceof ItemArmor) {

                    int type = ((ItemArmor) itemstack1.getItem()).armorType;

                    if (!this.mergeItemStack(itemstack1, ARMOR_START + type, ARMOR_START + type + 1, false)) {

                        return null;

                    }

                } else if (par2 >= INV_START) {

                    if (!this.mergeItemStack(itemstack1, HANDS_START, HANDS_END + 1, false)) {

                        return null;

                    }

                } else if (par2 >= HANDS_START && par2 < HANDS_END + 1) {

                    if (!this.mergeItemStack(itemstack1, INV_START, INV_END + 1, false)) {

                        return null;

                    }

                }

            }

            if (itemstack1.stackSize == 0) {

                slot.putStack((ItemStack) null);

            } else {

                slot.onSlotChanged();

            }

            if (itemstack1.stackSize == itemstack.stackSize) {

                return null;

            }

            slot.onPickupFromSlot(player, itemstack1);

        }

        return itemstack;

    }

 

 

    public class ArmorSlot extends Slot {

        final int armorType;

        final EntityPlayer player;

 

        public ArmorSlot(EntityPlayer player, IInventory inventory, int slot, int x, int y, int armorType) {

            super(inventory, slot, x, y);

            this.player = player;

            this.armorType = armorType;

        }

 

        public int getSlotStackLimit()

        {

            return 1;

        }

 

        public boolean isItemValid(ItemStack itemstack)

        {

            Item item = (itemstack == null ? null : itemstack.getItem());

            return item != null && item.isValidArmor(itemstack, armorType, player);

        }

 

        @SideOnly(Side.CLIENT)

        public IIcon getBackgroundIconIndex()

        {

            return ItemArmor.func_94602_b(this.armorType);

        }

    }

}

 

 

according to https://github.com/coolAlias/Forge_Tutorials/blob/master/CustomPlayerInventory.java, but I get this error in console:

> [00:14:47] [server thread/INFO] [sTDOUT]: [ru.iammaxim.tesitems.Player.CustomPlayer:loadNBTData:48]: loadNBTData(); compound == null: false

> [00:14:47] [server thread/INFO] [sTDOUT]: [ru.iammaxim.tesitems.Player.CustomPlayerInventory:readFromNBT:158]: readFromNBT(); compound == null: true

> [00:14:47] [server thread/ERROR] [FML]: Failed to load extended properties for CustomPlayer.  This is a mod issue.

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: java.lang.NullPointerException

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at ru.iammaxim.tesitems.Player.CustomPlayerInventory.readFromNBT(CustomPlayerInventory.java:159)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at ru.iammaxim.tesitems.Player.CustomPlayer.loadNBTData(CustomPlayer.java:51)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.entity.Entity.func_70020_e(Entity.java:1419)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.management.ServerConfigurationManager.func_72380_a(ServerConfigurationManager.java:256)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.management.ServerConfigurationManager.initializeConnectionToPlayer(ServerConfigurationManager.java:114)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at cpw.mods.fml.common.network.handshake.NetworkDispatcher.completeServerSideConnection(NetworkDispatcher.java:190)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at cpw.mods.fml.common.network.handshake.NetworkDispatcher.completeHandshake(NetworkDispatcher.java:463)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at cpw.mods.fml.common.network.internal.HandshakeCompletionHandler.channelRead0(HandshakeCompletionHandler.java:17)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at cpw.mods.fml.common.network.internal.HandshakeCompletionHandler.channelRead0(HandshakeCompletionHandler.java:11)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at cpw.mods.fml.common.network.internal.FMLProxyPacket.func_148833_a(FMLProxyPacket.java:77)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:212)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:165)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:659)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:547)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.integrated.IntegratedServer.func_71217_p(IntegratedServer.java:186)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:427)

> [00:14:47] [server thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:685)

and empty inventory. So, my question is: Are extended properties saved while exitting world? While I don't exit world, items are saved(or displayed as saved; for now I can't test it)

Link to comment
Share on other sites

save/loadNBTData methods are called whenever Entity, IEEP is assigned to, is saved to NBT - that happens when world is dumped on disk, and that happens (actual saving) every "some" ticks or "special actions" - e.g: when on SP and you go to menu, world will be saved.

 

So yes - IEEP is saved inside Entity which is saved inside World.

 

Now, after actually looking at code:

YOU DON'T call save/load yourself. Never ever.

This is all you need:

public class CustomPlayer implements IExtendedEntityProperties {
    public final static String EXT_PROP_NAME = "CustomPlayer";
    private final EntityPlayer player;
    public CustomPlayerInventory inventory;

    public CustomPlayer(EntityPlayer player) {
        this.player = player;

    }

    public static void register(EntityPlayer player) {
        player.registerExtendedProperties(CustomPlayer.EXT_PROP_NAME, new CustomPlayer(player));
    }

    public static CustomPlayer get(EntityPlayer player) {
        return (CustomPlayer) player.getExtendedProperties(EXT_PROP_NAME);
    }

    @Override
    public void saveNBTData(NBTTagCompound compound) {
        compound.setInteger("size", inventory.getSomeSize());
    }

    @Override
    public void loadNBTData(NBTTagCompound compound) {
        this.inventory = new CustomPlayerInventory(compound.getInteger("size"));
    }

    @Override
    public void init(Entity entity, World world) {
    }
}

 

Obviously in "load" you need to also call inventory.loadFromNBT(parentCompound.getCompoundTag("invTag")).

Same (reversed) goes for saving.

 

Additional note: as of 1.8.9+ IEEP is no longer a thing, use Capabilities.

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

save/loadNBTData methods are called whenever Entity, IEEP is assigned to, is saved to NBT - that happens when world is dumped on disk, and that happens (actual saving) every "some" ticks or "special actions" - e.g: when on SP and you go to menu, world will be saved.

 

So yes - IEEP is saved inside Entity which is saved inside World.

 

But only if you override the save / load methods properly.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Link to comment
Share on other sites

I tried to edit it, but I get this list of errors:

 

> [01:54:28] [Client thread/INFO] [sTDOUT]: [ru.iammaxim.tesitems.Player.CustomPlayerContainer:<init>:44]: Creating container: 8 6

> [01:54:28] [Client thread/INFO] [sTDOUT]: [ru.iammaxim.tesitems.Player.CustomPlayerInventory:func_70299_a:70]: setInventorySlotContents(); slot: 0

> [01:54:28] [Client thread/INFO] [sTDOUT]: [ru.iammaxim.tesitems.Player.CustomPlayerInventory:func_70299_a:70]: setInventorySlotContents(); slot: 1

> [01:54:28] [Client thread/INFO] [sTDOUT]: [ru.iammaxim.tesitems.Player.CustomPlayerInventory:func_70299_a:70]: setInventorySlotContents(); slot: 2

> [01:54:28] [Client thread/INFO] [sTDOUT]: [ru.iammaxim.tesitems.Player.CustomPlayerInventory:func_70299_a:70]: setInventorySlotContents(); slot: 3

> [01:54:28] [Client thread/INFO] [sTDOUT]: [ru.iammaxim.tesitems.Player.CustomPlayerInventory:func_70299_a:70]: setInventorySlotContents(); slot: 4

> [01:54:28] [Client thread/INFO] [sTDOUT]: [ru.iammaxim.tesitems.Player.CustomPlayerInventory:func_70299_a:70]: setInventorySlotContents(); slot: 5

> [01:54:28] [Client thread/INFO] [sTDOUT]: [ru.iammaxim.tesitems.Player.CustomPlayerInventory:func_70299_a:70]: setInventorySlotContents(); slot: 6

> [01:54:28] [Client thread/INFO] [sTDOUT]: [ru.iammaxim.tesitems.Player.CustomPlayerInventory:func_70299_a:70]: setInventorySlotContents(); slot: 7

> [01:54:28] [Client thread/INFO] [sTDOUT]: [ru.iammaxim.tesitems.Player.CustomPlayerInventory:func_70299_a:70]: setInventorySlotContents(); slot: 8

> [01:54:28] [Client thread/INFO]: [CHAT] Error occurred. Inventory size: 8

> [01:54:28] [Client thread/INFO] [sTDOUT]: [ru.iammaxim.tesitems.Player.CustomPlayerInventory:func_70299_a:70]: setInventorySlotContents(); slot: 9

> [01:54:28] [Client thread/INFO]: [CHAT] Error occurred. Inventory size: 8

> [01:54:28] [Client thread/INFO] [sTDOUT]: [ru.iammaxim.tesitems.Player.CustomPlayerInventory:func_70299_a:70]: setInventorySlotContents(); slot: 10

> [01:54:28] [Client thread/INFO]: [CHAT] Error occurred. Inventory size: 8

> [01:54:28] [Client thread/INFO] [sTDOUT]: [ru.iammaxim.tesitems.Player.CustomPlayerInventory:func_70299_a:70]: setInventorySlotContents(); slot: 11

> [01:54:28] [Client thread/INFO]: [CHAT] Error occurred. Inventory size: 8

> [01:54:28] [Client thread/INFO] [sTDOUT]: [ru.iammaxim.tesitems.Player.CustomPlayerInventory:func_70299_a:70]: setInventorySlotContents(); slot: 12

> [01:54:28] [Client thread/INFO]: [CHAT] Error occurred. Inventory size: 8

> [01:54:28] [Client thread/INFO] [sTDOUT]: [ru.iammaxim.tesitems.Player.CustomPlayerInventory:func_70299_a:70]: setInventorySlotContents(); slot: 13

> [01:54:28] [Client thread/INFO]: [CHAT] Error occurred. Inventory size: 8

> java.lang.IndexOutOfBoundsException: Index: 14, Size: 14

> at java.util.ArrayList.rangeCheck(Unknown Source) ~[?:1.8.0_60]

> at java.util.ArrayList.get(Unknown Source) ~[?:1.8.0_60]

> at net.minecraft.inventory.Container.func_75139_a(SourceFile:104) ~[zs.class:?]

> at net.minecraft.inventory.Container.func_75131_a(SourceFile:390) ~[zs.class:?]

> at net.minecraft.client.network.NetHandlerPlayClient.func_147241_a(NetHandlerPlayClient.java:1062) ~[bjb.class:?]

> at net.minecraft.network.play.server.S30PacketWindowItems.func_148833_a(SourceFile:49) ~[go.class:?]

> at net.minecraft.network.play.server.S30PacketWindowItems.func_148833_a(SourceFile:11) ~[go.class:?]

> at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:212) ~[ej.class:?]

> at net.minecraft.client.multiplayer.PlayerControllerMP.func_78765_e(PlayerControllerMP.java:273) ~[bje.class:?]

> at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1602) ~[bao.class:?]

> at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:973) ~[bao.class:?]

> at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:898) [bao.class:?]

> at net.minecraft.client.main.Main.main(SourceFile:148) [Main.class:?]

> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_60]

> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_60]

> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_60]

> at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_60]

> at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]

> at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]

 

and then it crashes with IndexOutOfBoundsException. I don't understand why it call setInventorySlotContents() more than 8 times. Can you explain how it works, because I couldn't get any info from stacktrace, please?

Link to comment
Share on other sites

Dude... You have no idea what you are doing, do you? :) Just because it works doesn't mean is is written properly. Post your whole code.

 

compound.getId() return integer-type of NBT where NBTTagCompound equals 10.

compound.getTagList("list",  nbtTypeOfListElements); - as you can see, yeah, it will cover with 10 since list is NBTTagCompound-based, but if the list was e.g: Strings, then what?

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

 

 

public class CustomPlayerInventory implements IInventory {

    private ItemStack[] inventory;

    private String name = "Inventory";

    private EntityPlayer player;

    private int currentItemSlot = 4;

 

    public CustomPlayerInventory(EntityPlayer player, int size) {

        this.player = player;

        inventory = new ItemStack;

    }

 

    public boolean isInvNameLocalized() {

        return name.length() > 0;

    }

 

    @Override

    public int getSizeInventory() {

        return inventory.length;

    }

 

    @Override

    public ItemStack getStackInSlot(int slot) {

//        System.out.println("getStackInSlot(); slot: " + slot);

        if (slot < inventory.length)

            return inventory[slot];

        else

            return null;

    }

 

    public int getFirstEmptySlot() {

        for (int i = 4; i < getSizeInventory(); i++) {

            if (getStackInSlot(i) == null) return i;

        }

        return -1;

    }

 

    public int getFirstItemSlot(Item item) {

        for (int i = 0; i < getSizeInventory(); i++) {

            if (inventory != null)

                if (Item.getIdFromItem(item) == Item.getIdFromItem(inventory.getItem())) {

                    System.out.println();

                    return i;

                }

        }

        return -1;

    }

 

    public int pickupItem(ItemStack itemStack) {

//        System.out.println("pickup " + Item.getIdFromItem(itemStack.getItem()) + " " + itemStack.stackSize);

        int i = getFirstItemSlot(itemStack.getItem());

//        System.out.println("I " + i);

        if (i == -1) i = getFirstEmptySlot();

//        System.out.println("I " + i);

        if (i == -1) return -1;

//        System.out.println("I " + i);

        return addItemsToSlot(i, itemStack);

    }

 

    public int addItemsToSlot(int slot, ItemStack itemStack) {

        ItemStack src = getStackInSlot(slot);

        if (src != null) {

            if (Item.getIdFromItem(src.getItem()) != Item.getIdFromItem(itemStack.getItem())) {

                System.out.println("ERROR! Trying to add items of another type to slot");

                return itemStack.stackSize;

            }

            if (src.stackSize + itemStack.stackSize <= src.getMaxStackSize()) {

                src.stackSize += itemStack.stackSize;

                return 0;

            } else {

                src.stackSize = src.getMaxStackSize();

                int i = src.stackSize + itemStack.stackSize - src.getMaxStackSize();

                itemStack.stackSize = i;

                int j;

                while ((j = getFirstEmptySlot()) != -1 && i != 0) {

                    i = addItemsToSlot(j, itemStack);

                }

                return i;

            }

        } else {

            setInventorySlotContents(slot, itemStack);

            return 0;

        }

    }

 

    @Override

    public ItemStack decrStackSize(int slot, int amount) {

//        System.out.println("decrStackSize(); slot: " + slot + " amount: " + amount);

        ItemStack stack = getStackInSlot(slot);

        if (stack != null)

        {

            if (stack.stackSize > amount)

            {

                stack = stack.splitStack(amount);

                this.markDirty();

            }

            else

            {

                setInventorySlotContents(slot, null);

            }

        }

        return stack;

    }

 

    @Override

    public ItemStack getStackInSlotOnClosing(int slot) {

//        System.out.println("getStackInSlotOnClosing(); slot: " + slot);

        ItemStack stack = getStackInSlot(slot);

        setInventorySlotContents(slot, null);

        return stack;

    }

 

    @Override

    public void setInventorySlotContents(int slot, ItemStack itemStack) {

        if (slot < 4) updateArmor();

//        System.out.println("setInventorySlotContents(); slot: " + slot);

        if (slot < inventory.length) {

            this.inventory[slot] = itemStack;

            if (itemStack != null && itemStack.stackSize > this.getInventoryStackLimit()) {

                itemStack.stackSize = this.getInventoryStackLimit();

            }

            this.markDirty();

        } /*else {

            Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("Error occurred. Inventory size: " + inventory.length));

        }*/

    }

 

    @Override

    public String getInventoryName() {

        return name;

    }

 

    @Override

    public boolean hasCustomInventoryName() {

        return false;

    }

 

    @Override

    public int getInventoryStackLimit() {

        return 64;

    }

 

    public void updateArmor() {

        for (int i = 0; i < 4; i++) {

            player.inventory.armorInventory = getStackInSlot(i);

        }

    }

 

    public void updateSize(int newSize) {

        ItemStack[] inv = new ItemStack[newSize];

        for (int i = 0; i < newSize; i++) {

            if (i < getSizeInventory())

                inv = inventory;

        }

        inventory = inv;

    }

 

    @Override

    public void markDirty() {

        updateArmor();

        for (int i = 4; i < getSizeInventory(); ++i)

        {

            if (getStackInSlot(i) != null && getStackInSlot(i).stackSize == 0) {

                inventory = null;

            }

        }

    }

 

    @Override

    public boolean isUseableByPlayer(EntityPlayer player) {

        return true;

    }

 

    @Override

    public void openInventory() {

 

    }

 

    @Override

    public void closeInventory() {

 

    }

 

    @Override

    public boolean isItemValidForSlot(int slot, ItemStack itemStack) {

        return true;

    }

 

    public void writeToNBT(NBTTagCompound compound)

    {

        NBTTagList items = new NBTTagList();

 

        compound.setInteger("size", getSizeInventory());

        for (int i = 0; i < getSizeInventory(); ++i)

        {

            if (getStackInSlot(i) != null)

            {

                NBTTagCompound item = new NBTTagCompound();

                item.setByte("Slot", (byte) i);

                getStackInSlot(i).writeToNBT(item);

                items.appendTag(item);

            }

        }

 

        compound.setTag("CustomPlayerInventory", items);

    }

 

    public void readFromNBT(NBTTagCompound compound)

    {

//        System.out.println("readFromNBT(); compound == null: " + (compound == null));

        NBTTagList items = compound.getTagList("CustomPlayerInventory",  compound.getId());

 

        for (int i = 0; i < items.tagCount(); ++i)

        {

            NBTTagCompound item = (NBTTagCompound) items.getCompoundTagAt(i);

            byte slot = item.getByte("Slot");

 

            if (slot >= 0 && slot < getSizeInventory()) {

                inventory[slot] = ItemStack.loadItemStackFromNBT(item);

            }

        }

    }

 

    public ItemStack getCurrentItem() {

        return getStackInSlot(currentItemSlot);

    }

 

    public void changeCurrentItem() {

        if (currentItemSlot == 4) currentItemSlot = 5;

        else currentItemSlot = 4;

    }

 

    public void setCurrentItem(int slot) {

        currentItemSlot = slot;

    }

}

 

 

 

 

public class CustomPlayer implements IExtendedEntityProperties {

    public final static String EXT_PROP_NAME = "CustomPlayer";

    private final EntityPlayer player;

    public CustomPlayerInventory inventory;

 

    public CustomPlayer(EntityPlayer player) {

        this.player = player;

 

    }

 

    public static void register(EntityPlayer player) {

        player.registerExtendedProperties(CustomPlayer.EXT_PROP_NAME, new CustomPlayer(player));

        NBTTagCompound compound = new NBTTagCompound();

        compound.setInteger("size", 6);

        player.getExtendedProperties(CustomPlayer.EXT_PROP_NAME).saveNBTData(compound);

    }

 

    public static CustomPlayer get(EntityPlayer player) {

        return (CustomPlayer) player.getExtendedProperties(EXT_PROP_NAME);

    }

 

    @Override

    public void saveNBTData(NBTTagCompound compound) {

        if (inventory == null) {

            int size = compound.getInteger("size");

            inventory = new CustomPlayerInventory(player, size);

        }

        NBTTagCompound props = new NBTTagCompound();

        compound.setInteger("size", inventory.getSizeInventory());

        inventory.writeToNBT(props);

        compound.setTag(EXT_PROP_NAME, props);

    }

 

    @Override

    public void loadNBTData(NBTTagCompound compound) {

        this.inventory = new CustomPlayerInventory(player, compound.getInteger("size"));

        inventory.readFromNBT(compound.getCompoundTag(EXT_PROP_NAME));

    }

 

    @Override

    public void init(Entity entity, World world) {}

}

 

 

 

public class CustomPlayerContainer extends Container {

    private static final int ARMOR_START = 0, ARMOR_END = 3, HANDS_START = 4, HANDS_END = 5, INV_START = 6;

    private static int INV_END;

 

    InventoryPlayer inventoryPlayer;

    CustomPlayerInventory customPlayerInventory;

 

    @Override

    public boolean canInteractWith(EntityPlayer player) {

        return true;

    }

 

    private int size;

 

    public CustomPlayerContainer(EntityPlayer player, InventoryPlayer inventoryPlayer, CustomPlayerInventory customPlayerInventory) {

        this.inventoryPlayer = inventoryPlayer;

        this.customPlayerInventory = customPlayerInventory;

        size = customPlayerInventory.getSizeInventory();

        INV_END = size-1;

        addSlotToContainer(new ArmorSlot(player, customPlayerInventory, 0, 10, 10, 0));//helmet

        addSlotToContainer(new ArmorSlot(player, customPlayerInventory, 1, 10, 29, 1));//chestplate

        addSlotToContainer(new ArmorSlot(player, customPlayerInventory, 2, 10, 48, 2));//leggings

        addSlotToContainer(new ArmorSlot(player, customPlayerInventory, 3, 10, 67, 3));//boots

        addSlotToContainer(new Slot(customPlayerInventory, 4, 29, 29));//hand 1

        addSlotToContainer(new Slot(customPlayerInventory, 5, 48, 29));//hand 2

        for (int i = 0; i < size - 6; i++) {

            addSlotToContainer(new Slot(customPlayerInventory, 6 + i, 29 + i * 19, 10));

        }

//        System.out.println("Creating container: " + size + " " + inventorySlots.size());

    }

 

    public void updateSlots() {

        if (customPlayerInventory.getSizeInventory() > size) {

            for (int i = size; i < customPlayerInventory.getSizeInventory(); i++) {

                addSlotToContainer(new Slot(customPlayerInventory, 6 + size, 29 + i * 19, 10));

            }

        }

    }

 

    @Override

    public ItemStack transferStackInSlot(EntityPlayer player, int par2)

    {

//        System.out.println("TransferSlot(); par2: " + par2);

        ItemStack itemstack = null;

        Slot slot = (Slot) this.inventorySlots.get(par2);

        if (slot != null && slot.getHasStack()) {

            ItemStack itemstack1 = slot.getStack();

            itemstack = itemstack1.copy();

            if (par2 < HANDS_START) {

                if (!this.mergeItemStack(itemstack1, HANDS_START, INV_END + 1, true)) {

                    return null;

                }

                slot.onSlotChange(itemstack1, itemstack);

            } else {

                if (itemstack1.getItem() instanceof ItemArmor) {

                    int type = ((ItemArmor) itemstack1.getItem()).armorType;

                    if (!this.mergeItemStack(itemstack1, ARMOR_START + type, ARMOR_START + type + 1, false)) {

                        return null;

                    }

                } else if (par2 >= INV_START) {

                    if (!this.mergeItemStack(itemstack1, HANDS_START, HANDS_END + 1, false)) {

                        return null;

                    }

                } else if (par2 >= HANDS_START && par2 < HANDS_END + 1) {

                    if (!this.mergeItemStack(itemstack1, INV_START, INV_END + 1, false)) {

                        return null;

                    }

                }

            }

            if (itemstack1.stackSize == 0) {

                slot.putStack((ItemStack) null);

            } else {

                slot.onSlotChanged();

            }

            if (itemstack1.stackSize == itemstack.stackSize) {

                return null;

            }

            slot.onPickupFromSlot(player, itemstack1);

        }

        return itemstack;

    }

 

 

    public class ArmorSlot extends Slot {

        final int armorType;

        final EntityPlayer player;

 

        public ArmorSlot(EntityPlayer player, IInventory inventory, int slot, int x, int y, int armorType) {

            super(inventory, slot, x, y);

            this.player = player;

            this.armorType = armorType;

        }

 

        public int getSlotStackLimit()

        {

            return 1;

        }

 

        public boolean isItemValid(ItemStack itemstack)

        {

            Item item = (itemstack == null ? null : itemstack.getItem());

            return item != null && item.isValidArmor(itemstack, armorType, player);

        }

 

        @SideOnly(Side.CLIENT)

        public IIcon getBackgroundIconIndex()

        {

            return ItemArmor.func_94602_b(this.armorType);

        }

    }

}

 

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Hello. I've been having a problem when launching minecraft forge. It just doesn't open the game, and leaves me with this "(exit code 1)" error. Both regular and optifine versions of minecraft launch just fine, tried both with 1.18.2 and 1.20.1. I can assure that my drivers are updated so that can't be it, and i've tried using Java 17, 18 and 21 to no avail. Even with no mods installed, the thing won't launch. I'll leave the log here, although it's in spanish: https://jmp.sh/s/FPqGBSi30fzKJDt2M1gc My specs are this: Ryzen 3 4100 || Radeon R9 280x || 16gb ram || Windows 10 I'd appreciate any help, thank you in advance.
    • Hey, Me and my friends decided to start up a Server with "a few" mods, the last few days everything went well we used all the items we wanted. Now our Game crashes the moment we touch a Lava Bucket inside our Inventory. It just instantly closes and gives me an "Alc Cleanup"  Crash screen (Using GDLauncher). I honestly dont have a clue how to resolve this error. If anyone could help id really appreciate it, I speak German and Englisch so you can choose whatever you speak more fluently. Thanks in Advance. Plus I dont know how to link my Crash Report help for that would be nice too whoops
    • I hosted a minecraft server and I modded it, and there is always an error on the console which closes the server. If someone knows how to repair it, it would be amazing. Thank you. I paste the crash report down here: ---- Minecraft Crash Report ---- WARNING: coremods are present:   llibrary (llibrary-core-1.0.11-1.12.2.jar)   WolfArmorCore (WolfArmorAndStorage-1.12.2-3.8.0-universal-signed.jar)   AstralCore (astralsorcery-1.12.2-1.10.27.jar)   CreativePatchingLoader (CreativeCore_v1.10.71_mc1.12.2.jar)   SecurityCraftLoadingPlugin ([1.12.2] SecurityCraft v1.9.8.jar)   ForgelinPlugin (Forgelin-1.8.4.jar)   midnight (themidnight-0.3.5.jar)   FutureMC (Future-MC-0.2.19.jar)   SpartanWeaponry-MixinLoader (SpartanWeaponry-1.12.2-1.5.3.jar)   Backpacked (backpacked-1.4.3-1.12.2.jar)   LoadingPlugin (Reskillable-1.12.2-1.13.0.jar)   LoadingPlugin (Bloodmoon-MC1.12.2-1.5.3.jar) Contact their authors BEFORE contacting forge // There are four lights! Time: 3/28/24 12:17 PM Description: Exception in server tick loop net.minecraftforge.fml.common.LoaderException: java.lang.NoClassDefFoundError: net/minecraft/client/multiplayer/WorldClient     at net.minecraftforge.fml.common.AutomaticEventSubscriber.inject(AutomaticEventSubscriber.java:89)     at net.minecraftforge.fml.common.FMLModContainer.constructMod(FMLModContainer.java:612)     at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:498)     at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91)     at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150)     at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76)     at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399)     at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71)     at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116)     at com.google.common.eventbus.EventBus.post(EventBus.java:217)     at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:219)     at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:197)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:498)     at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:91)     at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:150)     at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:76)     at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399)     at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:71)     at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:116)     at com.google.common.eventbus.EventBus.post(EventBus.java:217)     at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:136)     at net.minecraftforge.fml.common.Loader.loadMods(Loader.java:595)     at net.minecraftforge.fml.server.FMLServerHandler.beginServerLoading(FMLServerHandler.java:98)     at net.minecraftforge.fml.common.FMLCommonHandler.onServerStart(FMLCommonHandler.java:333)     at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:125)     at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:486)     at java.lang.Thread.run(Thread.java:750) Caused by: java.lang.NoClassDefFoundError: net/minecraft/client/multiplayer/WorldClient     at java.lang.Class.getDeclaredMethods0(Native Method)     at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)     at java.lang.Class.privateGetPublicMethods(Class.java:2902)     at java.lang.Class.getMethods(Class.java:1615)     at net.minecraftforge.fml.common.eventhandler.EventBus.register(EventBus.java:82)     at net.minecraftforge.fml.common.AutomaticEventSubscriber.inject(AutomaticEventSubscriber.java:82)     ... 31 more Caused by: java.lang.ClassNotFoundException: net.minecraft.client.multiplayer.WorldClient     at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191)     at java.lang.ClassLoader.loadClass(ClassLoader.java:418)     at java.lang.ClassLoader.loadClass(ClassLoader.java:351)     ... 37 more Caused by: net.minecraftforge.fml.common.asm.ASMTransformerWrapper$TransformerException: Exception in class transformer net.minecraftforge.fml.common.asm.transformers.SideTransformer@4e558728 from coremod FMLCorePlugin     at net.minecraftforge.fml.common.asm.ASMTransformerWrapper$TransformerWrapper.transform(ASMTransformerWrapper.java:260)     at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279)     at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176)     ... 39 more Caused by: java.lang.RuntimeException: Attempted to load class bsb for invalid side SERVER     at net.minecraftforge.fml.common.asm.transformers.SideTransformer.transform(SideTransformer.java:62)     at net.minecraftforge.fml.common.asm.ASMTransformerWrapper$TransformerWrapper.transform(ASMTransformerWrapper.java:256)     ... 41 more A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- System Details -- Details:     Minecraft Version: 1.12.2     Operating System: Linux (amd64) version 5.10.0-28-cloud-amd64     Java Version: 1.8.0_382, Temurin     Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Temurin     Memory: 948745536 bytes (904 MB) / 1564999680 bytes (1492 MB) up to 7635730432 bytes (7282 MB)     JVM Flags: 2 total; -Xmx8192M -Xms256M     IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0     FML: MCP 9.42 Powered by Forge 14.23.5.2860 63 mods loaded, 63 mods active     States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored     | State | ID                 | Version                 | Source                                                | Signature                                |     |:----- |:------------------ |:----------------------- |:----------------------------------------------------- |:---------------------------------------- |     | LC    | minecraft          | 1.12.2                  | minecraft.jar                                         | None                                     |     | LC    | mcp                | 9.42                    | minecraft.jar                                         | None                                     |     | LC    | FML                | 8.0.99.99               | forge-1.12.2-14.23.5.2860.jar                         | e3c3d50c7c986df74c645c0ac54639741c90a557 |     | LC    | forge              | 14.23.5.2860            | forge-1.12.2-14.23.5.2860.jar                         | e3c3d50c7c986df74c645c0ac54639741c90a557 |     | LC    | creativecoredummy  | 1.0.0                   | minecraft.jar                                         | None                                     |     | LC    | backpacked         | 1.4.2                   | backpacked-1.4.3-1.12.2.jar                           | None                                     |     | LC    | itemblacklist      | 1.4.3                   | ItemBlacklist-1.4.3.jar                               | None                                     |     | LC    | securitycraft      | v1.9.8                  | [1.12.2] SecurityCraft v1.9.8.jar                     | None                                     |     | LC    | aiimprovements     | 0.0.1.3                 | AIImprovements-1.12-0.0.1b3.jar                       | None                                     |     | LC    | jei                | 4.16.1.301              | jei_1.12.2-4.16.1.301.jar                             | None                                     |     | LC    | appleskin          | 1.0.14                  | AppleSkin-mc1.12-1.0.14.jar                           | None                                     |     | LC    | baubles            | 1.5.2                   | Baubles-1.12-1.5.2.jar                                | None                                     |     | LC    | astralsorcery      | 1.10.27                 | astralsorcery-1.12.2-1.10.27.jar                      | a0f0b759d895c15ceb3e3bcb5f3c2db7c582edf0 |     | LC    | attributefix       | 1.0.12                  | AttributeFix-Forge-1.12.2-1.0.12.jar                  | None                                     |     | LC    | atum               | 2.0.20                  | Atum-1.12.2-2.0.20.jar                                | None                                     |     | LC    | bloodmoon          | 1.5.3                   | Bloodmoon-MC1.12.2-1.5.3.jar                          | d72e0dd57935b3e9476212aea0c0df352dd76291 |     | LC    | forgelin           | 1.8.4                   | Forgelin-1.8.4.jar                                    | None                                     |     | LC    | bountiful          | 2.2.2                   | Bountiful-2.2.2.jar                                   | None                                     |     | LC    | camera             | 1.0.10                  | camera-1.0.10.jar                                     | None                                     |     | LC    | chisel             | MC1.12.2-1.0.2.45       | Chisel-MC1.12.2-1.0.2.45.jar                          | None                                     |     | LC    | collective         | 3.0                     | collective-1.12.2-3.0.jar                             | None                                     |     | LC    | reskillable        | 1.12.2-1.13.0           | Reskillable-1.12.2-1.13.0.jar                         | None                                     |     | LC    | compatskills       | 1.12.2-1.17.0           | CompatSkills-1.12.2-1.17.0.jar                        | None                                     |     | LC    | creativecore       | 1.10.0                  | CreativeCore_v1.10.71_mc1.12.2.jar                    | None                                     |     | LC    | customnpcs         | 1.12                    | CustomNPCs_1.12.2-(05Jul20).jar                       | None                                     |     | LC    | darknesslib        | 1.1.2                   | DarknessLib-1.12.2-1.1.2.jar                          | 220f10d3a93b3ff5fbaa7434cc629d863d6751b9 |     | LC    | dungeonsmod        | @VERSION@               | DungeonsMod-1.12.2-1.0.8.jar                          | None                                     |     | LC    | enhancedvisuals    | 1.3.0                   | EnhancedVisuals_v1.4.4_mc1.12.2.jar                   | None                                     |     | LC    | extrautils2        | 1.0                     | extrautils2-1.12-1.9.9.jar                            | None                                     |     | LC    | futuremc           | 0.2.6                   | Future-MC-0.2.19.jar                                  | None                                     |     | LC    | geckolib3          | 3.0.30                  | geckolib-forge-1.12.2-3.0.31.jar                      | None                                     |     | LC    | gottschcore        | 1.15.1                  | GottschCore-mc1.12.2-f14.23.5.2859-v1.15.1.jar        | None                                     |     | LC    | hardcorerevival    | 1.2.0                   | HardcoreRevival_1.12.2-1.2.0.jar                      | None                                     |     | LC    | waila              | 1.8.26                  | Hwyla-1.8.26-B41_1.12.2.jar                           | None                                     |     | LE    | imsm               | 1.12                    | Instant Massive Structures Mod 1.12.2.jar             | None                                     |     | L     | journeymap         | 1.12.2-5.7.1p2          | journeymap-1.12.2-5.7.1p2.jar                         | None                                     |     | L     | mobsunscreen       | @version@               | mobsunscreen-1.12.2-3.1.5.jar                         | None                                     |     | L     | morpheus           | 1.12.2-3.5.106          | Morpheus-1.12.2-3.5.106.jar                           | None                                     |     | L     | llibrary           | 1.7.20                  | llibrary-1.7.20-1.12.2.jar                            | None                                     |     | L     | mowziesmobs        | 1.5.8                   | mowziesmobs-1.5.8.jar                                 | None                                     |     | L     | nocubessrparmory   | 3.0.0                   | NoCubes_SRP_Combat_Addon_3.0.0.jar                    | None                                     |     | L     | nocubessrpnests    | 3.0.0                   | NoCubes_SRP_Nests_Addon_3.0.0.jar                     | None                                     |     | L     | nocubessrpsurvival | 3.0.0                   | NoCubes_SRP_Survival_Addon_3.0.0.jar                  | None                                     |     | L     | nocubesrptweaks    | V4.1                    | nocubesrptweaks-V4.1.jar                              | None                                     |     | L     | patchouli          | 1.0-23.6                | Patchouli-1.0-23.6.jar                                | None                                     |     | L     | artifacts          | 1.1.2                   | RLArtifacts-1.1.2.jar                                 | None                                     |     | L     | rsgauges           | 1.2.8                   | rsgauges-1.12.2-1.2.8.jar                             | None                                     |     | L     | rustic             | 1.1.7                   | rustic-1.1.7.jar                                      | None                                     |     | L     | silentlib          | 3.0.13                  | SilentLib-1.12.2-3.0.14+168.jar                       | None                                     |     | L     | scalinghealth      | 1.3.37                  | ScalingHealth-1.12.2-1.3.42+147.jar                   | None                                     |     | L     | lteleporters       | 1.12.2-3.0.2            | simpleteleporters-1.12.2-3.0.2.jar                    | None                                     |     | L     | spartanshields     | 1.5.5                   | SpartanShields-1.12.2-1.5.5.jar                       | None                                     |     | L     | spartanweaponry    | 1.5.3                   | SpartanWeaponry-1.12.2-1.5.3.jar                      | None                                     |     | L     | srparasites        | 1.9.18                  | SRParasites-1.12.2v1.9.18.jar                         | None                                     |     | L     | treasure2          | 2.2.0                   | Treasure2-mc1.12.2-f14.23.5.2859-v2.2.1.jar           | None                                     |     | L     | treeharvester      | 4.0                     | treeharvester_1.12.2-4.0.jar                          | None                                     |     | L     | twilightforest     | 3.11.1021               | twilightforest-1.12.2-3.11.1021-universal.jar         | None                                     |     | L     | variedcommodities  | 1.12.2                  | VariedCommodities_1.12.2-(31Mar23).jar                | None                                     |     | L     | voicechat          | 1.12.2-2.4.32           | voicechat-forge-1.12.2-2.4.32.jar                     | None                                     |     | L     | wolfarmor          | 3.8.0                   | WolfArmorAndStorage-1.12.2-3.8.0-universal-signed.jar | None                                     |     | L     | worldborder        | 2.3                     | worldborder_1.12.2-2.3.jar                            | None                                     |     | L     | midnight           | 0.3.5                   | themidnight-0.3.5.jar                                 | None                                     |     | L     | structurize        | 1.12.2-0.10.277-RELEASE | structurize-1.12.2-0.10.277-RELEASE.jar               | None                                     |     Loaded coremods (and transformers):  llibrary (llibrary-core-1.0.11-1.12.2.jar)   net.ilexiconn.llibrary.server.core.plugin.LLibraryTransformer   net.ilexiconn.llibrary.server.core.patcher.LLibraryRuntimePatcher WolfArmorCore (WolfArmorAndStorage-1.12.2-3.8.0-universal-signed.jar)    AstralCore (astralsorcery-1.12.2-1.10.27.jar)    CreativePatchingLoader (CreativeCore_v1.10.71_mc1.12.2.jar)    SecurityCraftLoadingPlugin ([1.12.2] SecurityCraft v1.9.8.jar)    ForgelinPlugin (Forgelin-1.8.4.jar)    midnight (themidnight-0.3.5.jar)   com.mushroom.midnight.core.transformer.MidnightClassTransformer FutureMC (Future-MC-0.2.19.jar)   thedarkcolour.futuremc.asm.CoreTransformer SpartanWeaponry-MixinLoader (SpartanWeaponry-1.12.2-1.5.3.jar)    Backpacked (backpacked-1.4.3-1.12.2.jar)   com.mrcrayfish.backpacked.asm.BackpackedTransformer LoadingPlugin (Reskillable-1.12.2-1.13.0.jar)   codersafterdark.reskillable.base.asm.ClassTransformer LoadingPlugin (Bloodmoon-MC1.12.2-1.5.3.jar)   lumien.bloodmoon.asm.ClassTransformer     Profiler Position: N/A (disabled)     Is Modded: Definitely; Server brand changed to 'fml,forge'     Type: Dedicated Server (map_server.txt)
    • When i add mods like falling leaves, visuality and kappas shaders, even if i restart Minecraft they dont show up in the mods menu and they dont work
    • Delete the forge-client.toml file in your config folder  
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.