Fix EntityList

This commit is contained in:
catfoolyou 2025-03-04 16:40:47 -05:00
parent 59c4aa7508
commit a70ca1cba5
6 changed files with 95379 additions and 95267 deletions

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="corretto-18" project-jdk-type="JavaSDK" /> <component name="ProjectRootManager" version="2" languageLevel="JDK_18" default="true" project-jdk-name="corretto-18" project-jdk-type="JavaSDK" />
</project> </project>

View File

@ -10,7 +10,7 @@ sourceSets {
java { java {
srcDirs( srcDirs(
"src/main/java", "src/main/java",
"src/lwjgl/java", "src/teavm/java",
"sp-server/src/ipc/java" "sp-server/src/ipc/java"
) )
} }
@ -26,10 +26,10 @@ tasks.withType(JavaCompile) {
options.compilerArgs << "-Xmaxerrs" << "1000" options.compilerArgs << "-Xmaxerrs" << "1000"
} }
sourceSets.main.resources.srcDirs += 'src/lwjgl/java/javazoom/jl/decoder' //sourceSets.main.resources.srcDirs += 'src/lwjgl/java/javazoom/jl/decoder'
dependencies { dependencies {
implementation fileTree(dir: './lwjgl-rundir/', include: '*.jar') //implementation fileTree(dir: './lwjgl-rundir/', include: '*.jar')
teavm(teavm.libs.jso) teavm(teavm.libs.jso)
teavm(teavm.libs.jsoApis) teavm(teavm.libs.jsoApis)

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -3,17 +3,19 @@ package net.minecraft.src;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
import java.util.function.Function;
public class EntityList public class EntityList {
{
/** Provides a mapping between entity classes and a string */ /** Provides a mapping between entity classes and a string */
private static Map stringToClassMapping = new HashMap(); private static Map stringToClassMapping = new HashMap();
private static Map stringToConstructorMapping = new HashMap();
/** Provides a mapping between a string and an entity classes */ /** Provides a mapping between a string and an entity classes */
private static Map classToStringMapping = new HashMap(); private static Map classToStringMapping = new HashMap();
/** provides a mapping between an entityID and an Entity Class */ /** provides a mapping between an entityID and an Entity Class */
private static Map IDtoClassMapping = new HashMap(); private static Map IDtoClassMapping = new HashMap();
private static Map<Integer, Function<World,Entity>> IDtoConstructorMapping = new HashMap<>();
/** provides a mapping between an Entity Class and an entity ID */ /** provides a mapping between an Entity Class and an entity ID */
private static Map classToIDMapping = new HashMap(); private static Map classToIDMapping = new HashMap();
@ -25,13 +27,15 @@ public class EntityList
public static HashMap entityEggs = new LinkedHashMap(); public static HashMap entityEggs = new LinkedHashMap();
/** /**
* adds a mapping between Entity classes and both a string representation and an ID * adds a mapping between Entity classes and both a string representation and an
* ID
*/ */
private static void addMapping(Class par0Class, String par1Str, int par2) private static void addMapping(Class par0Class, Function<World,Entity> construst, String par1Str, int par2) {
{
stringToClassMapping.put(par1Str, par0Class); stringToClassMapping.put(par1Str, par0Class);
stringToConstructorMapping.put(par1Str, construst);
classToStringMapping.put(par0Class, par1Str); classToStringMapping.put(par0Class, par1Str);
IDtoClassMapping.put(Integer.valueOf(par2), par0Class); IDtoClassMapping.put(Integer.valueOf(par2), par0Class);
IDtoConstructorMapping.put(Integer.valueOf(par2), construst);
classToIDMapping.put(par0Class, Integer.valueOf(par2)); classToIDMapping.put(par0Class, Integer.valueOf(par2));
stringToIDMapping.put(par1Str, Integer.valueOf(par2)); stringToIDMapping.put(par1Str, Integer.valueOf(par2));
} }
@ -39,47 +43,54 @@ public class EntityList
/** /**
* Adds a entity mapping with egg info. * Adds a entity mapping with egg info.
*/ */
private static void addMapping(Class par0Class, String par1Str, int par2, int par3, int par4) private static void addMapping(Class par0Class, Function<World,Entity> construst, String par1Str, int par2, int par3, int par4) {
{ addMapping(par0Class, construst, par1Str, par2);
addMapping(par0Class, par1Str, par2);
entityEggs.put(Integer.valueOf(par2), new EntityEggInfo(par2, par3, par4)); entityEggs.put(Integer.valueOf(par2), new EntityEggInfo(par2, par3, par4));
} }
/** /**
* Create a new instance of an entity in the world by using the entity name. * Create a new instance of an entity in the world by using the entity name.
*/ */
public static Entity createEntityByName(String par0Str, World par1World) public static Entity createEntityByName(String par0Str, World par1World) {
{ /*
Entity var2 = null; Entity var2 = null;
try
{
Class var3 = (Class) stringToClassMapping.get(par0Str); Class var3 = (Class) stringToClassMapping.get(par0Str);
if (var3 != null) if (var3 != null) {
{ try {
var2 = (Entity) var3.getConstructor(new Class[] { World.class }).newInstance(new Object[] { par1World }); var2 = (Entity) var3.getConstructor(new Class[] { World.class }).newInstance(new Object[] { par1World });
} catch (Exception var4) {
try {
var2 = (Entity) var3.getConstructor(new Class[0]).newInstance(new Object[0]);
} catch (Exception e) {
e.printStackTrace();
} }
} }
catch (Exception var4) }
{
var4.printStackTrace(); if(var2 == null) {
System.err.println("The entity '" + par0Str + "' isn't registered");
} }
return var2; return var2;
*/
Function<World,Entity> ff = (Function<World,Entity>)stringToConstructorMapping.get(par0Str);
if(ff == null) {
System.err.println("The entity '" + par0Str + "' isn't registered");
return null;
}else {
return ff.apply(par1World);
}
} }
/** /**
* create a new instance of an entity from NBT store * create a new instance of an entity from NBT store
*/ */
public static Entity createEntityFromNBT(NBTTagCompound par0NBTTagCompound, World par1World) public static Entity createEntityFromNBT(NBTTagCompound par0NBTTagCompound, World par1World) {
{
Entity var2 = null; Entity var2 = null;
if ("Minecart".equals(par0NBTTagCompound.getString("id"))) if ("Minecart".equals(par0NBTTagCompound.getString("id"))) {
{ switch (par0NBTTagCompound.getInteger("Type")) {
switch (par0NBTTagCompound.getInteger("Type"))
{
case 0: case 0:
par0NBTTagCompound.setString("id", "MinecartRideable"); par0NBTTagCompound.setString("id", "MinecartRideable");
break; break;
@ -95,27 +106,19 @@ public class EntityList
par0NBTTagCompound.removeTag("Type"); par0NBTTagCompound.removeTag("Type");
} }
try try {
{ Function<World,Entity> ff = (Function<World,Entity>)stringToConstructorMapping.get(par0NBTTagCompound.getString("id"));
Class var3 = (Class)stringToClassMapping.get(par0NBTTagCompound.getString("id")); if (ff != null) {
var2 = ff.apply(par1World);
if (var3 != null)
{
var2 = (Entity)var3.getConstructor(new Class[] {World.class}).newInstance(new Object[] {par1World});
} }
} } catch (Exception var4) {
catch (Exception var4)
{
var4.printStackTrace(); var4.printStackTrace();
} }
if (var2 != null) if (var2 != null) {
{
var2.readFromNBT(par0NBTTagCompound); var2.readFromNBT(par0NBTTagCompound);
} } else {
else System.err.println("Skipping Entity with id " + par0NBTTagCompound.getString("id"));
{
System.out.println("Skipping Entity with id " + par0NBTTagCompound.getString("id"));
} }
return var2; return var2;
@ -124,27 +127,24 @@ public class EntityList
/** /**
* Create a new instance of an entity in the world by using an entity ID. * Create a new instance of an entity in the world by using an entity ID.
*/ */
public static Entity createEntityByID(int par0, World par1World) public static Entity createEntityByID(int par0, World par1World) {
{
Entity var2 = null; Entity var2 = null;
try try {
{ // Class var3 = getClassFromID(par0);
Class var3 = getClassFromID(par0); //
// if (var3 != null) {
if (var3 != null) // var2 = (Entity) var3.newInstance();
{ // }
var2 = (Entity)var3.getConstructor(World.class).newInstance(new Object[] {par1World}); var2 = IDtoConstructorMapping.get(par0).apply(par1World);
} } catch (Exception var4) {
}
catch (Exception var4)
{
var4.printStackTrace(); var4.printStackTrace();
} }
if (var2 == null) if (var2 == null) {
{ System.err.println("Skipping Entity with id " + par0);
System.out.println("Skipping Entity with id " + par0); }else {
var2.setWorld(par1World);
} }
return var2; return var2;
@ -153,8 +153,7 @@ public class EntityList
/** /**
* gets the entityID of a specific entity * gets the entityID of a specific entity
*/ */
public static int getEntityID(Entity par0Entity) public static int getEntityID(Entity par0Entity) {
{
Class var1 = par0Entity.getClass(); Class var1 = par0Entity.getClass();
return classToIDMapping.containsKey(var1) ? ((Integer) classToIDMapping.get(var1)).intValue() : 0; return classToIDMapping.containsKey(var1) ? ((Integer) classToIDMapping.get(var1)).intValue() : 0;
} }
@ -162,85 +161,80 @@ public class EntityList
/** /**
* Return the class assigned to this entity ID. * Return the class assigned to this entity ID.
*/ */
public static Class getClassFromID(int par0) public static Class getClassFromID(int par0) {
{
return (Class) IDtoClassMapping.get(Integer.valueOf(par0)); return (Class) IDtoClassMapping.get(Integer.valueOf(par0));
} }
/** /**
* Gets the string representation of a specific entity. * Gets the string representation of a specific entity.
*/ */
public static String getEntityString(Entity par0Entity) public static String getEntityString(Entity par0Entity) {
{
return (String) classToStringMapping.get(par0Entity.getClass()); return (String) classToStringMapping.get(par0Entity.getClass());
} }
/** /**
* Finds the class using IDtoClassMapping and classToStringMapping * Finds the class using IDtoClassMapping and classToStringMapping
*/ */
public static String getStringFromID(int par0) public static String getStringFromID(int par0) {
{
Class var1 = getClassFromID(par0); Class var1 = getClassFromID(par0);
return var1 != null ? (String) classToStringMapping.get(var1) : null; return var1 != null ? (String) classToStringMapping.get(var1) : null;
} }
static static {
{ addMapping(EntityItem.class, (w) -> new EntityItem(w), "Item", 1);
addMapping(EntityItem.class, "Item", 1); addMapping(EntityXPOrb.class, (w) -> new EntityXPOrb(w), "XPOrb", 2);
addMapping(EntityXPOrb.class, "XPOrb", 2); addMapping(EntityPainting.class, (w) -> new EntityPainting(w), "Painting", 9);
addMapping(EntityLeashKnot.class, "LeashKnot", 8); addMapping(EntityArrow.class, (w) -> new EntityArrow(w), "Arrow", 10);
addMapping(EntityPainting.class, "Painting", 9); addMapping(EntitySnowball.class, (w) -> new EntitySnowball(w), "Snowball", 11);
addMapping(EntityArrow.class, "Arrow", 10); addMapping(EntityLargeFireball.class, (w) -> new EntityLargeFireball(w), "Fireball", 12);
addMapping(EntitySnowball.class, "Snowball", 11); addMapping(EntitySmallFireball.class, (w) -> new EntitySmallFireball(w), "SmallFireball", 13);
addMapping(EntityLargeFireball.class, "Fireball", 12); addMapping(EntityEnderPearl.class, (w) -> new EntityEnderPearl(w), "ThrownEnderpearl", 14);
addMapping(EntitySmallFireball.class, "SmallFireball", 13); addMapping(EntityEnderEye.class, (w) -> new EntityEnderEye(w), "EyeOfEnderSignal", 15);
addMapping(EntityEnderPearl.class, "ThrownEnderpearl", 14); addMapping(EntityPotion.class, (w) -> new EntityPotion(w), "ThrownPotion", 16);
addMapping(EntityEnderEye.class, "EyeOfEnderSignal", 15); addMapping(EntityExpBottle.class, (w) -> new EntityExpBottle(w), "ThrownExpBottle", 17);
addMapping(EntityPotion.class, "ThrownPotion", 16); addMapping(EntityItemFrame.class, (w) -> new EntityItemFrame(w), "ItemFrame", 18);
addMapping(EntityExpBottle.class, "ThrownExpBottle", 17); addMapping(EntityWitherSkull.class, (w) -> new EntityWitherSkull(w), "WitherSkull", 19);
addMapping(EntityItemFrame.class, "ItemFrame", 18); addMapping(EntityTNTPrimed.class, (w) -> new EntityTNTPrimed(w), "PrimedTnt", 20);
addMapping(EntityWitherSkull.class, "WitherSkull", 19); addMapping(EntityFallingSand.class, (w) -> new EntityFallingSand(w), "FallingSand", 21);
addMapping(EntityTNTPrimed.class, "PrimedTnt", 20); addMapping(EntityFireworkRocket.class, (w) -> new EntityFireworkRocket(w), "FireworksRocketEntity", 22);
addMapping(EntityFallingSand.class, "FallingSand", 21); addMapping(EntityBoat.class, (w) -> new EntityBoat(w), "Boat", 41);
addMapping(EntityFireworkRocket.class, "FireworksRocketEntity", 22); addMapping(EntityMinecartEmpty.class, (w) -> new EntityMinecartEmpty(w), "MinecartRideable", 42);
addMapping(EntityBoat.class, "Boat", 41); addMapping(EntityMinecartChest.class, (w) -> new EntityMinecartChest(w), "MinecartChest", 43);
addMapping(EntityMinecartEmpty.class, "MinecartRideable", 42); addMapping(EntityMinecartFurnace.class, (w) -> new EntityMinecartFurnace(w), "MinecartFurnace", 44);
addMapping(EntityMinecartChest.class, "MinecartChest", 43); addMapping(EntityMinecartTNT.class, (w) -> new EntityMinecartTNT(w), "MinecartTNT", 45);
addMapping(EntityMinecartFurnace.class, "MinecartFurnace", 44); addMapping(EntityMinecartHopper.class, (w) -> new EntityMinecartHopper(w), "MinecartHopper", 46);
addMapping(EntityMinecartTNT.class, "MinecartTNT", 45); addMapping(EntityMinecartMobSpawner.class, (w) -> new EntityMinecartMobSpawner(w), "MinecartSpawner", 47);
addMapping(EntityMinecartHopper.class, "MinecartHopper", 46); //addMapping(EntityLiving.class, "Mob", 48);
addMapping(EntityMinecartMobSpawner.class, "MinecartSpawner", 47); //addMapping(EntityMob.class, "Monster", 49);
addMapping(EntityLiving.class, "Mob", 48); addMapping(EntityCreeper.class, (w) -> new EntityCreeper(w), "Creeper", 50, 894731, 0);
addMapping(EntityMob.class, "Monster", 49); addMapping(EntitySkeleton.class, (w) -> new EntitySkeleton(w), "Skeleton", 51, 12698049, 4802889);
addMapping(EntityCreeper.class, "Creeper", 50, 894731, 0); addMapping(EntitySpider.class, (w) -> new EntitySpider(w), "Spider", 52, 3419431, 11013646);
addMapping(EntitySkeleton.class, "Skeleton", 51, 12698049, 4802889); addMapping(EntityGiantZombie.class, (w) -> new EntityGiantZombie(w), "Giant", 53);
addMapping(EntitySpider.class, "Spider", 52, 3419431, 11013646); addMapping(EntityZombie.class, (w) -> new EntityZombie(w), "Zombie", 54, 44975, 7969893);
addMapping(EntityGiantZombie.class, "Giant", 53); addMapping(EntitySlime.class, (w) -> new EntitySlime(w), "Slime", 55, 5349438, 8306542);
addMapping(EntityZombie.class, "Zombie", 54, 44975, 7969893); addMapping(EntityGhast.class, (w) -> new EntityGhast(w), "Ghast", 56, 16382457, 12369084);
addMapping(EntitySlime.class, "Slime", 55, 5349438, 8306542); addMapping(EntityPigZombie.class, (w) -> new EntityPigZombie(w), "PigZombie", 57, 15373203, 5009705);
addMapping(EntityGhast.class, "Ghast", 56, 16382457, 12369084); addMapping(EntityEnderman.class, (w) -> new EntityEnderman(w), "Enderman", 58, 1447446, 0);
addMapping(EntityPigZombie.class, "PigZombie", 57, 15373203, 5009705); addMapping(EntityCaveSpider.class, (w) -> new EntityCaveSpider(w), "CaveSpider", 59, 803406, 11013646);
addMapping(EntityEnderman.class, "Enderman", 58, 1447446, 0); addMapping(EntitySilverfish.class, (w) -> new EntitySilverfish(w), "Silverfish", 60, 7237230, 3158064);
addMapping(EntityCaveSpider.class, "CaveSpider", 59, 803406, 11013646); addMapping(EntityBlaze.class, (w) -> new EntityBlaze(w), "Blaze", 61, 16167425, 16775294);
addMapping(EntitySilverfish.class, "Silverfish", 60, 7237230, 3158064); addMapping(EntityMagmaCube.class, (w) -> new EntityMagmaCube(w), "LavaSlime", 62, 3407872, 16579584);
addMapping(EntityBlaze.class, "Blaze", 61, 16167425, 16775294); addMapping(EntityDragon.class, (w) -> new EntityDragon(w), "EnderDragon", 63);
addMapping(EntityMagmaCube.class, "LavaSlime", 62, 3407872, 16579584); addMapping(EntityWither.class, (w) -> new EntityWither(w), "WitherBoss", 64);
addMapping(EntityDragon.class, "EnderDragon", 63); addMapping(EntityBat.class, (w) -> new EntityBat(w), "Bat", 65, 4996656, 986895);
addMapping(EntityWither.class, "WitherBoss", 64); addMapping(EntityWitch.class, (w) -> new EntityWitch(w), "Witch", 66, 3407872, 5349438);
addMapping(EntityBat.class, "Bat", 65, 4996656, 986895); addMapping(EntityPig.class, (w) -> new EntityPig(w), "Pig", 90, 15771042, 14377823);
addMapping(EntityWitch.class, "Witch", 66, 3407872, 5349438); addMapping(EntitySheep.class, (w) -> new EntitySheep(w), "Sheep", 91, 15198183, 16758197);
addMapping(EntityPig.class, "Pig", 90, 15771042, 14377823); addMapping(EntityCow.class, (w) -> new EntityCow(w), "Cow", 92, 4470310, 10592673);
addMapping(EntitySheep.class, "Sheep", 91, 15198183, 16758197); addMapping(EntityChicken.class, (w) -> new EntityChicken(w), "Chicken", 93, 10592673, 16711680);
addMapping(EntityCow.class, "Cow", 92, 4470310, 10592673); addMapping(EntitySquid.class, (w) -> new EntitySquid(w), "Squid", 94, 2243405, 7375001);
addMapping(EntityChicken.class, "Chicken", 93, 10592673, 16711680); addMapping(EntityWolf.class, (w) -> new EntityWolf(w), "Wolf", 95, 14144467, 13545366);
addMapping(EntitySquid.class, "Squid", 94, 2243405, 7375001); addMapping(EntityMooshroom.class, (w) -> new EntityMooshroom(w), "MushroomCow", 96, 10489616, 12040119);
addMapping(EntityWolf.class, "Wolf", 95, 14144467, 13545366); addMapping(EntitySnowman.class, (w) -> new EntitySnowman(w), "SnowMan", 97);
addMapping(EntityMooshroom.class, "MushroomCow", 96, 10489616, 12040119); addMapping(EntityOcelot.class, (w) -> new EntityOcelot(w), "Ozelot", 98, 15720061, 5653556);
addMapping(EntitySnowman.class, "SnowMan", 97); addMapping(EntityIronGolem.class, (w) -> new EntityIronGolem(w), "VillagerGolem", 99);
addMapping(EntityOcelot.class, "Ozelot", 98, 15720061, 5653556); addMapping(EntityHorse.class, (w) -> new EntityHorse(w), "EntityHorse", 100, 12623485, 15656192);
addMapping(EntityIronGolem.class, "VillagerGolem", 99); addMapping(EntityVillager.class, (w) -> new EntityVillager(w), "Villager", 120, 5651507, 12422002);
addMapping(EntityHorse.class, "EntityHorse", 100, 12623485, 15656192); addMapping(EntityEnderCrystal.class, (w) -> new EntityEnderCrystal(w), "EnderCrystal", 200);
addMapping(EntityVillager.class, "Villager", 120, 5651507, 12422002);
addMapping(EntityEnderCrystal.class, "EnderCrystal", 200);
} }
} }