Jump to content

Most effective way to remove vanilla mob drops, without editing anything?


Frontsalat

Recommended Posts

The title basically says it. I'm aware of ways where you'd just replace the vanilla mob with a custom one, and then let this custom mob drop the things you want it to drop. But 1. this is ensured to create bugs with mods like Mo Creatures and 2. creates miriads of unnecessary files filled with walls of code. Isn't there something more elegant like this for blocks?

 

Block.blocksList[block.oreCoal.blockID] = Block.blocksList[MetallurgyRealismModBase.BlockSlate.blockID];

 

Something like, for example:

 

Item.itemsList[item.leather.itemID] = Item.itemsList[MetallurgyRealismModBase.MaterialFur.itemID];

Link to comment
Share on other sites

vague, figure-it-out-yourself answer:

 

events

 

spoon-feed answer:

 

 

 

livingdropsevent

 

 

Look, if you know something, don't give me tension torture. If you'd happen to know something just speak it out loud, without acting all superior. I wouldn't come here and ask if I haven't already tried my butt off. Obviously I'm already using event code:

 

 

package MetallurgyRealism;

import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.passive.EntityChicken;
import net.minecraft.entity.passive.EntityCow;
import net.minecraft.entity.passive.EntityPig;
import net.minecraft.entity.passive.EntitySheep;
import net.minecraft.entity.passive.EntityWolf;
import net.minecraft.item.Item;
import net.minecraftforge.event.ForgeSubscribe;
import net.minecraftforge.event.entity.living.LivingDropsEvent;

public class MetallurgyRealismLivingDrops {
public static double rand;

@ForgeSubscribe
public void onEntityDrop(LivingDropsEvent event) {
	if (event.source.getDamageType().equals("player")) {
		rand = Math.random();
		System.out.println("Killed something.");
		if (event.entityLiving instanceof EntityCow || event.entityLiving instanceof EntitySheep || event.entityLiving instanceof EntityChicken || event.entityLiving instanceof EntityPig || event.entityLiving instanceof EntityWolf) {
			System.out.println("Killed a sheep.");
			if (rand < 0.1D) {
				event.entityLiving.dropItem(Item.bone.itemID, 2);
			}
		}
	}
}
}

 

 

But adding new drops isn't the same as removing the vanilla ones.

Link to comment
Share on other sites

If you'd happen to know something just speak it out loud, without acting all superior.

 

i tend to be this way when i'm sleepy. so... get over it. at least i gave the answer (but apparently not enough)

 

I wouldn't come here and ask if I haven't already tried my butt off. Obviously I'm already using event code:

 

no, you never once mentioned you were using the events already. so no, not "obviously".

 

But adding new drops isn't the same as removing the vanilla ones.

 

obviously.

 

anyway, to answer your question completely and properly:

 

you can do what gotolink said, but that would stop all the entity's drops from spawning. if you want it that way, then go ahead. if you want to remove just a specific item, iterate through the list of drops and check if it's the item you want to replace, then replace it, if it is.

Link to comment
Share on other sites

Cancel the event.

 

This would have an effect on the new items added or on any single item to be spawned by dead entitys, but does absolutely nothing to singled out vanilla drops. Except you want me to edit base files...:D

 

you can do what gotolink said, but that would stop all the entity's drops from spawning. if you want it that way, then go ahead. if you want to remove just a specific item, iterate through the list of drops and check if it's the item you want to replace, then replace it, if it is.

 

The iteration did not seem to work on items dropped by mobs. I got it working on blocks, but there's no equivalent code...or at least I found none. Also tried to modifie this code, to no avail:

 

    		Iterator<IRecipe> iterator = CraftingManager.getInstance().getRecipeList().iterator();

    			while (iterator.hasNext()){
    				IRecipe recipe = iterator.next();
    				if (recipe == null)
    				continue;
    					ItemStack output = recipe.getRecipeOutput();
    				if (output != null && output.getItem() != null && removeSet.contains(output.getItem()))
    					iterator.remove();}

Link to comment
Share on other sites

This would have an effect on the new items added or on any single item to be spawned by dead entitys, but does absolutely nothing to singled out vanilla drops. Except you want me to edit base files...:D

The iteration did not seem to work on items dropped by mobs.

 

