Jump to content

[1.8]iinventory howto prevent a player to move certain slot in inventory<Solved>


perromercenary00

Recommended Posts

good days

 

as in the title explain i wanna make an inventory whith a gui in which you just can interacc whith the enable itemSlots

 

is becose i make a gui that allow acces to mobs inventory things like armours and held item , and i dont wanna have player exploting this to dissarm armed mobs or pillage expensive items from mobs or other players

Link to comment
Share on other sites

yes but

i want them to be visible  and you can not move this items anywhere

Override
canTakeStack

in a custom Slot class.

the other tink i notice is that aparently you can not change the declared container  on the fly and i need someting like that

but is little hars to explain in english and

tats gonna need video but no time now

I have no idea what you mean.
Link to comment
Share on other sites

Only the slots that you actually register via

addSlotToContainer

in your Container class will be usable by the player.

 

IInventory has a "isUsableByplayer" method right? Or is that on Container? Either way, override it to false and/or some method to check if they can edit or not and you should be fine, no?

 

By default its true, or its something like:

 

@Override
    public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer)
    {
        return true;
    }

 

Sometimes people use this to determine if player is within 8 blocks of the object:

 

@Override
    public boolean isUseableByPlayer(EntityPlayer playerIn)
    {
        return worldObj.getTileEntity(pos) != this ? false : 
              playerIn.getDistanceSq(pos.getX()+0.5D, pos.getY()+0.5D, 
              pos.getZ()+0.5D) <= 64.0D;
    }

 

Isn't that checking if the player is able to utilize the inventory, as in, modify it?

www.YouTube.com/WeiseGamer

www.twitter.com/WeiseGamer

Link to comment
Share on other sites

That would be for the whole container though.

 

True, if the slots are all assigned to the same IInventory.

 

this.addSlotToContainer(new Slot(IInventory, slotIndex, xPos, yPos))

 

Make the "enable slots" have their own IInventory? Or make a custom Slot called "enableSlot" and @Override onSlotClicked.

 

I feel there are a few ways of doing what he wants, but its a little hard to understand the expected result.

 

Or add an IF statement that checks the slotClicked on isUsableByPlayer (I can't recall if the slot is passed into this class or not).

www.YouTube.com/WeiseGamer

www.twitter.com/WeiseGamer

Link to comment
Share on other sites

good nigths

 

sorry i been working on this and forget all about the post

 

I found  its posible to, on the fly change the Container and the the gui background using a trick calling again the gui handler, in mi case

 

player.openGui(Mercenary.instance, guiHandlers.GUIMERCENARIA00, worldIn, 0, 0, 0);

 

but must be done in the rigth moment and has its downsides,  its throws to the ground, whatever the itemStack you have in your hand

 

this code has some issues, sometimes the armor gets stuck and the gui/container don't change, i think is becoze it take some tics to the server to recive the packages or whatever and apply changes to inventory, so its end whith something null

 

Video

 

here i can open the inventory of any entityLiving mob set armours change weapons, thats what i wanna control,

i create 3 sets of custome container/gui 

 

the first for  entities whitout armour or  armour whitout pockets  just five slots for armour and main weapon

the second for the armours whith sevent pockets six for munition and one for SubWeapon

the third for armours whith 23 pockets , one subWeapon plus 6 slots plus backpack 16 slots

 

the gui now change in base to what its inside the entity chest slot

 

 

###

Questions

- ¿is posible to send a package whith an NBTTag compound  whith all the items  ffrom local to server ?? i need to fix sync

 

- ¿how do you do the canTakeStack ting

i found the code

    public boolean canTakeStack(EntityPlayer playerIn)
    {
        return true;
    }
     @SideOnly(Side.CLIENT)
    public boolean canBeHovered()
    {
        return true;
    }

but no idea of how actually use them

 

well thanks

Link to comment
Share on other sites

 

 

(hiding them, by setting e.g. xCoord to -999)

thats good thats solve most of the troubles but was not so easy i have to make seters a getters to properly control gui and container from iinventory  and add some methods to delete the arrayList in the container and recreate it as i whish at demand,

 

for some reason i could not override  the other method in the original container class whitout end whit weird behaveours

if i override  slotClick(int slotId, int clickedButton, int mode, EntityPlayer playerIn) whiout changes it works until player try to drag someting then crash.  or left all the slots unaccesibles  close/open to fix , whith this method i could avoid the player to make click and get the contens for individual slots 

 

ñaa i gonna end written some rules to avoid open the gui over some mobs and creatures

 

###

the nest question is how do you prevent to put items that are not armour in the armmour slots, so you can only put helmet items in the helmet slots

and boot in boots slot

im pretty sure i read something about it in a guide from jabellar but now idont find it anywhere 

 

Link to comment
Share on other sites

For your first problem... I am not sure why you are making it so complicated.

You need to add all possible slots to the Container from the beginning. Then you can hide/show them at will, merely by setting their xCoord. That's all you need, you just have to do it on both client & server.

 

2nd, for preventing certain Items in Slots: Override

isItemValid

.

Link to comment
Share on other sites

 

well is becoze i been alredy tryng that and don't works

this is in the IInventory class, but this is just for when player pickup somethig or drop something in the inventory

i think must do same but in the slot class and thats trouble

 

if i extend the Slot.class whit mi mercenarySlot.class for some reason the forge Container.class don't accep mi  slot's  and i end whith a bunch of empty slots in the gui,  is like all slots that reach to Container.class is null or becomes null and it sends its like that

 

// ###################################################################################################
/**
 * Returns true if automation is allowed to insert the given stack (ignoring
 * stack size) into the given slot.
 */
@Override
public boolean isItemValidForSlot(int index, ItemStack stack) {


	if (index > 0 & index < 5  )
	{

		 /** Stores the armor type: 0 is helmet, 1 is plate, 2 is legs and 3 is boots */

		int armadura = armasDisparables.esArmadura(stack);

		if (armadura < 0)
		{
			return false;
		}

		//botas
		if (index == 1 & armadura != 3)
		{
			return false;
		}

		//pantalones
		if (index == 2 & armadura != 2)
		{
			return false;
		}

		//chest
		if (index == 3 & armadura != 1)
		{
			return false;
		}

		//casco
		if (index == 4 & armadura != 0)
		{
			return false;
		}


	}

	return true;

}

// ###################################################################################################

 

package mercenarymod.gui.containers;

//package net.minecraft.inventory;

import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

public class mercenarySlot extends Slot {
/** The index of the slot in the inventory. */
private final int slotIndex;
/** The inventory we want to extract a slot from. */
public final IInventory inventory;
/** the id of the slot(also the index in the inventory arraylist) */
public int slotNumber;
/** display position of the inventory slot on the screen x axis */
public int xDisplayPosition;
/** display position of the inventory slot on the screen y axis */
public int yDisplayPosition;
private static final String __OBFID = "CL_00001762";
private boolean habilitado = true;

// ##########################################################################################3
public mercenarySlot(IInventory inventoryIn, int index, int xPosition, int yPosition) {
	super(inventoryIn, index, xPosition, yPosition);
	this.inventory = inventoryIn;
	this.slotIndex = index;
	this.xDisplayPosition = xPosition;
	this.yDisplayPosition = yPosition;
}

// ##########################################################################################3
@Override
/**
 * if par2 has more items than par1, onCrafting(item,countIncrease) is
 * called
 */
public void onSlotChange(ItemStack p_75220_1_, ItemStack p_75220_2_) {
	if (p_75220_1_ != null && p_75220_2_ != null) {
		if (p_75220_1_.getItem() == p_75220_2_.getItem()) {
			int i = p_75220_2_.stackSize - p_75220_1_.stackSize;

			if (i > 0) {
				this.onCrafting(p_75220_1_, i);
			}
		}
	}
}

// ##########################################################################################3
@Override
/**
 * the itemStack passed in is the output - ie, iron ingots, and pickaxes,
 * not ore and wood. Typically increases an internal count then calls
 * onCrafting(item).
 */
protected void onCrafting(ItemStack stack, int amount) {
}

// ##########################################################################################3
@Override
/**
 * the itemStack passed in is the output - ie, iron ingots, and pickaxes,
 * not ore and wood.
 */
protected void onCrafting(ItemStack stack) {
}

// ##########################################################################################3
@Override
public void onPickupFromSlot(EntityPlayer playerIn, ItemStack stack) {
	this.onSlotChanged();
}

// ##########################################################################################3
@Override
/**
 * Check if the stack is a valid item for this slot. Always true beside for
 * the armor slots.
 */


public boolean isItemValid(ItemStack stack) {

	return true;

}

// ##########################################################################################3
@Override
/**
 * Helper fnct to get the stack in the slot.
 */
public ItemStack getStack() {
	return this.inventory.getStackInSlot(this.slotIndex);
}

// ##########################################################################################3
@Override
/**
 * Returns if this slot contains a stack.
 */
public boolean getHasStack() {
	return this.getStack() != null;
}

// ##########################################################################################3
@Override
/**
 * Helper method to put a stack in the slot.
 */
public void putStack(ItemStack stack) {
	this.inventory.setInventorySlotContents(this.slotIndex, stack);
	this.onSlotChanged();
}

// ##########################################################################################3
@Override
/**
 * Called when the stack in a Slot changes
 */
public void onSlotChanged() {
	this.inventory.markDirty();
}

// ##########################################################################################3
@Override
/**
 * Returns the maximum stack size for a given slot (usually the same as
 * getInventoryStackLimit(), but 1 in the case of armor slots)
 */
public int getSlotStackLimit() {
	return this.inventory.getInventoryStackLimit();
}

// ##########################################################################################3
@Override
public int getItemStackLimit(ItemStack stack) {
	return this.getSlotStackLimit();
}

// ##########################################################################################3
@Override
@SideOnly(Side.CLIENT)
public String getSlotTexture() {
	return backgroundName;
}

// ##########################################################################################3
@Override
/**
 * Decrease the size of the stack in slot (first int arg) by the amount of
 * the second int arg. Returns the new stack.
 */
public ItemStack decrStackSize(int amount) {
	return this.inventory.decrStackSize(this.slotIndex, amount);
}

// ##########################################################################################3
@Override
/**
 * returns true if the slot exists in the given inventory and location
 */
public boolean isSlotInInventory(IInventory inv, int slotIn) {
	return inv == this.inventory && slotIn == this.slotIndex;
}

// ##########################################################################################3
@Override
/**
 * Return whether this slot's stack can be taken from this slot.
 */
public boolean canTakeStack(EntityPlayer playerIn) {
	return habilitado;
}

// ##########################################################################################3
@Override
/**
 * Actualy only call when we want to render the white square effect over the
 * slots. Return always True, except for the armor slot of the Donkey/Mule
 * (we can't interact with the Undead and Skeleton horses)
 */
@SideOnly(Side.CLIENT)
public boolean canBeHovered() {
	return habilitado;
}

// ##########################################################################################3
public void setHabilitado(boolean b) {
	habilitado = b;
}

// ##########################################################################################3
public boolean getHabilitado() {
	return habilitado;
}

}

 

 

 

package mercenarymod.gui.containers;

import net.minecraft.entity.Entity;

import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.ICrafting;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import com.google.common.collect.Lists;
import com.google.common.collect.Sets;

import mercenarymod.entidades.armasDisparables;
import mercenarymod.items.armasdefuego.inventario.inventarioArmas;
import mercenarymod.items.armasdefuego.inventario.inventarioArmasyEntidades;
import mercenarymod.tileentity.ModTileEntity;
import mercenarymod.utilidades.util;

public class ContainerMenuMercenario02 extends Container {

private int bolsillos = 0;

private inventarioArmasyEntidades inventarioenlaArmadura;

private IInventory playerInv = null;

private EntityLivingBase entidad = null;

/**
 * The current drag mode (0 : evenly split, 1 : one item by slot, 2 : not
 * used ?)
 */
//private int dragMode = -1;
/** The current drag event (0 : start, 1 : add slot : 2 : end) */
//private int dragEvent;
/** The list of slots where the itemstack holds will be distributed */
//private final Set dragSlots = Sets.newHashSet();

// ##############################################################################################################################################

private void cantidaddeBolsillos() {

}

// ##############################################################################################################################################
/*
 * SLOTS:
 *
 * Tile Entity 0-8 ........ 0 - 8 Player Inventory 9-35 .. 9 - 35 Player
 * Inventory 0-8 ... 36 - 44
 */
public ContainerMenuMercenario02(IInventory playerInv, inventarioArmasyEntidades te) {
	// super();
	this.inventarioenlaArmadura = te;
	this.bolsillos = te.getBolsillos();
	this.entidad = te.getEntity();
	this.playerInv = playerInv;

	// System.out.println("################# ContainerMenuMercenario02");

	// weapon slot
	this.addSlotToContainer(new   mercenarySlot(te, 0, 26, );

	// entity armor slots
	this.addSlotToContainer(new   mercenarySlot(te, 4, 8, );
	this.addSlotToContainer(new   mercenarySlot(te, 3, 8, 26));
	this.addSlotToContainer(new   mercenarySlot(te, 2, 8, 44));
	this.addSlotToContainer(new   mercenarySlot(te, 1, 8, 62));

	// Sub weapon slot
	this.addSlotToContainer(new   mercenarySlot(te, 5, -999, 26));

	// six pockets tactical vest

	this.addSlotToContainer(new   mercenarySlot(te, 6, -999, );
	this.addSlotToContainer(new   mercenarySlot(te, 7, -999, );

	this.addSlotToContainer(new   mercenarySlot(te, 8, -999, 26));
	this.addSlotToContainer(new   mercenarySlot(te, 9, -999, 26));

	this.addSlotToContainer(new   mercenarySlot(te, 10, -999, 44));
	this.addSlotToContainer(new   mercenarySlot(te, 11, -999, 44));

	// BackPack
	for (int x = 0; x < 4; ++x) {

		this.addSlotToContainer(new   mercenarySlot(te, 12 + (x * 4), -999, 8 + (18 * x)));
		this.addSlotToContainer(new   mercenarySlot(te, 13 + (x * 4), -999, 8 + (18 * x)));
		this.addSlotToContainer(new   mercenarySlot(te, 14 + (x * 4), -999, 8 + (18 * x)));
		this.addSlotToContainer(new   mercenarySlot(te, 15 + (x * 4), -999, 8 + (18 * x)));

	}



	// 0 - 27 chest slots

	// 28 - 54
	// Player Inventory, Slot 9-35, Slot IDs 9-35
	for (int y = 0; y < 3; ++y) {
		for (int x = 0; x < 9; ++x) {
			this.addSlotToContainer(new   mercenarySlot(playerInv, x + y * 9 + 9, 8 + x * 18, 84 + y * 18));
		}
	}

	// 55 - 64
	// Player Inventory, Slot 0-8, Slot IDs 36-44
	for (int x = 0; x < 9; ++x) {
		this.addSlotToContainer(new   mercenarySlot(playerInv, x, 8 + x * 18, 142));
	}

	// te.readFromNBT(null);

	ItemStack chestIS = this.entidad.getEquipmentInSlot(3);

	if (chestIS != null) {

		int sn = armasDisparables.tieneBolsillos(chestIS);
		this.bolsillos = sn;

		switch (sn) {
		case 0:
			this.cambiarA0();
			break;
		case 7:
			this.cambiarA7();
			break;
		case 23:
			this.cambiarA23();
			break;
		}
	}

}
// ##############################################################################################################################################

public void cambiarA0() {
	inventoryItemStacks = Lists.newArrayList();
	/** the list of all slots in the inventory */
	inventorySlots = Lists.newArrayList();
	crafters = Lists.newArrayList();

	// System.out.println("################# ContainerMenu cambiarA0");

	// weapon slot
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 0, 26, );

	// entity armor slots
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 4, 8, );
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 3, 8, 26));
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 2, 8, 44));
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 1, 8, 62));

	// Sub weapon slot
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 5, -999, 26));

	// six pockets tactical vest

	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 6, -999, );
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 7, -999, );

	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 8, -999, 26));
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 9, -999, 26));

	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 10, -999, 44));
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 11, -999, 44));

	// BackPack
	for (int x = 0; x < 4; ++x) {

		this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 12 + (x * 4), -999, 8 + (18 * x)));
		this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 13 + (x * 4), -999, 8 + (18 * x)));
		this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 14 + (x * 4), -999, 8 + (18 * x)));
		this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 15 + (x * 4), -999, 8 + (18 * x)));

	}

	/*
	 * Tile Entity 0-8 ........ 0-27 Player Inventory 9-35 .. 28 - 55 Player
	 * Inventory 0-8 ... 56 - 64
	 */

	// 0 - 27 chest slots

	// 28 - 54
	// Player Inventory, Slot 9-35, Slot IDs 9-35
	for (int y = 0; y < 3; ++y) {
		for (int x = 0; x < 9; ++x) {
			this.addSlotToContainer(new   mercenarySlot(this.playerInv, x + y * 9 + 9, 8 + x * 18, 84 + y * 18));
		}
	}

	// 55 - 64
	// Player Inventory, Slot 0-8, Slot IDs 36-44
	for (int x = 0; x < 9; ++x) {
		this.addSlotToContainer(new   mercenarySlot(this.playerInv, x, 8 + x * 18, 142));
	}

	// System.out.println("inventorySlots"+inventorySlots);
	// System.out.println("inventorySlots="+inventorySlots.size());

}
// ##############################################################################################################################################

