Jump to content

[SOLVED][1.7.10]Cancelling Crafting?


deadrecon98

Recommended Posts

I am trying to make a mod(duh) and I am getting stuck on one bit where it checks whether the player has the requirements and if not I want it to cancel the crafting (or at least get rid of the product('s)) and give the player back their items. I am currently looking into the onCreated method but I don't think it is possible here. Any help would be greatly appreciated. Here is my code btw, just in case you are confused as to what I am trying to do.

 

	@Override
public void onCreated(ItemStack is, World world, EntityPlayer player){
	super.onCreated(is, world, player);

	if(!world.isRemote){
		if(Levels.getMagicLevel(player) >= levelNeeded){
			Levels.addMagicXP(player, this.xpGiven);
			player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.GREEN + "+" + this.xpGiven + EnumChatFormatting.GOLD + " to Magic! Only " + Levels.getRemainingXpToLevel(player) + " to go!"));
			player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.GREEN + "Total XP: " + EnumChatFormatting.GOLD + Levels.getMagicXP(player)));
		}else{
			if(this.craftingReagentsI.size() > 0){
				for(int i=0;i<this.craftingReagentsI.size();i++){
					player.dropItem(this.craftingReagentsI.get(i), 1);
				}
			}
			if(this.craftingReagentsB.size() > 0){
				for(int i=0;i<this.craftingReagentsB.size();i++){
					player.dropItem(new ItemStack(this.craftingReagentsB.get(i)).getItem(), 1);
				}
			}
		}
	}
}

Link to comment
Share on other sites

Use an IRecipe. That way the result won't show unless are requirements are met.

Could you give me an example of how this could be achieved?

What you want to do is create a class implementing IRecipe. Fill in the methods appropriately. Check all conditions under the matches() method and return false if any of your conditions are false. Return the crafting result under getRecipeResult(). See net.minecraft.item.crafting for more details.

 

 

EDIT: Forgot the most important part: register your recipe using GameRegistry.addRecipe(new YourIRecipe());

Maker of the Craft++ mod.

Link to comment
Share on other sites

Use an IRecipe. That way the result won't show unless are requirements are met.

Could you give me an example of how this could be achieved?

What you want to do is create a class implementing IRecipe. Fill in the methods appropriately. Check all conditions under the matches() method and return false if any of your conditions are false. Return the crafting result under getRecipeResult(). See net.minecraft.item.crafting for more details.

 

 

EDIT: Forgot the most important part: register your recipe using GameRegistry.addRecipe(new YourIRecipe());

 

Thank you, I've never bothered with something like this before but turns out it's very simple!

Link to comment
Share on other sites

What kind of recipe do you want to check? The InventoryCrafting is just a normal IInventory. It has 9 slots, you check if they contain a specific pattern.

 

I just want to check a normal recipe like 111, 222, 323, but I am trying to figure out a way of doing this. The recipe(3 in specific) would be the block but I cannot get the block by itself so I tried using ItemStacks. With ItemStacks however, I need to check if they are null and then it just goes downhill from there.

Link to comment
Share on other sites

What kind of recipe do you want to check? The InventoryCrafting is just a normal IInventory. It has 9 slots, you check if they contain a specific pattern.

 

I just want to check a normal recipe like 111, 222, 323, but I am trying to figure out a way of doing this. The recipe(3 in specific) would be the block but I cannot get the block by itself so I tried using ItemStacks. With ItemStacks however, I need to check if they are null and then it just goes downhill from there.

There is no reason for you to check if its null.

And heres a tutorial which you could have found in five seconds.

 

http://www.minecraftforge.net/wiki/Crafting_and_Smelting

I'm back from being gone for... I think its been about a year. I'm pretty sure nobody remembers me, but hello anybody who does!

Link to comment
Share on other sites

What kind of recipe do you want to check? The InventoryCrafting is just a normal IInventory. It has 9 slots, you check if they contain a specific pattern.

 

I just want to check a normal recipe like 111, 222, 323, but I am trying to figure out a way of doing this. The recipe(3 in specific) would be the block but I cannot get the block by itself so I tried using ItemStacks. With ItemStacks however, I need to check if they are null and then it just goes downhill from there.

There is no reason for you to check if its null.

And heres a tutorial which you could have found in five seconds.

 

http://www.minecraftforge.net/wiki/Crafting_and_Smelting

 

...Ummm, it HAS to be checked otherwise the game WILL crash. Also that link is way off topic. Read the rest of the post, I am not trying to learn how to create a recipe, I am trying to learn how to define one in a specific bit of code.

Link to comment
Share on other sites

Ok... you can cheat here a bit.

Register your recipe like normal. Then get (and remove) the last element in CraftingManager().getInstance().getRecipeList. It will be an IRecipe representing the recipe you just registered (note you must do these steps immediately after each other).

 

Then in your IRecipe implementation you delegate all methods to that original IRecipe. Except that in matches() you also check the additional condition. Then register your IRecipe. Done.

 

Lol what? That was wordy.

So i've managed to get as far as

//cm is CraftingManager, I have a variable set up to call the class.
	cm.addRecipe(new ItemStack(blankRune, 4), "SS ", "S S", "S  ", Character.valueOf('S'), Blocks.stone);
	cm.getRecipeList().remove((cm.getRecipeList().size() - 1));

But as for delegating all methods, I have no idea what you mean.

Link to comment
Share on other sites

That remove() call gives you an IRecipe.

In your IRecipe class makes a field of type IRecipe. Put that IRecipe you get from remove in there.

 

Then in e.g. getCraftingResult you just call getCraftingResult on that IRecipe field.

 