erm.. cancelling an event doesn't require base class edits. and i just tried what i said earlier and it works. you're just not doing it right. also, that code you tried to modify is for recipes so i have no idea what you tried to do with it. i'd post code, but you clearly don't know what you're doing, so you're going to either have to try harder and figure it out yourself (which i recommend so you won't have to rely on the forums) or wait til someone's nice enough to post code. also, everything you need is already in your "public void onEntityDrop(LivingDropsEvent event)" method, so it shouldn't be too hard to figure out. you just need to change some stuff in there (and i already said what to do earlier). goodluck, ima head to bed

Link to comment
Share on other sites

erm.. cancelling an event doesn't require base class edits. and i just tried what i said earlier and it works. you're just not doing it right. also, that code you tried to modify is for recipes so i have no idea what you tried to do with it. i'd post code, but you clearly don't know what you're doing, so you're going to either have to try harder and figure it out yourself (which i recommend so you won't have to rely on the forums) or wait til someone's nice enough to post code. also, everything you need is already in your "public void onEntityDrop(LivingDropsEvent event)" method, so it shouldn't be too hard to figure out. you just need to change some stuff in there (and i already said what to do earlier). goodluck, ima head to bed

 

I'd say I have to go with something like...

 

event.entityLiving.removeItem(Item.leather.itemID)

 

...but it didn't work

 

So I was right when thinking you're the little smarty by reading all the miriads of your posts on this forums, telling people to learn something, instead of just helping them. Look, it gains you nothing in life to know so much about Java code. But it gains you a lot of envy by acting like a dick. And obviously I can't know as much about Java as you do, because clearly I have a life. It's not lag of skills or commitment, it's simply a lag of time.

 

Modding communitys are supposed to share and help each other, at least that's what we're doing over at Skyrim Community...seems like attitude over here is far more reserved and superior. Feel pleased about your skills, because that's probably all you got.

 

Wait, so you want to remove mob drop that are craftable ?

Do they even exist ?

 

Exceptionally I want to remove leather drops from cows and make them drop fur instead, so I'm capable of processing it.

Link to comment
Share on other sites

ItemStack stack;
Iterator drop = event.drops.iterator();
while(drop.hasNext())
{
stack = ((EntityItem)drop.next()).getEntityItem();
if(stack!=null && stack.getItem().itemID == Item.leather.itemID)
{
iterator.remove();
event.drops.add(new EntityItem(world,x,y,z, new ItemStack(furID));
} 
}

Link to comment
Share on other sites

I'd say I have to go with something like...

 

event.entityLiving.removeItem(Item.leather.itemID)

 

...but it didn't work

 

soooo close... try looking up arraylists if you don't know how to use them.

 

So I was right when thinking you're the little smarty by reading all the miriads of your posts on this forums, telling people to learn something, instead of just helping them.

 

and which posts did you read exactly? because as far as i remember i only answer like a dick when the answer to the question is annoyingly simple and can be figured out with just a bit of research (in your case, it shouldn't even take 10 minutes). or if i know the op to be a dick. but i still give answers which should be enough to help them

 

Look, it gains you nothing in life to know so much about Java code. But it gains you a lot of envy by acting like a dick. And obviously I can't know as much about Java as you do, because clearly I have a life. It's not lag of skills or commitment, it's simply a lag of time.

 

who says i know a lot about java? i learn java on my own and as a hobby. and i'm an architecture student (meaning my workload is ridiculous and i spend most of my time working that i barely get any sleep), but even then i still have a life outside of school and coding. and even then i don't need someone to spoon feed code for me to figure something out.

 

Modding communitys are supposed to share and help each other, at least that's what we're doing over at Skyrim Community...seems like attitude over here is far more reserved and superior. Feel pleased about your skills, because that's probably all you got.

 

help others by posting code for them to copy and paste without them understanding what it does? that's not helping at all. i post code when i see that the op knows what he's talking about. if he doesn't, i point them in the right direction so he can figure things out. a buttload of posts here are related to copied code that the ops don't understand and don't bother to... which is annoying.

 

i pointed you to the answer, but if you're looking for code, i'm not posting any for this. think of me as a dick if you want to, but not everyone here is. i was about to say some guy named hydroflame is usually patient enough to help out a lot, so wait for him. but he already replied here and wadaya know? he said basically the same thing i did.. aaaannd gotolink just posted code.

 

god damn this is a long post

Link to comment
Share on other sites

So I was right when thinking you're the little smarty by reading all the miriads of your posts on this forums, telling people to learn something, instead of just helping them. Look, it gains you nothing in life to know so much about Java code. But it gains you a lot of envy by acting like a dick. And obviously I can't know as much about Java as you do, because clearly I have a life. It's not lag of skills or commitment, it's simply a lag of time.

 

Modding communitys are supposed to share and help each other, at least that's what we're doing over at Skyrim Community...seems like attitude over here is far more reserved and superior. Feel pleased about your skills, because that's probably all you got.

 

what the even fuck ? i dont even...

 

So I was right when thinking you're the little smarty by reading all the miriads of your posts on this forums,

theres a search bar top left of this screen and YES even pro/good modders use it .. they dont ask question unless they know no one else asked them before

 

telling people to learn something, instead of just helping them

telling people to learn java before modding IS helping them, without basic java knowledge you CANNOT do a mod (even the most simple ones)

 

copy pasting code is NOT learning btw

 

Look, it gains you nothing in life to know so much about Java code.

i make 75 000 a year (canada) "knowing about java code".

if 75000 a year is nothing can you give me 75000 per year ?

 

And obviously I can't know as much about Java as you do, because clearly I have a life.

this argument is so invalid im getting cancer from reading it

you will learn stuff in EVERY profession you can think of (dont try a counterargument where working at mcdonald doesnt require learning anything because that would be pathetic). do you think that literally every developper in the world are in front of their computer 24/7 ?!?!?!?!

 

nope, most of us have a wife and children and we will do stuff in our daily lives

 

 

at least that's what we're doing over at Skyrim Community

please, skyrim modding is a freacking joke

how to debug 101:http://www.minecraftforge.net/wiki/Debug_101

-hydroflame, author of the forge revolution-

Link to comment
Share on other sites

Man, the time it took you to write all thoose walls of text could have been used to just post the damn code. Now get of your throne, you don't even remotely listen to what I'm telling you Java-Nerd. If your job is Java Coding then you probably kicked yourself a penalty in all your weirdo arguments, right? Wait, I'll tell myself so you don't need to upset yourself...GO LEARN JAVA!!! I'M TALKNG TO ME, DO ME HEARD ME??? GO LEARN JAVA!!!  8)

 

Also, why do I slightly get the feeling no one every achieved that? There should have been a tutorial around already.

 

At least GoToLink has mercy, but unfortunately I'm obviously to dumb to get further then this, and it still doesn't work:

 

package MetallurgyRealism;

import java.util.Iterator;

import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.passive.EntityChicken;
import net.minecraft.entity.passive.EntityCow;
import net.minecraft.entity.passive.EntityPig;
import net.minecraft.entity.passive.EntitySheep;
import net.minecraft.entity.passive.EntityWolf;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.event.ForgeSubscribe;
import net.minecraftforge.event.entity.living.LivingDropsEvent;

public class MetallurgyRealismLivingDrops {
public static double rand;

@ForgeSubscribe
public void onEntityDrop(LivingDropsEvent event) {
	if (event.source.getDamageType().equals("player")) {
		rand = Math.random();
		if (event.entityLiving instanceof EntityCow || event.entityLiving instanceof EntitySheep || event.entityLiving instanceof EntityChicken || event.entityLiving instanceof EntityPig || event.entityLiving instanceof EntityWolf) {
			if (rand < 0.1D) {
				event.entityLiving.dropItem(Item.bone.itemID, 2);
			}
		}
	}
}
public void onEntityDrop1(LivingDropsEvent event, World world, double x, double y, double z, Iterator iterator) {
ItemStack stack;
Iterator drop = event.drops.iterator();{

	while(drop.hasNext()){
		stack = ((EntityItem)drop.next()).getEntityItem();
		if(stack!=null && stack.getItem().itemID == Item.leather.itemID){
			iterator.remove();
			event.drops.add(new EntityItem(event.entityLiving.worldObj, event.entityLiving.posX, event.entityLiving.posY, event.entityLiving.posZ, new ItemStack(MetallurgyRealismModBase.armorBootsBone)));
		}
	}
}	
}
}

 

 

Link to comment
Share on other sites

Modding communitys are supposed to share and help each other, at least that's what we're doing over at Skyrim Community...seems like attitude over here is far more reserved and superior. Feel pleased about your skills, because that's probably all you got.

 

It is not that people aren't helping. It is that noone can help you if you don't ask the correct question.

In your case, from the very beginning it should have been something like:

I want to remove leather drops from cows and make them drop fur instead.

I began working with LivingDropsEvent, but had no luck, here is my code.

Illustrative code here.

 

Edit: Man, what are you doing with this onEntityDrop1 method ?

Just place the code into a

if(event.entityLiving instanceof EntityCow)
{
//code here
}

in your first method

Link to comment
Share on other sites

MC is crashing as soon as I kill a cow. I can't get the red underline removed from the iterator.remove(); section. If I try fixing with Eclipse it's also crashing.

 

Code so far:

 

 

package MetallurgyRealism;

import java.util.Iterator;

import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.passive.EntityChicken;
import net.minecraft.entity.passive.EntityCow;
import net.minecraft.entity.passive.EntityPig;
import net.minecraft.entity.passive.EntitySheep;
import net.minecraft.entity.passive.EntityWolf;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.event.ForgeSubscribe;
import net.minecraftforge.event.entity.living.LivingDropsEvent;

public class MetallurgyRealismLivingDrops {
public static double rand;

@ForgeSubscribe
public void onEntityDrop(LivingDropsEvent event) {
	if (event.source.getDamageType().equals("player")) {
		rand = Math.random();
		System.out.println("Killed something.");
		if (event.entityLiving instanceof EntityCow || event.entityLiving instanceof EntitySheep || event.entityLiving instanceof EntityChicken || event.entityLiving instanceof EntityPig || event.entityLiving instanceof EntityWolf) {
			System.out.println("Killed a sheep.");
			if (rand < 0.1D) {
				event.entityLiving.dropItem(Item.bone.itemID, 2);
			}				
		}
		if(event.entityLiving instanceof EntityCow)
		{
			ItemStack stack;
			Iterator drop = event.drops.iterator();
			while(drop.hasNext())
			{
			stack = ((EntityItem)drop.next()).getEntityItem();
			if(stack!=null && stack.getItem().itemID == Item.leather.itemID)
			{
			[u]iterator.remove();[/u]
			event.drops.add(new EntityItem(event.entityLiving.worldObj, event.entityLiving.posX, event.entityLiving.posY, event.entityLiving.posZ, new ItemStack(MetallurgyRealismModBase.FoodEggBoiled)));
			} 
			}
		}
	}
}
}

 

 

Error Log:

 

 

Minecraft has crashed!     

      ----------------------     

 

Minecraft has stopped running because it encountered a problem; Exception in server tick loop

 

A full error report has been saved to C:\Users\MarcelsPC\Desktop\Forge\mcp\jars\.\crash-reports\crash-2013-07-27_22.07.07-server.txt - Please include a copy of that file (Not this screen!) if you report this crash to anyone; without it, they will not be able to help fix the crash :(

 

 

 

--- BEGIN ERROR REPORT dae3ac1c --------

Full report at:

C:\Users\MarcelsPC\Desktop\Forge\mcp\jars\.\crash-reports\crash-2013-07-27_22.07.07-server.txt

Please show that file to Mojang, NOT just this screen!

 

Generated 27.07.13 22:07

 

-- System Details --

Details:

Minecraft Version: 1.5.2

Operating System: Windows 7 (amd64) version 6.1

Java Version: 1.7.0_21, Oracle Corporation

Java VM Version: Java HotSpot 64-Bit Server VM (mixed mode), Oracle Corporation

Memory: 773841080 bytes (737 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)

JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M

AABB Pool Size: 6195 (346920 bytes; 0 MB) allocated, 5584 (312704 bytes; 0 MB) used

Suspicious classes: FML and Forge are installed

IntCache: cache: 0, tcache: 0, allocated: 1, tallocated: 63

FML: MCP v7.51 FML v5.2.21.729 Minecraft Forge 7.8.0.729 4 mods loaded, 4 mods active

mcp{7.44} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available

FML{5.2.21.729} [Forge Mod Loader] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available

Forge{7.8.0.729} [Minecraft Forge] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available

MetallurgyRealism{0.0.7} [Metallurgy Realism] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available

Profiler Position: N/A (disabled)

Vec3 Pool Size: 1340 (75040 bytes; 0 MB) allocated, 1253 (70168 bytes; 0 MB) used

Player Count: 1 / 8; [EntityPlayerMP['Player641'/503, l='New World', x=-253,63, y=66,00, z=239,03]]

Type: Integrated Server (map_client.txt)

Is Modded: Definitely; Client brand changed to 'fml,forge'

 

java.lang.Error: Unresolved compilation problem:

iterator cannot be resolved

 

at MetallurgyRealism.MetallurgyRealismLivingDrops.onEntityDrop(MetallurgyRealismLivingDrops.java:39)

at net.minecraftforge.event.ASMEventHandler_4_MetallurgyRealismLivingDrops_onEntityDrop_LivingDropsEvent.invoke(.dynamic)

at net.minecraftforge.event.ASMEventHandler.invoke(ASMEventHandler.java:39)

at net.minecraftforge.event.EventBus.post(EventBus.java:108)

at net.minecraftforge.common.ForgeHooks.onLivingDrops(ForgeHooks.java:338)

at net.minecraft.entity.EntityLiving.onDeath(EntityLiving.java:1372)

at net.minecraft.entity.EntityLiving.attackEntityFrom(EntityLiving.java:1126)

at net.minecraft.entity.passive.EntityAnimal.attackEntityFrom(EntityAnimal.java:191)

at net.minecraft.entity.player.EntityPlayer.attackTargetEntityWithCurrentItem(EntityPlayer.java:1347)

at net.minecraft.network.NetServerHandler.handleUseEntity(NetServerHandler.java:832)

at net.minecraft.network.packet.Packet7UseEntity.processPacket(Packet7UseEntity.java:57)

at net.minecraft.network.MemoryConnection.processReadPackets(MemoryConnection.java:89)

at net.minecraft.network.NetServerHandler.networkTick(NetServerHandler.java:134)

at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:53)

at net.minecraft.server.integrated.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:109)

at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:676)

at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:572)

at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:127)