public void cambiarA7() {
	inventoryItemStacks = Lists.newArrayList();
	/** the list of all slots in the inventory */
	inventorySlots = Lists.newArrayList();
	crafters = Lists.newArrayList();

	// System.out.println("################# ContainerMenu cambiarA7");

	// weapon slot
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 0, 26, );

	// entity armor slots
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 4, 8, );
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 3, 8, 26));
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 2, 8, 44));
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 1, 8, 62));

	// Sub weapon slot
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 5, 26, 26));

	// six pockets tactical vest

	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 6, 53, );
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 7, 71, );

	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 8, 53, 26));
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 9, 71, 26));

	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 10, 53, 44));
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 11, 71, 44));

	// BackPack
	for (int x = 0; x < 4; ++x) {

		this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 12 + (x * 4), -999, 8 + (18 * x)));
		this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 13 + (x * 4), -999, 8 + (18 * x)));
		this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 14 + (x * 4), -999, 8 + (18 * x)));
		this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 15 + (x * 4), -999, 8 + (18 * x)));

	}

	/*
	 * Tile Entity 0-8 ........ 0-27 Player Inventory 9-35 .. 28 - 55 Player
	 * Inventory 0-8 ... 56 - 64
	 */

	// 0 - 27 chest slots

	// 28 - 54
	// Player Inventory, Slot 9-35, Slot IDs 9-35
	for (int y = 0; y < 3; ++y) {
		for (int x = 0; x < 9; ++x) {
			this.addSlotToContainer(new   mercenarySlot(this.playerInv, x + y * 9 + 9, 8 + x * 18, 84 + y * 18));
		}
	}

	// 55 - 64
	// Player Inventory, Slot 0-8, Slot IDs 36-44
	for (int x = 0; x < 9; ++x) {
		this.addSlotToContainer(new   mercenarySlot(this.playerInv, x, 8 + x * 18, 142));
	}

	// System.out.println("inventorySlots"+inventorySlots);
	// System.out.println("inventorySlots="+inventorySlots.size());

}
// ##############################################################################################################################################

public void cambiarA23() {
	inventoryItemStacks = Lists.newArrayList();
	/** the list of all slots in the inventory */
	inventorySlots = Lists.newArrayList();
	crafters = Lists.newArrayList();

	// System.out.println("################# ContainerMenu cambiarA7");

	// weapon slot
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 0, 26, );

	// entity armor slots
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 4, 8, );
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 3, 8, 26));
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 2, 8, 44));
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 1, 8, 62));

	// Sub weapon slot
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 5, 26, 26));

	// six pockets tactical vest

	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 6, 53, );
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 7, 71, );

	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 8, 53, 26));
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 9, 71, 26));

	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 10, 53, 44));
	this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 11, 71, 44));

	// BackPack
	for (int x = 0; x < 4; ++x) {

		this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 12 + (x * 4), 98, 8 + (18 * x)));
		this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 13 + (x * 4), 116, 8 + (18 * x)));
		this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 14 + (x * 4), 134, 8 + (18 * x)));
		this.addSlotToContainer(new   mercenarySlot(inventarioenlaArmadura, 15 + (x * 4), 152, 8 + (18 * x)));

	}

	/*
	 * Tile Entity 0-8 ........ 0-27 Player Inventory 9-35 .. 28 - 55 Player
	 * Inventory 0-8 ... 56 - 64
	 */

	// 0 - 27 chest slots

	// 28 - 54
	// Player Inventory, Slot 9-35, Slot IDs 9-35
	for (int y = 0; y < 3; ++y) {
		for (int x = 0; x < 9; ++x) {
			this.addSlotToContainer(new   mercenarySlot(this.playerInv, x + y * 9 + 9, 8 + x * 18, 84 + y * 18));
		}
	}

	// 55 - 64
	// Player Inventory, Slot 0-8, Slot IDs 36-44
	for (int x = 0; x < 9; ++x) {
		this.addSlotToContainer(new   mercenarySlot(this.playerInv, x, 8 + x * 18, 142));
	}

	// System.out.println("inventorySlots"+inventorySlots);
	// System.out.println("inventorySlots="+inventorySlots.size());

}

// ##############################################################################################################################################
@Override
public boolean canInteractWith(EntityPlayer playerIn) {
	return this.inventarioenlaArmadura.isUseableByPlayer(playerIn);
}

// ##############################################################################################################################################
@Override
public ItemStack transferStackInSlot(EntityPlayer playerIn, int fromSlot) {
	ItemStack previous = null;
	Slot slot = (Slot) this.inventorySlots.get(fromSlot);

	if (slot != null && slot.getHasStack()) {
		ItemStack current = slot.getStack();
		previous = current.copy();

		if (fromSlot < 28) {
			// From TE Inventory to Player Inventory
			if (!this.mergeItemStack(current, 28, 63, true))
				return null;
		} else {
			// From Player Inventory to TE Inventory
			if (!this.mergeItemStack(current, 0, 28, false))
				return null;
		}

		if (current.stackSize == 0)
			slot.putStack((ItemStack) null);
		else
			slot.onSlotChanged();

		if (current.stackSize == previous.stackSize)
			return null;
		slot.onPickupFromSlot(playerIn, current);
	}

	return previous;
}

// ##############################################################################################################################################

 

 

package mercenarymod.items.armasdefuego.inventario;

import java.util.ArrayList;
import java.util.Random;

import mercenarymod.Mercenary;
import mercenarymod.entidades.armasDisparables;
import mercenarymod.gui.guiHandlers;
import mercenarymod.gui.containers.ContainerMenuMercenario00;
import mercenarymod.gui.containers.ContainerMenuMercenario01;
import mercenarymod.gui.containers.ContainerMenuMercenario02;
import mercenarymod.gui.guis.guiMenuMercenario02;
import mercenarymod.items.MercenaryModItems;
import mercenarymod.tileentity.ModTileEntity;
import mercenarymod.utilidades.util;
import net.minecraft.block.BlockChest;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.monster.EntitySkeleton;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.ContainerDispenser;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntityDispenser;
import net.minecraft.tileentity.TileEntityLockable;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IChatComponent;
import net.minecraft.world.IWorldNameable;
import net.minecraft.world.World;

