Jump to content

[1.7.2]NoSuchMethodError, only happens after building


The_Fireplace

Recommended Posts

My mod works fine when run in the workspace, however, if I do gradlew.bat build, and use the compiled mod, it crashes, giving me the following report:

 

 

---- Minecraft Crash Report ----

// Hi. I'm Minecraft, and I'm a crashaholic.

 

Time: 3/9/14 9:37 PM

Description: Exception in server tick loop

 

java.lang.NoSuchMethodError: net.minecraft.util.DamageSource.getDamageType()Ljava/lang/String;

at f1repl4ce.MobRebirth.MobSpawningHandler.onEntityLivingDeath(MobSpawningHandler.java:25)

at cpw.mods.fml.common.eventhandler.ASMEventHandler_4_MobSpawningHandler_onEntityLivingDeath_LivingDeathEvent.invoke(.dynamic)

at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:51)

at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:122)

at net.minecraftforge.common.ForgeHooks.onLivingDeath(ForgeHooks.java:285)

at net.minecraft.entity.EntityLivingBase.func_70645_a(EntityLivingBase.java:934)

at net.minecraft.entity.EntityLivingBase.func_70097_a(EntityLivingBase.java:896)

at net.minecraft.entity.player.EntityPlayer.func_71059_n(EntityPlayer.java:1286)

at net.minecraft.network.NetHandlerPlayServer.func_147340_a(NetHandlerPlayServer.java:833)

at net.minecraft.network.play.client.C02PacketUseEntity.func_148833_a(SourceFile:55)

at net.minecraft.network.play.client.C02PacketUseEntity.func_148833_a(SourceFile:10)

at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:211)

at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173)

at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:680)

at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:568)

at net.minecraft.server.integrated.IntegratedServer.func_71217_p(IntegratedServer.java:114)

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

at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:705)

 

 

A detailed walkthrough of the error, its code path and all known details is as follows:

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

 

-- System Details --

Details:

Minecraft Version: 1.7.2

Operating System: Windows 7 (x86) version 6.1

Java Version: 1.7.0_51, Oracle Corporation

Java VM Version: Java HotSpot Client VM (mixed mode, sharing), Oracle Corporation

Memory: 98817888 bytes (94 MB) / 209612800 bytes (199 MB) up to 518979584 bytes (494 MB)

JVM Flags: 2 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xmx512M

AABB Pool Size: 4738 (265328 bytes; 0 MB) allocated, 4429 (248024 bytes; 0 MB) used

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

FML: MCP v9.01-pre FML v7.2.116.1024 Minecraft Forge 10.12.0.1024 4 mods loaded, 4 mods active

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