at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:470)

at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)

--- END ERROR REPORT 308c65a0 ----------

 

 

 

Link to comment
Share on other sites

see this is why we say learning java is important because this error shoudl NEVER get to us

 

 

in eclispe do ctrl+shift+o  (the letter O not zero)

 

Ohh, so you're saying I was to dumb to organize my imports. Well then thank you very much for pointing out my complete lag of understanding Java AND Eclipse. I'll do instantly what you tought me...*hastes pressing ctrl+shift and o (not the zero but the o, like oooohhhh) and anxiously licking his lips for expected success*.

 

Oh crap, it didn't work... :o

 

I'm just curious, if there is any difference in Iterator (which you want to import) and iterator (which is a container reference)?

Link to comment
Share on other sites

MC is crashing as soon as I kill a cow. I can't get the red underline removed from the iterator.remove(); section. If I try fixing with Eclipse it's also crashing.

So, what does Eclipse say of this underlined error ?

Your import is good.

 

I am trying to teach you how to read and learn code, and not copy/paste all over.

 

[spoiler=The fix you should have found]

drop.remove();

 

 

Link to comment
Share on other sites

Man, the time it took you to write all thoose walls of text could have been used to just post the damn code. Now get of your throne, you don't even remotely listen to what I'm telling you Java-Nerd.

 