//###################################################################################################
public class inventarioArmasyEntidades implements IInventory 
// extends TileEntityDispenser implements IInventory {
{
// private ItemStack pistola = null;

private int SizeInventory = 28;

private ItemStack[] Items = new ItemStack[sizeInventory];
private boolean[] slotHabilitado = new boolean[sizeInventory];

private World worldIn = null;

private static final Random RNG = new Random();

private String customName = "algo";

private EntityLivingBase entidad = null;

private EntityLivingBase playerIn = null;

private double posEX = 0;
private double posEY = 0;
private double posEZ = 0;

private ItemStack chestItem = null;
private int numerodeserie = 0;
private int bolsillos = 0;

private ContainerMenuMercenario02 containerMercenario = null;

private guiMenuMercenario02 gui02 = null;

// ###################################################################################################

public inventarioArmasyEntidades(World worldIn, EntityLivingBase entidad, EntityLivingBase playerIn) {
	super();
	// this.pistola = entidad.getHeldItem() ;
	this.worldIn = worldIn;
	this.entidad = entidad;
	this.playerIn = playerIn;

	// System.out.println("\n###\n###\n###\ninventarioArmasyEntidades=" +
	// worldIn.isRemote + "\n###");

	NBTTagCompound tagCompund = null;

	if (this.entidad != null) {

		this.readFromNBT(null);

	}

}
// ###################################################################################################

/**
 * Returns the number of slots in the inventory.
 */
@Override
public int getSizeInventory() // ItemStack pistola
{

	return SizeInventory;// SizeInventory;
}
// ###################################################################################################

/**
 * inicializa cuales slots son validos y cuales estaran deshabilitados
 */
//  a try to disable the armour slots whiout hide them 

// @Override
public void habilitarSlots() // ItemStack pistola
{

	for (int n = 0; n < SizeInventory; n++) {

		slotHabilitado[n] = true;

		if (n <= this.bolsillos + 4) {
			// slotHabilitado[n] = true;

		} else {
			//
			Items[n] = new ItemStack(MercenaryModItems.vacio, 1, 1);
			slotHabilitado[n] = false;
		}

		// System.out.println("mundo="+worldIn.isRemote+"
		// slotHabilitado["+n+"]="+slotHabilitado[n]);

	}

}

// ###################################################################################################
/**
 * Add the given ItemStack to this Dispenser. Return the Slot the Item was
 * placed in or -1 if no free slot is available.
 */
public int addItemStack(ItemStack stack) {

	for (int i = 0; i < Items.length; ++i) {
		if ((Items[i] == null || Items[i].getItem() == null)) {
			this.setInventorySlotContents(i, stack);
			return i;
		}
	}

	return -1;
}

// ###################################################################################################
/**
 * Returns the maximum stack size for a inventory slot. Seems to always be
 * 64, possibly will be extended. *Isn't this more of a set than a get?*
 */
@Override
public int getInventoryStackLimit() {
	return 64;
}

// ###################################################################################################
/**
 * For tile entities, ensures the chunk containing the tile entity is saved
 * to disk later - the game won't think it hasn't changed and skip it.
 */

public void markDirty() {
	if (worldIn != null) {

		// System.out.println("\n\n Marcado como sucio en el mundo=" +
		// worldIn.isRemote);

		writeToNBT(new NBTTagCompound());

	}
}

// ###################################################################################################
/**
 * Do not make give this method the name canInteractWith because it clashes
 * with Container
 */
@Override
public boolean isUseableByPlayer(EntityPlayer player) {
	return true;
}

@Override
public void openInventory(EntityPlayer player) {

	// System.out.println("###### openInventory() ");

}

@Override
public void closeInventory(EntityPlayer player) {

	// System.out.println("###### closeInventory() ");

}

// ###################################################################################################
/**
 * Returns true if automation is allowed to insert the given stack (ignoring
 * stack size) into the given slot.
 */
@Override
public boolean isItemValidForSlot(int index, ItemStack stack) {


	if (index > 0 & index < 5  )
	{

		 /** Stores the armor type: 0 is helmet, 1 is plate, 2 is legs and 3 is boots */

		int armadura = armasDisparables.esArmadura(stack);

		if (armadura < 0)
		{
			return false;
		}

		//botas
		if (index == 1 & armadura != 3)
		{
			return false;
		}

		//pantalones
		if (index == 2 & armadura != 2)
		{
			return false;
		}

		//chest
		if (index == 3 & armadura != 1)
		{
			return false;
		}

		//casco
		if (index == 4 & armadura != 0)
		{
			return false;
		}


	}

	return true;

}

// ###################################################################################################

@Override
public int getField(int id) {
	return 0;
}

@Override
public void setField(int id, int value) {
}

@Override
public int getFieldCount() {
	return 0;
}

@Override
public void clear() {
	for (int i = 0; i < Items.length; ++i) {
		Items[i] = null;
	}

	// System.out.println("$$$ clear()");

}

@Override
public String getName() {
	return this.customName;
}

/**
 * Returns true if this thing is named
 */
@Override
public boolean hasCustomName() {
	return true;
}

// @Override
public void setCustomName(String name) {
	this.customName = name;
}

@Override
public IChatComponent getDisplayName() {
	IChatComponent displayname = new ChatComponentText(EnumChatFormatting.RED + "" + entidad.getName() + " id:/" + entidad.getEntityId());
	return displayname;
}

// #########################################################################3
// @Override
public void readFromNBT(NBTTagCompound compound) {
	// super.readFromNBT(compound);

	// System.out.println("\n### read from nbt mundo=" + worldIn.isRemote);

	// Items = new ItemStack[this.getSizeInventory()];

	this.clear();

	Items[0] = this.entidad.getEquipmentInSlot(0);// .getHeldItem();
	Items[1] = this.entidad.getEquipmentInSlot(1);// getCurrentArmor(0);
													// boots
	Items[2] = this.entidad.getEquipmentInSlot(2);// getCurrentArmor(1);
													// pants
	Items[3] = this.entidad.getEquipmentInSlot(3);// getCurrentArmor(2);
													// chest
	Items[4] = this.entidad.getEquipmentInSlot(4);// getCurrentArmor(3);
													// helmet

	ItemStack chestIS =  this.entidad.getEquipmentInSlot(3); //Items[3]; //




	this.bolsillos = 0;
	this.numerodeserie = 0;

	if (chestIS != null) {

//get the amount of slots in this chest Armour Item
		int sn = armasDisparables.tieneBolsillos(chestIS);
		this.bolsillos = sn;

//set slots pattern in Container
		if (containerMercenario != null) {
			// System.out.println("#######################
			// containerMercenario="+sn);

			switch (sn) {
			case 0:
				containerMercenario.cambiarA0();
				break;
			case 7:
				containerMercenario.cambiarA7();
				break;
			case 23:
				containerMercenario.cambiarA23();
				break;
			}
		}

//set gui background in gui
		if (gui02 != null) {
			// System.out.println("####################### gui02="+sn);

			gui02.guiN = sn;

		}

		this.chestItem = chestIS;
//serial number from armour to know diferences betwint instance of the same kind of item
		numerodeserie = getInttag(chestIS, "numerodeserie");

		if (numerodeserie < 1) {
			numerodeserie = util.getSerialAlHazar();
			setInttag(chestIS, "numerodeserie", numerodeserie);
		}

		if (sn > 0) {

			NBTTagCompound compound2 = chestIS.getTagCompound();

			if (compound2 != null) {

				NBTTagList nbttaglist2 = compound2.getTagList("Items", 10);

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

					NBTTagCompound nbttagcompound1 = nbttaglist2.getCompoundTagAt(i);
					int j = nbttagcompound1.getByte("Slot") & 255;

					// System.out.println("\n### read from nbt");
					if (j >= 0 && j < Items.length) {
						Items[j] = ItemStack.loadItemStackFromNBT(nbttagcompound1);

						if (Items[j] != null) {
							// System.out.println("mundo="+worldIn.isRemote+"
							// slot read" + j + " =" +
							// Items[j].getUnlocalizedName());
						}

					}
				}

				if (compound2.hasKey("CustomName", ) {
					this.customName = compound2.getString("CustomName");
				}

			}

		}

	} else {

//change slots order in Container to just basic five
		if (containerMercenario != null) {
			containerMercenario.cambiarA0();
		}

//change Gui BackGroundto basic five background
		if (gui02 != null) {
			gui02.guiN = 0;
		}

	}

	// System.out.println("mundo="+worldIn.isRemote+"
	// bolsillos="+this.bolsillos);
	// System.out.println("mundo="+worldIn.isRemote+"
	// numerodeserie="+this.numerodeserie);

	habilitarSlots();

}

// #########################################################################3
// @Override
public void writeToNBT(NBTTagCompound compound) {
	// super.writeToNBT(compound);

	// System.out.println("\n### write to nbt mundo=" + worldIn.isRemote);

	ItemStack chestIS = Items[3];// this.entidad.getEquipmentInSlot(3);

	int numerodeserieIS = 0;

	if (chestIS != null) {
		numerodeserieIS = getInttag(chestIS, "numerodeserie");

		if (numerodeserieIS < 1) {
			numerodeserieIS = util.getSerialAlHazar();
			setInttag(chestIS, "numerodeserie", numerodeserieIS);
		}
	}

	// System.out.println(worldIn.isRemote + " sn0=" + this.numerodeserie);
	// System.out.println(worldIn.isRemote + " sn1=" + numerodeserieIS);

	if (numerodeserieIS != numerodeserie) {

		this.entidad.setCurrentItemOrArmor(3, Items[3]);

		readFromNBT(null);

		// System.out.println("###" + "\n\n\n" + "Chest Item hass change");

		if (playerIn instanceof EntityPlayer & worldIn.isRemote) {
			// ((EntityPlayer) playerIn).openGui(Mercenary.instance,
			// guiHandlers.GUIMERCENARIA00, worldIn, 0, 0, 0);
		}

	}

	else

	{

		if (chestIS != null) {

			int sn = armasDisparables.tieneBolsillos(chestIS);

			if (sn > 0) {

				NBTTagList nbttaglist = new NBTTagList();

				for (int i = 5; i < Items.length; ++i) {
					if (Items[i] != null) {

						NBTTagCompound nbttagcompound1 = new NBTTagCompound();
						nbttagcompound1.setByte("Slot", (byte) i);
						Items[i].writeToNBT(nbttagcompound1);
						nbttaglist.appendTag(nbttagcompound1);

					}
				}

				NBTTagCompound chestcompound = chestIS.getTagCompound();
				if (chestcompound == null) {
					chestcompound = new NBTTagCompound();
				}

				if (this.hasCustomName()) {
					chestcompound.setString("CustomName", this.customName);
				}

				chestcompound.setTag("Items", nbttaglist);
				chestIS.setTagCompound(chestcompound);

				this.Items[3] = chestIS;

			}

		}

		this.entidad.setCurrentItemOrArmor(0, Items[0]);
		this.entidad.setCurrentItemOrArmor(1, Items[1]);
		this.entidad.setCurrentItemOrArmor(2, Items[2]);
		this.entidad.setCurrentItemOrArmor(3, Items[3]);
		this.entidad.setCurrentItemOrArmor(4, Items[4]);

	}

}

// #########################################################################3

public int getDispenseSlot() {
	int i = -1;
	int j = 1;

	for (int k = 0; k < Items.length; ++k) {
		if (Items[k] != null && RNG.nextInt(j++) == 0) {
			i = k;
		}
	}

	return i;
}

// #########################################################################3
public String getGuiID() {
	return "minecraft:chest";
}

// #########################################################################3
public Container createContainer(InventoryPlayer playerInventory, EntityPlayer playerIn) {
	return new ContainerMenuMercenario02(playerInventory, this);
}

// #########################################################################3
@Override
public ItemStack getStackInSlot(int index) {

	/*
	 * if (index == 3){ //System.out.println("\n\n"+worldIn.isRemote);
	 * 
	 * if (Items[3] == null){ //System.out.println(" SlotContents"+index+
	 * " st="+"null" ); } else { //System.out.println(" SlotContents"+index+
	 * " st="+Items[3].getUnlocalizedName() ); }
	 * 
	 * }
	 * 
	 */

	if (index < 0 || index >= this.getSizeInventory())
		return null;

	// System.out.println("getStackInSlot"+index);

	return this.Items[index];
}

// #########################################################################3
@Override
public ItemStack decrStackSize(int index, int count) {

	if (this.getStackInSlot(index) != null) {
		ItemStack itemstack;

		if (this.getStackInSlot(index).stackSize <= count) {
			itemstack = this.getStackInSlot(index);
			this.setInventorySlotContents(index, null);
			this.markDirty();
			return itemstack;
		} else {
			itemstack = this.getStackInSlot(index).splitStack(count);

			if (this.getStackInSlot(index).stackSize <= 0) {
				this.setInventorySlotContents(index, null);
			} else {
				// Just to show that changes happened
				this.setInventorySlotContents(index, this.getStackInSlot(index));
			}

			this.markDirty();

			return itemstack;
		}
	} else {
		return null;
	}
}

// #########################################################################3
@Override
public ItemStack getStackInSlotOnClosing(int index) {

	ItemStack stack = this.getStackInSlot(index);

	this.setInventorySlotContents(index, null);

	return stack;
}

// #########################################################################3
@Override
public void setInventorySlotContents(int index, ItemStack stack) {

	if (index == 3) {
		// System.out.println("\n\n" + worldIn.isRemote);

		if (Items[3] == null) {
			// System.out.println(" SlotContents" + index + " st=" +
			// "null");
		} else {
			// System.out.println(" SlotContents" + index + " st=" +
			// Items[3].getUnlocalizedName());
		}

		if (stack == null) {
			// System.out.println(" setInventorySlotContents" + index + "
			// st=" + "null");
		} else {
			// System.out.println(" setInventorySlotContents" + index + "
			// st=" + stack.getUnlocalizedName());
		}

		if (playerIn instanceof EntityPlayer) {
			// ((EntityPlayer) playerIn).openGui(Mercenary.instance,
			// guiHandlers.GUIMERCENARIA00, worldIn, 0, 0, 0);
		}

	}

	if (index < 0 || index >= this.getSizeInventory())
		return;

	if (stack != null && stack.stackSize > this.getInventoryStackLimit())
		stack.stackSize = this.getInventoryStackLimit();

	if (stack != null && stack.stackSize == 0)
		stack = null;

	this.Items[index] = stack;

	this.markDirty();

}

public String getCustomName() {
	return this.customName;
}

// #########################################################################3

public static float getFloattag(ItemStack item, String tag) {

	NBTTagCompound etiquetas = item.getTagCompound();
	if (etiquetas == null) {
		etiquetas = new NBTTagCompound();
		item.setTagCompound(etiquetas);
		return 0.0F;
	}

	float ex = etiquetas.getFloat(tag);
	return ex;

}

// #########################################################################3

public static void setFloattag(ItemStack item, String tag, float value) {

	NBTTagCompound etiquetas = item.getTagCompound();
	if (etiquetas == null) {
		etiquetas = new NBTTagCompound();
	}

	etiquetas.setFloat(tag, value);
	item.setTagCompound(etiquetas);

}

// #########################################################################3

public static int getInttag(ItemStack item, String tag) {

	NBTTagCompound etiquetas = item.getTagCompound();
	if (etiquetas == null) {
		etiquetas = new NBTTagCompound();
		item.setTagCompound(etiquetas);
		return 0;
	}

	int ex = etiquetas.getInteger(tag);
	return ex;

}

// #########################################################################3

public static void setInttag(ItemStack item, String tag, int value) {

	NBTTagCompound etiquetas = item.getTagCompound();
	if (etiquetas == null) {
		etiquetas = new NBTTagCompound();
	}

	etiquetas.setInteger(tag, value);
	item.setTagCompound(etiquetas);

}
// #########################################################################3

public static int[] getIntArraytag(ItemStack item, String tag) {

	NBTTagCompound etiquetas = item.getTagCompound();
	if (etiquetas == null) {
		etiquetas = new NBTTagCompound();
		item.setTagCompound(etiquetas);
		int[] empty = { 0 };
		return empty;
	}

	int[] ex = etiquetas.getIntArray(tag);
	return ex;

}
// #########################################################################3

public static void setIntArraytag(ItemStack item, String tag, int[] value) {

	NBTTagCompound etiquetas = item.getTagCompound();
	if (etiquetas == null) {
		etiquetas = new NBTTagCompound();
	}

	etiquetas.setIntArray(tag, value);
	item.setTagCompound(etiquetas);

}

// #########################################################################3

public static Boolean getBooleantag(ItemStack item, String tag) {

	NBTTagCompound etiquetas = item.getTagCompound();
	if (etiquetas == null) {
		etiquetas = new NBTTagCompound();
		item.setTagCompound(etiquetas);
		return false;
	}

	boolean ex = etiquetas.getBoolean(tag);

	return ex;

}

// #########################################################################3

public static void setBooleantag(ItemStack item, String tag, boolean value) {

	NBTTagCompound etiquetas = item.getTagCompound();
	if (etiquetas == null) {
		etiquetas = item.getTagCompound();
	}

	etiquetas.setBoolean(tag, value);
	item.setTagCompound(etiquetas);

}

// #########################################################################3
public int getBolsillos() {
	return this.bolsillos;
}

// #########################################################################3
public EntityLivingBase getEntity() {
	return this.entidad;
}

public void setContainer(ContainerMenuMercenario02 containerMercenario) {
	this.containerMercenario = containerMercenario;
}

public void setGui(guiMenuMercenario02 gui02) {
	this.gui02 = gui02;
}

}

 