So i've managed to get a big chunk of the code fixed now is all I need to know is how to set the output. Also, for some reason the getCraftingResult() method isn't being called, I have to manually call it.

	public static ArrayList<IRecipe> runeList = new ArrayList<IRecipe>();

@Override
public boolean matches(InventoryCrafting IC, World world) {
	EntityPlayer player = findPlayer(IC);
	if(!player.worldObj.isRemote){
		if(runeList.get(0).matches(IC, world)){
			System.out.println(getCraftingResult(IC));
		}
	}
	return false;
}

@Override
public ItemStack getCraftingResult(InventoryCrafting IC){
	EntityPlayer player = findPlayer(IC);
	World world = player.worldObj;
	if(!player.worldObj.isRemote){
		if(runeList.get(0).matches(IC, world)){
			return runeList.get(0).getRecipeOutput();
		}
	}
	return null;
}

Link to comment
Share on other sites

Uhm... what are you doing?!?

Your matches method always returns false.

Why do you have a List of IRecipe? You only want a single IRecipe...

 

Ok, so I changed the method to return true if the requirements are met(Completely forgot that the method wasn't void) but it still won't show up. If I click it, I still get the item but the slot doesn't actually display the item.

As for the list, I plan on adding more recipes and doing the same thing with them so by making a list I can make it more versatile. (And they are going to be processed one at a time)

Link to comment
Share on other sites

You cannot wrap multiple IRecipe's in one IRecipe. You need a "new" IRecipe for every IRecipe you replace.

 

ALL the methods except matches should be like this:

 

return theIRecipe.someMethod(args);

 

Nothing else!

 

Lol, the IRecipe's are completely seperate. I just took the object itself and stuck it into a list so that I may have multiple IRecipe's.

and as for the returning method, I have set that up the way you are showing. xD Here is my code again so that you may point some stupid mistake I made.

(It is only getting the first entry in the recipe list as well because I have only added one and don't want to implement the full thing yet)

	@Override
public boolean matches(InventoryCrafting IC, World world) {
	EntityPlayer player = findPlayer(IC);
	if(!player.worldObj.isRemote){
		if(runeList.get(0).matches(IC, world)){
			return true;
		}
	}
	return false;
}

@Override
public ItemStack getCraftingResult(InventoryCrafting IC){
	EntityPlayer player = findPlayer(IC);
	World world = player.worldObj;
	if(!player.worldObj.isRemote){
		if(runeList.get(0).matches(IC, world)){
			return runeList.get(0).getRecipeOutput();
		}
	}
	return null;
}

 

P.S. I should also mention that it will give me item(Even though it won't show up in the product cell) the first time but not any time after that. It will just give me a phantom item that isn't really there but is? Kind of like it is client only but a bit odder.

Link to comment
Share on other sites

I give up. Just use this code:

 

List<IRecipe> recipes = CraftingManager.getInstance().getRecipeList();
GameRegistry.addRecipe(new ItemStack(Blocks.dirt), "x", 'x', Items.diamond);
IRecipe recipe = recipes.remove(recipes.size() - 1);
GameRegistry.addRecipe(new MyRecipe(recipe));


class MyRecipe implements IRecipe {

    private final IRecipe wrapped;

    MyRecipe(IRecipe wrapped) {
        this.wrapped = wrapped;
    }

    @Override
    public boolean matches(InventoryCrafting grid, World world) {
        return additionalCondition(grid, world) && wrapped.matches(grid, world);
    }
    
    private boolean additionalCondition(InventoryCrafting grid, World world) {
        return true; // do some checks
    }

    @Override
    public ItemStack getCraftingResult(InventoryCrafting grid) {
        return wrapped.getCraftingResult(grid);
    }

    @Override
    public int getRecipeSize() {
        return wrapped.getRecipeSize();
    }

    @Override
    public ItemStack getRecipeOutput() {
        return wrapped.getRecipeOutput();
    }
}

Oh jesus, my stupidity hurts. I was treating the class like it wasn't an object. xD

Thanks a ton, I had no idea how off I was.

Link to comment
Share on other sites

It seems that I am getting another issue. The first Item I added (which needs to meet no requirements) works fine, but the second one put through it doesn't show up in the product grid. This one has the requirement of needing level one. Do you have any ideas as to what may be causing this?

P.S. I also changed it to only update when on the client side and that worked but you could no longer get the item because the server was told it was false.

 

EDIT: This seems to only be an issue when using two items of the same class.

package com.Cyphereion.RunesOfAltura.Manager;

import java.lang.reflect.Field;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.ContainerPlayer;
import net.minecraft.inventory.ContainerWorkbench;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.inventory.SlotCrafting;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.world.World;

import com.Cyphereion.RunesOfAltura.Data.Levels;
import com.Cyphereion.RunesOfAltura.Object.ItemRune;
import com.google.common.base.Throwables;

import cpw.mods.fml.relauncher.ReflectionHelper;

public class CraftManager implements IRecipe {

    private final IRecipe wrapped;

    public CraftManager(IRecipe wrapped) {
        this.wrapped = wrapped;
    }

    @Override
    public boolean matches(InventoryCrafting grid, World world) {
    	return additionalCondition(grid, world) && wrapped.matches(grid, world);
    }
    
    private boolean additionalCondition(InventoryCrafting grid, World world) {
    	ItemStack output = this.wrapped.getRecipeOutput();
    	EntityPlayer player = findPlayer(grid);
        ItemRune rune = (ItemRune)output.getItem();
    	if(Levels.getMagicLevel(player) >= rune.levelNeeded){
    		return true;
    	}
        return false;
    }
    
    private static final Field eventHandlerField = ReflectionHelper.findField(InventoryCrafting.class, "eventHandler");
    private static final Field containerPlayerPlayerField = ReflectionHelper.findField(ContainerPlayer.class, "thePlayer");
    private static final Field slotCraftingPlayerField = ReflectionHelper.findField(SlotCrafting.class, "thePlayer");

    private static EntityPlayer findPlayer(InventoryCrafting inv) {
       try {
          Container container = (Container) eventHandlerField.get(inv);
          if (container instanceof ContainerPlayer) {
             return (EntityPlayer) containerPlayerPlayerField.get(container);
          } else if (container instanceof ContainerWorkbench) {
             return (EntityPlayer) slotCraftingPlayerField.get(container.getSlot(0));
          } else {
             // don't know the player
             return null;
          }
       } catch (Exception e) {
          throw Throwables.propagate(e);
       }
    }

    @Override
    public ItemStack getCraftingResult(InventoryCrafting grid) {
        return wrapped.getCraftingResult(grid);
    }

    @Override
    public int getRecipeSize() {
        return wrapped.getRecipeSize();
    }

    @Override
    public ItemStack getRecipeOutput() {
        return wrapped.getRecipeOutput();
    }
}

Link to comment
Share on other sites

Show it.

 

WorldData.java

package com.Cyphereion.RunesOfAltura.Data;

import java.util.Iterator;

import com.Cyphereion.RunesOfAltura.RunesOfAltura;

import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.village.Village;
import net.minecraft.world.World;
import net.minecraft.world.WorldSavedData;
import net.minecraft.world.storage.MapStorage;

public class WorldData extends WorldSavedData {

   final static String key = RunesOfAltura.MODID;
   
   public static WorldData forWorld(World world) {
      MapStorage storage = world.perWorldStorage;
      WorldData result = (WorldData)storage.loadData(WorldData.class, key);
      if (result == null) {
         result = new WorldData(key);
         storage.setData(key, result);
      }
      return result;
   }
   
   private NBTTagCompound data = new NBTTagCompound();

   public WorldData(String tagName) {
       super(tagName);
   }

   @Override
   public void readFromNBT(NBTTagCompound compound) {
  	 data = compound.getCompoundTag(key);
   }

   @Override
   public void writeToNBT(NBTTagCompound compound) {
       compound.setTag(key, data);
   }

   public NBTTagCompound getData() {
       return data;
   }
}

 

Levels.java

package com.Cyphereion.RunesOfAltura.Data;

import java.util.Random;

import com.Cyphereion.RunesOfAltura.RunesOfAltura;

import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;

public class Levels {

static LogManager log = RunesOfAltura.instance.log;

public static void addMagicXP(EntityPlayer player, int amount){
	if(!player.worldObj.isRemote){
		log.info("Adding " + amount + " xp to " + player.getDisplayName() + ".");
		WorldData data = WorldData.forWorld(player.worldObj);
		NBTTagCompound tag = data.getData();
		int xp = tag.getInteger(player.getDisplayName() + ".magicXP");
		tag.setInteger(player.getDisplayName() + ".magicXP", xp + amount);
		data.markDirty();
		xp = tag.getInteger(player.getDisplayName() + ".magicXP");
		if(xp >= (50 * tag.getInteger(player.getDisplayName() + ".magicLevel") + 12)){
			levelUpMagic(player);
		}
	}
}

public static void levelUpMagic(EntityPlayer player){
	if(!player.worldObj.isRemote){
		WorldData data = WorldData.forWorld(player.worldObj);
		NBTTagCompound tag = data.getData();
		int lvl = tag.getInteger(player.getDisplayName() + ".magicLevel");
		tag.setInteger(player.getDisplayName() + ".magicLevel", lvl + 1);
		tag.setInteger(player.getDisplayName() + ".magicXP", 0);
		log.info("Player " + player.getDisplayName() + " is now magic level " + tag.getInteger(player.getDisplayName() + ".magicLevel") + ".");
		player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.AQUA + "Level Up!" + EnumChatFormatting.GOLD + " You are now level " + EnumChatFormatting.RED + tag.getInteger(player.getDisplayName() + ".magicLevel") + EnumChatFormatting.GOLD + "!"));
	}
	double x = player.posX, y = player.posY, z = player.posZ;
	Random rand = new Random();
	for(int i=0;i<50;i++){
		Minecraft.getMinecraft().theWorld.spawnParticle("lava", x + 0.5D + rand.nextDouble(), y + 0.5D + rand.nextDouble(), z - 1 + 0.5D + rand.nextDouble(), 0, 0, 0);
	}
}

public static int getRemainingXpToLevel(EntityPlayer player){
	WorldData data = WorldData.forWorld(player.worldObj);
	NBTTagCompound tag = data.getData();
	int xp = tag.getInteger(player.getDisplayName() + ".magicXP");
	int xpToLevel = 50 * tag.getInteger(player.getDisplayName() + ".magicLevel") + 12;
	return xpToLevel - xp;
}

public static int getMagicLevel(EntityPlayer player){
	WorldData data = WorldData.forWorld(player.worldObj);
	NBTTagCompound tag = data.getData();
	return tag.getInteger(player.getDisplayName() + ".magicLevel");
}

public static int getMagicXP(EntityPlayer player){
	WorldData data = WorldData.forWorld(player.worldObj);
	NBTTagCompound tag = data.getData();
	return tag.getInteger(player.getDisplayName() + ".magicXP");
}
}

Link to comment
Share on other sites

 

CraftingManager

package com.Cyphereion.RunesOfAltura.Manager;

import java.lang.reflect.Field;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.ContainerPlayer;
import net.minecraft.inventory.ContainerWorkbench;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.inventory.SlotCrafting;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.world.World;

import com.Cyphereion.RunesOfAltura.RunesOfAltura;
import com.Cyphereion.RunesOfAltura.Data.EntityPlayerExtended;
import com.Cyphereion.RunesOfAltura.Data.LogManager;
import com.Cyphereion.RunesOfAltura.Object.ItemRune;
import com.google.common.base.Throwables;

import cpw.mods.fml.relauncher.ReflectionHelper;

public class CraftManager implements IRecipe {

    private final IRecipe wrapped;
    static LogManager log = RunesOfAltura.instance.log;

    public CraftManager(IRecipe wrapped) {
        this.wrapped = wrapped;
    }

    @Override
    public boolean matches(InventoryCrafting grid, World world) {
    	return additionalCondition(grid, world) && wrapped.matches(grid, world);
    }
    
    private boolean additionalCondition(InventoryCrafting grid, World world) {
    	ItemStack output = this.wrapped.getRecipeOutput();
    	EntityPlayerExtended player = EntityPlayerExtended.get(findPlayer(grid));
    	
    	if(output.getItem() instanceof ItemRune){
		ItemRune rune = (ItemRune)output.getItem();
            return player.getMagicLevel() >= rune.levelNeeded ? true:false;
    	}
    	return false;
    }
    
    private static final Field eventHandlerField = ReflectionHelper.findField(InventoryCrafting.class, "eventHandler");
    private static final Field containerPlayerPlayerField = ReflectionHelper.findField(ContainerPlayer.class, "thePlayer");
    private static final Field slotCraftingPlayerField = ReflectionHelper.findField(SlotCrafting.class, "thePlayer");

    private static EntityPlayer findPlayer(InventoryCrafting inv) {
       try {
          Container container = (Container) eventHandlerField.get(inv);
          if (container instanceof ContainerPlayer) {
             return (EntityPlayer) containerPlayerPlayerField.get(container);
          } else if (container instanceof ContainerWorkbench) {
             return (EntityPlayer) slotCraftingPlayerField.get(container.getSlot(0));
          } else {
             log.error("Player not found!");
             return null;
          }
       } catch (Exception e) {
          throw Throwables.propagate(e);
       }
    }

    @Override
    public ItemStack getCraftingResult(InventoryCrafting grid) {
        return wrapped.getCraftingResult(grid);
    }

    @Override
    public int getRecipeSize() {
        return wrapped.getRecipeSize();
    }

    @Override
    public ItemStack getRecipeOutput() {
        return wrapped.getRecipeOutput();
    }
}

IExtendedEntityProperties.

 

Ok, to your request I have completely changed my player data system but the same thing is happening. Here is some more source code.

 

ItemRune.java

package com.Cyphereion.RunesOfAltura.Object;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;

import com.Cyphereion.RunesOfAltura.Data.EntityPlayerExtended;

public class ItemRune extends Item{

public int xpGiven, levelNeeded;
public ItemRune(int xpGiven, int levelNeeded){
	this.xpGiven = xpGiven;
	this.levelNeeded = levelNeeded;
}

@Override
public void onCreated(ItemStack is, World world, EntityPlayer player){
	super.onCreated(is, world, player);
	EntityPlayerExtended playerEXT = EntityPlayerExtended.get(player);
	if(!world.isRemote){
		playerEXT.addMagicXP(this.xpGiven);
		player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.GREEN + "+" + this.xpGiven + EnumChatFormatting.GOLD + " to Magic! Only " + playerEXT.getRemainingXpToLevel() + " to go!"));
		player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.GREEN + "Total XP: " + EnumChatFormatting.GOLD + playerEXT.getMagicXP()));
	}
}

}

 