"Java-Nerd"? real mature. i suggest you listen to yourself and go learn basic java. i mean f*ck, i already told you how to do it, hydroflame confirmed it, and gotolink basically did it for you. and you still complain?? are you that much of a baby that can't be bothered to figure out the rest yourself? you need absolutely everything done for you? get over yourself

Link to comment
Share on other sites

how do you know about "organising imports" but not what an iterator is ??  this is contradictory ish

 

Probably because I'm not a simple copy paster, yet not a skilled coder. I'm somewhere in between, loosely base my understanding of code on trial and fail...;)

 

I said I'm in lag of time to learn every single portion of Java code. I do know from Phython code that a iterator is something that's used to traverse between objects or containers. At least that's what the Java and the Phython Tutorial said.

 

So, what does Eclipse say of this underlined error ?

 

All possible fixes, but drop.remove was none of them. I thought since the "Iterator iterator" was nowhere defined, I had to define it. However, changing it to drop.remove fires out this error log...

 

 

 

      Minecraft has crashed!     

      ----------------------     

 

Minecraft has stopped running because it encountered a problem; Ticking memory connection

 

A full error report has been saved to C:\Users\MarcelsPC\Desktop\Forge\mcp\jars\.\crash-reports\crash-2013-07-28_08.15.01-server.txt - Please include a copy of that file (Not this screen!) if you report this crash to anyone; without it, they will not be able to help fix the crash :(

 

 

 

--- BEGIN ERROR REPORT 763a51d2 --------

Full report at:

C:\Users\MarcelsPC\Desktop\Forge\mcp\jars\.\crash-reports\crash-2013-07-28_08.15.01-server.txt

Please show that file to Mojang, NOT just this screen!

 

Generated 28.07.13 08:15

 

-- System Details --

Details:

Minecraft Version: 1.5.2

Operating System: Windows 7 (amd64) version 6.1

Java Version: 1.7.0_21, Oracle Corporation

Java VM Version: Java HotSpot 64-Bit Server VM (mixed mode), Oracle Corporation

Memory: 659224968 bytes (628 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)

JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M

AABB Pool Size: 5825 (326200 bytes; 0 MB) allocated, 5204 (291424 bytes; 0 MB) used

Suspicious classes: FML and Forge are installed

IntCache: cache: 0, tcache: 0, allocated: 3, tallocated: 63

FML: MCP v7.51 FML v5.2.21.729 Minecraft Forge 7.8.0.729 4 mods loaded, 4 mods active

mcp{7.44} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available

FML{5.2.21.729} [Forge Mod Loader] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available

Forge{7.8.0.729} [Minecraft Forge] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available

MetallurgyRealism{0.0.7} [Metallurgy Realism] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available

Profiler Position: N/A (disabled)

Vec3 Pool Size: 1303 (72968 bytes; 0 MB) allocated, 1159 (64904 bytes; 0 MB) used

Player Count: 1 / 8; [EntityPlayerMP['Player758'/455, l='New World', x=-249,01, y=66,00, z=238,83]]

Type: Integrated Server (map_client.txt)

Is Modded: Definitely; Client brand changed to 'fml,forge'

 

java.util.ConcurrentModificationException

at java.util.ArrayList$Itr.checkForComodification(Unknown Source)

at java.util.ArrayList$Itr.next(Unknown Source)

at MetallurgyRealism.MetallurgyRealismLivingDrops.onEntityDrop(MetallurgyRealismLivingDrops.java:36)

at net.minecraftforge.event.ASMEventHandler_4_MetallurgyRealismLivingDrops_onEntityDrop_LivingDropsEvent.invoke(.dynamic)

at net.minecraftforge.event.ASMEventHandler.invoke(ASMEventHandler.java:39)

at net.minecraftforge.event.EventBus.post(EventBus.java:108)

at net.minecraftforge.common.ForgeHooks.onLivingDrops(ForgeHooks.java:338)

at net.minecraft.entity.EntityLiving.onDeath(EntityLiving.java:1372)

at net.minecraft.entity.EntityLiving.attackEntityFrom(EntityLiving.java:1126)

at net.minecraft.entity.passive.EntityAnimal.attackEntityFrom(EntityAnimal.java:191)

at net.minecraft.entity.player.EntityPlayer.attackTargetEntityWithCurrentItem(EntityPlayer.java:1347)

at net.minecraft.network.NetServerHandler.handleUseEntity(NetServerHandler.java:832)

at net.minecraft.network.packet.Packet7UseEntity.processPacket(Packet7UseEntity.java:57)

at net.minecraft.network.MemoryConnection.processReadPackets(MemoryConnection.java:89)

at net.minecraft.network.NetServerHandler.networkTick(NetServerHandler.java:134)

at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:53)