i been thinking maiby i fucked up whith basic java i dont see becoze tireness or something

 

this thing whith the inventory is for unification only one inventory that could work in a vainilla cown, in my custom creepers as well in an elf from the lord of rings mod (asuming its gone a be 1.8 or 1.9 version)

and the inventory must be simple but awesome

 

in today test  the thing goes very well whith littlemaid mod mobs mod and mi mob

when the main gun gets empty it automatically switch to watever is in sub weapon slot

 

and have a creeper that can chase the player whith an ak 47, but first fix this gui then fix the exploting thing bugs and the other thing whit the spawn in the world not working 

 

 

Link to comment
Share on other sites

You never call

setHabilitado()

anywhere.

 

There's also no god damn reason you need to override every single method of the slot or container classes.  For example, here's a custom slot class I use:

 

public class SlotIInventory extends Slot {

public SlotIInventory(IInventory p_i1824_1_, int p_i1824_2_, int p_i1824_3_, int p_i1824_4_) {
	super(p_i1824_1_, p_i1824_2_, p_i1824_3_, p_i1824_4_);
}

@Override
public boolean isItemValid(ItemStack stack) {
	if(inventory.isItemValidForSlot(slotNumber, stack)) {
		ItemStack ss = stack.copy();
		ss.stackSize = 1;
		inventory.setInventorySlotContents(slotNumber, ss);
	}
	return false;
    }

@Override
public boolean canTakeStack(EntityPlayer par1EntityPlayer) {
	inventory.setInventorySlotContents(slotNumber, null);
	return false;
}
}

 

That's it.  No

isSlotInInventory

, no

decrStackSize

, just the methods I actually NEED.

 

Second:

		// Player Inventory, Slot 9-35, Slot IDs 9-35
	for (int y = 0; y < 3; ++y) {
		for (int x = 0; x < 9; ++x) {
			this.addSlotToContainer(new   mercenarySlot(playerInv, x + y * 9 + 9, 8 + x * 18, 84 + y * 18));
		}
	}

Why the fuck are you making the player's inventory slots your custom slot type?  WHY?

 

THIRD when you call cambiarA0, cambiarA7, or cambiarA23, you're adding the player's inventory slots again.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

and thats solve it all

 

fix the slot.class and whith that i fix the other things

now i can display the entity inventorys, whitout hiden slots  disabling the player from steal from the entityes.

fix the thing whith the armour slots now only allow the rigth armour type

 

package mercenarymod.gui.containers;

import mercenarymod.entidades.armasDisparables;

//package net.minecraft.inventory;

import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

public class mercenarySlot extends Slot {
/** The index of the slot in the inventory. */
private final int slotIndex;
/** The inventory we want to extract a slot from. */
public final IInventory inventory;
/** the id of the slot(also the index in the inventory arraylist) */
public int slotNumber;
/** display position of the inventory slot on the screen x axis */
public int xDisplayPosition;
/** display position of the inventory slot on the screen y axis */
public int yDisplayPosition;
private static final String __OBFID = "CL_00001762";
private boolean habilitado = true;

// ##########################################################################################3
public mercenarySlot(IInventory inventoryIn, int index, int xPosition, int yPosition, boolean habilitado) {
	super(inventoryIn, index, xPosition, yPosition);
	this.inventory = inventoryIn;
	this.slotIndex = index;
	this.xDisplayPosition = xPosition;
	this.yDisplayPosition = yPosition;
	this.habilitado = habilitado;
}
// ##########################################################################################3
@Override
/**
 * Check if the stack is a valid item for this slot. Always true beside for
 * the armor slots.
 */
public boolean isItemValid(ItemStack stack) {

	int index = this.slotIndex;

	if (index > 0 & index < 5  )
	{

		 /** Stores the armor type: 0 is helmet, 1 is plate, 2 is legs and 3 is boots */

		int armadura = armasDisparables.esArmadura(stack);

		if (armadura < 0)
		{
			return false;
		}

		//botas
		if (index == 1 & armadura != 3)
		{
			return false;
		}

		//pantalones
		if (index == 2 & armadura != 2)
		{
			return false;
		}

		//chest
		if (index == 3 & armadura != 1)
		{
			return false;
		}

		//casco
		if (index == 4 & armadura != 0)
		{
			return false;
		}


	}

	return habilitado;
}
// ##########################################################################################3
@Override
/**
 * Return whether this slot's stack can be taken from this slot.
 */
public boolean canTakeStack(EntityPlayer playerIn) {
	return habilitado;
}

// ##########################################################################################3
@Override
/**
 * Actualy only call when we want to render the white square effect over the
 * slots. Return always True, except for the armor slot of the Donkey/Mule
 * (we can't interact with the Undead and Skeleton horses)
 */
@SideOnly(Side.CLIENT)
public boolean canBeHovered() {
	return habilitado;
}

// ##########################################################################################3
public void setHabilitado(boolean b) {
	habilitado = b;
}

// ##########################################################################################3
public boolean getHabilitado() {
	return habilitado;
}

}  

 

 

package mercenarymod.gui.containers;

import net.minecraft.entity.Entity;

import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.ICrafting;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import com.google.common.collect.Lists;
import com.google.common.collect.Sets;

import mercenarymod.entidades.armasDisparables;
import mercenarymod.items.armasdefuego.inventario.inventarioArmas;
import mercenarymod.items.armasdefuego.inventario.inventarioArmasyEntidades;
import mercenarymod.tileentity.ModTileEntity;
import mercenarymod.utilidades.util;

public class ContainerMenuMercenario02 extends Container {


private inventarioArmasyEntidades inventarioenlaArmadura;

private IInventory playerInv = null;

private EntityLivingBase entidad = null;


// ##############################################################################################################################################



// ##############################################################################################################################################
public ContainerMenuMercenario02(IInventory playerInv, inventarioArmasyEntidades te,  boolean canbeTaken ) {
	// super();
	this.inventarioenlaArmadura = te;
	this.entidad = te.getEntity();
	this.playerInv = playerInv;

		// te.readFromNBT(null);

	ItemStack chestIS = this.entidad.getEquipmentInSlot(3);

	int sn = 0;

	if (chestIS != null) {
		//get the slots number from armour and change to that
		sn = armasDisparables.tieneBolsillos(chestIS);
	}

	switch (sn) {
	case 0:
		this.cambiarA0(canbeTaken);
		break;
	case 7:
		this.cambiarA7(canbeTaken);
		break;
	case 23:
		this.cambiarA23(canbeTaken);
		break;
	}




}
// ##############################################################################################################################################

public void cambiarA0( boolean canbeTaken ) {

	//reset all inventory arrays to Zero
	inventoryItemStacks = Lists.newArrayList();
	inventorySlots = Lists.newArrayList();
	crafters = Lists.newArrayList();


	// 0 - 27 chest slots
	// weapon slot
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 0, 26, 8, canbeTaken));

	// entity armor slots
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 4, 8, 8, canbeTaken));
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 3, 8, 26, canbeTaken));
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 2, 8, 44, canbeTaken));
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 1, 8, 62, canbeTaken));

	// Sub weapon slot
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 5, 26, 26, false));

	// six pockets tactical vest

	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 6, 53, 8, false));
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 7, 71, 8, false));

	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 8, 53, 26, false));
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 9, 71, 26, false));

	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 10, 53, 44, false));
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 11, 71, 44, false));

	// BackPack
	for (int x = 0; x < 4; ++x) {

		this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 12 + (x * 4), 98, 8 + (18 * x), false));
		this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 13 + (x * 4), 116, 8 + (18 * x), false));
		this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 14 + (x * 4), 134, 8 + (18 * x), false));
		this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 15 + (x * 4), 152, 8 + (18 * x), false));

	}

	// 28 - 54
	// Player Inventory, Slot 28 - 54, Slot IDs 28 - 54
	for (int y = 0; y < 3; ++y) {
		for (int x = 0; x < 9; ++x) {
			this.addSlotToContainer(new Slot(this.playerInv, x + y * 9 + 9, 8 + x * 18, 84 + y * 18));
		}
	}

	// 55 - 63
	// Player Inventory, Slot 55-63, Slot IDs 55-63
	for (int x = 0; x < 9; ++x) {
		this.addSlotToContainer(new Slot(this.playerInv, x, 8 + x * 18, 142));
	}

}
// ##############################################################################################################################################

public void cambiarA7(boolean canbeTaken) {
	//reset all inventory arrays to Zero
	inventoryItemStacks = Lists.newArrayList();
	inventorySlots = Lists.newArrayList();
	crafters = Lists.newArrayList();


	// 0 - 27 chest slots
	// weapon slot
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 0, 26, 8, canbeTaken));

	// entity armor slots
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 4, 8, 8, canbeTaken));
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 3, 8, 26, canbeTaken));
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 2, 8, 44, canbeTaken));
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 1, 8, 62, canbeTaken));

	// Sub weapon slot
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 5, 26, 26, canbeTaken));

	// six pockets tactical vest

	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 6, 53, 8, canbeTaken));
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 7, 71, 8, canbeTaken));

	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 8, 53, 26, canbeTaken));
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 9, 71, 26, canbeTaken));

	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 10, 53, 44, canbeTaken));
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 11, 71, 44, canbeTaken));

	// BackPack
	for (int x = 0; x < 4; ++x) {

		this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 12 + (x * 4), 98, 8 + (18 * x), false));
		this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 13 + (x * 4), 116, 8 + (18 * x), false));
		this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 14 + (x * 4), 134, 8 + (18 * x), false));
		this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 15 + (x * 4), 152, 8 + (18 * x), false));

	}

	// 28 - 54
	// Player Inventory, Slot 28 - 54, Slot IDs 28 - 54
	for (int y = 0; y < 3; ++y) {
		for (int x = 0; x < 9; ++x) {
			this.addSlotToContainer(new Slot(this.playerInv, x + y * 9 + 9, 8 + x * 18, 84 + y * 18));
		}
	}

	// 55 - 63
	// Player Inventory, Slot 55-63, Slot IDs 55-63
	for (int x = 0; x < 9; ++x) {
		this.addSlotToContainer(new Slot(this.playerInv, x, 8 + x * 18, 142));
	}

}
// ##############################################################################################################################################

public void cambiarA23(boolean canbeTaken) {

	//reset all inventory arrays to Zero
	inventoryItemStacks = Lists.newArrayList();
	inventorySlots = Lists.newArrayList();
	crafters = Lists.newArrayList();


	// 0 - 27 chest slots
	// weapon slot
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 0, 26, 8, canbeTaken));

	// entity armor slots
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 4, 8, 8, canbeTaken));
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 3, 8, 26, canbeTaken));
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 2, 8, 44, canbeTaken));
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 1, 8, 62, canbeTaken));

	// Sub weapon slot
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 5, 26, 26, canbeTaken));

	// six pockets tactical vest

	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 6, 53, 8, canbeTaken));
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 7, 71, 8, canbeTaken));

	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 8, 53, 26, canbeTaken));
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 9, 71, 26, canbeTaken));

	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 10, 53, 44, canbeTaken));
	this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 11, 71, 44, canbeTaken));

	// BackPack
	for (int x = 0; x < 4; ++x) {

		this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 12 + (x * 4), 98, 8 + (18 * x), canbeTaken));
		this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 13 + (x * 4), 116, 8 + (18 * x), canbeTaken));
		this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 14 + (x * 4), 134, 8 + (18 * x), canbeTaken));
		this.addSlotToContainer(new mercenarySlot(inventarioenlaArmadura, 15 + (x * 4), 152, 8 + (18 * x), canbeTaken));

	}

	// 28 - 54
	// Player Inventory, Slot 28 - 54, Slot IDs 28 - 54
	for (int y = 0; y < 3; ++y) {
		for (int x = 0; x < 9; ++x) {
			this.addSlotToContainer(new Slot(this.playerInv, x + y * 9 + 9, 8 + x * 18, 84 + y * 18));
		}
	}

	// 55 - 63
	// Player Inventory, Slot 55-63, Slot IDs 55-63
	for (int x = 0; x < 9; ++x) {
		this.addSlotToContainer(new Slot(this.playerInv, x, 8 + x * 18, 142));
	}

}

// ##############################################################################################################################################
@Override
public boolean canInteractWith(EntityPlayer playerIn) {
	return this.inventarioenlaArmadura.isUseableByPlayer(playerIn);
}

// ##############################################################################################################################################
@Override
public ItemStack transferStackInSlot(EntityPlayer playerIn, int fromSlot) {
	ItemStack previous = null;
	Slot slot = (Slot) this.inventorySlots.get(fromSlot);

	if (slot != null && slot.getHasStack()) {
		ItemStack current = slot.getStack();
		previous = current.copy();

		if (fromSlot < 28) {
			// From TE Inventory to Player Inventory
			if (!this.mergeItemStack(current, 28, 63, true))
				return null;
		} else {
			// From Player Inventory to TE Inventory
			if (!this.mergeItemStack(current, 0, 28, false))
				return null;
		}

		if (current.stackSize == 0)
			slot.putStack((ItemStack) null);
		else
			slot.onSlotChanged();

		if (current.stackSize == previous.stackSize)
			return null;
		slot.onPickupFromSlot(playerIn, current);
	}

	return previous;
}

// ##############################################################################################################################################

