Jump to content

[1.8] How to manipulate textures for entities?


Recommended Posts

Posted

I think you should register custom renderer for the entity.

You can process some GL calls in the Render#doRender(...), and call the original renderer's Render#doRender there.

 

And to change color, you can call GL11.glColor(r, g, b, alpha) or GL11.glColor(r, g, b).

I. Stellarium for Minecraft: Configurable Universe for Minecraft! (WIP)

II. Stellar Sky, Better Star Rendering&Sky Utility mod, had separated from Stellarium.

Posted

IEEP:

 

package ga.warixmods.akamegakillmod.events.extendedproperties;

 

import net.minecraft.entity.Entity;

import net.minecraft.entity.EntityLiving;

import net.minecraft.nbt.NBTTagCompound;

import net.minecraft.world.World;

import net.minecraftforge.common.IExtendedEntityProperties;

 

public class EntityExtendedProperties implements IExtendedEntityProperties {

protected EntityLiving theEntity;

protected World theWorld;

protected boolean isFrozen;

public final static String extendedPropertiesName = "AGKM:EPEntity";

 

@Override

public void saveNBTData(NBTTagCompound parCompound) {

NBTTagCompound compound = new NBTTagCompound();

compound.setBoolean("AGKM:isFrozen", false);

 

}

 

public static EntityExtendedProperties get(EntityLiving living)

{

return (EntityExtendedProperties) living.getExtendedProperties(extendedPropertiesName);

}

@Override

public void loadNBTData(NBTTagCompound compound) {

        this.isFrozen = compound.getBoolean("AGKM:isFrozen");

 

 

}

 

@Override

public void init(Entity entity, World world) {

theEntity = (EntityLiving) entity;

theWorld = world;

 

}

public void setFrozen(boolean state)

{

this.isFrozen = state;

}

public boolean getFrozen()

{

return this.isFrozen;

}

}

 

 

Rendering:

 

package ga.warixmods.akamegakillmod.events;

 

import org.lwjgl.opengl.GL11;

 

import ga.warixmods.akamegakillmod.events.extendedproperties.EntityExtendedProperties;

import net.minecraft.client.renderer.GlStateManager;

import net.minecraft.client.renderer.OpenGlHelper;

import net.minecraft.entity.EntityLiving;

import net.minecraft.util.ResourceLocation;

import net.minecraftforge.client.event.RenderLivingEvent;

import net.minecraftforge.common.MinecraftForge;

import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;

 

public class OnRenderEntityLiving {

 

private boolean isFrozen;

 

public OnRenderEntityLiving()

{

MinecraftForge.EVENT_BUS.register(this);

}

@SubscribeEvent

public void RenderLivingEvent(RenderLivingEvent.Pre event)

{

 

EntityExtendedProperties props = EntityExtendedProperties.get((EntityLiving) event.entity);

isFrozen = props.getFrozen();

if(isFrozen)

{

GlStateManager.pushMatrix();

GL11.glColor3f(1.2f, 1.0f, 0.8f);

GlStateManager.popMatrix();

 

}

 

}

}

 

 

Entity constructing:

 

package ga.warixmods.akamegakillmod.events;

 

import ga.warixmods.akamegakillmod.events.extendedproperties.EntityExtendedProperties;

import net.minecraft.entity.EntityLiving;

import net.minecraftforge.common.MinecraftForge;

import net.minecraftforge.event.entity.EntityEvent.EntityConstructing;

import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;

 

public class OnEntityConstructing {

public OnEntityConstructing()

{

MinecraftForge.EVENT_BUS.register(this);

}

 

@SubscribeEvent

public void onEntityConstructing(EntityConstructing event) {

 

if(event.entity instanceof EntityLiving)

{

 

event.entity.registerExtendedProperties("AGKM:EPEntity", new EntityExtendedProperties());

 

 

}

 

}

}

 

 

Setting data:

 

package ga.warixmods.akamegakillmod.events;

import java.util.Random;

 

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozen;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenBat;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenBlaze;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenCaveSpider;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenChicken;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenCreeper;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenDragon;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenEnderMite;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenEnderman;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenGhast;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenGolem;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenGuardian;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenHorse;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenMagmaCube;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenMooshroom;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenOcelot;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenPig;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenPigZombie;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenRabbit;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenSheep;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenSilverfish;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenSkeleton;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenSlime;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenSpider;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenSquid;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenVillager;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenWitch;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenWither;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenWolf;

import ga.warixmods.akamegakillmod.entity.frozen.EntityFrozenZombie;

import ga.warixmods.akamegakillmod.entity.special.EntityRocketLauncher;

import ga.warixmods.akamegakillmod.events.extendedproperties.EntityExtendedProperties;

import ga.warixmods.akamegakillmod.init.AkameItems;

import net.minecraft.entity.Entity;

import net.minecraft.entity.EntityLiving;

import net.minecraft.entity.boss.EntityDragon;

import net.minecraft.entity.boss.EntityWither;

import net.minecraft.entity.monster.EntityBlaze;

import net.minecraft.entity.monster.EntityCaveSpider;

import net.minecraft.entity.monster.EntityCreeper;

import net.minecraft.entity.monster.EntityEnderman;

import net.minecraft.entity.monster.EntityEndermite;

import net.minecraft.entity.monster.EntityGhast;

import net.minecraft.entity.monster.EntityGolem;

import net.minecraft.entity.monster.EntityGuardian;

import net.minecraft.entity.monster.EntityMagmaCube;

import net.minecraft.entity.monster.EntityPigZombie;

import net.minecraft.entity.monster.EntitySilverfish;

import net.minecraft.entity.monster.EntitySkeleton;

import net.minecraft.entity.monster.EntitySlime;

import net.minecraft.entity.monster.EntitySpider;

import net.minecraft.entity.monster.EntityWitch;

import net.minecraft.entity.monster.EntityZombie;

import net.minecraft.entity.passive.EntityBat;

import net.minecraft.entity.passive.EntityChicken;

import net.minecraft.entity.passive.EntityCow;

import net.minecraft.entity.passive.EntityHorse;

import net.minecraft.entity.passive.EntityMooshroom;

import net.minecraft.entity.passive.EntityOcelot;

import net.minecraft.entity.passive.EntityPig;

import net.minecraft.entity.passive.EntityRabbit;

import net.minecraft.entity.passive.EntitySheep;

import net.minecraft.entity.passive.EntitySquid;

import net.minecraft.entity.passive.EntityVillager;

import net.minecraft.entity.passive.EntityWolf;

import net.minecraft.entity.player.EntityPlayer;

import net.minecraft.nbt.NBTTagCompound;

import net.minecraft.potion.PotionEffect;

import net.minecraft.world.World;

import net.minecraftforge.common.MinecraftForge;

import net.minecraftforge.event.entity.player.EntityInteractEvent;

import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;

 

public class FreezeEntity {

 

 

public FreezeEntity()

{

MinecraftForge.EVENT_BUS.register(this);

}

@SubscribeEvent