at net.minecraft.server.integrated.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:109)

at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:676)

at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:572)

at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:127)

at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:470)

at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)

--- END ERROR REPORT 41e8ba5d ----------

 

 

...and Eclipse says...

 

 

2013-07-28 08:14:54 [iNFO] [sTDOUT] loading single player

2013-07-28 08:14:54 [iNFO] [Minecraft-Server] Player758[/127.0.0.1:0] logged in with entity id 455 at (-253.99618045364738, 66.0, 239.30070436888)

2013-07-28 08:15:01 [iNFO] [sTDOUT] Killed something.

2013-07-28 08:15:01 [iNFO] [sTDOUT] Killed a sheep.

2013-07-28 08:15:01 [iNFO] [sTDERR] net.minecraft.util.ReportedException: Ticking memory connection

2013-07-28 08:15:01 [iNFO] [sTDERR] at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:60)

2013-07-28 08:15:01 [iNFO] [sTDERR] at net.minecraft.server.integrated.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:109)

2013-07-28 08:15:01 [iNFO] [sTDERR] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:676)

2013-07-28 08:15:01 [iNFO] [sTDERR] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:572)

2013-07-28 08:15:01 [iNFO] [sTDERR] at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:127)

2013-07-28 08:15:01 [iNFO] [sTDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:470)

2013-07-28 08:15:01 [iNFO] [sTDERR] at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)

2013-07-28 08:15:01 [iNFO] [sTDERR] Caused by: java.util.ConcurrentModificationException

2013-07-28 08:15:01 [iNFO] [sTDERR] at java.util.ArrayList$Itr.checkForComodification(Unknown Source)

2013-07-28 08:15:01 [iNFO] [sTDERR] at java.util.ArrayList$Itr.next(Unknown Source)