EventManager.java

package com.Cyphereion.RunesOfAltura.Manager;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraftforge.event.entity.EntityEvent.EntityConstructing;

import com.Cyphereion.RunesOfAltura.Data.EntityPlayerExtended;

import cpw.mods.fml.common.eventhandler.SubscribeEvent;

public class EventManager
{
@SubscribeEvent
public void onEntityConstructing(EntityConstructing event)
{
	if (event.entity instanceof EntityPlayer && EntityPlayerExtended.get((EntityPlayer) event.entity) == null){
		EntityPlayerExtended.register((EntityPlayer) event.entity);
	}

	if (event.entity instanceof EntityPlayer && event.entity.getExtendedProperties(EntityPlayerExtended.EXT_PROP_NAME) == null){
		event.entity.registerExtendedProperties(EntityPlayerExtended.EXT_PROP_NAME, new EntityPlayerExtended((EntityPlayer) event.entity));
	}

}
}

 

EntityPlayerExtended.java

package com.Cyphereion.RunesOfAltura.Data;

import java.util.Random;

import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;
import net.minecraftforge.common.IExtendedEntityProperties;

import com.Cyphereion.RunesOfAltura.RunesOfAltura;

public class EntityPlayerExtended implements IExtendedEntityProperties
{
public final static String EXT_PROP_NAME = "RoA";

private final EntityPlayer player;

private int magicXP = 0, magicLevel = 0;
static LogManager log = RunesOfAltura.instance.log;

public EntityPlayerExtended(EntityPlayer player)
{
	this.player = player;
	this.magicLevel = 0;
	this.magicXP = 0;
}

/**
 * Used to register these extended properties for the player during EntityConstructing event
 * This method is for convenience only; it will make your code look nicer
 */
public static final void register(EntityPlayer player)
{
	player.registerExtendedProperties(EntityPlayerExtended.EXT_PROP_NAME, new EntityPlayerExtended(player));
}

/**
 * Returns ExtendedPlayer properties for player
 * This method is for convenience only; it will make your code look nicer
 */
public static final EntityPlayerExtended get(EntityPlayer player)
{
	return (EntityPlayerExtended) player.getExtendedProperties(EXT_PROP_NAME);
}

@Override
public void saveNBTData(NBTTagCompound compound)
{
	NBTTagCompound properties = new NBTTagCompound();

	properties.setInteger("magicXP", this.magicXP);
	properties.setInteger("magicLevel", this.magicLevel);

	compound.setTag(EXT_PROP_NAME, properties);

}

@Override
public void loadNBTData(NBTTagCompound compound)
{
	NBTTagCompound properties = (NBTTagCompound) compound.getTag(EXT_PROP_NAME);
	this.magicXP = properties.getInteger("magicXP");
	this.magicLevel = properties.getInteger("magicLevel");
	log.debug("Magic XP: " + this.magicXP + " : Magic Level: " + this.magicLevel);
}

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

public void addMagicXP(int amount){
	if(!player.worldObj.isRemote){
		log.info("Adding " + amount + " xp to " + "");
		this.magicXP += amount;
		if(this.magicXP >= (50 * this.magicLevel + 12)){
			levelUpMagic();
		}
	}
}

public void levelUpMagic(){
	if(!player.worldObj.isRemote){
		this.magicLevel ++;
		this.magicXP = 0;
		log.info("Player " + player.getDisplayName() + " is now magic level " + this.magicLevel + ".");
		player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.AQUA + "Level Up!" + EnumChatFormatting.GOLD + " You are now level " + EnumChatFormatting.RED + this.magicLevel + EnumChatFormatting.GOLD + "!"));
	}
	double x = player.posX, y = player.posY, z = player.posZ;
	Random rand = new Random();
	for(int i=0;i<50;i++){
		Minecraft.getMinecraft().theWorld.spawnParticle("lava", x + 0.5D + rand.nextDouble(), y + 0.5D + rand.nextDouble(), z - 1 + 0.5D + rand.nextDouble(), 0, 0, 0);
	}
}