FML{7.2.116.1024} [Forge Mod Loader] (forge-1.7.2-10.12.0.1024.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available

Forge{10.12.0.1024} [Minecraft Forge] (forge-1.7.2-10.12.0.1024.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available

mobrebirth{1.1} [mobrebirth] ([1.7.2]MobRebirth2.0a.zip) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available

Profiler Position: N/A (disabled)

Vec3 Pool Size: 795 (44520 bytes; 0 MB) allocated, 557 (31192 bytes; 0 MB) used

Player Count: 1 / 8; [EntityPlayerMP['The_Fireplace'/268, l='Mob Rebirth Test', x=-486.20, y=4.00, z=-160.40]]

Type: Integrated Server (map_client.txt)

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

 

And here is my code:

 

 

package f1repl4ce.MobRebirth;

import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.monster.IMob;
import net.minecraft.entity.passive.IAnimals;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemMonsterPlacer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.event.entity.living.LivingDeathEvent;
import net.minecraftforge.event.entity.living.LivingSpawnEvent;
import net.minecraft.entity.monster.*;

public class MobSpawningHandler {

@SubscribeEvent
public void onEntityLivingDeath(LivingDeathEvent event) {

	if (event.source.getDamageType().equals("player")) {//Checks to see if a player killed it
		EntityPlayer p = (EntityPlayer) event.source.getEntity();

			if ((event.entityLiving instanceof IMob)) {//Checks to see if it was a Mob
				double rand = Math.random();
				//rand = 0.0d;
				if (rand < HandlersInit.SPAWNMOBCHANCE) {//Checks the chance to see if anything should happen
					int id = EntityList.getEntityID(event.entityLiving);
					if (id > 0 && EntityList.entityEggs.containsKey(id)) {
						if (HandlersInit.SPAWNMOB = false){ //Checks to see if Mob spawning instead of Eggs is turned off
						ItemStack dropEgg = new ItemStack(
								Items.spawn_egg, 1, id); //sets what item should drop
						event.entityLiving.entityDropItem(dropEgg, 0.0F);}//Makes the item drop
						else{
							Entity entity = ItemMonsterPlacer.spawnCreature(event.entityLiving.worldObj , id, event.entityLiving.posX, event.entityLiving.posY, event.entityLiving.posZ);
						}


				}

			}
		}
			else
			if ((event.entityLiving instanceof IAnimals)) {//Checks to see if it was an Animal
				if (HandlersInit.SPAWNANIMALS = true){//Checks if Animal Spawning is enabled
				double rand = Math.random();
				//rand = 0.0d;
				if (rand < HandlersInit.SPAWNMOBCHANCE) {//Checks the chance to see if anything should happen
					int id = EntityList.getEntityID(event.entityLiving);
					if (id > 0 && EntityList.entityEggs.containsKey(id)) {
							if (HandlersInit.SPAWNMOB = false){ //Checks to see if Animal spawning instead of Eggs is turned off
								ItemStack dropEgg = new ItemStack(
										Items.spawn_egg, 1, id); //sets what item should drop
								event.entityLiving.entityDropItem(dropEgg, 0.0F);}//Makes the item drop
							else{
								Entity entity = ItemMonsterPlacer.spawnCreature(event.entityLiving.worldObj , id, event.entityLiving.posX, event.entityLiving.posY, event.entityLiving.posZ);
						}
						}


				}

			}
		}

	}

	if (event.source.getSourceOfDamage() instanceof EntityArrow) {
		if (((EntityArrow) event.source.getSourceOfDamage()).shootingEntity != null) {
			if (((EntityArrow) event.source.getSourceOfDamage()).shootingEntity instanceof EntityPlayer) {//checks to see if the arrow came from a player

				EntityPlayer p = (EntityPlayer) event.source.getEntity();


					if ((event.entityLiving instanceof IMob)) {//Checks to see if the entity was a mob
						double rand = Math.random();
						//rand = 0.0d;

						if (rand < HandlersInit.SPAWNMOBCHANCE) {//checks the chance to see if anything should happen
							int id = EntityList.getEntityID(event.entityLiving);
							if (id > 0
									&& EntityList.entityEggs.containsKey(id)) {//sets variable 'id', used to tell it which egg to drop
								     if (HandlersInit.SPAWNMOB = false) { //Checks to see if Mob spawning instead of Eggs is turned off
									ItemStack dropEgg = new ItemStack(Items.spawn_egg, 1, id);//sets what item will drop
								event.entityLiving.entityDropItem(dropEgg, 0.0F); }//drops the item
								     else{
										Entity entity = ItemMonsterPlacer.spawnCreature(event.entityLiving.worldObj , id, event.entityLiving.posX, event.entityLiving.posY, event.entityLiving.posZ);
										}

						}

					}

				}
					else
						if ((event.entityLiving instanceof IAnimals)) {//Checks to see if it was an Animal
							if (HandlersInit.SPAWNANIMALS = true){//Checks if Animal Spawning is enabled
							double rand = Math.random();
							//rand = 0.0d;
							if (rand < HandlersInit.SPAWNMOBCHANCE) {//Checks the chance to see if anything should happen
								int id = EntityList.getEntityID(event.entityLiving);
								if (id > 0 && EntityList.entityEggs.containsKey(id)) {
										if (HandlersInit.SPAWNMOB = false){ //Checks to see if Animal spawning instead of Eggs is turned off
											ItemStack dropEgg = new ItemStack(
													Items.spawn_egg, 1, id); //sets what item should drop
											event.entityLiving.entityDropItem(dropEgg, 0.0F);}//Makes the item drop
										else{
											Entity entity = ItemMonsterPlacer.spawnCreature(event.entityLiving.worldObj , id, event.entityLiving.posX, event.entityLiving.posY, event.entityLiving.posZ);
									}
									}


							}

						}
					}
			}

		}

	}

}
}

 

 

If I helped please press the Thank You button.

 

Check out my mods at http://www.curse.com/users/The_Fireplace/projects

Link to comment
Share on other sites

That might be a problem with reobfuscation then. Try running "gradlew --refresh-dependencies build" and see if that helps, or even re-run "gradlew setupDevWorkspace" before building.

 

On a side note, you can use event.source.getEntity() instanceof EntityPlayer as a more generic way to check if a player was the cause of damage, rather than only checking for damageType().equals("player"). The latter will not work for things like projectiles, while the former will.

Link to comment
Share on other sites

Join the conversation

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

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

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

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

×   Your previous content has been restored.   Clear editor

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

Announcements



×
×
  • Create New...

Important Information

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