2013-07-28 08:15:01 [iNFO] [sTDERR] at MetallurgyRealism.MetallurgyRealismLivingDrops.onEntityDrop(MetallurgyRealismLivingDrops.java:36)

2013-07-28 08:15:01 [iNFO] [sTDERR] at net.minecraftforge.event.ASMEventHandler_4_MetallurgyRealismLivingDrops_onEntityDrop_LivingDropsEvent.invoke(.dynamic)

2013-07-28 08:15:01 [iNFO] [sTDERR] at net.minecraftforge.event.ASMEventHandler.invoke(ASMEventHandler.java:39)

2013-07-28 08:15:01 [iNFO] [sTDERR] at net.minecraftforge.event.EventBus.post(EventBus.java:108)

2013-07-28 08:15:01 [iNFO] [sTDERR] at net.minecraftforge.common.ForgeHooks.onLivingDrops(ForgeHooks.java:338)

2013-07-28 08:15:01 [iNFO] [sTDERR] at net.minecraft.entity.EntityLiving.onDeath(EntityLiving.java:1372)

2013-07-28 08:15:01 [iNFO] [sTDERR] at net.minecraft.entity.EntityLiving.attackEntityFrom(EntityLiving.java:1126)

2013-07-28 08:15:01 [iNFO] [sTDERR] at net.minecraft.entity.passive.EntityAnimal.attackEntityFrom(EntityAnimal.java:191)

2013-07-28 08:15:01 [iNFO] [sTDERR] at net.minecraft.entity.player.EntityPlayer.attackTargetEntityWithCurrentItem(EntityPlayer.java:1347)

2013-07-28 08:15:01 [iNFO] [sTDERR] at net.minecraft.network.NetServerHandler.handleUseEntity(NetServerHandler.java:832)

2013-07-28 08:15:01 [iNFO] [sTDERR] at net.minecraft.network.packet.Packet7UseEntity.processPacket(Packet7UseEntity.java:57)

2013-07-28 08:15:01 [iNFO] [sTDERR] at net.minecraft.network.MemoryConnection.processReadPackets(MemoryConnection.java:89)

2013-07-28 08:15:01 [iNFO] [sTDERR] at net.minecraft.network.NetServerHandler.networkTick(NetServerHandler.java:134)

2013-07-28 08:15:01 [iNFO] [sTDERR] at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:53)

2013-07-28 08:15:01 [iNFO] [sTDERR] ... 6 more

2013-07-28 08:15:01 [sEVERE] [Minecraft-Server] Encountered an unexpected exception ReportedException

net.minecraft.util.ReportedException: Ticking memory connection

at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:60)

at net.minecraft.server.integrated.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:109)

at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:676)

at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:572)

at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:127)

at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:470)

at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)

Caused by: java.util.ConcurrentModificationException

at java.util.ArrayList$Itr.checkForComodification(Unknown Source)

at java.util.ArrayList$Itr.next(Unknown Source)

at MetallurgyRealism.MetallurgyRealismLivingDrops.onEntityDrop(MetallurgyRealismLivingDrops.java:36)

at net.minecraftforge.event.ASMEventHandler_4_MetallurgyRealismLivingDrops_onEntityDrop_LivingDropsEvent.invoke(.dynamic)

at net.minecraftforge.event.ASMEventHandler.invoke(ASMEventHandler.java:39)

at net.minecraftforge.event.EventBus.post(EventBus.java:108)

at net.minecraftforge.common.ForgeHooks.onLivingDrops(ForgeHooks.java:338)

at net.minecraft.entity.EntityLiving.onDeath(EntityLiving.java:1372)

at net.minecraft.entity.EntityLiving.attackEntityFrom(EntityLiving.java:1126)

at net.minecraft.entity.passive.EntityAnimal.attackEntityFrom(EntityAnimal.java:191)

at net.minecraft.entity.player.EntityPlayer.attackTargetEntityWithCurrentItem(EntityPlayer.java:1347)

at net.minecraft.network.NetServerHandler.handleUseEntity(NetServerHandler.java:832)

at net.minecraft.network.packet.Packet7UseEntity.processPacket(Packet7UseEntity.java:57)

at net.minecraft.network.MemoryConnection.processReadPackets(MemoryConnection.java:89)

at net.minecraft.network.NetServerHandler.networkTick(NetServerHandler.java:134)

at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:53)

... 6 more

2013-07-28 08:15:01 [sEVERE] [Minecraft-Server] This crash report has been saved to: C:\Users\MarcelsPC\Desktop\Forge\mcp\jars\.\crash-reports\crash-2013-07-28_08.15.01-server.txt

2013-07-28 08:15:01 [iNFO] [Minecraft-Server] Stopping server

2013-07-28 08:15:01 [iNFO] [Minecraft-Server] Saving players

2013-07-28 08:15:01 [iNFO] [Minecraft-Server] Saving worlds

2013-07-28 08:15:01 [iNFO] [Minecraft-Server] Saving chunks for level 'New World'/Overworld

2013-07-28 08:15:01 [iNFO] [Minecraft-Server] Saving chunks for level 'New World'/Nether

2013-07-28 08:15:01 [iNFO] [Minecraft-Server] Saving chunks for level 'New World'/The End

2013-07-28 08:15:02 [iNFO] [ForgeModLoader] Unloading dimension 0