public int getRemainingXpToLevel(){
	int xpToLevel = 50 * this.magicLevel + 12;
	return xpToLevel - this.magicXP;
}

public int getMagicLevel(){
	return this.magicLevel;
}

public int getMagicXP(){
	return this.magicXP;
}
}

Link to comment
Share on other sites

You'll also need to show your updated IRecipe code.

 

Btw, you registered your properties twice in onEntityConstructing - you only need the first one, because it does exactly what the second one does:

if (event.entity instanceof EntityPlayer && EntityPlayerExtended.get((EntityPlayer) event.entity) == null){
EntityPlayerExtended.register((EntityPlayer) event.entity);
}

// the following is totally unnecessary, as it does exactly what was just done above
/*
if (event.entity instanceof EntityPlayer && event.entity.getExtendedProperties(EntityPlayerExtended.EXT_PROP_NAME) == null){
event.entity.registerExtendedProperties(EntityPlayerExtended.EXT_PROP_NAME, new EntityPlayerExtended((EntityPlayer) event.entity));
}
*/

 

That's the second time today I've seen that exact same code - any particular reason people are duplicating it?

Link to comment
Share on other sites

You'll also need to show your updated IRecipe code.

 

Btw, you registered your properties twice in onEntityConstructing - you only need the first one, because it does exactly what the second one does:

if (event.entity instanceof EntityPlayer && EntityPlayerExtended.get((EntityPlayer) event.entity) == null){
		EntityPlayerExtended.register((EntityPlayer) event.entity);
	}

 

That's the second time today I've seen that exact same code - any particular reason people are duplicating it?

 

Umm I copied the code from somewhere else. that's why the second one was there.

 

Here are my whatchamacallits:

	List<IRecipe> recipes = CraftingManager.getInstance().getRecipeList();

	GameRegistry.addRecipe(new ItemStack(blankRune), "x", 'x', Items.diamond);
	IRecipe recipe = recipes.remove(recipes.size() - 1);
	GameRegistry.addRecipe(new CraftManager(recipe));

	GameRegistry.addRecipe(new ItemStack(newRune), "xx", 'x', Items.diamond);
	IRecipe recipe1 = recipes.remove(recipes.size() - 1);
	GameRegistry.addRecipe(new CraftManager(recipe1));

Link to comment
Share on other sites

You'll also need to show your updated IRecipe code.

 

Btw, you registered your properties twice in onEntityConstructing - you only need the first one, because it does exactly what the second one does:

if (event.entity instanceof EntityPlayer && EntityPlayerExtended.get((EntityPlayer) event.entity) == null){
EntityPlayerExtended.register((EntityPlayer) event.entity);
}

// the following is totally unnecessary, as it does exactly what was just done above
/*
if (event.entity instanceof EntityPlayer && event.entity.getExtendedProperties(EntityPlayerExtended.EXT_PROP_NAME) == null){
event.entity.registerExtendedProperties(EntityPlayerExtended.EXT_PROP_NAME, new EntityPlayerExtended((EntityPlayer) event.entity));
}
*/

 

That's the second time today I've seen that exact same code - any particular reason people are duplicating it?

Its because they copied it from your tutorial. cheesy.gif

I'm back from being gone for... I think its been about a year. I'm pretty sure nobody remembers me, but hello anybody who does!

Link to comment
Share on other sites

I give up. Just use this code:

 

Ok, that was impressive.  Someone managed to out-stupid diesieben07's patience.

  • Haha 1

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