    public void EntityInteractEvent(EntityInteractEvent event) {

World worldIn = event.entityPlayer.worldObj;

EntityPlayer playerIn = event.entityPlayer;

Entity target = event.target;

Random rand = new Random();

 

if(playerIn.getHeldItem() != null)

{

 

 

 

//freeze wand

if(playerIn.getHeldItem().hasTagCompound() && event.entityPlayer.getHeldItem().getItem() == AkameItems.demons_extract_wand)

{

if( event.entityPlayer.getHeldItem().getTagCompound().hasKey("id") && event.entityPlayer.getHeldItem().getTagCompound().getInteger("id") == 3)

{

EntityFrozenChicken e = new EntityFrozenChicken(worldIn);

 

boolean is = false;

boolean is2 = true;

boolean isFrozen = false;

if(target instanceof EntityLiving)

{

EntityExtendedProperties props = EntityExtendedProperties.get((EntityLiving) target);

props.setFrozen(true);

 

}

 

 

//lands of closed braces

 

 

}

}

}

 

}

 

 

}

 

   

 

 

 

:D
Posted

public class EntityExtendedProperties implements IExtendedEntityProperties
{
protected EntityLivingBase theEntity;
protected boolean isFrozen;
public final static String IEEP_NAME = "AGKMEPEntity";

public static EntityExtendedProperties get(EntityLivingBase entity)
{
	return (EntityExtendedProperties) entity.getExtendedProperties(IEEP_NAME);
}

@Override
public void saveNBTData(NBTTagCompound nbt)
{
	NBTTagCompound data = new NBTTagCompound();
	data.setBoolean("isFrozen", this.isFrozen());
	nbt.setTag(IEEP_NAME, data);
}

@Override
public void loadNBTData(NBTTagCompound nbt)
{   
	NBTTagCompound data = nbt.getCompoundTag(IEEP_NAME);
	this.isFrozen = data.getBoolean("isFrozen");
}

@Override
public void init(Entity entity, World world)
{
	this.theEntity = (EntityLivingBase) entity;
}

public boolean isFrozen()
{
	return this.isFrozen;
}

public void setFrozen(boolean state)
{
	this.isFrozen = state;
}
}

 

* Don't use colons, bro, jsut don't.

* You don't need world field - its alredy inside entity.

* Use EntityLivingBase, not EntityLiving.

* That's how you use NBT.

* Learn Java conventions (static = capitals)

1.7.10 is no longer supported by forge, you are on your own.

Posted

I just changed what you said:

IEEP:

 

package ga.warixmods.akamegakillmod.events.extendedproperties;

 

import net.minecraft.entity.Entity;

import net.minecraft.entity.EntityLivingBase;

import net.minecraft.nbt.NBTTagCompound;

import net.minecraft.world.World;

import net.minecraftforge.common.IExtendedEntityProperties;

 

public class EntityExtendedProperties implements IExtendedEntityProperties {

protected EntityLivingBase theEntity;

protected boolean isFrozen;

public final static String IEEP_NAME = "AGKMEPEntity";

 

public static EntityExtendedProperties get(EntityLivingBase entity)

{

return (EntityExtendedProperties) entity.getExtendedProperties(IEEP_NAME);

}

 

@Override

public void saveNBTData(NBTTagCompound nbt)

{

NBTTagCompound data = new NBTTagCompound();

data.setBoolean("isFrozen", this.isFrozen());

nbt.setTag(IEEP_NAME, data);

}

 

@Override

public void loadNBTData(NBTTagCompound nbt)

NBTTagCompound data = nbt.getCompoundTag(IEEP_NAME);

this.isFrozen = data.getBoolean("isFrozen");

}

 

@Override

public void init(Entity entity, World world)

{

this.theEntity = (EntityLivingBase) entity;

}

 

public boolean isFrozen()

{

return this.isFrozen;

}

 

public void setFrozen(boolean state)

{

this.isFrozen = state;

}

}

 

Rendering:

 

package ga.warixmods.akamegakillmod.events;

 

import org.lwjgl.opengl.GL11;

 

import ga.warixmods.akamegakillmod.events.extendedproperties.EntityExtendedProperties;

import net.minecraft.client.renderer.GlStateManager;

import net.minecraft.entity.EntityLivingBase;

import net.minecraftforge.client.event.RenderLivingEvent;

import net.minecraftforge.common.MinecraftForge;

import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;

 

public class OnRenderEntityLiving {

 

private boolean isFrozen;

 

public OnRenderEntityLiving()

{

MinecraftForge.EVENT_BUS.register(this);

}

@SubscribeEvent

public void RenderLivingEvent(RenderLivingEvent.Pre event)

{

 

EntityExtendedProperties props = EntityExtendedProperties.get((EntityLivingBase) event.entity);

isFrozen = props.isFrozen();

if(isFrozen)

{

GlStateManager.pushMatrix();

GL11.glColor3f(1.2f, 1.0f, 0.8f);

GlStateManager.popMatrix();

 

}

 

}

}

 

 

 

Setting data:

 

package ga.warixmods.akamegakillmod.events;

import ga.warixmods.akamegakillmod.entity.special.EntityRocketLauncher;

import ga.warixmods.akamegakillmod.events.extendedproperties.EntityExtendedProperties;

import ga.warixmods.akamegakillmod.init.AkameItems;

import net.minecraft.entity.Entity;

import net.minecraft.entity.EntityLiving;

import net.minecraft.entity.EntityLivingBase;

import net.minecraft.entity.player.EntityPlayer;

import net.minecraft.potion.PotionEffect;

import net.minecraft.world.World;

import net.minecraftforge.common.MinecraftForge;

import net.minecraftforge.event.entity.player.EntityInteractEvent;

import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;

 

public class FreezeEntity {

 

 

public FreezeEntity()

{

MinecraftForge.EVENT_BUS.register(this);

}

@SubscribeEvent

    public void EntityInteractEvent(EntityInteractEvent event) {

World worldIn = event.entityPlayer.worldObj;

 

EntityPlayer playerIn = event.entityPlayer;

Entity target = event.target;

 

 

if(playerIn.getHeldItem() != null)

{

 

 

 

//freeze wand

if(playerIn.getHeldItem().hasTagCompound() && event.entityPlayer.getHeldItem().getItem() == AkameItems.demons_extract_wand)

{

if( event.entityPlayer.getHeldItem().getTagCompound().hasKey("id") && event.entityPlayer.getHeldItem().getTagCompound().getInteger("id") == 3)

{

 

 

boolean is = false;

boolean is2 = true;

boolean isFrozen = false;

if(target instanceof EntityLivingBase)

{

EntityExtendedProperties props = EntityExtendedProperties.get((EntityLivingBase) target);

props.setFrozen(true);

 

}

 

 

 

 

 

}

}

}

 

}

 

 

}

 

   

 

 

 

 

Registering on entity construction:

 

package ga.warixmods.akamegakillmod.events;

 

import ga.warixmods.akamegakillmod.events.extendedproperties.EntityExtendedProperties;

import net.minecraft.entity.EntityLivingBase;

import net.minecraftforge.common.MinecraftForge;

import net.minecraftforge.event.entity.EntityEvent.EntityConstructing;

import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;

 

public class OnEntityConstructing {

public OnEntityConstructing()

{

MinecraftForge.EVENT_BUS.register(this);

}

 

@SubscribeEvent

public void onEntityConstructing(EntityConstructing event) {

 

if(event.entity instanceof EntityLivingBase)

{

 

event.entity.registerExtendedProperties("AGKMEPEntity", new EntityExtendedProperties());

 

 

}

 

}

}

 

 

 