2013-07-28 08:15:02 [iNFO] [ForgeModLoader] Unloading dimension -1

2013-07-28 08:15:02 [iNFO] [ForgeModLoader] Unloading dimension 1

2013-07-28 08:15:02 [sEVERE] [ForgeModLoader] Fatal errors were detected during the transition from SERVER_STARTED to SERVER_STOPPED. Loading cannot continue

2013-07-28 08:15:02 [sEVERE] [ForgeModLoader]

mcp{7.44} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available

FML{5.2.21.729} [Forge Mod Loader] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available

Forge{7.8.0.729} [Minecraft Forge] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available

MetallurgyRealism{0.0.7} [Metallurgy Realism] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available

2013-07-28 08:15:02 [sEVERE] [ForgeModLoader] The ForgeModLoader state engine has become corrupted. Probably, a state was missed by and invalid modification to a base classForgeModLoader depends on. This is a critical error and not recoverable. Investigate any modifications to base classes outside ofForgeModLoader, especially Optifine, to see if there are fixes available.

2013-07-28 08:15:02 [iNFO] [sTDERR] Exception in thread "Server thread" java.lang.RuntimeException: The ForgeModLoader state engine is invalid

2013-07-28 08:15:02 [iNFO] [sTDERR] at cpw.mods.fml.common.LoadController.transition(LoadController.java:139)

2013-07-28 08:15:02 [iNFO] [sTDERR] at cpw.mods.fml.common.Loader.serverStopped(Loader.java:801)

2013-07-28 08:15:02 [iNFO] [sTDERR] at cpw.mods.fml.common.FMLCommonHandler.handleServerStopped(FMLCommonHandler.java:468)

2013-07-28 08:15:02 [iNFO] [sTDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:532)

2013-07-28 08:15:02 [iNFO] [sTDERR] at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)

2013-07-28 08:15:11 [iNFO] [Minecraft-Client] Stopping!

2013-07-28 08:15:11 [iNFO] [sTDOUT]

2013-07-28 08:15:11 [iNFO] [sTDOUT] SoundSystem shutting down...

2013-07-28 08:15:12 [iNFO] [sTDOUT]    Author: Paul Lamb, www.paulscode.com

2013-07-28 08:15:12 [iNFO] [sTDOUT]

2013-07-28 08:15:47 [iNFO] [sTDERR] Someone is closing me!

2013-07-28 08:15:47 [iNFO] [Minecraft-Server] Stopping server

2013-07-28 08:15:47 [iNFO] [Minecraft-Server] Saving players

2013-07-28 08:15:47 [iNFO] [Minecraft-Server] Saving worlds

 

 

...I don't understand what Eclpise wants from me, but MC error log is itching about the array list, if I interpret this correctly. Ohh wait, fatal error due to a incompatible modification of a base file, which is rubbish, because I did not touched any base file at all. Do I maybe need to put the code into my proxy class?

 

"Java-Nerd"? real mature. i suggest you listen to yourself and go learn basic java. i mean f*ck, i already told you how to do it, hydroflame confirmed it, and gotolink basically did it for you. and you still complain?? are you that much of a baby that can't be bothered to figure out the rest yourself? you need absolutely everything done for you? get over yourself

 

You'd understand sarcasm or Irony not even if I smashed it in your face. And please, could you wipe my little tushi and chew my meat for me?

Link to comment
Share on other sites

You'd understand sarcasm or Irony not even if I smashed it in your face.

 

Says the guy who can't even form a sentence right. and it's crashing because you're modifying the list while iterating through it. either replace only the entityitem's itemstack and not the entityitem itself or modify the list after you've iterated through it. and that's the last thing i'm saying. hydroflame and gotolink may be patient enough to deal with your immaturity and bs, but i'm certainly not. so byebye now

Link to comment
Share on other sites

The root cause is this exception:

 

java.util.ConcurrentModificationException

at java.util.ArrayList$Itr.checkForComodification(Unknown Source)

at java.util.ArrayList$Itr.next(Unknown Source)

at MetallurgyRealism.MetallurgyRealismLivingDrops.onEntityDrop(MetallurgyRealismLivingDrops.java:36)

 

Googling for "java ConcurrentModificationException" turns up this explanation: http://docs.oracle.com/javase/6/docs/api/java/util/ConcurrentModificationException.html

 

In this case it's because you have this line inside the loop that's iterating over the drops:

 

    event.drops.add(new EntityItem(event.entityLiving.worldObj, event.entityLiving.posX, event.entityLiving.posY, event.entityLiving.posZ, new ItemStack(MetallurgyRealismModBase.FoodEggBoiled)));

 

One way to fix this would be to add the replacement items to a temporary list while you're iterating, and then add that to the drops afterwards.

Link to comment
Share on other sites

Join the conversation

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

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

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

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