Guest
This topic is now closed to further replies.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • it crashed again     What the console says : [00:02:03] [Server thread/INFO] [Easy NPC/]: [EntityManager] Server started! [00:02:03] [Server thread/INFO] [co.gi.al.ic.IceAndFire/]: {iceandfire:fire_dragon_roost=true, iceandfire:fire_lily=true, iceandfire:spawn_dragon_skeleton_fire=true, iceandfire:lightning_dragon_roost=true, iceandfire:spawn_dragon_skeleton_lightning=true, iceandfire:ice_dragon_roost=true, iceandfire:ice_dragon_cave=true, iceandfire:lightning_dragon_cave=true, iceandfire:cyclops_cave=true, iceandfire:spawn_wandering_cyclops=true, iceandfire:spawn_sea_serpent=true, iceandfire:frost_lily=true, iceandfire:hydra_cave=true, iceandfire:lightning_lily=true, iceandfireixie_village=true, iceandfire:myrmex_hive_jungle=true, iceandfire:myrmex_hive_desert=true, iceandfire:silver_ore=true, iceandfire:siren_island=true, iceandfire:spawn_dragon_skeleton_ice=true, iceandfire:spawn_stymphalian_bird=true, iceandfire:fire_dragon_cave=true, iceandfire:sapphire_ore=true, iceandfire:spawn_hippocampus=true, iceandfire:spawn_death_worm=true} [00:02:03] [Server thread/INFO] [co.gi.al.ic.IceAndFire/]: {TROLL_S=true, HIPPOGRYPH=true, AMPHITHERE=true, COCKATRICE=true, TROLL_M=true, DREAD_LICH=true, TROLL_F=true} [00:02:03] [Server thread/INFO] [ne.be.lo.WeaponRegistry/]: Encoded Weapon Attribute registry size (with package overhead): 41976 bytes (in 5 string chunks with the size of 10000) [00:02:03] [Server thread/INFO] [patchouli/]: Sending reload packet to clients [00:02:03] [Server thread/WARN] [voicechat/]: [voicechat] Running in offline mode - Voice chat encryption is not secure! [00:02:03] [VoiceChatServerThread/INFO] [voicechat/]: [voicechat] Using server-ip as bind address: 0.0.0.0 [00:02:03] [Server thread/WARN] [ModernFix/]: Dedicated server took 22.521 seconds to load [00:02:03] [VoiceChatServerThread/INFO] [voicechat/]: [voicechat] Voice chat server started at 0.0.0.0:25565 [00:02:03] [Server thread/WARN] [minecraft/SynchedEntityData]: defineId called for: class net.minecraft.world.entity.player.Player from class tschipp.carryon.common.carry.CarryOnDataManager [00:02:03] [Server thread/INFO] [ne.mi.co.AdvancementLoadFix/]: Using new advancement loading for net.minecraft.server.PlayerAdvancements@2941ffd5 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 0 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 1 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 2 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 3 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 4 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 5 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 6 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 7 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 8 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 9 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 10 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 11 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 12 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 13 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 14 [00:02:19] [Server thread/INFO] [ne.mi.co.AdvancementLoadFix/]: Using new advancement loading for net.minecraft.server.PlayerAdvancements@ebc7ef2 [00:02:19] [Server thread/INFO] [minecraft/PlayerList]: ZacAdos[/90.2.17.162:49242] logged in with entity id 1062 at (-1848.6727005281205, 221.0, -3054.2468255848935) [00:02:19] [Server thread/ERROR] [ModernFix/]: Skipping entity ID sync for com.talhanation.smallships.world.entity.ship.Ship: java.lang.NoClassDefFoundError: net/minecraft/client/CameraType [00:02:19] [Server thread/INFO] [minecraft/MinecraftServer]: - Gloop - ZacAdos joined the game [00:02:19] [Server thread/INFO] [xa.pa.OpenPartiesAndClaims/]: Updating all forceload tickets for cc56befd-d376-3526-a760-340713c478bd [00:02:19] [Server thread/INFO] [se.mi.te.da.DataManager/]: Sending data to client: ZacAdos [00:02:19] [Server thread/INFO] [voicechat/]: [voicechat] Received secret request of - Gloop - ZacAdos (17) [00:02:19] [Server thread/INFO] [voicechat/]: [voicechat] Sent secret to - Gloop - ZacAdos [00:02:21] [VoiceChatPacketProcessingThread/INFO] [voicechat/]: [voicechat] Successfully authenticated player cc56befd-d376-3526-a760-340713c478bd [00:02:22] [VoiceChatPacketProcessingThread/INFO] [voicechat/]: [voicechat] Successfully validated connection of player cc56befd-d376-3526-a760-340713c478bd [00:02:22] [VoiceChatPacketProcessingThread/INFO] [voicechat/]: [voicechat] Player - Gloop - ZacAdos (cc56befd-d376-3526-a760-340713c478bd) successfully connected to voice chat stop [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Stopping the server [00:02:34] [Server thread/INFO] [mo.pl.ar.ArmourersWorkshop/]: stop local service [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Stopping server [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving players [00:02:34] [Server thread/INFO] [minecraft/ServerGamePacketListenerImpl]: ZacAdos lost connection: Server closed [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: - Gloop - ZacAdos left the game [00:02:34] [Server thread/INFO] [xa.pa.OpenPartiesAndClaims/]: Updating all forceload tickets for cc56befd-d376-3526-a760-340713c478bd [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving worlds [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving chunks for level 'ServerLevel[world]'/minecraft:overworld [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving chunks for level 'ServerLevel[world]'/minecraft:the_end [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving chunks for level 'ServerLevel[world]'/minecraft:the_nether [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: ThreadedAnvilChunkStorage (world): All chunks are saved [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: ThreadedAnvilChunkStorage: All dimensions are saved [00:02:34] [Server thread/INFO] [xa.pa.OpenPartiesAndClaims/]: Stopping IO worker... [00:02:34] [Server thread/INFO] [xa.pa.OpenPartiesAndClaims/]: Stopped IO worker! [00:02:34] [Server thread/INFO] [Calio/]: Removing Dynamic Registries for: net.minecraft.server.dedicated.DedicatedServer@7dc879e1 [MineStrator Daemon]: Checking server disk space usage, this could take a few seconds... [MineStrator Daemon]: Updating process configuration files... [MineStrator Daemon]: Ensuring file permissions are set correctly, this could take a few seconds... [MineStrator Daemon]: Pulling Docker container image, this could take a few minutes to complete... [MineStrator Daemon]: Finished pulling Docker container image container@pterodactyl~ java -version openjdk version "17.0.10" 2024-01-16 OpenJDK Runtime Environment Temurin-17.0.10+7 (build 17.0.10+7) OpenJDK 64-Bit Server VM Temurin-17.0.10+7 (build 17.0.10+7, mixed mode, sharing) container@pterodactyl~ java -Xms128M -Xmx6302M -Dterminal.jline=false -Dterminal.ansi=true -Djline.terminal=jline.UnsupportedTerminal -p libraries/cpw/mods/bootstraplauncher/1.1.2/bootstraplauncher-1.1.2.jar:libraries/cpw/mods/securejarhandler/2.1.4/securejarhandler-2.1.4.jar:libraries/org/ow2/asm/asm-commons/9.5/asm-commons-9.5.jar:libraries/org/ow2/asm/asm-util/9.5/asm-util-9.5.jar:libraries/org/ow2/asm/asm-analysis/9.5/asm-analysis-9.5.jar:libraries/org/ow2/asm/asm-tree/9.5/asm-tree-9.5.jar:libraries/org/ow2/asm/asm/9.5/asm-9.5.jar:libraries/net/minecraftforge/JarJarFileSystems/0.3.16/JarJarFileSystems-0.3.16.jar --add-modules ALL-MODULE-PATH --add-opens java.base/java.util.jar=cpw.mods.securejarhandler --add-opens java.base/java.lang.invoke=cpw.mods.securejarhandler --add-exports java.base/sun.security.util=cpw.mods.securejarhandler --add-exports jdk.naming.dns/com.sun.jndi.dns=java.naming -Djava.net.preferIPv6Addresses=system -DignoreList=bootstraplauncher-1.1.2.jar,securejarhandler-2.1.4.jar,asm-commons-9.5.jar,asm-util-9.5.jar,asm-analysis-9.5.jar,asm-tree-9.5.jar,asm-9.5.jar,JarJarFileSystems-0.3.16.jar -DlibraryDirectory=libraries -DlegacyClassPath=libraries/cpw/mods/securejarhandler/2.1.4/securejarhandler-2.1.4.jar:libraries/org/ow2/asm/asm/9.5/asm-9.5.jar:libraries/org/ow2/asm/asm-commons/9.5/asm-commons-9.5.jar:libraries/org/ow2/asm/asm-tree/9.5/asm-tree-9.5.jar:libraries/org/ow2/asm/asm-util/9.5/asm-util-9.5.jar:libraries/org/ow2/asm/asm-analysis/9.5/asm-analysis-9.5.jar:libraries/net/minecraftforge/accesstransformers/8.0.4/accesstransformers-8.0.4.jar:libraries/org/antlr/antlr4-runtime/4.9.1/antlr4-runtime-4.9.1.jar:libraries/net/minecraftforge/eventbus/6.0.3/eventbus-6.0.3.jar:libraries/net/minecraftforge/forgespi/6.0.0/forgespi-6.0.0.jar:libraries/net/minecraftforge/coremods/5.0.1/coremods-5.0.1.jar:libraries/cpw/mods/modlauncher/10.0.8/modlauncher-10.0.8.jar:libraries/net/minecraftforge/unsafe/0.2.0/unsafe-0.2.0.jar:libraries/com/electronwill/night-config/core/3.6.4/core-3.6.4.jar:libraries/com/electronwill/night-config/toml/3.6.4/toml-3.6.4.jar:libraries/org/apache/maven/maven-artifact/3.8.5/maven-artifact-3.8.5.jar:libraries/net/jodah/typetools/0.8.3/typetools-0.8.3.jar:libraries/net/minecrell/terminalconsoleappender/1.2.0/terminalconsoleappender-1.2.0.jar:libraries/org/jline/jline-reader/3.12.1/jline-reader-3.12.1.jar:libraries/org/jline/jline-terminal/3.12.1/jline-terminal-3.12.1.jar:libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar:libraries/org/openjdk/nashorn/nashorn-core/15.3/nashorn-core-15.3.jar:libraries/net/minecraftforge/JarJarSelector/0.3.16/JarJarSelector-0.3.16.jar:libraries/net/minecraftforge/JarJarMetadata/0.3.16/JarJarMetadata-0.3.16.jar:libraries/net/minecraftforge/fmlloader/1.19.2-43.3.0/fmlloader-1.19.2-43.3.0.jar:libraries/net/minecraft/server/1.19.2-20220805.130853/server-1.19.2-20220805.130853-extra.jar:libraries/com/github/oshi/oshi-core/5.8.5/oshi-core-5.8.5.jar:libraries/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar:libraries/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar:libraries/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar:libraries/com/mojang/authlib/3.11.49/authlib-3.11.49.jar:libraries/com/mojang/brigadier/1.0.18/brigadier-1.0.18.jar:libraries/com/mojang/datafixerupper/5.0.28/datafixerupper-5.0.28.jar:libraries/com/mojang/javabridge/1.2.24/javabridge-1.2.24.jar:libraries/com/mojang/logging/1.0.0/logging-1.0.0.jar:libraries/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar:libraries/io/netty/netty-buffer/4.1.77.Final/netty-buffer-4.1.77.Final.jar:libraries/io/netty/netty-codec/4.1.77.Final/netty-codec-4.1.77.Final.jar:libraries/io/netty/netty-common/4.1.77.Final/netty-common-4.1.77.Final.jar:libraries/io/netty/netty-handler/4.1.77.Final/netty-handler-4.1.77.Final.jar:libraries/io/netty/netty-resolver/4.1.77.Final/netty-resolver-4.1.77.Final.jar:libraries/io/netty/netty-transport/4.1.77.Final/netty-transport-4.1.77.Final.jar:libraries/io/netty/netty-transport-classes-epoll/4.1.77.Final/netty-transport-classes-epoll-4.1.77.Final.jar:libraries/io/netty/netty-transport-native-epoll/4.1.77.Final/netty-transport-native-epoll-4.1.77.Final-linux-x86_64.jar:libraries/io/netty/netty-transport-native-epoll/4.1.77.Final/netty-transport-native-epoll-4.1.77.Final-linux-aarch_64.jar:libraries/io/netty/netty-transport-native-unix-common/4.1.77.Final/netty-transport-native-unix-common-4.1.77.Final.jar:libraries/it/unimi/dsi/fastutil/8.5.6/fastutil-8.5.6.jar:libraries/net/java/dev/jna/jna/5.10.0/jna-5.10.0.jar:libraries/net/java/dev/jna/jna-platform/5.10.0/jna-platform-5.10.0.jar:libraries/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar:libraries/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar:libraries/org/apache/logging/log4j/log4j-api/2.17.0/log4j-api-2.17.0.jar:libraries/org/apache/logging/log4j/log4j-core/2.17.0/log4j-core-2.17.0.jar:libraries/org/apache/logging/log4j/log4j-slf4j18-impl/2.17.0/log4j-slf4j18-impl-2.17.0.jar:libraries/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.jar cpw.mods.bootstraplauncher.BootstrapLauncher --launchTarget forgeserver --fml.forgeVersion 43.3.0 --fml.mcVersion 1.19.2 --fml.forgeGroup net.minecraftforge --fml.mcpVersion 20220805.130853 [00:02:42] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--launchTarget, forgeserver, --fml.forgeVersion, 43.3.0, --fml.mcVersion, 1.19.2, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20220805.130853] [00:02:42] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 10.0.8+10.0.8+main.0ef7e830 starting: java version 17.0.10 by Eclipse Adoptium; OS Linux arch amd64 version 6.1.0-12-amd64 [00:02:43] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/home/container/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar%2363!/ Service=ModLauncher Env=SERVER [00:02:43] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/fmlcore/1.19.2-43.3.0/fmlcore-1.19.2-43.3.0.jar is missing mods.toml file [00:02:43] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/javafmllanguage/1.19.2-43.3.0/javafmllanguage-1.19.2-43.3.0.jar is missing mods.toml file [00:02:43] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/lowcodelanguage/1.19.2-43.3.0/lowcodelanguage-1.19.2-43.3.0.jar is missing mods.toml file [00:02:43] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/mclanguage/1.19.2-43.3.0/mclanguage-1.19.2-43.3.0.jar is missing mods.toml file [00:02:44] [main/WARN] [ne.mi.ja.se.JarSelector/]: Attempted to select two dependency jars from JarJar which have the same identification: Mod File: and Mod File: . Using Mod File: [00:02:44] [main/WARN] [ne.mi.ja.se.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: resourcefullib. Using Mod File: /home/container/mods/resourcefullib-forge-1.19.2-1.1.24.jar [00:02:44] [main/INFO] [ne.mi.fm.lo.mo.JarInJarDependencyLocator/]: Found 13 dependencies adding them to mods collection Latest log [29Mar2024 00:02:42.803] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher running: args [--launchTarget, forgeserver, --fml.forgeVersion, 43.3.0, --fml.mcVersion, 1.19.2, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20220805.130853] [29Mar2024 00:02:42.805] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher 10.0.8+10.0.8+main.0ef7e830 starting: java version 17.0.10 by Eclipse Adoptium; OS Linux arch amd64 version 6.1.0-12-amd64 [29Mar2024 00:02:43.548] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/home/container/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar%2363!/ Service=ModLauncher Env=SERVER [29Mar2024 00:02:43.876] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/fmlcore/1.19.2-43.3.0/fmlcore-1.19.2-43.3.0.jar is missing mods.toml file [29Mar2024 00:02:43.877] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/javafmllanguage/1.19.2-43.3.0/javafmllanguage-1.19.2-43.3.0.jar is missing mods.toml file [29Mar2024 00:02:43.877] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/lowcodelanguage/1.19.2-43.3.0/lowcodelanguage-1.19.2-43.3.0.jar is missing mods.toml file [29Mar2024 00:02:43.878] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/mclanguage/1.19.2-43.3.0/mclanguage-1.19.2-43.3.0.jar is missing mods.toml file [29Mar2024 00:02:44.033] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select two dependency jars from JarJar which have the same identification: Mod File: and Mod File: . Using Mod File: [29Mar2024 00:02:44.034] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: resourcefullib. Using Mod File: /home/container/mods/resourcefullib-forge-1.19.2-1.1.24.jar [29Mar2024 00:02:44.034] [main/INFO] [net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator/]: Found 13 dependencies adding them to mods collection
    • I am unable to do that. Brigadier is a mojang library that parses commands.
    • Hi, i appreciate the answer. I would love to do that, but we have active players with all their belongings in SSN. Also this mod is really handy and they would be mad if we removed it. Are you really certain that SSN is causing this? It would require lots of work to test it and SSN was not really an issue before we removed Fast Suite. Can it be related somehow? I will provide you with log before removing FS. PasteBin: https://pastebin.com/Y5EpLpNe (crash before removing Fast Suite, which I suspected to be a problem from some crash before)
    • Backup the world and make a test without storagenetwork
  • Topics

×
×
  • Create New...

Important Information

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