// 0 -4 armadura y arma

// 5 arma secundaria

// 6-11 pockets

// 12 -27 backpack

// 28 -54 inventory

// 55 -63 hotbar


// #################################################################################################################################################################################

}

 

 

 

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
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.



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • C:\Users\user\Desktop\Minecraft server april>REM Forge requires a configured set of both JVM and program arguments. C:\Users\user\Desktop\Minecraft server april>REM Add custom JVM arguments to the user_jvm_args.txt C:\Users\user\Desktop\Minecraft server april>REM Add custom program arguments {such as nogui} to this file in the next line before the  or C:\Users\user\Desktop\Minecraft server april>REM  pass them to this script directly C:\Users\user\Desktop\Minecraft server april>java @user_jvm_args.txt @libraries/net/minecraftforge/forge/1.18.2-40.2.0/win_args.txt 2023-03-31 19:29:54,089 main WARN Advanced terminal features are not available in this environment [19:29:54] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--launchTarget, forgeserver, --fml.forgeVersion, 40.2.0, --fml.mcVersion, 1.18.2, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20220404.173914] [19:29:54] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 9.1.3+9.1.3+main.9b69c82a starting: java version 20 by Oracle Corporation [19:29:54] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/C:/Users/user/Desktop/Minecraft%20server%20april/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar%2314!/ Service=ModLauncher Env=SERVER [19:29:54] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file C:\Users\user\Desktop\Minecraft server april\libraries\net\minecraftforge\fmlcore\1.18.2-40.2.0\fmlcore-1.18.2-40.2.0.jar is missing mods.toml file [19:29:54] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file C:\Users\user\Desktop\Minecraft server april\libraries\net\minecraftforge\javafmllanguage\1.18.2-40.2.0\javafmllanguage-1.18.2-40.2.0.jar is missing mods.toml file [19:29:54] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file C:\Users\user\Desktop\Minecraft server april\libraries\net\minecraftforge\lowcodelanguage\1.18.2-40.2.0\lowcodelanguage-1.18.2-40.2.0.jar is missing mods.toml file [19:29:54] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file C:\Users\user\Desktop\Minecraft server april\libraries\net\minecraftforge\mclanguage\1.18.2-40.2.0\mclanguage-1.18.2-40.2.0.jar is missing mods.toml file [19:29:54] [main/INFO] [ne.mi.fm.lo.mo.JarInJarDependencyLocator/]: No dependencies to load found. Skipping! [19:29:56] [main/INFO] [mixin/]: Compatibility level set to JAVA_17 [19:29:56] [main/INFO] [cp.mo.mo.LaunchServiceHandler/MODLAUNCHER]: Launching target 'forgeserver' with arguments [] [19:29:56] [main/WARN] [mixin/]: Error loading class: java/lang/invoke/MethodHandles$Lookup (java.lang.IllegalArgumentException: Unsupported class file major version 64) [19:29:56] [main/WARN] [mixin/]: Error loading class: java/lang/invoke/MethodHandles$Lookup (java.lang.IllegalArgumentException: Unsupported class file major version 64) [19:29:56] [main/WARN] [mixin/]: Error loading class: java/lang/invoke/MethodHandles$Lookup (java.lang.IllegalArgumentException: Unsupported class file major version 64) [19:29:56] [main/WARN] [mixin/]: Error loading class: java/lang/invoke/MethodHandles$Lookup (java.lang.IllegalArgumentException: Unsupported class file major version 64) [19:29:56] [main/WARN] [mixin/]: Error loading class: java/lang/invoke/MethodHandles$Lookup (java.lang.IllegalArgumentException: Unsupported class file major version 64) [19:29:56] [main/WARN] [mixin/]: Error loading class: java/lang/invoke/MethodHandles$Lookup (java.lang.IllegalArgumentException: Unsupported class file major version 64) [19:29:56] [main/WARN] [mixin/]: Error loading class: java/util/Map$Entry (java.lang.IllegalArgumentException: Unsupported class file major version 64) [19:29:56] [main/WARN] [mixin/]: Error loading class: java/util/concurrent/CompletableFuture (java.lang.IllegalArgumentException: Unsupported class file major version 64) Exception in thread "main" org.spongepowered.asm.mixin.transformer.throwables.MixinTransformerError: An unexpected critical error was encountered         at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:392)         at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:250)         at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.service.modlauncher.MixinTransformationHandler.processClass(MixinTransformationHandler.java:131)         at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.launch.MixinLaunchPluginLegacy.processClass(MixinLaunchPluginLegacy.java:131)         at MC-BOOTSTRAP/cpw.mods.modlauncher@9.1.3/cpw.mods.modlauncher.serviceapi.ILaunchPluginService.processClassWithFlags(ILaunchPluginService.java:156)         at MC-BOOTSTRAP/cpw.mods.modlauncher@9.1.3/cpw.mods.modlauncher.LaunchPluginHandler.offerClassNodeToPlugins(LaunchPluginHandler.java:88)         at MC-BOOTSTRAP/cpw.mods.modlauncher@9.1.3/cpw.mods.modlauncher.ClassTransformer.transform(ClassTransformer.java:120)         at MC-BOOTSTRAP/cpw.mods.modlauncher@9.1.3/cpw.mods.modlauncher.TransformingClassLoader.maybeTransformClassBytes(TransformingClassLoader.java:50)         at cpw.mods.securejarhandler@1.0.3/cpw.mods.cl.ModuleClassLoader.readerToClass(ModuleClassLoader.java:110)         at cpw.mods.securejarhandler@1.0.3/cpw.mods.cl.ModuleClassLoader.lambda$findClass$16(ModuleClassLoader.java:216)         at cpw.mods.securejarhandler@1.0.3/cpw.mods.cl.ModuleClassLoader.loadFromModule(ModuleClassLoader.java:226)         at cpw.mods.securejarhandler@1.0.3/cpw.mods.cl.ModuleClassLoader.findClass(ModuleClassLoader.java:216)         at cpw.mods.securejarhandler@1.0.3/cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:132)         at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)         at java.base/java.lang.Class.getDeclaredMethods0(Native Method)         at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3502)         at java.base/java.lang.Class.getMethodsRecursive(Class.java:3643)         at java.base/java.lang.Class.getMethod0(Class.java:3629)         at java.base/java.lang.Class.getMethod(Class.java:2319)         at MC-BOOTSTRAP/fmlloader@1.18.2-40.2.0/net.minecraftforge.fml.loading.targets.CommonServerLaunchHandler.lambda$launchService$0(CommonServerLaunchHandler.java:32)         at MC-BOOTSTRAP/cpw.mods.modlauncher@9.1.3/cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37)         at MC-BOOTSTRAP/cpw.mods.modlauncher@9.1.3/cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53)         at MC-BOOTSTRAP/cpw.mods.modlauncher@9.1.3/cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71)         at MC-BOOTSTRAP/cpw.mods.modlauncher@9.1.3/cpw.mods.modlauncher.Launcher.run(Launcher.java:106)         at MC-BOOTSTRAP/cpw.mods.modlauncher@9.1.3/cpw.mods.modlauncher.Launcher.main(Launcher.java:77)         at MC-BOOTSTRAP/cpw.mods.modlauncher@9.1.3/cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26)         at MC-BOOTSTRAP/cpw.mods.modlauncher@9.1.3/cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23)         at cpw.mods.bootstraplauncher@1.0.0/cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:149) Caused by: org.spongepowered.asm.mixin.throwables.ClassMetadataNotFoundException: java.util.concurrent.CompletableFuture         at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.transformMethod(MixinPreProcessorStandard.java:754)         at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.transform(MixinPreProcessorStandard.java:739)         at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.attach(MixinPreProcessorStandard.java:310)         at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.createContextFor(MixinPreProcessorStandard.java:280)         at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.MixinInfo.createContextFor(MixinInfo.java:1288)         at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:292)         at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.TargetClassContext.apply(TargetClassContext.java:383)         at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:365)         at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363)         ... 27 more C:\Users\user\Desktop\Minecraft server april>pause Press any key to continue . . .        
    • TYSM I tried installing java 17 before posting on the forum, today I removed java 20 and everything works fine
    • And please do not post large files in the forums, use a file upload site.
    • uninstalled java 20 adn this is what cmd showed: 2023-03-31 10:46:53,282 main WARN Advanced terminal features are not available in this environment [10:46:53] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--launchTarget, forgeserver, --fml.forgeVersion, 44.1.10, --fml.mcVersion, 1.19.3, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20221207.122022] [10:46:53] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 10.0.8+10.0.8+main.0ef7e830 starting: java version 17.0.6 by Oracle Corporation; OS Windows 11 arch amd64 version 10.0 [10:46:54] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/C:/Users/34664/Desktop/mds%20server/serverer/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar%2364!/ Service=ModLauncher Env=SERVER [10:46:54] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file C:\Users\34664\Desktop\mds server\serverer\libraries\net\minecraftforge\fmlcore\1.19.3-44.1.10\fmlcore-1.19.3-44.1.10.jar is missing mods.toml file [10:46:54] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file C:\Users\34664\Desktop\mds server\serverer\libraries\net\minecraftforge\javafmllanguage\1.19.3-44.1.10\javafmllanguage-1.19.3-44.1.10.jar is missing mods.toml file [10:46:54] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file C:\Users\34664\Desktop\mds server\serverer\libraries\net\minecraftforge\lowcodelanguage\1.19.3-44.1.10\lowcodelanguage-1.19.3-44.1.10.jar is missing mods.toml file [10:46:54] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file C:\Users\34664\Desktop\mds server\serverer\libraries\net\minecraftforge\mclanguage\1.19.3-44.1.10\mclanguage-1.19.3-44.1.10.jar is missing mods.toml file [10:46:54] [main/INFO] [ne.mi.fm.lo.mo.JarInJarDependencyLocator/]: Found 3 dependencies adding them to mods collection [10:46:56] [main/INFO] [mixin/]: Compatibility level set to JAVA_17 [10:46:56] [main/ERROR] [mixin/]: Mixin config foodeffecttooltips.mixins.json does not specify "minVersion" property [10:46:56] [main/INFO] [mixin/]: Successfully loaded Mixin Connector [com.sonicether.soundphysics.MixinConnector] [10:46:56] [main/INFO] [cp.mo.mo.LaunchServiceHandler/MODLAUNCHER]: Launching target 'forgeserver' with arguments [] [10:46:56] [main/WARN] [mixin/]: Reference map 'bcc.refmap.json' for entangledfix.mixins.json could not be read. If this is a development environment you can ignore this message [10:46:56] [main/WARN] [mixin/]: Reference map 'yungsextras.refmap.json' for yungsextras.mixins.json could not be read. If this is a development environment you can ignore this message [10:46:56] [main/WARN] [mixin/]: Reference map 'yungsextras.refmap.json' for yungsextras_forge.mixins.json could not be read. If this is a development environment you can ignore this message [10:46:57] [main/WARN] [mixin/]: Error loading class: com/supermartijn642/entangled/EntangledBlockTile (java.lang.ClassNotFoundException: com.supermartijn642.entangled.EntangledBlockTile) [10:46:57] [main/WARN] [mixin/]: @Mixin target com.supermartijn642.entangled.EntangledBlockTile was not found entangledfix.mixins.json:EntangledBlockTileMixin [10:46:57] [main/WARN] [mixin/]: Error loading class: com/mojang/blaze3d/audio/Channel (java.lang.ClassNotFoundException: com.mojang.blaze3d.audio.Channel) [10:46:57] [main/WARN] [mixin/]: @Mixin target com.mojang.blaze3d.audio.Channel was not found assets/sound_physics_remastered/sound_physics_remastered.mixins.json:ChannelAccessor [10:47:16] [main/INFO] [minecraft/DataFixers]: Building unoptimized datafixer [10:47:17] [main/WARN] [mixin/]: @ModifyConstant conflict. Skipping repurposed_structures-forge.mixins.json:structures.StructurePoolMixin->@ModifyConstant::repurposedstructures_increaseWeightLimit(I)I with priority 1000, already redirected by yungsapi_forge.mixins.json:IncreaseStructureWeightLimitMixinForge->@ModifyConstant::yungsapi_increaseWeightLimit(I)I with priority 1000 [10:47:17] [modloading-worker-0/INFO] [de.wu.en.EntangledFix/]: Entangled Fix Loaded [10:47:17] [modloading-worker-0/INFO] [Bed Benefits/]: Loaded config file. [10:47:17] [modloading-worker-0/INFO] [Bed Benefits/]: Saved config file. [10:47:17] [modloading-worker-0/INFO] [Dungeon Crawl/]: Here we go! Launching Dungeon Crawl 2.3.13... [10:47:17] [modloading-worker-0/ERROR] [ne.mi.fm.lo.RuntimeDistCleaner/DISTXFORM]: Attempted to load class net/minecraft/client/gui/screens/Screen for invalid dist DEDICATED_SERVER [10:47:17] [modloading-worker-0/ERROR] [ne.mi.fm.ja.FMLModContainer/LOADING]: Failed to create mod instance. ModID: skinlayers3d, class dev.tr7zw.skinlayers.SkinLayersMod java.lang.RuntimeException: Attempted to load class net/minecraft/client/gui/screens/Screen for invalid dist DEDICATED_SERVER         at net.minecraftforge.fml.loading.RuntimeDistCleaner.processClassWithFlags(RuntimeDistCleaner.java:57) ~[fmlloader-1.19.3-44.1.10.jar%2368!/:1.0] {}         at cpw.mods.modlauncher.LaunchPluginHandler.offerClassNodeToPlugins(LaunchPluginHandler.java:88) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.modlauncher.ClassTransformer.transform(ClassTransformer.java:120) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.modlauncher.TransformingClassLoader.maybeTransformClassBytes(TransformingClassLoader.java:50) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.cl.ModuleClassLoader.readerToClass(ModuleClassLoader.java:113) ~[securejarhandler-2.1.6.jar:?] {}         at cpw.mods.cl.ModuleClassLoader.lambda$findClass$15(ModuleClassLoader.java:219) ~[securejarhandler-2.1.6.jar:?] {}         at cpw.mods.cl.ModuleClassLoader.loadFromModule(ModuleClassLoader.java:229) ~[securejarhandler-2.1.6.jar:?] {}         at cpw.mods.cl.ModuleClassLoader.findClass(ModuleClassLoader.java:219) ~[securejarhandler-2.1.6.jar:?] {}         at cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:135) ~[securejarhandler-2.1.6.jar:?] {}         at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?] {}         at java.lang.Class.getDeclaredConstructors0(Native Method) ~[?:?] {re:mixin}         at java.lang.Class.privateGetDeclaredConstructors(Class.java:3373) ~[?:?] {re:mixin}         at java.lang.Class.getConstructor0(Class.java:3578) ~[?:?] {re:mixin}         at java.lang.Class.getDeclaredConstructor(Class.java:2754) ~[?:?] {re:mixin}         at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:68) ~[javafmllanguage-1.19.3-44.1.10.jar%23287!/:?] {}         at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$10(ModContainer.java:121) ~[fmlcore-1.19.3-44.1.10.jar%23286!/:?] {}         at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}         at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {}         at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}         at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}         at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {re:computing_frames}         at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {re:computing_frames}         at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {} [10:47:17] [modloading-worker-0/INFO] [ne.mi.co.ForgeMod/FORGEMOD]: Forge mod loading, version 44.1.10, for MC 1.19.3 with MCP 20221207.122022 [10:47:17] [modloading-worker-0/INFO] [ne.mi.co.MinecraftForge/FORGE]: MinecraftForge v44.1.10 Initialized [10:47:18] [modloading-worker-0/INFO] [Bookshelf/]: Fixing MC-151457. Crafting remainder for minecraft:pufferfish_bucket is now minecraft:bucket. [10:47:18] [modloading-worker-0/INFO] [Bookshelf/]: Fixing MC-151457. Crafting remainder for minecraft:salmon_bucket is now minecraft:bucket. [10:47:18] [modloading-worker-0/INFO] [Bookshelf/]: Fixing MC-151457. Crafting remainder for minecraft:cod_bucket is now minecraft:bucket. [10:47:18] [modloading-worker-0/INFO] [Bookshelf/]: Fixing MC-151457. Crafting remainder for minecraft:tropical_fish_bucket is now minecraft:bucket. [10:47:18] [modloading-worker-0/INFO] [Bookshelf/]: Fixing MC-151457. Crafting remainder for minecraft:axolotl_bucket is now minecraft:bucket. [10:47:18] [modloading-worker-0/INFO] [Bookshelf/]: Fixing MC-151457. Crafting remainder for minecraft:powder_snow_bucket is now minecraft:bucket. [10:47:18] [modloading-worker-0/INFO] [Bookshelf/]: Fixing MC-151457. Crafting remainder for minecraft:tadpole_bucket is now minecraft:bucket. [10:47:18] [modloading-worker-0/ERROR] [ne.mi.fm.lo.RuntimeDistCleaner/DISTXFORM]: Attempted to load class net/minecraft/client/player/LocalPlayer for invalid dist DEDICATED_SERVER [10:47:18] [modloading-worker-0/ERROR] [ne.mi.fm.ja.FMLModContainer/LOADING]: Failed to register automatic subscribers. ModID: legendarytooltips, class com.anthonyhilyard.legendarytooltips.Loader java.lang.ExceptionInInitializerError: null         at java.lang.Class.forName0(Native Method) ~[?:?] {re:mixin}         at java.lang.Class.forName(Class.java:467) ~[?:?] {re:mixin}         at net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber.lambda$inject$6(AutomaticEventSubscriber.java:61) ~[javafmllanguage-1.19.3-44.1.10.jar%23287!/:?] {}         at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?] {re:mixin}         at net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber.inject(AutomaticEventSubscriber.java:48) ~[javafmllanguage-1.19.3-44.1.10.jar%23287!/:?] {}         at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:78) ~[javafmllanguage-1.19.3-44.1.10.jar%23287!/:?] {}         at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$10(ModContainer.java:121) ~[fmlcore-1.19.3-44.1.10.jar%23286!/:?] {}         at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}         at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {}         at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}         at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}         at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {re:computing_frames}         at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {re:computing_frames}         at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {} Caused by: java.lang.RuntimeException: Attempted to load class net/minecraft/client/player/LocalPlayer for invalid dist DEDICATED_SERVER         at net.minecraftforge.fml.loading.RuntimeDistCleaner.processClassWithFlags(RuntimeDistCleaner.java:57) ~[fmlloader-1.19.3-44.1.10.jar%2368!/:1.0] {}         at cpw.mods.modlauncher.LaunchPluginHandler.offerClassNodeToPlugins(LaunchPluginHandler.java:88) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.modlauncher.ClassTransformer.transform(ClassTransformer.java:120) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.modlauncher.TransformingClassLoader.maybeTransformClassBytes(TransformingClassLoader.java:50) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.cl.ModuleClassLoader.readerToClass(ModuleClassLoader.java:113) ~[securejarhandler-2.1.6.jar:?] {}         at cpw.mods.cl.ModuleClassLoader.lambda$findClass$15(ModuleClassLoader.java:219) ~[securejarhandler-2.1.6.jar:?] {}         at cpw.mods.cl.ModuleClassLoader.loadFromModule(ModuleClassLoader.java:229) ~[securejarhandler-2.1.6.jar:?] {}         at cpw.mods.cl.ModuleClassLoader.findClass(ModuleClassLoader.java:219) ~[securejarhandler-2.1.6.jar:?] {}         at cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:135) ~[securejarhandler-2.1.6.jar:?] {}         at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?] {}         at com.anthonyhilyard.legendarytooltips.config.LegendaryTooltipsConfig.<init>(LegendaryTooltipsConfig.java:145) ~[LegendaryTooltips-1.19.3-forge-1.4.0.jar%23242!/:1.4.0] {re:classloading}         at net.minecraftforge.common.ForgeConfigSpec$Builder.configure(ForgeConfigSpec.java:605) ~[forge-1.19.3-44.1.10-universal.jar%23290!/:?] {re:classloading}         at com.anthonyhilyard.legendarytooltips.config.LegendaryTooltipsConfig.<clinit>(LegendaryTooltipsConfig.java:109) ~[LegendaryTooltips-1.19.3-forge-1.4.0.jar%23242!/:1.4.0] {re:classloading}         ... 14 more [10:47:18] [modloading-worker-0/INFO] [me.tr.be.BetterF3Forge/]: [BetterF3] Starting... [10:47:18] [modloading-worker-0/WARN] [me.tr.be.BetterF3Forge/]: [BetterF3] Not supported on dedicated server! [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Shire [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Desert Oasis [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Pagoda [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Minecolonies Original [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Caledonia [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Incan [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Warped Netherlands [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Dark Oak Treehouse [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Urban Birch [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Medieval Oak [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Medieval Birch [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Cavern [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Space Wars [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Medieval Spruce [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Jungle Treehouse [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Nordic Spruce [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Medieval Dark Oak [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Urban Savanna [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Stalactite Caves [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Lost Mesa City [10:47:18] [Structurize IO Worker #0/INFO] [structurize/]: Registered structure pack: Fortress [10:47:18] [Structurize IO Worker #0/WARN] [structurize/]: Failed loading packs from main folder path: . [10:47:18] [Structurize IO Worker #0/WARN] [structurize/]: Failed loading client packs from main folder path: . [10:47:18] [Structurize IO Worker #0/WARN] [structurize/]: Finished discovering Server Structure packs [10:47:19] [main/FATAL] [ne.mi.fm.ModLoader/LOADING]: Failed to complete lifecycle event CONSTRUCT, 2 errors found Negative index in crash report handler (16/18) [10:47:19] [main/FATAL] [ne.mi.co.ForgeMod/]: Preparing crash report with UUID abbe1430-ad0f-4008-ae53-cc9b19f71114 [10:47:19] [main/FATAL] [ne.mi.se.lo.ServerModLoader/]: Crash report saved to .\crash-reports\crash-2023-03-31_10.47.19-fml.txt [10:47:19] [main/FATAL] [ne.mi.co.ForgeMod/]: Preparing crash report with UUID 0291ccad-e0cc-4f2c-bacf-76791b9ab2ce ---- Minecraft Crash Report ---- // Why did you do that? Time: 2023-03-31 10:47:19 Description: Mod loading error has occurred java.lang.Exception: Mod Loading has failed         at net.minecraftforge.logging.CrashReportExtender.dumpModLoadingCrashReport(CrashReportExtender.java:55) ~[forge-1.19.3-44.1.10-universal.jar%23290!/:?] {re:classloading}         at net.minecraftforge.server.loading.ServerModLoader.load(ServerModLoader.java:39) ~[forge-1.19.3-44.1.10-universal.jar%23290!/:?] {re:classloading}         at net.minecraft.server.Main.main(Main.java:114) ~[server-1.19.3-20221207.122022-srg.jar%23285!/:?] {re:classloading,re:mixin,pl:mixin:A}         at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}         at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {}         at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}         at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {}         at net.minecraftforge.fml.loading.targets.CommonServerLaunchHandler.lambda$launchService$0(CommonServerLaunchHandler.java:29) ~[fmlloader-1.19.3-44.1.10.jar%2368!/:?] {}         at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) ~[bootstraplauncher-1.1.2.jar:?] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: main Stacktrace:         at net.minecraftforge.fml.loading.RuntimeDistCleaner.processClassWithFlags(RuntimeDistCleaner.java:57) ~[fmlloader-1.19.3-44.1.10.jar%2368!/:1.0] {} -- MOD skinlayers3d -- Details:         Mod File: /C:/Users/34664/Desktop/mds server/serverer/mods/3dskinlayers-forge-1.5.3-mc1.19.3.jar         Failure message: 3dSkinLayers (skinlayers3d) has failed to load correctly                 java.lang.RuntimeException: Attempted to load class net/minecraft/client/gui/screens/Screen for invalid dist DEDICATED_SERVER         Mod Version: 1.5.3         Mod Issue URL: NOT PROVIDED         Exception message: java.lang.RuntimeException: Attempted to load class net/minecraft/client/gui/screens/Screen for invalid dist DEDICATED_SERVER Stacktrace:         at net.minecraftforge.fml.loading.RuntimeDistCleaner.processClassWithFlags(RuntimeDistCleaner.java:57) ~[fmlloader-1.19.3-44.1.10.jar%2368!/:1.0] {}         at cpw.mods.modlauncher.LaunchPluginHandler.offerClassNodeToPlugins(LaunchPluginHandler.java:88) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.modlauncher.ClassTransformer.transform(ClassTransformer.java:120) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.modlauncher.TransformingClassLoader.maybeTransformClassBytes(TransformingClassLoader.java:50) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.cl.ModuleClassLoader.readerToClass(ModuleClassLoader.java:113) ~[securejarhandler-2.1.6.jar:?] {}         at cpw.mods.cl.ModuleClassLoader.lambda$findClass$15(ModuleClassLoader.java:219) ~[securejarhandler-2.1.6.jar:?] {}         at cpw.mods.cl.ModuleClassLoader.loadFromModule(ModuleClassLoader.java:229) ~[securejarhandler-2.1.6.jar:?] {}         at cpw.mods.cl.ModuleClassLoader.findClass(ModuleClassLoader.java:219) ~[securejarhandler-2.1.6.jar:?] {}         at cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:135) ~[securejarhandler-2.1.6.jar:?] {}         at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?] {}         at java.lang.Class.getDeclaredConstructors0(Native Method) ~[?:?] {re:mixin}         at java.lang.Class.privateGetDeclaredConstructors(Class.java:3373) ~[?:?] {re:mixin}         at java.lang.Class.getConstructor0(Class.java:3578) ~[?:?] {re:mixin}         at java.lang.Class.getDeclaredConstructor(Class.java:2754) ~[?:?] {re:mixin}         at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:68) ~[javafmllanguage-1.19.3-44.1.10.jar%23287!/:?] {}         at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$10(ModContainer.java:121) ~[fmlcore-1.19.3-44.1.10.jar%23286!/:?] {}         at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}         at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {}         at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}         at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}         at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {re:computing_frames}         at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {re:computing_frames}         at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {} -- MOD legendarytooltips -- Details:         Caused by 0: java.lang.ExceptionInInitializerError                 at java.lang.Class.forName0(Native Method) ~[?:?] {re:mixin}                 at java.lang.Class.forName(Class.java:467) ~[?:?] {re:mixin}                 at net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber.lambda$inject$6(AutomaticEventSubscriber.java:61) ~[javafmllanguage-1.19.3-44.1.10.jar%23287!/:?] {}                 at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?] {re:mixin}                 at net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber.inject(AutomaticEventSubscriber.java:48) ~[javafmllanguage-1.19.3-44.1.10.jar%23287!/:?] {}                 at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:78) ~[javafmllanguage-1.19.3-44.1.10.jar%23287!/:?] {}                 at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$10(ModContainer.java:121) ~[fmlcore-1.19.3-44.1.10.jar%23286!/:?] {}                 at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}                 at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {}                 at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}                 at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}                 at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {re:computing_frames}                 at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {re:computing_frames}                 at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {}         Mod File: /C:/Users/34664/Desktop/mds server/serverer/mods/LegendaryTooltips-1.19.3-forge-1.4.0.jar         Failure message: Legendary Tooltips (legendarytooltips) has failed to load correctly                 java.lang.ExceptionInInitializerError: null         Mod Version: 1.4.0         Mod Issue URL: NOT PROVIDED         Exception message: java.lang.RuntimeException: Attempted to load class net/minecraft/client/player/LocalPlayer for invalid dist DEDICATED_SERVER Stacktrace:         at net.minecraftforge.fml.loading.RuntimeDistCleaner.processClassWithFlags(RuntimeDistCleaner.java:57) ~[fmlloader-1.19.3-44.1.10.jar%2368!/:1.0] {}         at cpw.mods.modlauncher.LaunchPluginHandler.offerClassNodeToPlugins(LaunchPluginHandler.java:88) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.modlauncher.ClassTransformer.transform(ClassTransformer.java:120) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.modlauncher.TransformingClassLoader.maybeTransformClassBytes(TransformingClassLoader.java:50) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.cl.ModuleClassLoader.readerToClass(ModuleClassLoader.java:113) ~[securejarhandler-2.1.6.jar:?] {}         at cpw.mods.cl.ModuleClassLoader.lambda$findClass$15(ModuleClassLoader.java:219) ~[securejarhandler-2.1.6.jar:?] {}         at cpw.mods.cl.ModuleClassLoader.loadFromModule(ModuleClassLoader.java:229) ~[securejarhandler-2.1.6.jar:?] {}         at cpw.mods.cl.ModuleClassLoader.findClass(ModuleClassLoader.java:219) ~[securejarhandler-2.1.6.jar:?] {}         at cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:135) ~[securejarhandler-2.1.6.jar:?] {}         at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?] {}         at com.anthonyhilyard.legendarytooltips.config.LegendaryTooltipsConfig.<init>(LegendaryTooltipsConfig.java:145) ~[LegendaryTooltips-1.19.3-forge-1.4.0.jar%23242!/:1.4.0] {re:classloading}         at net.minecraftforge.common.ForgeConfigSpec$Builder.configure(ForgeConfigSpec.java:605) ~[forge-1.19.3-44.1.10-universal.jar%23290!/:?] {re:classloading}         at com.anthonyhilyard.legendarytooltips.config.LegendaryTooltipsConfig.<clinit>(LegendaryTooltipsConfig.java:109) ~[LegendaryTooltips-1.19.3-forge-1.4.0.jar%23242!/:1.4.0] {re:classloading}         at java.lang.Class.forName0(Native Method) ~[?:?] {re:mixin}         at java.lang.Class.forName(Class.java:467) ~[?:?] {re:mixin}         at net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber.lambda$inject$6(AutomaticEventSubscriber.java:61) ~[javafmllanguage-1.19.3-44.1.10.jar%23287!/:?] {}         at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?] {re:mixin}         at net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber.inject(AutomaticEventSubscriber.java:48) ~[javafmllanguage-1.19.3-44.1.10.jar%23287!/:?] {}         at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:78) ~[javafmllanguage-1.19.3-44.1.10.jar%23287!/:?] {}         at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$10(ModContainer.java:121) ~[fmlcore-1.19.3-44.1.10.jar%23286!/:?] {}         at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}         at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {}         at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}         at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}         at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {re:computing_frames}         at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {re:computing_frames}         at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {} -- System Details -- Details:         Minecraft Version: 1.19.3         Minecraft Version ID: 1.19.3         Operating System: Windows 11 (amd64) version 10.0         Java Version: 17.0.6, Oracle Corporation         Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode, sharing), Oracle Corporation         Memory: 280305808 bytes (267 MiB) / 587202560 bytes (560 MiB) up to 6442450944 bytes (6144 MiB)         CPUs: 16         Processor Vendor: GenuineIntel         Processor Name: 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz         Identifier: Intel64 Family 6 Model 141 Stepping 1         Microarchitecture: unknown         Frequency (GHz): 2.30         Number of physical packages: 1         Number of physical CPUs: 8         Number of logical CPUs: 16         Graphics card #0 name: NVIDIA GeForce RTX 3080 Laptop GPU         Graphics card #0 vendor: NVIDIA (0x10de)         Graphics card #0 VRAM (MB): 4095.00         Graphics card #0 deviceId: 0x249c         Graphics card #0 versionInfo: DriverVersion=31.0.15.3118         Memory slot #0 capacity (MB): 16384.00         Memory slot #0 clockSpeed (GHz): 3.20         Memory slot #0 type: DDR4         Memory slot #1 capacity (MB): 16384.00         Memory slot #1 clockSpeed (GHz): 3.20         Memory slot #1 type: DDR4         Virtual memory max (MB): 34585.49         Virtual memory used (MB): 21015.04         Swap memory total (MB): 2048.00         Swap memory used (MB): 61.95         JVM Flags: 1 total; -Xmx6G         ModLauncher: 10.0.8+10.0.8+main.0ef7e830         ModLauncher launch target: forgeserver         ModLauncher naming: srg         ModLauncher services:                 mixin-0.8.5.jar mixin PLUGINSERVICE                 eventbus-6.0.3.jar eventbus PLUGINSERVICE                 fmlloader-1.19.3-44.1.10.jar slf4jfixer PLUGINSERVICE                 fmlloader-1.19.3-44.1.10.jar object_holder_definalize PLUGINSERVICE                 fmlloader-1.19.3-44.1.10.jar runtime_enum_extender PLUGINSERVICE                 fmlloader-1.19.3-44.1.10.jar capability_token_subclass PLUGINSERVICE                 accesstransformers-8.0.4.jar accesstransformer PLUGINSERVICE                 fmlloader-1.19.3-44.1.10.jar runtimedistcleaner PLUGINSERVICE                 modlauncher-10.0.8.jar mixin TRANSFORMATIONSERVICE                 modlauncher-10.0.8.jar fml TRANSFORMATIONSERVICE         FML Language Providers:                 minecraft@1.0                 lowcodefml@null                 javafml@null         Mod List:                 YungsBetterDungeons-1.19.3-Forge-3.3.0.jar        |YUNG's Better Dungeons        |betterdungeons                |1.19.3-Forge-3.3.0  |COMMON_SET|Manifest: NOSIGNATURE                 notenoughcrashes-4.4.0+1.19.3-forge.jar           |Not Enough Crashes            |notenoughcrashes              |4.4.0+1.19.3        |COMMON_SET|Manifest: NOSIGNATURE                 BedBenefits-Forge-1.19.3-10.0.1.jar               |BedBenefits                   |bedbenefits         |10.0.1              |COMMON_SET|Manifest: NOSIGNATURE                 entangledfix-1.0.jar                              |Entangled Fix                 |entangledfix         |1.0                 |COMMON_SET|Manifest: NOSIGNATURE                 supermartijn642configlib-1.1.6b-forge-mc1.19.jar  |SuperMartijn642's Config Libra|supermartijn642configlib      |1.1.6b              |COMMON_SET|Manifest: NOSIGNATURE                 YungsBetterWitchHuts-1.19.3-Forge-2.2.0.jar       |YUNG's Better Witch Huts      |betterwitchhuts               |1.19.3-Forge-2.2.0  |COMMON_SET|Manifest: NOSIGNATURE                 open-parties-and-claims-forge-1.19.3-0.17.2.jar   |Open Parties and Claims       |openpartiesandclaims          |0.17.2              |COMMON_SET|Manifest: NOSIGNATURE                 geckolib-forge-1.19.3-4.0.6.jar                   |GeckoLib 4                    |geckolib         |4.0.6               |COMMON_SET|Manifest: NOSIGNATURE                 spiderstpo-1.19.3-2.0.4.jar                       |Nyf's Spiders 2.0             |spiderstpo         |2.0.4               |COMMON_SET|Manifest: NOSIGNATURE                 tia-1.19.3-1.0-forge.jar                          |Tiny Item Animations          |tia         |1.19.3-1.0          |COMMON_SET|Manifest: NOSIGNATURE                 jei-1.19.3-forge-12.4.0.22.jar                    |Just Enough Items             |jei         |12.4.0.22           |COMMON_SET|Manifest: NOSIGNATURE                 Floral Enchantment-1.19.3-1.4.2.jar               |Floral Enchantment            |floralench         |1.19.3-1.4.2        |COMMON_SET|Manifest: NOSIGNATURE                 DoggyTalentsNext-1.19.3-1.10.7.jar                |Doggy Talents Next            |doggytalents         |1.10.7              |COMMON_SET|Manifest: NOSIGNATURE                 YungsBetterOceanMonuments-1.19.3-Forge-2.2.0.jar  |YUNG's Better Ocean Monuments |betteroceanmonuments          |1.19.3-Forge-2.2.0  |COMMON_SET|Manifest: NOSIGNATURE                 goblintraders-1.8.0-1.19.3.jar                    |Goblin Traders                |goblintraders         |1.8.0               |COMMON_SET|Manifest: NOSIGNATURE                 dynamiclights-1.19.3.1.jar                        |Dynamic Lights                |dynamiclights         |1.19.3.1            |COMMON_SET|Manifest: NOSIGNATURE                 Incendium_1.19.3_v5.1.6.jar                       |Incendium                     |incendium         |5.1.6               |COMMON_SET|Manifest: NOSIGNATURE                 Structory_Towers_1.19.3_v1.0.2.jar                |Structory: Towers             |structorytowers               |1.0.2               |COMMON_SET|Manifest: NOSIGNATURE                 waystones-forge-1.19.3-12.2.0.jar                 |Waystones                     |waystones         |12.2.0              |COMMON_SET|Manifest: NOSIGNATURE                 Structory_1.19.3_v1.3.1a.jar                      |Structory                     |structory         |1.3.1a              |COMMON_SET|Manifest: NOSIGNATURE                 XaerosWorldMap_1.29.4_Forge_1.19.3.jar            |Xaero's World Map             |xaeroworldmap         |1.29.4              |COMMON_SET|Manifest: NOSIGNATURE                 Prism-1.19.3-forge-1.0.3.jar                      |Prism                         |prism         |1.0.3               |COMMON_SET|Manifest: NOSIGNATURE                 comforts-forge-6.1.2+1.19.3.jar                   |Comforts                      |comforts         |6.1.2+1.19.3        |COMMON_SET|Manifest: NOSIGNATURE                 citadel-2.3.1-1.19.3.jar                          |Citadel                       |citadel         |2.3.1               |COMMON_SET|Manifest: NOSIGNATURE                 alexsmobs-1.22.1.jar                              |Alex's Mobs                   |alexsmobs         |1.22.1              |COMMON_SET|Manifest: NOSIGNATURE                 TravelersBackpack-1.19.3-8.3.7.jar                |Traveler's Backpack           |travelersbackpack             |8.3.7               |COMMON_SET|Manifest: NOSIGNATURE                 NaturesCompass-1.19.3-1.10.1-forge.jar            |Nature's Compass              |naturescompass                |1.19.3-1.10.1-forge |COMMON_SET|Manifest: NOSIGNATURE                 YungsApi-1.19.3-Forge-3.9.0.jar                   |YUNG's API                    |yungsapi         |1.19.3-Forge-3.9.0  |COMMON_SET|Manifest: NOSIGNATURE                 DungeonCrawl-1.19.3-2.3.13.jar                    |Dungeon Crawl                 |dungeoncrawl         |2.3.13              |COMMON_SET|Manifest: NOSIGNATURE                 Bookshelf-Forge-1.19.3-17.1.6.jar                 |Bookshelf                     |bookshelf         |17.1.6              |COMMON_SET|Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5                 YungsBetterDesertTemples-1.19.3-Forge-2.3.0.jar   |YUNG's Better Desert Temples  |betterdeserttemples           |1.19.3-Forge-2.3.0  |COMMON_SET|Manifest: NOSIGNATURE                 ExplorersCompass-1.19.3-1.3.0-forge.jar           |Explorer's Compass            |explorerscompass              |1.19.3-1.3.0-forge  |COMMON_SET|Manifest: NOSIGNATURE                 balm-forge-1.19.3-5.0.4.jar                       |Balm                          |balm         |5.0.4               |COMMON_SET|Manifest: NOSIGNATURE                 medieval_paintings-1.19.2-7.0.jar                 |Medieval Paintings            |medieval_paintings            |7.0                 |COMMON_SET|Manifest: NOSIGNATURE                 JustEnoughResources-1.19.3-1.3.2.198.jar          |Just Enough Resources         |jeresources         |1.3.2.198           |COMMON_SET|Manifest: NOSIGNATURE                 [Universal]Immersive Structures-2.0.7.jar         |Immersive Structure           |imst         |2.0.7               |COMMON_SET|Manifest: NOSIGNATURE                 YungsBetterNetherFortresses-1.19.3-Forge-1.1.1.jar|YUNG's Better Nether Fortresse|betterfortresses              |1.19.3-Forge-1.1.1  |COMMON_SET|Manifest: NOSIGNATURE                 cloth-config-9.0.94-forge.jar                     |Cloth Config v9 API           |cloth_config         |9.0.94              |COMMON_SET|Manifest: NOSIGNATURE                 soundphysics-forge-1.19.3-1.1.0.jar               |Sound Physics Remastered      |sound_physics_remastered      |1.19.3-1.1.0        |COMMON_SET|Manifest: NOSIGNATURE                 3dskinlayers-forge-1.5.3-mc1.19.3.jar             |3dSkinLayers                  |skinlayers3d         |1.5.3               |ERROR     |Manifest: NOSIGNATURE                 forge-1.19.3-44.1.10-universal.jar                |Forge                         |forge         |44.1.10             |COMMON_SET|Manifest: 84:ce:76:e8:45:35:e4:0e:63:86:df:47:59:80:0f:67:6c:c1:5f:6e:5f:4d:b3:54:47:1a:9f:7f:ed:5e:f2:90                 TravelersTitles-1.19.3-Forge-3.2.0.jar            |Traveler's Titles             |travelerstitles               |1.19.3-Forge-3.2.0  |COMMON_SET|Manifest: NOSIGNATURE                 scuba_gear-1.19.3-1.0.5.jar                       |Scuba Gear                    |scuba_gear         |1.0.5               |COMMON_SET|Manifest: NOSIGNATURE                 twilightforest-1.19.3-4.2.1620-universal.jar      |The Twilight Forest           |twilightforest                |4.2.1620            |COMMON_SET|Manifest: NOSIGNATURE                 friendsandfoes-forge-mc1.19.3-1.8.0.jar           |Friends&Foes                  |friendsandfoes                |1.8.0               |COMMON_SET|Manifest: NOSIGNATURE                 structure_gel-1.19.3-2.9.0.jar                    |Structure Gel API             |structure_gel         |2.9.0               |COMMON_SET|Manifest: NOSIGNATURE                 explorations-forge-1.19.4-1.5.1.jar               |Explorations+                 |explorations         |1.19.4-1.5.1        |COMMON_SET|Manifest: NOSIGNATURE                 EquipmentCompare-1.19.3-forge-1.3.2.jar           |Equipment Compare             |equipmentcompare              |1.3.2               |COMMON_SET|Manifest: NOSIGNATURE                 corpse-1.19.3-1.0.3.jar                           |Corpse                        |corpse         |1.19.3-1.0.3        |COMMON_SET|Manifest: NOSIGNATURE                 AdvancementPlaques-1.19.3-1.4.8.jar               |Advancement Plaques           |advancementplaques            |1.4.8               |COMMON_SET|Manifest: NOSIGNATURE                 DungeonsArise-1.19.3-2.1.54-beta.jar              |When Dungeons Arise           |dungeons_arise                |2.1.54-1.19.3       |COMMON_SET|Manifest: NOSIGNATURE                 friendsandfoes-flowerymooblooms-forge-mc1.19.3-1.0|Friends&Foes - Flowery Moobloo|flowerymooblooms              |1.0.0               |COMMON_SET|Manifest: NOSIGNATURE                 server-1.19.3-20221207.122022-srg.jar             |Minecraft                     |minecraft         |1.19.3              |COMMON_SET|Manifest: NOSIGNATURE                 logprot-1.19.3-2.0.jar                            |Logprot                       |logprot         |1.4                 |COMMON_SET|Manifest: NOSIGNATURE                 repurposed_structures-6.3.19+1.19.3-forge.jar     |Repurposed Structures         |repurposed_structures         |6.3.19+1.19.3-forge |COMMON_SET|Manifest: NOSIGNATURE                 EnchantmentDescriptions-Forge-1.19.3-14.0.7.jar   |EnchantmentDescriptions       |enchdesc         |14.0.7              |COMMON_SET|Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5                 entangled-1.3.13-forge-mc1.19.3.jar               |Entangled                     |entangled         |1.3.13              |COMMON_SET|Manifest: NOSIGNATURE                 crashutilities-7.1.jar                            |Crash Utilities               |crashutilities                |7.1                 |COMMON_SET|Manifest: NOSIGNATURE                 Companion-1.19.3-forge-4.1.1.jar                  |Companion                     |companion         |4.1.1               |COMMON_SET|Manifest: NOSIGNATURE                 explorify-forge-1.19-1.3.0.jar                    |Explorify                     |explorify         |1.19-1.3.0          |COMMON_SET|Manifest: NOSIGNATURE                 friendsandfoes-beekeeperhut-forge-mc1.19.3-1.2.0.j|Friends&Foes - Beekeeper Hut  |beekeeperhut         |1.2.0               |COMMON_SET|Manifest: NOSIGNATURE                 dungeons_plus-1.19.3-1.4.0.jar                    |Dungeons Plus                 |dungeons_plus         |1.4.0               |COMMON_SET|Manifest: NOSIGNATURE                 CreativeCore_FORGE_v2.10.7_mc1.19.3.jar           |CreativeCore                  |creativecore         |2.10.7              |COMMON_SET|Manifest: NOSIGNATURE                 spectrelib-forge-0.12.4+1.19.2.jar                |SpectreLib                    |spectrelib         |0.12.4+1.19.2       |COMMON_SET|Manifest: NOSIGNATURE                 supermartijn642corelib-1.1.6-forge-mc1.19.3.jar   |SuperMartijn642's Core Lib    |supermartijn642corelib        |1.1.6               |COMMON_SET|Manifest: NOSIGNATURE                 YungsBridges-1.19.3-Forge-3.2.0.jar               |YUNG's Bridges                |yungsbridges         |1.19.3-Forge-3.2.0  |COMMON_SET|Manifest: NOSIGNATURE                 EyesInTheDarkness-1.19.3-1.3.7.jar                |Eyes in the Darkness          |eyesinthedarkness             |1.3.7               |COMMON_SET|Manifest: NOSIGNATURE                 domum_ornamentum-1.19.3-1.0.86-ALPHA-universal.jar|Domum Ornamentum              |domum_ornamentum              |1.19.3-1.0.86-ALPHA |COMMON_SET|Manifest: NOSIGNATURE                 spark-1.10.34-forge.jar                           |spark                         |spark         |1.10.34             |COMMON_SET|Manifest: NOSIGNATURE                 Iceberg-1.19.3-forge-1.1.2.jar                    |Iceberg                       |iceberg         |1.1.2               |COMMON_SET|Manifest: NOSIGNATURE                 LegendaryTooltips-1.19.3-forge-1.4.0.jar          |Legendary Tooltips            |legendarytooltips             |1.4.0               |ERROR     |Manifest: NOSIGNATURE                 ecologics-forge-1.19.3-2.1.13.jar                 |Ecologics                     |ecologics         |2.1.13              |COMMON_SET|Manifest: NOSIGNATURE                 blockui-1.19.3-0.0.70-ALPHA.jar                   |UI Library Mod                |blockui         |1.19.3-0.0.70-ALPHA |COMMON_SET|Manifest: NOSIGNATURE                 Xaeros_Minimap_23.3.2_Forge_1.19.3.jar            |Xaero's Minimap               |xaerominimap         |23.3.2              |COMMON_SET|Manifest: NOSIGNATURE                 EarthMobs-1.19.3-5.5.0.jar                        |Earth Mobs Mod                |earthmobsmod         |1.19.3-5.5.0        |COMMON_SET|Manifest: NOSIGNATURE                 YungsExtras-1.19.3-Forge-3.2.0.jar                |YUNG's Extras                 |yungsextras         |1.19.3-Forge-3.2.0  |COMMON_SET|Manifest: NOSIGNATURE                 YungsBetterStrongholds-1.19.3-Forge-3.3.0.jar     |YUNG's Better Strongholds     |betterstrongholds             |1.19.3-Forge-3.3.0  |COMMON_SET|Manifest: NOSIGNATURE                 structurize-1.19.3-1.0.488-ALPHA.jar              |Structurize                   |structurize         |1.19.3-1.0.488-ALPHA|COMMON_SET|Manifest: NOSIGNATURE                 multipiston-1.19.3-1.2.26-ALPHA.jar               |Multi-Piston                  |multipiston         |1.19.3-1.2.26-ALPHA |COMMON_SET|Manifest: NOSIGNATURE                 worldedit-mod-7.2.13.jar                          |WorldEdit                     |worldedit         |7.2.13+46576cc      |COMMON_SET|Manifest: NOSIGNATURE                 eatinganimation-1.19.3-4.1.0.jar                  |Eating Animation              |eatinganimation               |4.1.0               |COMMON_SET|Manifest: NOSIGNATURE                 minecolonies-1.19.3-1.0.1325-ALPHA.jar            |MineColonies                  |minecolonies         |1.19.3-1.0.1325-ALPH|COMMON_SET|Manifest: NOSIGNATURE                 mvs-3.1.7-1.19.3.jar                              |Moog's Voyager Structures     |mvs         |3.1.7-1.19.3        |COMMON_SET|Manifest: NOSIGNATURE                 appleskin-forge-mc1.19-2.4.2.jar                  |AppleSkin                     |appleskin         |2.4.2+mc1.19        |COMMON_SET|Manifest: NOSIGNATURE                 lootr-1.19.3-0.5.25.62.jar                        |Lootr                         |lootr         |0.4.24.61           |COMMON_SET|Manifest: NOSIGNATURE                 AI-Improvements-1.19.2-0.5.2.jar                  |AI-Improvements               |aiimprovements                |0.5.2               |COMMON_SET|Manifest: NOSIGNATURE                 BetterF3-5.1.0-Forge-1.19.3.jar                   |BetterF3                      |betterf3         |5.1.0               |COMMON_SET|Manifest: NOSIGNATURE                 Aquaculture-1.19.3-2.4.11.jar                     |Aquaculture 2                 |aquaculture         |1.19.3-2.4.11       |COMMON_SET|Manifest: NOSIGNATURE                 foodeffecttooltips-1.0.1+forge-1.19.3.jar         |Food Effect Tooltips          |foodeffecttooltips            |1.0.0               |COMMON_SET|Manifest: NOSIGNATURE                 towns_and_towers_forge-1.10.1+1.19.3.jar          |Towns and Towers              |t_and_t         |1.10.1              |COMMON_SET|Manifest: NOSIGNATURE                 exoticbirds-1.19.3-2.7.0.jar                      |Exotic Birds                  |exoticbirds         |2.7.0               |COMMON_SET|Manifest: NOSIGNATURE                 YungsBetterMineshafts-1.19.3-Forge-3.3.0.jar      |YUNG's Better Mineshafts      |bettermineshafts              |1.19.3-Forge-3.3.0  |COMMON_SET|Manifest: NOSIGNATURE                 gamemenumodoption-mc1.19.3-2.0.0.jar              |Game Menu Mod Option          |gamemenumodoption             |2.0.0               |COMMON_SET|Manifest: NOSIGNATURE                 DarkPaintings-Forge-1.19.3-14.0.2.jar             |DarkPaintings                 |darkpaintings         |14.0.2              |COMMON_SET|Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5                 xptome-1.19.3-2.1.7.jar                           |XP Tome                       |xpbook         |2.1.7               |COMMON_SET|Manifest: NOSIGNATURE         Crash Report UUID: 0291ccad-e0cc-4f2c-bacf-76791b9ab2ce         FML: 44.1         Forge: net.minecraftforge:44.1.10         Suspected Mods: None[10:47:19] [main/ERROR] [minecraft/Main]: Failed to start the minecraft server net.minecraftforge.fml.LoadingFailedException: Loading errors encountered: [         3dSkinLayers (skinlayers3d) has failed to load correctly §7java.lang.RuntimeException: Attempted to load class net/minecraft/client/gui/screens/Screen for invalid dist DEDICATED_SERVER,         Legendary Tooltips (legendarytooltips) has failed to load correctly §7java.lang.ExceptionInInitializerError: null ]         at net.minecraftforge.fml.ModLoader.waitForTransition(ModLoader.java:237) ~[fmlcore-1.19.3-44.1.10.jar%23286!/:?] {}         at net.minecraftforge.fml.ModLoader.lambda$dispatchAndHandleError$24(ModLoader.java:202) ~[fmlcore-1.19.3-44.1.10.jar%23286!/:?] {}         at java.util.Optional.ifPresent(Optional.java:178) ~[?:?] {re:mixin}         at net.minecraftforge.fml.ModLoader.dispatchAndHandleError(ModLoader.java:202) ~[fmlcore-1.19.3-44.1.10.jar%23286!/:?] {}         at net.minecraftforge.fml.ModLoader.lambda$gatherAndInitializeMods$14(ModLoader.java:179) ~[fmlcore-1.19.3-44.1.10.jar%23286!/:?] {}         at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}         at net.minecraftforge.fml.ModLoader.gatherAndInitializeMods(ModLoader.java:179) ~[fmlcore-1.19.3-44.1.10.jar%23286!/:?] {}         at net.minecraftforge.server.loading.ServerModLoader.load(ServerModLoader.java:32) ~[forge-1.19.3-44.1.10-universal.jar%23290!/:?] {re:classloading}         at net.minecraft.server.Main.main(Main.java:114) ~[server-1.19.3-20221207.122022-srg.jar%23285!/:?] {re:classloading,re:mixin,pl:mixin:A}         at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}         at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {}         at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}         at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {}         at net.minecraftforge.fml.loading.targets.CommonServerLaunchHandler.lambda$launchService$0(CommonServerLaunchHandler.java:29) ~[fmlloader-1.19.3-44.1.10.jar%2368!/:?] {}         at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) ~[modlauncher-10.0.8.jar%2355!/:?] {}         at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) ~[bootstraplauncher-1.1.2.jar:?] {}
    • I totally get where you're coming from. It can seem a bit sketchy to make money off of something that's technically a game, but there are actually a lot of ways to do it that are totally legit. One example is through in-game economies where you can buy, sell, and trade items like skins or other virtual goods. It's actually a pretty big industry, with some games even hosting massive tournaments where players can win real money. As for creating and selling textures or other add-ons, it's not necessarily against the rules either. As long as you're not exploiting any bugs or cheating in any way, it's really just a matter of creating something that people find valuable and are willing to pay for.
  • Topics

×
×
  • Create New...

Important Information

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