×   Your previous content has been restored.   Clear editor

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • https://mclo.gs/4UC49Ao
    • Way back in the Forge 1.17 days, work started for adding JPMS (Java Platform Module Support) to ModLauncher and ForgeModLoader. This has been used internally by Forge and some libraries for a while now, but mods (those with mods.toml specifically) have not been able to take advantage of it. As of Forge 1.21.1 and 1.21.3, this is now possible!   What is JPMS and what does it mean for modders? JPMS is the Java Platform Module System, introduced in Java 9. It allows you to define modules, which are collections of packages and resources that can be exported or hidden from other modules. This allows for much more fine-tuned control over visibility, cleaner syntax for service declarations and support for sealed types across packages. For example, you might have a mod with a module called `com.example.mod` that exports `com.example.mod.api` and `com.example.mod.impl` to other mods, but hides `com.example.mod.internal` from them. This would allow you to have a clean API for other mods to use, while keeping your internal implementation details hidden from IDE hints, helping prevent accidental usage of internals that might break without prior notice. This is particularly useful if you'd like to use public records with module-private constructors or partially module-private record components, as you can create a sealed interface that only your record implements, having the interface be exported and the record hidden. It's also nice for declaring and using services, as you'll get compile-time errors from the Java compiler for typos and the like, rather than deferring to runtime errors. In more advanced cases, you can also have public methods that are only accessible to specific other modules -- handy if you want internal interactions between multiple of your own mods.   How do I bypass it? We understand there may be drama in implementing a system that prevents mods from accessing each other's internals when necessary (like when a mod is abandoned or you need to fix a compat issue) -- after all, we are already modding a game that doesn't have explicit support for Java mods yet. We have already thought of this and are offering APIs from day one to selectively bypass module restrictions. Let me be clear: Forge mods are not required to use JPMS. If you don't want to use it, you don't have to. The default behaviour is to have fully open, fully exported automatic modules. In Java, you can use the `Add-Opens` and `Add-Exports` manifest attributes to selectively bypass module restrictions of other mods at launch time, and we've added explicit support for these when loading your Forge mods. At compile-time, you can use existing solutions such as the extra-java-module-info Gradle plugin to deal with non-modular dependencies and add extra opens and exports to other modules. Here's an example on how to make the internal package `com.example.examplemod.internal` open to your mod in your build.gradle: tasks.named('jar', Jar) { manifest { attributes([ 'Add-Opens' : 'com.example.examplemod/com.example.examplemod.internal' 'Specification-Title' : mod_id, 'Specification-Vendor' : mod_authors // (...) ]) } } With the above in your mod's jar manifest, you can now reflectively access the classes inside that internal package. Multiple entries are separated with a space, as per Java's official spec. You can also use Add-Exports to directly call without reflection, however you'd need to use the Gradle plugin mentioned earlier to be able to compile. The syntax for Add-Exports is the same as Add-Opens, and instructions for the compile-time step with the Gradle plugin are detailed later in this post. Remember to prefer the opens and exports keywords inside module-info.java for sources you control. The Add-Opens/Add-Exports attributes are only intended for forcing open other mods.   What else is new with module support? Previously, the runtime module name was always forced to the first mod ID in your `mods.toml` file and all packages were forced fully open and exported. Module names are now distinguished from mod IDs, meaning the module name in your module-info.java can be different from the mod ID in your `mods.toml`. This allows you to have a more descriptive module name that doesn't have to be the same as your mod ID, however we strongly recommend including your mod ID as part of your module name to aid troubleshooting. The `Automatic-Module-Name` manifest attribute is now also honoured, allowing you to specify a module name for your mod without needing to create a `module-info.java` file. This is particularly useful for mods that don't care about JPMS features but want to have a more descriptive module name and easier integration with other mods that do use JPMS.   How do I use it? The first step is to create a `module-info.java` file in your mod's source directory. This file should be in the same package as your main mod class, and should look something like this: open module com.example.examplemod { requires net.minecraftforge.eventbus; requires net.minecraftforge.fmlcore; requires net.minecraftforge.forge; requires net.minecraftforge.javafmlmod; requires net.minecraftforge.mergetool.api; requires org.slf4j; requires logging; } For now, we're leaving the whole module open to reflection, which is a good starting point. When we know we want to close something off, we can remove the open modifier from the module and open or export individual packages instead. Remember that you need to be open to Forge (module name net.minecraftforge.forge), otherwise it can't call your mod's constructor. Next is fixing modules in Gradle. While Forge and Java support modules properly, Gradle does not put automatic modules on the module path by default, meaning that the logging module (from com.mojang:logging) is not found. To fix this, add the Gradle plugin and add a compile-time module definition for that Mojang library: plugins { // (...) id 'org.gradlex.extra-java-module-info' version "1.9" } // (...) extraJavaModuleInfo { failOnMissingModuleInfo = false automaticModule("com.mojang:logging", "logging") } The automatic module override specified in your build.gradle should match the runtime one to avoid errors. You can do the same for any library or mod dependency that is missing either a module-info or explicit Automatic-Module-Name, however be aware that you may need to update your mod once said library adds one. That's all you need to get started with module support in your mods. You can learn more about modules and how to use them at dev.java.
    • Faire la mise à jour grâce à ce lien m'a aider personnellement, merci à @Paint_Ninja. https://www.amd.com/en/support 
    • When I came across the 'Exit Code: I got a 1 error in my Minecraft mods, so I decided to figure out what was wrong. First, I took a look at the logs. In the mods folder (usually where you'd find logs or crash reports), I found the latest.log file or the corresponding crash report. I read it through carefully, looking for any lines with errors or warnings. Then I checked the Minecraft Forge support site, where you can often find info on what causes errors and how to fix them. I then disabled half of my mods and tried running the game. If the error disappeared, it meant that the problem was with the disabled mod. I repeated this several times to find the problem mod.
    • I have no idea - switch to a pre-configured modpack and use it as working base    
  • Topics

×
×
  • Create New...

Important Information

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