:D
Posted

How do you determine that it "doesn't save"? I guess because the entities color hasnt changed. In that case 10 bucks that server and client are out of sync and you need to synchronize using packets

Posted

It does save, you need packets to synch cows after they load (loading is server side).

 

Also, I've cleaned up your code:

public class EntityExtendedProperties implements IExtendedEntityProperties
{
protected EntityLivingBase theEntity;
protected boolean isFrozen;
public final static String IEEP_NAME = "AGKMEPEntity";

public EntityExtendedProperties(EntityLivingBase entity)
{
	this.theEntity = entity;
}

public static void register(EntityLivingBase entity)
{
	entity.registerExtendedProperties(IEEP_NAME, new EntityExtendedProperties(entity));
}

public static EntityExtendedProperties get(EntityLivingBase entity)
{
	return (EntityExtendedProperties) entity.getExtendedProperties(IEEP_NAME);
}

@Override
public void saveNBTData(NBTTagCompound nbt)
{
	NBTTagCompound data = new NBTTagCompound();
	data.setBoolean("isFrozen", this.isFrozen());
	nbt.setTag(IEEP_NAME, data);
	System.out.println(nbt);
}

@Override
public void loadNBTData(NBTTagCompound nbt)
{
	NBTTagCompound data = nbt.getCompoundTag(IEEP_NAME);
	this.isFrozen = data.getBoolean("isFrozen");
	System.out.println(nbt);
}

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

public boolean isFrozen()
{
	return this.isFrozen;
}

public void setFrozen(boolean state)
{
	this.isFrozen = state;
}
}

public class ForgeEvents
{
@SubscribeEvent
public void onEntityConstructing(EntityConstructing event)
{
	if (event.entity instanceof EntityLivingBase)
	{
		EntityExtendedProperties.register((EntityLivingBase) event.entity);
	}
}

@SubscribeEvent
public void EntityInteractEvent(EntityInteractEvent event)
{
	if (event.entityPlayer.getHeldItem() != null)
	{
		if (event.entityPlayer.getHeldItem().getItem() == Items.apple)
		{
			if (event.target instanceof EntityLivingBase)
			{
				EntityExtendedProperties.get((EntityLivingBase) event.target).setFrozen(true);
			}
		}
	}
}
}

public class ForgeEventsClient
{
@SubscribeEvent
public void RenderLivingEvent(RenderLivingEvent.Pre event)
{
	if (EntityExtendedProperties.get(event.entity).isFrozen())
	{
		GlStateManager.pushMatrix();
		GL11.glColor3f(0.5f, 2.0f, 10.0f);
		GlStateManager.popMatrix();
	}
}
}

 

* Have 2 classes for Forge events - common and client. Same goes if you ever use FML events.

* Don't register event class in its own constructor - it is not safe (bad practice to pass "this" from constructor).

* Register ForgeEventsClient in ClientProxy, logically ForgeEvents go to CommonProxy.

* Packets tutorials:

Long: http://www.minecraftforum.net/forums/mapping-and-modding/mapping-and-modding-tutorials/2137055-1-7-2-customizing-packet-handling-with

Cut and dried: http://www.minecraftforge.net/forum/index.php/topic,20135.0.html

 

You will be sending packet from PlayerEvent.StartTracking - occuring whenever player loads some entity on client. Event fires ONLY on server and should handle sending packets to players.

1.7.10 is no longer supported by forge, you are on your own.

Posted

I'm still new to modding, so i don't really understand how world and client side work.How do i know which code run on which side ? Also from what i understood i have to send nbt data of entity that player start tracking to its client? I tried that and i don't know how to access that entity on client side.

my packet code:

 

package ga.warixmods.akamegakillmod;

 

import io.netty.buffer.ByteBuf;

import net.minecraft.client.Minecraft;

import net.minecraft.nbt.NBTTagCompound;

import net.minecraft.util.IThreadListener;

import net.minecraft.world.WorldServer;

import net.minecraftforge.fml.common.network.ByteBufUtils;

import net.minecraftforge.fml.common.network.simpleimpl.IMessage;

import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;

import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;

 

public class SendPacket implements IMessage {

 

private String text;

private int num,recieved,id = 0;

private NBTTagCompound nbt;

public SendPacket() {}

 

public SendPacket(String text)

{

this.text = text;

this.recieved = 0;

}

 

public SendPacket(int num)

{

this.num = num;

this.recieved = 1;

}

 

public SendPacket(NBTTagCompound nbt,int id) {

this.nbt = nbt;

this.id = id;

 

 

}

 

@Override

public void fromBytes(ByteBuf buf) {

switch(this.recieved)

{

    case 0:

   

this.text = ByteBufUtils.readUTF8String(buf);

break;

    case 1:

   

this.num = ByteBufUtils.readVarInt(buf, Integer.MAX_VALUE);

    break;

    case 2:

    this.nbt = ByteBufUtils.readTag(buf);

    this.id = ByteBufUtils.readVarInt(buf, Integer.MAX_VALUE);

}

}

 

@Override

public void toBytes(ByteBuf buf) {

switch(this.recieved)

{

    case 0:

   

ByteBufUtils.writeUTF8String(buf, this.text);

break;

    case 1:

   

ByteBufUtils.writeVarInt(buf,this.num, Integer.MAX_VALUE);

    break;

    case 2:

    ByteBufUtils.writeTag(buf, this.nbt);

    ByteBufUtils.writeVarInt(buf, this.id, Integer.MAX_VALUE);

}

}

public static class Handler implements IMessageHandler<SendPacket, IMessage>{

 

@Override

public IMessage onMessage(final SendPacket message, final MessageContext ctx)

{

IThreadListener mainThread = (WorldServer) ctx.getServerHandler().playerEntity.worldObj;

IThreadListener mainThreadClient = Minecraft.getMinecraft();

if(ctx.side.isServer())

{

        mainThread.addScheduledTask(new Runnable()

        {

      @Override

      public void run()

        {

        //this is from other parts of mod

        switch(message.recieved)

        {

       

        case 0:

        String text = message.text;

        int num = message.num;

       

        String idS = text.substring(3, 4);

        int idI = Integer.parseInt(idS);

       

        text = text.substring(4);

        switch(idI)

        {

        case 0:

       

        ctx.getServerHandler().playerEntity.getHeldItem().getTagCompound().setInteger("id",Integer.parseInt(text));

        break;

        case 1:

       

        ctx.getServerHandler().playerEntity.getHeldItem().getTagCompound().setInteger("id", Integer.parseInt(text));

        break;

        case 2:

       

        ctx.getServerHandler().playerEntity.getHeldItem().getTagCompound().setInteger("idU",Integer.parseInt(text));

        break;

        case 3:

       

        ctx.getServerHandler().playerEntity.getHeldItem().getTagCompound().setInteger("id"+Integer.parseInt(text),0);

        break;

       

        }

        break;

        case 1:

        break;

        }

        }});

}

//and i guess i have to sync it here?

                        else

{

mainThreadClient.addScheduledTask(new Runnable()

        {

      @Override

      public void run()

        {

    EntityLivingBase target =

       

                }

        });}

return null;

}

 

 

 

 

}

}

 

 

:D
Posted

