use of net.minecraftforge.fml.common.registry.EntityRegistry.EntityRegistration in project MorePlanets by SteveKunG.
the class ClientProxyMP method handleSpaceFishHookSpawning.
private static void handleSpaceFishHookSpawning() {
EntityRegistration entityRegistration = EntityRegistry.instance().lookupModSpawn(EntitySpaceFishHook.class, false);
Function<EntitySpawnMessage, Entity> handler = input -> {
int entityID = 0;
double posX = 0;
double posY = 0;
double posZ = 0;
WorldClient world = FMLClientHandler.instance().getWorldClient();
try {
entityID = ReflectionHelper.findField(EntitySpawnMessage.class, "throwerId").getInt(input);
posX = ReflectionHelper.findField(EntitySpawnMessage.class, "rawX").getDouble(input);
posY = ReflectionHelper.findField(EntitySpawnMessage.class, "rawY").getDouble(input);
posZ = ReflectionHelper.findField(EntitySpawnMessage.class, "rawZ").getDouble(input);
} catch (Exception e) {
e.printStackTrace();
}
Entity angler = world.getEntityByID(entityID);
if (angler instanceof EntityPlayer) {
Entity entity = new EntitySpaceFishHook(world, (EntityPlayer) angler, posX, posY, posZ);
return entity;
}
return null;
};
entityRegistration.setCustomSpawning(handler, false);
}
use of net.minecraftforge.fml.common.registry.EntityRegistry.EntityRegistration in project Random-Things by lumien231.
the class EntityUtil method getEntityName.
public static String getEntityName(Entity entity) {
String entityName = null;
entityName = EntityList.getEntityString(entity);
if (entityName == null) {
EntityRegistration registration = EntityRegistry.instance().lookupModSpawn(entity.getClass(), false);
if (registration != null) {
entityName = registration.getEntityName();
}
}
return entityName;
}
use of net.minecraftforge.fml.common.registry.EntityRegistry.EntityRegistration in project BiomesOPlenty by Glitchfiend.
the class ModEntities method createEntityByID.
public static Entity createEntityByID(int bopEntityId, World worldIn) {
Entity entity = null;
ModContainer mc = FMLCommonHandler.instance().findContainerFor(BiomesOPlenty.instance);
EntityRegistration er = EntityRegistry.instance().lookupModSpawn(mc, bopEntityId);
if (er != null) {
Class<? extends Entity> clazz = er.getEntityClass();
try {
if (clazz != null) {
entity = clazz.getConstructor(new Class[] { World.class }).newInstance(new Object[] { worldIn });
}
} catch (Exception exception) {
exception.printStackTrace();
}
}
if (entity == null) {
BiomesOPlenty.logger.warn("Skipping BOP Entity with id " + bopEntityId);
}
return entity;
}
use of net.minecraftforge.fml.common.registry.EntityRegistry.EntityRegistration in project MinecraftForge by MinecraftForge.
the class EntitySpawnHandler method spawnEntity.
private void spawnEntity(FMLMessage.EntitySpawnMessage spawnMsg) {
ModContainer mc = Loader.instance().getIndexedModList().get(spawnMsg.modId);
EntityRegistration er = EntityRegistry.instance().lookupModSpawn(mc, spawnMsg.modEntityTypeId);
if (er == null) {
throw new RuntimeException("Could not spawn mod entity ModID: " + spawnMsg.modId + " EntityID: " + spawnMsg.modEntityTypeId + " at ( " + spawnMsg.rawX + "," + spawnMsg.rawY + ", " + spawnMsg.rawZ + ") Please contact mod author or server admin.");
}
WorldClient wc = FMLClientHandler.instance().getWorldClient();
Class<? extends Entity> cls = er.getEntityClass();
try {
Entity entity;
if (er.hasCustomSpawning()) {
entity = er.doCustomSpawning(spawnMsg);
} else {
entity = cls.getConstructor(World.class).newInstance(wc);
int offset = spawnMsg.entityId - entity.getEntityId();
entity.setEntityId(spawnMsg.entityId);
entity.setUniqueId(spawnMsg.entityUUID);
entity.setLocationAndAngles(spawnMsg.rawX, spawnMsg.rawY, spawnMsg.rawZ, spawnMsg.scaledYaw, spawnMsg.scaledPitch);
if (entity instanceof EntityLiving) {
((EntityLiving) entity).rotationYawHead = spawnMsg.scaledHeadYaw;
}
Entity[] parts = entity.getParts();
if (parts != null) {
for (int j = 0; j < parts.length; j++) {
parts[j].setEntityId(parts[j].getEntityId() + offset);
}
}
}
EntityTracker.updateServerPosition(entity, spawnMsg.rawX, spawnMsg.rawY, spawnMsg.rawZ);
EntityPlayerSP clientPlayer = FMLClientHandler.instance().getClientPlayerEntity();
if (entity instanceof IThrowableEntity) {
Entity thrower = clientPlayer.getEntityId() == spawnMsg.throwerId ? clientPlayer : wc.getEntityByID(spawnMsg.throwerId);
((IThrowableEntity) entity).setThrower(thrower);
}
if (spawnMsg.dataWatcherList != null) {
entity.getDataManager().setEntryValues(spawnMsg.dataWatcherList);
}
if (spawnMsg.throwerId > 0) {
entity.setVelocity(spawnMsg.speedScaledX, spawnMsg.speedScaledY, spawnMsg.speedScaledZ);
}
if (entity instanceof IEntityAdditionalSpawnData) {
((IEntityAdditionalSpawnData) entity).readSpawnData(spawnMsg.dataStream);
}
wc.addEntityToWorld(spawnMsg.entityId, entity);
} catch (Exception e) {
FMLLog.log(Level.ERROR, e, "A severe problem occurred during the spawning of an entity at ( " + spawnMsg.rawX + "," + spawnMsg.rawY + ", " + spawnMsg.rawZ + ")");
throw Throwables.propagate(e);
}
}
use of net.minecraftforge.fml.common.registry.EntityRegistry.EntityRegistration in project Random-Things by lumien231.
the class EntityUtil method getEntityName.
public static String getEntityName(Class entityClass) {
String entityName = "NO_NAME";
entityName = EntityRegistry.getEntry(entityClass).getName();
if (entityName == null) {
EntityRegistration registration = EntityRegistry.instance().lookupModSpawn(entityClass, false);
if (registration != null) {
entityName = registration.getEntityName();
}
}
return entityName;
}
Aggregations