Minecraft cosists of 2 "code" sides and 4 "logical" sides (read: threads).

 

1. Looking as MC from logical side:

There are 4 threads:

Server

Client

Server-Netty

Client-Netty

 

1.1. When running Client.jar:

* SP: You have all 4 threads (4) (server is being ran in background)

* MP: You only have client threads (2), server threads are ran by server you connected to (meaning you don't have any access to it, only communication are packets)

Note that you also use packets when on SP - they are being sent "interanlly".

 

1.2. When running Dedicated.jar:

* Dedicated server has always ONLY 2 threads - server ones. Clients connect to it and server threads operate on data (save/load) while clients only display them.

 

2. Looking at MC from source view:

There is common code - used by both server and client threads, no matter if Client.jar or Dedicated.jar.

There is code reserved for client and for server.

Whenever you see/use:

@SideOnly(Side.SERVER)
@SideOnly(Side.CLIENT)

It means that given class/method/filed is present ONLY when run on either Client.jar or Dedicated.jar.

E.g: Minecraft.class is @SideOnly(Side.CLIENT), that means that class is NOT present (not loaded to VM) when you are running Dedicated.jar.

 

That is why you use proxies when you need some client/server specific getters/setters.

 

3. What thread use what code?

General rule is:

Netty threads should NEVER access game threads:

http://greyminecraftcoder.blogspot.com.au/2015/01/thread-safety-with-network-messages.html

 

Now to actual question:

Most of common code will be used by both threads (server/client). Whenever something gets calles you can perform "logical-check" with:

world.isRemote

true = this code is being ran by client thread

false = this code is being ran by server

 

Same code can and will often be used by both threads, that's why you can see those checks everywhere.

 

Rule is:

Manipulating data happens on server (!world.isRemote).

 

4. Synchronization:

Let's talk about events - most of Forge ones are being called on both logical sides.

Since you are here about IEEP interface:

EntityConstructing event is called on both sides.

Both client and server logical thread will assign new IEEP to given entity whenever it's being constructed.

Since most calculations should/will happen on server, only server updates given entity's IEEP values. Client needs to be notified.

That's where packets kick in. You send them, on client you handle them - generate new Runnable and put it into maing client thread.

 

Example of working with IEEP sync:

// in IEEP
public void setExp(long exp, boolean notify)
{
if (exp < 0) exp = 0;
this.exp = exp;
if (notify) // notify will be true only on server side (it's my method).
{
	Dispatcher.sendPacketTo(new PacketSendExp(this.player, this.getExp()), this.player);
}
}

public class PacketSendExp implements IMessage
{
private int playerId;
private long exp;

public PacketSendExp()
{}

public PacketSendExp(EntityPlayer player, long exp)
{
	this.playerId = player.getEntityId();
	this.exp = exp;
}

@Override
public void toBytes(ByteBuf buffer)
{
	buffer.writeInt(this.playerId);
	buffer.writeLong(this.exp);
}

@Override
public void fromBytes(ByteBuf buffer)
{
	this.playerId = buffer.readInt();
	this.exp = buffer.readLong();
}

public static class HandlerExp extends AbstractClientMessageHandler<PacketSendExp>
{
	@Override
	public void run(EntityPlayerSP player, PacketSendExp message)
	{
		Entity e = player.worldObj.getEntityByID(message.playerId);
		if (e instanceof EntityPlayer)
		{
			IEEP.get((EntityPlayer) e).setExp(message.exp, false);
		}
	}
}
}

 

Above will update (by sending packet) owner of given IEEP whenever server changes exp value.

 

Note to code above:

I have quite background abstraction there. the run() method is actually wrapped Runnable.

 

5. Just call me: Skype: ernio333

If you want more useful info (really useful).

1.7.10 is no longer supported by forge, you are on your own.

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I am wanting to rename the file of my mod for ease of recognition as when modding I have a base mod that I use with everything needed for set-up complete, ready for me to make a mod. However, when I do I need to reload the Gradle build script. There is usually a pop-up in my IDE (IntelliJ) that allows me to load it, though it is not present after changing the file name. How would I load the Gradle build script and am I doing anything wrong with how I mod?  Advice would be much appreciated.
    • Instead of being stuck at 0%, it's stuck at 100% now latest.log:    https://mclo.gs/dEUvFPi
    • ---- Minecraft Crash Report ---- // Hi. I'm Minecraft, and I'm a crashaholic. Time: 4/26/25 9:30 AM Description: Exception in server tick loop java.lang.NullPointerException: Exception in server tick loop     at blusunrize.immersiveengineering.client.ClientProxy.onWorldLoad(ClientProxy.java:444) ~[?:?] {re:classloading}     at blusunrize.immersiveengineering.common.EventHandler.onLoad(EventHandler.java:97) ~[?:?] {re:classloading}     at net.minecraftforge.eventbus.ASMEventHandler_2156_EventHandler_onLoad_Load.invoke(.dynamic) ~[?:?] {}     at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:85) ~[eventbus-4.0.0.jar:?] {}     at net.minecraftforge.eventbus.EventBus$$Lambda$3168/479199899.invoke(Unknown Source) ~[?:?] {}     at net.minecraftforge.eventbus.EventBus.post(EventBus.java:302) ~[eventbus-4.0.0.jar:?] {}     at net.minecraftforge.eventbus.EventBus.post(EventBus.java:283) ~[eventbus-4.0.0.jar:?] {}     at net.minecraft.server.MinecraftServer.func_240787_a_(MinecraftServer.java:379) ~[?:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A}     at net.minecraft.server.MinecraftServer.func_240800_l__(MinecraftServer.java:308) ~[?:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A}     at net.minecraft.server.integrated.IntegratedServer.func_71197_b(IntegratedServer.java:60) ~[?:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.server.MinecraftServer.func_240802_v_(MinecraftServer.java:621) [?:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A}     at net.minecraft.server.MinecraftServer.func_240783_a_(MinecraftServer.java:232) [?:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A}     at net.minecraft.server.MinecraftServer$$Lambda$27766/1436218993.run(Unknown Source) [?:?] {}     at java.lang.Thread.run(Thread.java:745) [?:1.8.0_51] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- System Details -- Details:     Minecraft Version: 1.16.5     Minecraft Version ID: 1.16.5     Operating System: Windows 10 (amd64) version 10.0     Java Version: 1.8.0_51, Oracle Corporation     Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation     Memory: 2995013560 bytes (2856 MB) / 6237454336 bytes (5948 MB) up to 14913372160 bytes (14222 MB)     CPUs: 12     JVM Flags: 4 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx16000m -Xms256m     ModLauncher: 8.1.3+8.1.3+main-8.1.x.c94d18ec     ModLauncher launch target: fmlclient     ModLauncher naming: srg     ModLauncher services:          /mixin-0.8.4.jar mixin PLUGINSERVICE          /eventbus-4.0.0.jar eventbus PLUGINSERVICE          /forge-1.16.5-36.2.35.jar object_holder_definalize PLUGINSERVICE          /forge-1.16.5-36.2.35.jar runtime_enum_extender PLUGINSERVICE          /accesstransformers-3.0.1.jar accesstransformer PLUGINSERVICE          /forge-1.16.5-36.2.35.jar capability_inject_definalize PLUGINSERVICE          /forge-1.16.5-36.2.35.jar runtimedistcleaner PLUGINSERVICE          /mixin-0.8.4.jar mixin TRANSFORMATIONSERVICE          /forge-1.16.5-36.2.35.jar fml TRANSFORMATIONSERVICE      FML: 36.2     Forge: net.minecraftforge:36.2.35     FML Language Providers:          [email protected]         minecraft@1     Mod List:          BetterDungeons-1.16.4-1.2.1.jar                   |YUNG's Better Dungeons        |betterdungeons                |1.16.4-1.2.1        |DONE      |Manifest: NOSIGNATURE         supermartijn642configlib-1.1.8-forge-mc1.16.jar   |SuperMartijn642's Config Libra|supermartijn642configlib      |1.1.8               |DONE      |Manifest: NOSIGNATURE         player-animation-lib-forge-0.4.0+1.16.5.jar       |Player Animator               |playeranimator                |0.4.0+1.16.5        |DONE      |Manifest: NOSIGNATURE         nether-s-exoticism-1.16.5-1.1.10.jar              |Nether's Exoticism            |nethers_exoticism             |1.1.10              |DONE      |Manifest: NOSIGNATURE         TinkersLevellingAddon-1.16.5-1.1.1.jar            |Tinkers' Levelling Addon      |tinkerslevellingaddon         |1.1.1               |DONE      |Manifest: NOSIGNATURE         constructsarmory-forge-2.0.0-alpha.2+1.16.5.jar   |Construct's Armory            |constructsarmory              |2.0.0-alpha.2+1.16.5|DONE      |Manifest: NOSIGNATURE         immersive_aircraft-0.5.2+1.16.5-forge.jar         |Immersive Aircraft            |immersive_aircraft            |0.5.2+1.16.5        |DONE      |Manifest: NOSIGNATURE         EnhancedVisuals_v1.3.32_mc1.16.5.jar              |EnhancedVisuals               |enhancedvisuals               |1.3.0               |DONE      |Manifest: NOSIGNATURE         CookingForBlockheads_1.16.5-9.3.4.jar             |Cooking for Blockheads        |cookingforblockheads          |9.3.4               |DONE      |Manifest: NOSIGNATURE         Controlling-7.0.0.31.jar                          |Controlling                   |controlling                   |7.0.0.31            |DONE      |Manifest: NOSIGNATURE         citadel-1.8.1-1.16.5.jar                          |Citadel                       |citadel                       |1.8.1               |DONE      |Manifest: NOSIGNATURE         alexsmobs-1.12.1.jar                              |Alex's Mobs                   |alexsmobs                     |1.12.1              |DONE      |Manifest: NOSIGNATURE         zombieawareness-1.16.5-1.12.jar                   |Zombie Awareness              |zombieawareness               |1.16.5-1.12         |DONE      |Manifest: NOSIGNATURE         YungsApi-1.16.4-Forge-13.jar                      |YUNG's API                    |yungsapi                      |1.16.4-Forge-13     |DONE      |Manifest: NOSIGNATURE         Bookshelf-Forge-1.16.5-10.4.33.jar                |Bookshelf                     |bookshelf                     |10.4.33             |DONE      |Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5         sophisticatedbackpacks-1.16.5-3.15.20.755.jar     |Sophisticated Backpacks       |sophisticatedbackpacks        |1.16.5-3.15.20.755  |DONE      |Manifest: NOSIGNATURE         ElectricalCraft 2024.9.1 Indev 1.16.5.jar         |ElectricalCraft               |electricalcraft               |2024.9.1            |DONE      |Manifest: NOSIGNATURE         simpleplanes-1.16.5-4.6.0.jar                     |Simple Planes                 |simpleplanes                  |1.16.5-4.6.0        |DONE      |Manifest: NOSIGNATURE         sculkhorde-1.16.5-0.5.4.jar                       |Sculk Horde                   |sculkhorde                    |1.16.5-0.5.4        |DONE      |Manifest: NOSIGNATURE         immersive-armors-1.5.1+1.16.5-forge.jar           |Immersive Armors              |immersive_armors              |1.5.1+1.16.5        |DONE      |Manifest: NOSIGNATURE         gunswithoutroses-1.16.5-1.0.9.jar                 |Guns Without Roses            |gunswithoutroses              |1.0.9               |DONE      |Manifest: NOSIGNATURE         FarmersDelight-1.16.5-0.6.0.jar                   |Farmer's Delight              |farmersdelight                |1.16.5-0.6.0        |DONE      |Manifest: NOSIGNATURE         M3-mob1.16.5.jar                                  |Mob Health Display            |pickleakinh3                  |1.0.0               |DONE      |Manifest: NOSIGNATURE         [1.16] Regeneration-36.0.6.jar                    |Regeneration                  |regen                         |36.0.5              |DONE      |Manifest: NOSIGNATURE         lrarmor-0.1.jar                                   |LesRaisinsArmor               |lrarmor                       |0.1                 |DONE      |Manifest: NOSIGNATURE         supermartijn642corelib-1.1.18-forge-mc1.16.jar    |SuperMartijn642's Core Lib    |supermartijn642corelib        |1.1.18              |DONE      |Manifest: NOSIGNATURE         einsteins_library-2.0-1.16.5.jar                  |Einstein's Library            |einsteins_library             |2.0                 |DONE      |Manifest: NOSIGNATURE         curios-forge-1.16.5-4.1.0.0.jar                   |Curios API                    |curios                        |1.16.5-4.1.0.0      |DONE      |Manifest: NOSIGNATURE         Patchouli-1.16.4-53.3.jar                         |Patchouli                     |patchouli                     |1.16.4-53.3         |DONE      |Manifest: NOSIGNATURE         immersive_geology-1.12.1-1.16.5.jar               |Immersive Geology             |immersive_geology             |1.16.5-1.12.1       |DONE      |Manifest: NOSIGNATURE         EasyPaxelLITE(Forge1.16.4)vrs1.0.6.jar            |Easy Paxel Lite               |easypaxellite                 |1.16.4-1.0.6        |DONE      |Manifest: NOSIGNATURE         workers-1.16.5-1.3.2.jar                          |Workers Mod                   |workers                       |1.3.2               |DONE      |Manifest: NOSIGNATURE         Searchables-forge-1.16.5-1.0.7.jar                |Searchables                   |searchables                   |1.0.7               |DONE      |Manifest: NOSIGNATURE         Nuclear_Science-1.16.5-0.4.1-0.jar                |Nuclear Science               |nuclearscience                |1.16.5-0.4.1-0      |DONE      |Manifest: NOSIGNATURE         lostcities-1.16-4.0.12-beta.jar                   |LostCities                    |lostcities                    |1.16-4.0.12-beta    |DONE      |Manifest: NOSIGNATURE         obfuscate-0.6.3-1.16.5.jar                        |Obfuscate                     |obfuscate                     |0.6.3               |DONE      |Manifest: NOSIGNATURE         BetterStrongholds-1.16.4-1.2.1.jar                |YUNG's Better Strongholds     |betterstrongholds             |1.16.4-1.2.1        |DONE      |Manifest: NOSIGNATURE         TheAbyss2 2.2.3-4 1.16.5.jar                      |TheAbyss                      |theabyss                      |2.2.3-4             |DONE      |Manifest: NOSIGNATURE         ScalingMobs-r2.1.1.jar                            |ScalingMobs                   |scalingmobs                   |r2.1                |DONE      |Manifest: NOSIGNATURE         eatinganimation-1.16.5-1.0.0.jar                  |Eating Animation              |eatinganimation               |1.0.0               |DONE      |Manifest: NOSIGNATURE         cfm-7.0.0pre22-1.16.3.jar                         |MrCrayfish's Furniture Mod    |cfm                           |7.0.0-pre22         |DONE      |Manifest: NOSIGNATURE         morecfm-1.3.1-1.16.3.jar                          |MrCrayfish's More Furniture Mo|morecfm                       |1.3.1               |DONE      |Manifest: NOSIGNATURE         ImmersiveRailroading-1.16.5-forge-1.10.0.jar      |Immersive Railroading         |immersiverailroading          |1.16.5-forge-1.10.0 |DONE      |Manifest: NOSIGNATURE         TrackAPI-1.16.4-forge-1.2.1.jar                   |TrackAPI                      |trackapi                      |1.2                 |DONE      |Manifest: NOSIGNATURE         curiouselytra-forge-1.16.5-4.0.2.5.jar            |Curious Elytra                |curiouselytra                 |1.16.5-4.0.2.5      |DONE      |Manifest: NOSIGNATURE         cloth-config-4.17.132-forge.jar                   |Cloth Config v4 API           |cloth-config                  |4.17.132            |DONE      |Manifest: NOSIGNATURE         Voidscape-1.16-0.1.20.jar                         |Voidscape                     |voidscape                     |1.16-0.1.20         |DONE      |Manifest: NOSIGNATURE         trashcans-1.0.18-forge-mc1.16.jar                 |Trash Cans                    |trashcans                     |1.0.18              |DONE      |Manifest: NOSIGNATURE         smallships-1.16.5-1.10.1.jar                      |Small Ships Mod               |smallships                    |1.10.1              |DONE      |Manifest: NOSIGNATURE         PlayerTrade-1.16.5-1.1.jar                        |Player Trade Mod              |playertrade                   |1.1                 |DONE      |Manifest: NOSIGNATURE         BetterMineshafts-Forge-1.16.4-2.0.4.jar           |YUNG's Better Mineshafts      |bettermineshafts              |1.16.4-2.0.4        |DONE      |Manifest: NOSIGNATURE         geckolib-forge-1.16.5-3.0.106.jar                 |GeckoLib                      |geckolib3                     |3.0.106             |DONE      |Manifest: NOSIGNATURE         recruits-1.16.5-1.5.1.jar                         |Recriuts Mod                  |recruits                      |1.5.1               |DONE      |Manifest: NOSIGNATURE         BetterAdvancements-1.16.5-0.1.1.115.jar           |Better Advancements           |betteradvancements            |0.1.1.115           |DONE      |Manifest: NOSIGNATURE         Cucumber-1.16.5-4.1.12.jar                        |Cucumber Library              |cucumber                      |4.1.12              |DONE      |Manifest: NOSIGNATURE         ae2wtlib-0.3.3-1.16.5.jar                         |AE2 Wireless Terminals        |ae2wtlib                      |0.3.3-1.16.5        |DONE      |Manifest: NOSIGNATURE         TrashSlot_1.16.3-12.2.1.jar                       |TrashSlot                     |trashslot                     |12.2.1              |DONE      |Manifest: NOSIGNATURE         jei-1.16.5-7.8.0.1009.jar                         |Just Enough Items             |jei                           |7.8.0.1009          |DONE      |Manifest: NOSIGNATURE         abnormals_core-1.16.5-3.3.1.jar                   |Abnormals Core                |abnormals_core                |3.3.1               |DONE      |Manifest: NOSIGNATURE         libraryferret-forge-1.16.5-4.0.0.jar              |Library ferret                |libraryferret                 |4.0.0               |DONE      |Manifest: NOSIGNATURE         Mekanism-1.16.5-10.1.2.457.jar                    |Mekanism                      |mekanism                      |10.1.2              |DONE      |Manifest: NOSIGNATURE         caelus-forge-1.16.5-2.1.3.2.jar                   |Caelus API                    |caelus                        |1.16.5-2.1.3.2      |DONE      |Manifest: NOSIGNATURE         tac-release-0.3.14.2-1.16.5.jar                   |Timeless and Classics Guns    |tac                           |0.3.14.2            |DONE      |Manifest: NOSIGNATURE         Space-BossTools-1.16.5-5.5e.jar                   |Space-BossTools               |boss_tools                    |5.5e                |DONE      |Manifest: NOSIGNATURE         Clumps-6.0.0.28.jar                               |Clumps                        |clumps                        |6.0.0.28            |DONE      |Manifest: NOSIGNATURE         journeymap-1.16.5-5.8.6.jar                       |Journeymap                    |journeymap                    |5.8.6               |DONE      |Manifest: NOSIGNATURE         NuclearCraft-1.16.5-1.0.0.beta.1.jar              |Nuclearcraft Neoteric         |nuclearcraft                  |1.0.0.beta.1        |DONE      |Manifest: NOSIGNATURE         comforts-forge-1.16.5-4.0.1.5.jar                 |Comforts                      |comforts                      |1.16.5-4.0.1.5      |DONE      |Manifest: NOSIGNATURE         appliedenergistics2-8.4.7.jar                     |Applied Energistics 2         |appliedenergistics2           |8.4.7               |DONE      |Manifest: 95:58:cc:83:9d:a8:fa:4f:e9:f3:54:90:66:61:c8:ae:9c:08:88:11:52:52:df:2d:28:5f:05:d8:28:57:0f:98         NaturesCompass-1.16.5-1.9.1-forge.jar             |Nature's Compass              |naturescompass                |1.16.5-1.9.1-forge  |DONE      |Manifest: NOSIGNATURE         LAV-1.16.5-V1.jar                                 |Immersive Vehicle - LAV       |lav                           |1                   |DONE      |Manifest: NOSIGNATURE         Hardcore Gamerule V1.0.jar                        |Hardcore Gamerule             |hardcore_gamerule             |1.0.0               |DONE      |Manifest: NOSIGNATURE         OuterEnd-0.2.14.jar                               |The Outer End                 |outer_end                     |0.2.9               |DONE      |Manifest: NOSIGNATURE         DungeonCrawl-1.16.5-2.3.12.jar                    |Dungeon Crawl                 |dungeoncrawl                  |2.3.12              |DONE      |Manifest: NOSIGNATURE         TinyMobFarm-1.16.5-1.1.2.jar                      |Tiny Mob Farm                 |tinymobfarm                   |1.1.1               |DONE      |Manifest: NOSIGNATURE         ExplorersCompass-1.16.5-1.1.2-forge.jar           |Explorer's Compass            |explorerscompass              |1.16.5-1.1.2-forge  |DONE      |Manifest: NOSIGNATURE         Electrodynamics-1.16.5-0.5.1-1.jar                |Electrodynamics               |electrodynamics               |1.16.5-0.5.1-1      |DONE      |Manifest: NOSIGNATURE         new-lodestone-recipe-1.0.jar                      |New Lodestone Recipe          |mr_new_lodestonerecipe        |1.0                 |DONE      |Manifest: NOSIGNATURE         immersive-portals-0.17-mc1.16.5-forge.jar         |Immersive Portals             |immersive_portals             |0.14                |DONE      |Manifest: NOSIGNATURE         ars_nouveau-1.16.5-1.25.10.jar                    |Ars Nouveau                   |ars_nouveau                   |1.25.10             |DONE      |Manifest: NOSIGNATURE         Armored Mobs 1.2.0 - 1.16.5.jar                   |Armored Mobs                  |armored_mobs                  |1.2.0               |DONE      |Manifest: NOSIGNATURE         usefulslime-1.2-1.16.5.jar                        |Useful Slime                  |usefulslime                   |1.2                 |DONE      |Manifest: NOSIGNATURE         enhanced_boss_bars-1.16.5-1.0.0.jar               |Enhanced Boss Bars            |enhanced_boss_bars            |1.16.5-1.0.0        |DONE      |Manifest: NOSIGNATURE         ImmersivePetroleum-1.16.5-3.4.0-20.jar            |Immersive Petroleum           |immersivepetroleum            |3.4.0-20            |DONE      |Manifest: NOSIGNATURE         Tardis-Mod-1.16.5-1.5.4.jar                       |Tardis Mod                    |tardis                        |1.5.4               |DONE      |Manifest: NOSIGNATURE         forge-1.16.5-36.2.35-universal.jar                |Forge                         |forge                         |36.2.35             |DONE      |Manifest: 22:af:21:d8:19:82:7f:93:94:fe:2b:ac:b7:e4:41:57:68:39:87:b1:a7:5c:c6:44:f9:25:74:21:14:f5:0d:90         jeimultiblocks-1.16.5-0.0.1.jar                   |Just Enough Immersive Multiblo|jeimultiblocks                |0.0.1               |DONE      |Manifest: NOSIGNATURE         New_Cars+44(1.16.5).jar                           |Immersive Vehicles (MTS/IV) - |newcars                       |24                  |DONE      |Manifest: NOSIGNATURE         MysticalAgriculture-1.16.5-4.2.6.jar              |Mystical Agriculture          |mysticalagriculture           |4.2.6               |DONE      |Manifest: NOSIGNATURE         UniversalModCore-1.16.5-forge-1.2.1.jar           |Universal Mod Core            |universalmodcore              |1.2.1               |DONE      |Manifest: NOSIGNATURE         awesomedungeonocean-forge-1.16.5-3.3.0.jar        |Awesome dungeon edition ocean |awesomedungeonocean           |3.2.0               |DONE      |Manifest: NOSIGNATURE         forge-1.16.5-36.2.35-client.jar                   |Minecraft                     |minecraft                     |1.16.5              |DONE      |Manifest: NOSIGNATURE         cofh_core-1.16.5-1.5.2.22.jar                     |CoFH Core                     |cofh_core                     |1.5.2.22            |DONE      |Manifest: 75:0b:cc:9b:64:2e:9b:c4:41:d1:95:00:71:ee:87:1a:b3:5e:4b:da:8e:e8:39:00:fd:5d:e5:9c:40:42:33:09         thermal_foundation-1.16.5-1.5.2.30.jar            |Thermal Series                |thermal                       |1.5.2.30            |DONE      |Manifest: 75:0b:cc:9b:64:2e:9b:c4:41:d1:95:00:71:ee:87:1a:b3:5e:4b:da:8e:e8:39:00:fd:5d:e5:9c:40:42:33:09         thermal_innovation-1.16.5-1.5.0.4.jar             |Thermal Innovation            |thermal_innovation            |1.5.0.4             |DONE      |Manifest: 75:0b:cc:9b:64:2e:9b:c4:41:d1:95:00:71:ee:87:1a:b3:5e:4b:da:8e:e8:39:00:fd:5d:e5:9c:40:42:33:09         thermal_expansion-1.16.5-1.5.2.16.jar             |Thermal Expansion             |thermal_expansion             |1.5.2.16            |DONE      |Manifest: 75:0b:cc:9b:64:2e:9b:c4:41:d1:95:00:71:ee:87:1a:b3:5e:4b:da:8e:e8:39:00:fd:5d:e5:9c:40:42:33:09         thermal_locomotion-1.16.5-1.5.0.4.jar             |Thermal Locomotion            |thermal_locomotion            |1.5.0.4             |DONE      |Manifest: 75:0b:cc:9b:64:2e:9b:c4:41:d1:95:00:71:ee:87:1a:b3:5e:4b:da:8e:e8:39:00:fd:5d:e5:9c:40:42:33:09         DistantHorizons-fabric-forge-2.3.2-b-1.16.5.jar   |Distant Horizons              |distanthorizons               |2.3.2-b             |DONE      |Manifest: NOSIGNATURE         TConstruct-1.16.5-3.3.4.335.jar                   |Tinkers' Construct            |tconstruct                    |3.3.4.335           |DONE      |Manifest: NOSIGNATURE         voicechat-forge-1.16.5-2.5.30.jar                 |Simple Voice Chat             |voicechat                     |1.16.5-2.5.30       |DONE      |Manifest: NOSIGNATURE         EnchantmentDescriptions-1.16.5-7.1.27.jar         |EnchantmentDescriptions       |enchdesc                      |7.1.27              |DONE      |Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5         psg 1.3.1-1.16.5.jar                              |Potassium & sulfur's gunpowdwe|psg                           |1.2.9               |DONE      |Manifest: NOSIGNATURE         MouseTweaks-2.14-mc1.16.2.jar                     |Mouse Tweaks                  |mousetweaks                   |2.14                |DONE      |Manifest: NOSIGNATURE         ImmersiveEngineering-1.16.5-5.1.0-148.jar         |Immersive Engineering         |immersiveengineering          |1.16.5-5.1.0-148    |DONE      |Manifest: NOSIGNATURE         ImmersiveIndustry-1.16.5-0.1.8f.jar               |Immersive Industry            |immersiveindustry             |1.16.5-0.1.8f       |DONE      |Manifest: NOSIGNATURE         CreativeCore_v2.2.1_mc1.16.5.jar                  |CreativeCore                  |creativecore                  |2.0.0               |DONE      |Manifest: NOSIGNATURE         GeneticAnimals-0_6_40.jar                         |Genetic Animals               |eanimod                       |0_6_40              |DONE      |Manifest: NOSIGNATURE         easy_villagers-1.16.5-1.0.13.jar                  |Easy Villagers                |easy_villagers                |1.16.5-1.0.13       |DONE      |Manifest: NOSIGNATURE         Knight Quest BP-1.0.jar                           |Knight Quest BP               |knightquestbp                 |1.0.0               |DONE      |Manifest: NOSIGNATURE         notenoughanimations-forge-1.9.3-mc1.16.5.jar      |NotEnoughAnimations           |notenoughanimations           |1.9.3               |DONE      |Manifest: NOSIGNATURE         mobspiderclimb-1.16.5-1.1.jar                     |Mob Spider Climb              |mobspiderclimb                |1.16.5-1.1          |DONE      |Manifest: NOSIGNATURE         flywheel-1.16-0.2.5.jar                           |Flywheel                      |flywheel                      |1.16-0.2.5          |DONE      |Manifest: NOSIGNATURE         create-mc1.16.5_v0.3.2g.jar                       |Create                        |create                        |v0.3.2g             |DONE      |Manifest: NOSIGNATURE         Mantle-1.16.5-1.6.157.jar                         |Mantle                        |mantle                        |1.6.157             |DONE      |Manifest: NOSIGNATURE         thermal_cultivation-1.16.5-1.5.0.4.jar            |Thermal Cultivation           |thermal_cultivation           |1.5.0.4             |DONE      |Manifest: 75:0b:cc:9b:64:2e:9b:c4:41:d1:95:00:71:ee:87:1a:b3:5e:4b:da:8e:e8:39:00:fd:5d:e5:9c:40:42:33:09         mobsunscreen-1.16.5-3.0.4.jar                     |Mob Sunscreen                 |mobsunscreen                  |1.16.5-3.0.4        |DONE      |Manifest: NOSIGNATURE         polymorph-forge-1.16.5-0.41.jar                   |Polymorph                     |polymorph                     |1.16.5-0.41         |DONE      |Manifest: NOSIGNATURE         HardcoreRevival_1.16.5-5.2.1.jar                  |Hardcore Revival              |hardcorerevival               |5.2.1               |DONE      |Manifest: NOSIGNATURE         DeepDarkExpansion-Mod 1.16.5-1.0.jar              |DeepDarkExpansion             |dde                           |1.16.51.0           |DONE      |Manifest: NOSIGNATURE         coroutil-forge-1.16.5-1.3.6.jar                   |CoroUtil                      |coroutil                      |1.16.5-1.3.6        |DONE      |Manifest: NOSIGNATURE         nobz-1.0.jar                                      |No Baby Zombies               |nobz                          |1.0                 |DONE      |Manifest: NOSIGNATURE         nethers_delight-2.1.jar                           |Nethers Delight               |nethers_delight               |2.1                 |DONE      |Manifest: NOSIGNATURE         appleskin-forge-mc1.16.x-2.5.1.jar                |AppleSkin                     |appleskin                     |2.5.1+mc1.16.4      |DONE      |Manifest: NOSIGNATURE         mobcatcher-1.16.5-3.3a.jar                        |Mob Catcher                   |mobcatcher                    |1.16.5-3.3a         |DONE      |Manifest: NOSIGNATURE         ferritecore-2.1.1-forge.jar                       |Ferrite Core                  |ferritecore                   |2.1.1               |DONE      |Manifest: 41:ce:50:66:d1:a0:05:ce:a1:0e:02:85:9b:46:64:e0:bf:2e:cf:60:30:9a:fe:0c:27:e0:63:66:9a:84:ce:8a         Aquaculture-1.16.5-2.1.23.jar                     |Aquaculture 2                 |aquaculture                   |1.16.5-2.1.23       |DONE      |Manifest: NOSIGNATURE         CosmeticArmorReworked-1.16.5-v5a.jar              |CosmeticArmorReworked         |cosmeticarmorreworked         |1.16.5-v5a          |DONE      |Manifest: 5e:ed:25:99:e4:44:14:c0:dd:89:c1:a9:4c:10:b5:0d:e4:b1:52:50:45:82:13:d8:d0:32:89:67:56:57:01:53         explosiveenhancement-1.0.0.jar                    |Explosive Enhancement         |explosiveenhancement          |1.0.0               |DONE      |Manifest: NOSIGNATURE     Crash Report UUID: e8ed8eb7-6a73-40dc-b01d-369cf7847a7d     Patchouli open book context: n/a     Player Count: 0 / 8; []     Data Packs: vanilla, mod:betterdungeons, mod:supermartijn642configlib, mod:playeranimator, mod:nethers_exoticism, mod:tinkerslevellingaddon (incompatible), mod:constructsarmory, mod:immersive_aircraft, mod:enhancedvisuals, mod:cookingforblockheads (incompatible), mod:controlling, mod:citadel (incompatible), mod:alexsmobs, mod:zombieawareness, mod:yungsapi, mod:bookshelf, mod:sophisticatedbackpacks, mod:electricalcraft, mod:simpleplanes, mod:sculkhorde, mod:immersive_armors, mod:gunswithoutroses (incompatible), mod:farmersdelight, mod:pickleakinh3, mod:regen, mod:lrarmor, mod:supermartijn642corelib, mod:einsteins_library, mod:curios, mod:patchouli (incompatible), mod:immersive_geology (incompatible), mod:easypaxellite (incompatible), mod:workers, mod:searchables, mod:nuclearscience, mod:lostcities, mod:obfuscate, mod:betterstrongholds, mod:theabyss, mod:scalingmobs, mod:eatinganimation, mod:cfm (incompatible), mod:morecfm, mod:immersiverailroading (incompatible), mod:trackapi (incompatible), mod:curiouselytra, mod:cloth-config (incompatible), mod:voidscape (incompatible), mod:trashcans, mod:smallships, mod:playertrade, mod:bettermineshafts, mod:geckolib3 (incompatible), mod:recruits, mod:betteradvancements, mod:cucumber, mod:ae2wtlib, mod:trashslot (incompatible), mod:jei, mod:abnormals_core, mod:libraryferret, mod:mekanism, mod:caelus, mod:tac (incompatible), mod:boss_tools, mod:clumps, mod:journeymap (incompatible), mod:nuclearcraft, mod:comforts, mod:appliedenergistics2 (incompatible), mod:naturescompass (incompatible), mod:lav, mod:hardcore_gamerule, mod:outer_end, mod:dungeoncrawl, mod:tinymobfarm (incompatible), mod:explorerscompass, mod:electrodynamics, mod:mr_new_lodestonerecipe (incompatible), mod:immersive_portals (incompatible), mod:ars_nouveau, mod:armored_mobs, mod:usefulslime, mod:enhanced_boss_bars, mod:immersivepetroleum, mod:tardis, mod:forge, mod:jeimultiblocks, mod:newcars, mod:mysticalagriculture, mod:universalmodcore (incompatible), mod:awesomedungeonocean, mod:cofh_core, mod:thermal, mod:thermal_innovation (incompatible), mod:thermal_expansion, mod:thermal_locomotion (incompatible), mod:distanthorizons (incompatible), mod:tconstruct, mod:voicechat, mod:enchdesc, mod:psg, mod:mousetweaks, mod:immersiveengineering, mod:immersiveindustry, mod:creativecore, mod:eanimod (incompatible), mod:easy_villagers, mod:knightquestbp, mod:notenoughanimations, mod:mobspiderclimb, mod:flywheel, mod:create, mod:mantle (incompatible), mod:thermal_cultivation (incompatible), mod:mobsunscreen (incompatible), mod:polymorph, mod:hardcorerevival (incompatible), mod:dde, mod:coroutil, mod:nobz, mod:nethers_delight, mod:appleskin, mod:mobcatcher (incompatible), mod:ferritecore (incompatible), mod:aquaculture (incompatible), mod:cosmeticarmorreworked (incompatible), mod:explosiveenhancement (incompatible)     Type: Integrated Server (map_client.txt)     Is Modded: Definitely; Client brand changed to 'forge'
    • Same issue latest.log:    https://mclo.gs/oJTggUY
  • Topics

×
×
  • Create New...

Important Information

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