Jump to content

Custom modeled block direction problems


AppliedOnce

Recommended Posts

Hi, I am having trouble with how to make it so that a custom modeled block can be placed just as a vanilla furnace, with the front towards me no matter which direction I am heading.

 

As of now it can only be placed in one direction.

 

Here is all the classes I am using:

 

Main class

 

package com.xetosphere.soulcraft;

 

import java.io.File;

 

import net.minecraft.creativetab.CreativeTabs;

 

import com.xetosphere.soulcraft.block.ModBlocks;

import com.xetosphere.soulcraft.configuration.ConfigurationHandler;

import com.xetosphere.soulcraft.core.proxy.CommonProxy;

import com.xetosphere.soulcraft.creativetab.TabSC;

import com.xetosphere.soulcraft.item.ModItems;

import com.xetosphere.soulcraft.lib.Reference;

import com.xetosphere.soulcraft.network.PacketHandler;

import com.xetosphere.soulcraft.recipe.ModRecipes;

import com.xetosphere.soulcraft.world.gen.WorldGen;

 

import cpw.mods.fml.common.Mod;

import cpw.mods.fml.common.Mod.EventHandler;

import cpw.mods.fml.common.Mod.Instance;

import cpw.mods.fml.common.SidedProxy;

import cpw.mods.fml.common.event.FMLInitializationEvent;

import cpw.mods.fml.common.event.FMLPostInitializationEvent;

import cpw.mods.fml.common.event.FMLPreInitializationEvent;

import cpw.mods.fml.common.network.NetworkMod;

import cpw.mods.fml.common.network.NetworkRegistry;

 

@Mod(modid = Reference.MOD_ID, name = Reference.MOD_NAME, version = Reference.VERSION_NUMBER, dependencies = Reference.DEPENDENCIES)

@NetworkMod(channels = { Reference.CHANNEL_NAME }, clientSideRequired = true, serverSideRequired = false, packetHandler = PacketHandler.class)

public class SoulCraft {

 

@Instance(Reference.MOD_ID)

public static SoulCraft instance;

 

@SidedProxy(clientSide = Reference.CLIENT_PROXY, serverSide = Reference.COMMON_PROXY)

public static CommonProxy proxy;

 

// Adds the moderations creative tab in the creative tabs.

public static final CreativeTabs tabSC = new TabSC(CreativeTabs.getNextID(), Reference.MOD_ID);

 

@EventHandler

public void preInit(FMLPreInitializationEvent e) {

 

// Adds the configuration, that can change block and item identities as well as making the mob spawn in an already existing world.

ConfigurationHandler.init(new File(e.getModConfigurationDirectory().getAbsolutePath() + File.separator + Reference.CHANNEL_NAME + File.separator + Reference.MOD_ID + ".cfg"));

 

// Adds the items that the moderation contains. As well as item recipes.

ModItems.init();

 

// Adds the blocks that the moderation contains. As well as block recipes and registering the blocks.

ModBlocks.init();

 

// Adds the crafting recipes within this moderation.

ModRecipes.addRecipes();

 

// Adds everything that has to do with generation.

WorldGen.init();

}

 

@EventHandler

public void init(FMLInitializationEvent e) {

 

// Register the GUI Handler.

NetworkRegistry.instance().registerGuiHandler(instance, proxy);

 

// Initialize moderation tile entities.

proxy.registerTileEntities();

 

// Initialize custom rendering and textures (Client only).

proxy.initRenderingAndTextures();

}

 

@EventHandler

public void postInit(FMLPostInitializationEvent e) {

 

}

 

}

 

 

 

Client Proxy

 

package com.xetosphere.soulcraft.core.proxy;

 

import net.minecraft.tileentity.TileEntity;

import net.minecraftforge.common.ForgeDirection;

 

import com.xetosphere.soulcraft.client.renderer.tileentity.TileTotemRenderer;

import com.xetosphere.soulcraft.lib.RenderIDs;

import com.xetosphere.soulcraft.tileentity.TileSC;

import com.xetosphere.soulcraft.tileentity.TileTotem;

 

import cpw.mods.fml.client.FMLClientHandler;

import cpw.mods.fml.client.registry.ClientRegistry;

import cpw.mods.fml.client.registry.RenderingRegistry;

 

public class ClientProxy extends CommonProxy {

 

@Override

public void initRenderingAndTextures() {

 

RenderIDs.totem = RenderingRegistry.getNextAvailableRenderId();

}

 

@Override

public void registerTileEntities() {

 

super.registerTileEntities();

 

ClientRegistry.bindTileEntitySpecialRenderer(TileTotem.class, new TileTotemRenderer());

}

 

@Override

public void handleTileEntityPacket(int x, int y, int z, ForgeDirection orientation, byte state, String customName) {

 

TileEntity tileEntity = FMLClientHandler.instance().getClient().theWorld.getBlockTileEntity(x, y, z);

 

if (tileEntity != null) {

if (tileEntity instanceof TileSC) {

((TileSC) tileEntity).setOrientation(orientation);

((TileSC) tileEntity).setState(state);

((TileSC) tileEntity).setCustomName(customName);

}

}

}

 

@Override

public void handleTileWithItemPacket(int x, int y, int z, ForgeDirection orientation, byte state, String customName, int itemID, int metaData, int stackSize, int color) {

 

this.handleTileEntityPacket(x, y, z, orientation, state, customName);

}

 

}

 

 

 

Common Proxy

 

package com.xetosphere.soulcraft.core.proxy;

 

import net.minecraft.entity.player.EntityPlayer;

import net.minecraft.world.World;

import net.minecraftforge.common.ForgeDirection;

 

import com.xetosphere.soulcraft.client.gui.inventory.GuiArcaneFuser;

import com.xetosphere.soulcraft.client.gui.inventory.GuiAuraCrusher;

import com.xetosphere.soulcraft.client.gui.inventory.GuiDuplicator;

import com.xetosphere.soulcraft.inventory.ContainerArcaneFuser;

import com.xetosphere.soulcraft.inventory.ContainerAuraCrusher;

import com.xetosphere.soulcraft.inventory.ContainerDuplicator;

import com.xetosphere.soulcraft.lib.GuiIDs;

import com.xetosphere.soulcraft.lib.Reference;

import com.xetosphere.soulcraft.lib.Strings;

import com.xetosphere.soulcraft.tileentity.TileArcaneFuser;

import com.xetosphere.soulcraft.tileentity.TileAuraCrusher;

import com.xetosphere.soulcraft.tileentity.TileDuplicator;

import com.xetosphere.soulcraft.tileentity.TileTotem;

 

import cpw.mods.fml.common.network.IGuiHandler;

import cpw.mods.fml.common.registry.GameRegistry;

 

public class CommonProxy implements IGuiHandler {

 

public void initRenderingAndTextures() {

 

}

 

public void registerTileEntities() {

 

GameRegistry.registerTileEntity(TileDuplicator.class, Reference.MOD_ID + Strings.DUPLICATOR_NAME);

GameRegistry.registerTileEntity(TileArcaneFuser.class, Reference.MOD_ID + Strings.ARCANE_FUSER_NAME);

GameRegistry.registerTileEntity(TileAuraCrusher.class, Reference.MOD_ID + Strings.AURA_CRUSHER_NAME);

GameRegistry.registerTileEntity(TileTotem.class, Reference.MOD_ID + Strings.AIR_TOTEM_NAME);

}

 

public void sendRequestEventPacket(byte eventType, int originX, int originY, int originZ, byte sideHit, byte rangeX, byte rangeY, byte rangeZ, String data) {

 

}

 

public void handleTileEntityPacket(int x, int y, int z, ForgeDirection orientation, byte state, String customName) {

 

}

 

public void handleTileWithItemPacket(int x, int y, int z, ForgeDirection orientation, byte state, String customName, int itemID, int metaData, int stackSize, int color) {

 

}

 

@Override

public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {

 

if (ID == GuiIDs.DUPLICATOR) {

 

TileDuplicator tileDuplicator = (TileDuplicator) world.getBlockTileEntity(x, y, z);

return new ContainerDuplicator(player.inventory, tileDuplicator);

}

 

else if (ID == GuiIDs.ARCANE_FUSER) {

 

TileArcaneFuser tileFuser = (TileArcaneFuser) world.getBlockTileEntity(x, y, z);

return new ContainerArcaneFuser(player.inventory, tileFuser);

}

 

else if (ID == GuiIDs.AURA_CRUSHER) {

 

TileAuraCrusher tileCrusher = (TileAuraCrusher) world.getBlockTileEntity(x, y, z);

return new ContainerAuraCrusher(player.inventory, tileCrusher);

}

 

return null;

}

 

@Override

public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {

 

if (ID == GuiIDs.DUPLICATOR) {

 

TileDuplicator tileDuplicator = (TileDuplicator) world.getBlockTileEntity(x, y, z);

return new GuiDuplicator(player.inventory, tileDuplicator);

}

 

else if (ID == GuiIDs.ARCANE_FUSER) {

 

TileArcaneFuser tileFuser = (TileArcaneFuser) world.getBlockTileEntity(x, y, z);

return new GuiArcaneFuser(player.inventory, tileFuser);

}

 

else if (ID == GuiIDs.AURA_CRUSHER) {

 

TileAuraCrusher tileCrusher = (TileAuraCrusher) world.getBlockTileEntity(x, y, z);

return new GuiAuraCrusher(player.inventory, tileCrusher);

}

 

return null;

}

 

}

 

 

 

TileSC

 

package com.xetosphere.soulcraft.tileentity;

 

import net.minecraft.entity.player.EntityPlayer;

import net.minecraft.nbt.NBTTagCompound;

import net.minecraft.network.packet.Packet;

import net.minecraft.tileentity.TileEntity;

import net.minecraftforge.common.ForgeDirection;

 

import com.xetosphere.soulcraft.lib.Strings;

import com.xetosphere.soulcraft.network.PacketTypeHandler;

import com.xetosphere.soulcraft.network.packet.PacketTileUpdate;

 

public class TileSC extends TileEntity {

 

protected ForgeDirection orientation;

protected byte state;

protected String customName;

 

public TileSC() {

 

orientation = ForgeDirection.SOUTH;

state = 0;

customName = "";

}

 

public ForgeDirection getOrientation() {

 

return orientation;

}

 

public void setOrientation(ForgeDirection orientation) {

 

this.orientation = orientation;

}

 

public void setOrientation(int orientation) {

 

this.orientation = ForgeDirection.getOrientation(orientation);

}

 

public short getState() {

 

return state;

}

 

public void setState(byte state) {

 

this.state = state;

}

 

public boolean hasCustomName() {

 

return customName != null && customName.length() > 0;

}

 

public String getCustomName() {

 

return customName;

}

 

public void setCustomName(String customName) {

 

this.customName = customName;

}

 

public boolean isUseableByPlayer(EntityPlayer player) {

 

return true;

}

 

@Override

public void readFromNBT(NBTTagCompound nbtTagCompound) {

 

super.readFromNBT(nbtTagCompound);

 

if (nbtTagCompound.hasKey(Strings.NBT_TE_DIRECTION_KEY)) {

orientation = ForgeDirection.getOrientation(nbtTagCompound.getByte(Strings.NBT_TE_DIRECTION_KEY));

}

 

if (nbtTagCompound.hasKey(Strings.NBT_TE_STATE_KEY)) {

state = nbtTagCompound.getByte(Strings.NBT_TE_STATE_KEY);

}

 

if (nbtTagCompound.hasKey(Strings.NBT_TE_CUSTOM_NAME)) {

customName = nbtTagCompound.getString(Strings.NBT_TE_CUSTOM_NAME);

}

}

 

@Override

public void writeToNBT(NBTTagCompound nbtTagCompound) {

 

super.writeToNBT(nbtTagCompound);

 

nbtTagCompound.setByte(Strings.NBT_TE_DIRECTION_KEY, (byte) orientation.ordinal());

nbtTagCompound.setByte(Strings.NBT_TE_STATE_KEY, state);

 

if (this.hasCustomName()) {

nbtTagCompound.setString(Strings.NBT_TE_CUSTOM_NAME, customName);

}

}

 

@Override

public Packet getDescriptionPacket() {

 

return PacketTypeHandler.populatePacket(new PacketTileUpdate(xCoord, yCoord, zCoord, orientation, state, customName));

}

 

@Override

public String toString() {

 

StringBuilder stringBuilder = new StringBuilder();

 

stringBuilder.append(String.format("TileARC Data - xCoord: %d, yCoord: %d, zCoord: %d, customName: '%s', orientation: %s, state: %d\n", xCoord, yCoord, zCoord, customName, orientation, state));

 

return stringBuilder.toString();

}

 

}

 

 

 

TileTotem

 

package com.xetosphere.soulcraft.tileentity;

 

public class TileTotem extends TileSC {

 

}

 

 

 

PacketTileUpdate

 

package com.xetosphere.soulcraft.network.packet;

 

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.IOException;

 

import net.minecraft.network.INetworkManager;

import net.minecraftforge.common.ForgeDirection;

 

import com.xetosphere.soulcraft.SoulCraft;

import com.xetosphere.soulcraft.network.PacketTypeHandler;

 

import cpw.mods.fml.common.network.Player;

 

public class PacketTileUpdate extends PacketSC {

 

public int x, y, z;

public byte orientation;

public byte state;

public String customName;

 

public PacketTileUpdate() {

 

super(PacketTypeHandler.TILE, true);

}

 

public PacketTileUpdate(int x, int y, int z, ForgeDirection orientation, byte state, String customName) {

 

super(PacketTypeHandler.TILE, true);

this.x = x;

this.y = y;

this.z = z;

this.orientation = (byte) orientation.ordinal();

this.state = state;

this.customName = customName;

}

 

@Override

public void writeData(DataOutputStream data) throws IOException {

 

data.writeInt(x);

data.writeInt(y);

data.writeInt(z);

data.writeByte(orientation);

data.writeByte(state);

data.writeUTF(customName);

}

 

@Override

public void readData(DataInputStream data) throws IOException {

 

x = data.readInt();

y = data.readInt();

z = data.readInt();

orientation = data.readByte();

state = data.readByte();

customName = data.readUTF();

}

 

@Override

public void execute(INetworkManager manager, Player player) {

 

SoulCraft.proxy.handleTileEntityPacket(x, y, z, ForgeDirection.getOrientation(orientation), state, customName);

}

 

}

 

 

 

PacketSC

 

package com.xetosphere.soulcraft.network.packet;

 

import java.io.ByteArrayOutputStream;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.IOException;

 

import net.minecraft.network.INetworkManager;

 

import com.xetosphere.soulcraft.network.PacketTypeHandler;

 

import cpw.mods.fml.common.network.Player;

 

public class PacketSC {

 

public PacketTypeHandler packetType;

public boolean isChunkDataPacket;

 

public PacketSC(PacketTypeHandler packetType, boolean isChunkDataPacket) {

 

this.packetType = packetType;

this.isChunkDataPacket = isChunkDataPacket;

}

 

public byte[] populate() {

 

ByteArrayOutputStream bos = new ByteArrayOutputStream();

DataOutputStream dos = new DataOutputStream(bos);

 

try {

dos.writeByte(packetType.ordinal());

this.writeData(dos);

} catch (IOException e) {

e.printStackTrace(System.err);

}

 

return bos.toByteArray();

}

 

public void readPopulate(DataInputStream data) {

 

try {

this.readData(data);

} catch (IOException e) {

e.printStackTrace(System.err);

}

}

 

public void readData(DataInputStream data) throws IOException {

 

}

 

public void writeData(DataOutputStream dos) throws IOException {

 

}

 

public void execute(INetworkManager network, Player player) {

 

}

 

public void setKey(int key) {

 

}

 

}

 

 

 

PacketHandler

 

package com.xetosphere.soulcraft.network;

 

import net.minecraft.network.INetworkManager;

import net.minecraft.network.packet.Packet250CustomPayload;

 

import com.xetosphere.soulcraft.network.packet.PacketSC;

 

import cpw.mods.fml.common.network.IPacketHandler;

import cpw.mods.fml.common.network.Player;

 

public class PacketHandler implements IPacketHandler {

 

@Override

public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player) {

 

PacketSC packetSC = PacketTypeHandler.buildPacket(packet.data);

 

packetSC.execute(manager, player);

}

 

}

 

 

 

PacketTypeHandler

 

package com.xetosphere.soulcraft.network;

 

import java.io.ByteArrayInputStream;

import java.io.DataInputStream;

 

import net.minecraft.network.packet.Packet;

import net.minecraft.network.packet.Packet250CustomPayload;

 

import com.xetosphere.soulcraft.lib.Reference;

import com.xetosphere.soulcraft.network.packet.PacketSC;

import com.xetosphere.soulcraft.network.packet.PacketTileUpdate;

import com.xetosphere.soulcraft.network.packet.PacketTileWithItemUpdate;

 

public enum PacketTypeHandler {

TILE(PacketTileUpdate.class), TILE_WITH_ITEM(PacketTileWithItemUpdate.class);

 

private Class<? extends PacketSC> clazz;

 

PacketTypeHandler(Class<? extends PacketSC> clazz) {

 

this.clazz = clazz;

}

 

public static PacketSC buildPacket(byte[] data) {

 

ByteArrayInputStream bis = new ByteArrayInputStream(data);

int selector = bis.read();

DataInputStream dis = new DataInputStream(bis);

 

PacketSC packet = null;

 

try {

packet = values()[selector].clazz.newInstance();

} catch (Exception e) {

e.printStackTrace(System.err);

}

 

packet.readPopulate(dis);

 

return packet;

}

 

public static PacketSC buildPacket(PacketTypeHandler type) {

 

PacketSC packet = null;

 

try {

packet = values()[type.ordinal()].clazz.newInstance();

} catch (Exception e) {

e.printStackTrace(System.err);

}

 

return packet;

}

 

public static Packet populatePacket(PacketSC packetSC) {

 

byte[] data = packetSC.populate();

 

Packet250CustomPayload packet250 = new Packet250CustomPayload();

packet250.channel = Reference.CHANNEL_NAME;

packet250.data = data;

packet250.length = data.length;

packet250.isChunkDataPacket = packetSC.isChunkDataPacket;

 

return packet250;

}

 

}

 

 

 

ModelTotem

 

package com.xetosphere.soulcraft.client.model;

 

import net.minecraft.client.model.ModelBase;

import net.minecraft.client.model.ModelRenderer;

import net.minecraft.entity.Entity;

 

public class ModelTotem extends ModelBase {

 

ModelRenderer shapeMain;

ModelRenderer scaleFront;

ModelRenderer scaleBack;

ModelRenderer scaleRight;

ModelRenderer scaleLeft;

ModelRenderer nose;

ModelRenderer eyeRight;

ModelRenderer eyeLeft;

ModelRenderer earBottomRight;

ModelRenderer earTopRight;

ModelRenderer earTopRight1;

ModelRenderer earTopRight2;

ModelRenderer earBottomLeft;

ModelRenderer earTopLeft;

ModelRenderer earTopLeft1;

ModelRenderer earTopLeft2;

 

public ModelTotem() {

 

textureWidth = 128;

textureHeight = 64;

 

shapeMain = new ModelRenderer(this, 96, 40);

shapeMain.addBox(-4F, 0F, -4F, 8, 16, 8);

shapeMain.setRotationPoint(0F, 8F, -5.995204E-15F);

shapeMain.setTextureSize(128, 64);

shapeMain.mirror = true;

setRotation(shapeMain, 0F, 0F, 0F);

 

scaleFront = new ModelRenderer(this, 15, 47);

scaleFront.addBox(-3F, 0F, -1F, 6, 16, 1);

scaleFront.setRotationPoint(0F, 8F, -4F);

scaleFront.setTextureSize(128, 64);

scaleFront.mirror = true;

setRotation(scaleFront, 0F, 0F, 0F);

 

scaleBack = new ModelRenderer(this, 45, 47);

scaleBack.addBox(-3F, 0F, 0F, 6, 16, 1);

scaleBack.setRotationPoint(0F, 8F, 4F);

scaleBack.setTextureSize(128, 64);

scaleBack.mirror = true;

setRotation(scaleBack, 0F, 0F, 0F);

 

scaleRight = new ModelRenderer(this, 0, 42);

scaleRight.addBox(-1F, 0F, -3F, 1, 16, 6);

scaleRight.setRotationPoint(-4F, 8F, 0F);

scaleRight.setTextureSize(128, 64);

scaleRight.mirror = true;

setRotation(scaleRight, 0F, 0F, 0F);

 

scaleLeft = new ModelRenderer(this, 30, 42);

scaleLeft.addBox(0F, 0F, -3F, 1, 16, 6);

scaleLeft.setRotationPoint(4F, 8F, 0F);

scaleLeft.setTextureSize(128, 64);

scaleLeft.mirror = true;

setRotation(scaleLeft, 0F, 0F, 0F);

 

nose = new ModelRenderer(this, 20, 0);

nose.addBox(-1F, 0F, -1F, 2, 2, 1);

nose.setRotationPoint(0F, 14F, -5F);

nose.setTextureSize(128, 64);

nose.mirror = true;

setRotation(nose, 0F, 0F, 0F);

 

eyeRight = new ModelRenderer(this, 0, 0);

eyeRight.addBox(-1F, 0F, -1F, 2, 1, 1);

eyeRight.setRotationPoint(-2F, 11F, -5F);

eyeRight.setTextureSize(128, 64);

eyeRight.mirror = true;

setRotation(eyeRight, 0F, 0F, 0.1047198F);

 

eyeLeft = new ModelRenderer(this, 10, 0);

eyeLeft.addBox(-1F, 0F, -1F, 2, 1, 1);

eyeLeft.setRotationPoint(2F, 11F, -5F);

eyeLeft.setTextureSize(128, 64);

eyeLeft.mirror = true;

setRotation(eyeLeft, 0F, 0F, -0.1047198F);

 

earBottomRight = new ModelRenderer(this, 105, 0);

earBottomRight.addBox(-1F, -1F, 0F, 1, 3, 1);

earBottomRight.setRotationPoint(-5F, 11F, 0F);

earBottomRight.setTextureSize(128, 64);

earBottomRight.mirror = true;

setRotation(earBottomRight, 0F, 0F, 0F);

 

earTopRight = new ModelRenderer(this, 100, 0);

earTopRight.addBox(-1F, -3F, 0F, 1, 4, 1);

earTopRight.setRotationPoint(-6F, 11F, 0F);

earTopRight.setTextureSize(128, 64);

earTopRight.mirror = true;

setRotation(earTopRight, 0F, 0F, 0F);

 

earTopRight1 = new ModelRenderer(this, 95, 0);

earTopRight1.addBox(-1F, 0F, 0F, 1, 1, 1);

earTopRight1.setRotationPoint(-7F, 8F, 0F);

earTopRight1.setTextureSize(128, 64);

earTopRight1.mirror = true;

setRotation(earTopRight1, 0F, 0F, 0F);

 

earTopRight2 = new ModelRenderer(this, 90, 0);

earTopRight2.addBox(-1F, 0F, 0F, 1, 1, 1);

earTopRight2.setRotationPoint(-7F, 10F, 0F);

earTopRight2.setTextureSize(128, 64);

earTopRight2.mirror = true;

setRotation(earTopRight2, 0F, 0F, 0F);

 

earBottomLeft = new ModelRenderer(this, 125, 0);

earBottomLeft.addBox(0F, -1F, 0F, 1, 3, 1);

earBottomLeft.setRotationPoint(5F, 11F, 0F);

earBottomLeft.setTextureSize(128, 64);

earBottomLeft.mirror = true;

setRotation(earBottomLeft, 0F, 0F, 0F);

 

earTopLeft = new ModelRenderer(this, 120, 0);

earTopLeft.addBox(0F, -3F, 0F, 1, 4, 1);

earTopLeft.setRotationPoint(6F, 11F, 0F);

earTopLeft.setTextureSize(128, 64);

earTopLeft.mirror = true;

setRotation(earTopLeft, 0F, 0F, 0F);

 

earTopLeft1 = new ModelRenderer(this, 115, 0);

earTopLeft1.addBox(0F, 0F, 0F, 1, 1, 1);

earTopLeft1.setRotationPoint(7F, 8F, 0F);

earTopLeft1.setTextureSize(128, 64);

earTopLeft1.mirror = true;

setRotation(earTopLeft1, 0F, 0F, 0F);

 

earTopLeft2 = new ModelRenderer(this, 110, 0);

earTopLeft2.addBox(0F, 0F, 0F, 1, 1, 1);

earTopLeft2.setRotationPoint(7F, 10F, 0F);

earTopLeft2.setTextureSize(128, 64);

earTopLeft2.mirror = true;

setRotation(earTopLeft2, 0F, 0F, 0F);

}

 

public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) {

 

super.render(entity, f, f1, f2, f3, f4, f5);

setRotationAngles(f, f1, f2, f3, f4, f5, entity);

shapeMain.render(f5);

scaleFront.render(f5);

scaleBack.render(f5);

scaleRight.render(f5);

scaleLeft.render(f5);

nose.render(f5);

eyeRight.render(f5);

eyeLeft.render(f5);

earBottomRight.render(f5);

earTopRight.render(f5);

earTopRight1.render(f5);

earTopRight2.render(f5);

earBottomLeft.render(f5);

earTopLeft.render(f5);

earTopLeft1.render(f5);

earTopLeft2.render(f5);

}

 

private void setRotation(ModelRenderer model, float x, float y, float z) {

 

model.rotateAngleX = x;

model.rotateAngleY = y;

model.rotateAngleZ = z;

}

 

public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) {

 

super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);

}

 

}

 

 

 

TileTotemRenderer

 

package com.xetosphere.soulcraft.client.renderer.tileentity;

 

import net.minecraft.block.Block;

import net.minecraft.client.Minecraft;

import net.minecraft.client.renderer.OpenGlHelper;

import net.minecraft.client.renderer.Tessellator;

import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;

import net.minecraft.entity.Entity;

import net.minecraft.tileentity.TileEntity;

import net.minecraft.world.World;

 

import org.lwjgl.opengl.GL11;

 

import com.xetosphere.soulcraft.block.ModBlocks;

import com.xetosphere.soulcraft.client.model.ModelTotem;

import com.xetosphere.soulcraft.lib.Textures;

 

public class TileTotemRenderer extends TileEntitySpecialRenderer {

 

private final ModelTotem model;

 

public TileTotemRenderer() {

 

model = new ModelTotem();

}

 

public void adjustRotatePivotViaMeta(World world, int x, int y, int z) {

 

int meta = world.getBlockMetadata(x, y, z);

GL11.glPushMatrix();

GL11.glRotatef(meta * (-90), 0.0F, 0.0F, 1.0F);

GL11.glPopMatrix();

}

 

public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) {

 

GL11.glPushMatrix();

GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F);

 

if (tileentity.getBlockType() == ModBlocks.airTotem) {

Minecraft.getMinecraft().renderEngine.bindTexture(Textures.MODEL_TOTEM);

}

 

else if (tileentity.getBlockType() == ModBlocks.waterTotem) {

Minecraft.getMinecraft().renderEngine.bindTexture(Textures.MODEL_TOTEM);

}

 

else if (tileentity.getBlockType() == ModBlocks.fireTotem) {

Minecraft.getMinecraft().renderEngine.bindTexture(Textures.MODEL_TOTEM);

}

 

else if (tileentity.getBlockType() == ModBlocks.earthTotem) {

Minecraft.getMinecraft().renderEngine.bindTexture(Textures.MODEL_TOTEM);

}

 

GL11.glPushMatrix();

GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);

model.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F);

GL11.glPopMatrix();

GL11.glPopMatrix();

}

 

@SuppressWarnings("unused")

private void adjustLightFixture(World world, int i, int j, int k, Block block) {

 

Tessellator tess = Tessellator.instance;

float brightness = block.getBlockBrightness(world, i, j, k);

int skyLight = world.getLightBrightnessForSkyBlocks(i, j, k, 0);

int modulousModifier = skyLight % 65536;

int divModifier = skyLight / 65536;

tess.setColorOpaque_F(brightness, brightness, brightness);

OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) modulousModifier, divModifier);

}

 

}

 

 

 

BlockTotem

 

package com.xetosphere.soulcraft.block;

 

import net.minecraft.block.Block;

import net.minecraft.block.material.Material;

import net.minecraft.client.renderer.texture.IconRegister;

import net.minecraft.entity.player.EntityPlayer;

import net.minecraft.item.Item;

import net.minecraft.item.ItemStack;

import net.minecraft.potion.PotionEffect;

import net.minecraft.tileentity.TileEntity;

import net.minecraft.util.Icon;

import net.minecraft.world.World;

 

import com.xetosphere.soulcraft.SoulCraft;

import com.xetosphere.soulcraft.lib.Elements;

import com.xetosphere.soulcraft.lib.RenderIDs;

import com.xetosphere.soulcraft.lib.Strings;

import com.xetosphere.soulcraft.tileentity.TileTotem;

 

import cpw.mods.fml.relauncher.Side;

import cpw.mods.fml.relauncher.SideOnly;

 

public class BlockTotem extends BlockSC {

 

private int element;

 

private Icon[] icons;

 

String name;

 

public BlockTotem(int id, String name, int element) {

 

super(id, Material.wood);

setUnlocalizedName(Strings.RESOURCE_PREFIX + name);

setCreativeTab(SoulCraft.tabSC);

setHardness(3.0F);

setResistance(12.0F);

this.element = element;

this.name = name;

}

 

@Override

public String getUnlocalizedName() {

 

return String.format("tile.%s%s", Strings.RESOURCE_PREFIX, name);

}

 

@Override

public TileEntity createNewTileEntity(World world) {

 

return new TileTotem();

}

 

@Override

public boolean renderAsNormalBlock() {

 

return false;

}

 

@Override

public boolean isOpaqueCube() {

 

return false;

}

 

    @Override

    public int getRenderType()

    {

 

        return RenderIDs.totem;

    }

 

@Override

@SideOnly(Side.CLIENT)

public void registerIcons(IconRegister iconRegister) {

 

icons = new Icon[3];

 

String iconName = getUnlocalizedName().substring(getUnlocalizedName().indexOf('.') + 1);

 

icons[0] = iconRegister.registerIcon(iconName + "_top");

icons[1] = iconRegister.registerIcon(iconName + "_side");

icons[2] = iconRegister.registerIcon(iconName + "_bottom");

 

}

 

@SideOnly(Side.CLIENT)

public Icon getIcon(int side, int metadata) {

 

if (side == 1) {

return icons[0];

}

 

else if (side == 0) {

return icons[2];

}

 

else return icons[1];

}

 

@Override

public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9) {

 

ItemStack activeItem = player.inventory.getCurrentItem();

 

if (player.isSneaking()) {

 

return false;

 

} else {

 

if (activeItem == null) {

 

return false;

}

 

if (element == Elements.AIR) {

 

if (activeItem.itemID == Item.goldNugget.itemID) {

 

player.addPotionEffect(new PotionEffect(1, 1200, 0, false));

activeItem.stackSize -= 1;

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.fireTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(12, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.waterTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(13, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.earthTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(3, 600, 0, false));

}

return true;

}

 

if (activeItem.itemID == Item.ingotGold.itemID) {

 

player.addPotionEffect(new PotionEffect(1, 2400, 0, false));

activeItem.stackSize -= 1;

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.fireTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(12, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.waterTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(13, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.earthTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(3, 600, 0, false));

}

return true;

}

 

if (activeItem.itemID == Block.blockGold.blockID) {

 

player.addPotionEffect(new PotionEffect(1, 3000, 1, false));

activeItem.stackSize -= 1;

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.fireTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(12, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.waterTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(13, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.earthTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(3, 600, 0, false));

}

return true;

}

 

}

 

else if (element == Elements.FIRE) {

 

if (activeItem.itemID == Item.goldNugget.itemID) {

 

player.addPotionEffect(new PotionEffect(12, 1200, 0, false));

activeItem.stackSize -= 1;

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.airTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(1, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.waterTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(13, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.earthTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(3, 600, 0, false));

}

return true;

}

 

if (activeItem.itemID == Item.ingotGold.itemID) {

 

player.addPotionEffect(new PotionEffect(12, 2400, 0, false));

activeItem.stackSize -= 1;

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.airTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(1, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.waterTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(13, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.earthTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(3, 600, 0, false));

}

return true;

}

 

if (activeItem.itemID == Block.blockGold.blockID) {

 

player.addPotionEffect(new PotionEffect(12, 3000, 1, false));

activeItem.stackSize -= 1;

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.airTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(1, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.waterTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(13, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.earthTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(3, 600, 0, false));

}

return true;

}

 

}

 

else if (element == Elements.WATER) {

 

if (activeItem.itemID == Item.goldNugget.itemID) {

 

player.addPotionEffect(new PotionEffect(13, 1200, 0, false));

activeItem.stackSize -= 1;

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.fireTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(12, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.airTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(1, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.earthTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(3, 600, 0, false));

}

return true;

}

 

if (activeItem.itemID == Item.ingotGold.itemID) {

 

player.addPotionEffect(new PotionEffect(13, 2400, 0, false));

activeItem.stackSize -= 1;

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.fireTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(12, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.airTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(1, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.earthTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(3, 600, 0, false));

}

return true;

}

 

if (activeItem.itemID == Block.blockGold.blockID) {

 

player.addPotionEffect(new PotionEffect(13, 3000, 1, false));

activeItem.stackSize -= 1;

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.fireTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(12, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.airTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(1, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.earthTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.earthTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.earthTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(3, 600, 0, false));

}

return true;

}

 

} else if (element == Elements.EARTH) {

 

if (activeItem.itemID == Item.goldNugget.itemID) {

 

player.addPotionEffect(new PotionEffect(3, 1200, 0, false));

activeItem.stackSize -= 1;

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.fireTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(12, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.airTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(1, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.waterTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(13, 600, 0, false));

}

return true;

}

 

if (activeItem.itemID == Item.ingotGold.itemID) {

 

player.addPotionEffect(new PotionEffect(3, 2400, 0, false));

activeItem.stackSize -= 1;

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.fireTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(12, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.airTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(1, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.waterTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(13, 600, 0, false));

}

return true;

}

 

if (activeItem.itemID == Block.blockGold.blockID) {

 

player.addPotionEffect(new PotionEffect(3, 3000, 1, false));

activeItem.stackSize -= 1;

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.fireTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(12, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.airTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(1, 600, 0, false));

}

 

if (world.getBlockId(x, y - 1, z) == ModBlocks.waterTotem.blockID || (world.getBlockId(x, y - 2, z) == ModBlocks.waterTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID)) || (world.getBlockId(x, y - 3, z) == ModBlocks.waterTotem.blockID && (world.getBlockId(x, y - 1, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 1, z) == ModBlocks.airTotem.blockID) && (world.getBlockId(x, y - 2, z) == ModBlocks.fireTotem.blockID || world.getBlockId(x, y - 2, z) == ModBlocks.airTotem.blockID))) {

 

player.addPotionEffect(new PotionEffect(13, 600, 0, false));

}

return true;

}

}

 

}

 

return false;

}

 

}

 

 

Link to comment
Share on other sites

Because you're not rotating the model in the TileTotemRenderer class.

 

         double angle = Math.toRadians(entity.rotation); //entity here is my TileEntity.  You can also reference block metadata.
         GL11.glPushMatrix();
         GL11.glRotatef(-1*entity.rotation, 0, 1, 0); //negative because of an assumption made in my TE that was wrong and this was the easier fix

 

(The angle value was being used for another part of the rendering, not related to the model)

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Because you're not rotating the model in the TileTotemRenderer class.

 

         double angle = Math.toRadians(entity.rotation); //entity here is my TileEntity.  You can also reference block metadata.
         GL11.glPushMatrix();
         GL11.glRotatef(-1*entity.rotation, 0, 1, 0); //negative because of an assumption made in my TE that was wrong and this was the easier fix

 

(The angle value was being used for another part of the rendering, not related to the model)

^^^ The right way (how I did it)

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Crash log and latest.txt https://paste.ee/p/7t93I
    • I don't know what do about this I tried support. This happens when I go into a server and I don't own it. I have the exact same mods, same version, same everything. I have enough ram on Minecraft.   Logs: content://media/external/downloads/1000004919 
    • (here is the crash report) The game crashed whilst mouseclicked event handler Error: java.lang.NoSuchFieldError: EMPTY_ID (wen i try to create a world) https://paste.ee/p/hfoDP
    • 3 mods from a modpack i found on curseforge (for minecraft) are having an error when loading. I did not make this modpack my self but i have used it before and it was working just fine. The version of minecraft is 1.20.1 and the forge version is 47. 2.0 any help would be useful!   ---- Minecraft Crash Report ---- // Hi. I'm Minecraft, and I'm a crashaholic. Time: 2024-04-26 14:10:06 Description: Mod loading error has occurred java.lang.Exception: Mod Loading has failed     at net.minecraftforge.logging.CrashReportExtender.dumpModLoadingCrashReport(CrashReportExtender.java:60) ~[forge-1.20.1-47.2.0-universal.jar%23511!/:?] {re:classloading}     at net.minecraftforge.client.loading.ClientModLoader.completeModLoading(ClientModLoader.java:143) ~[forge-1.20.1-47.2.0-universal.jar%23511!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.lambda$new$4(Minecraft.java:571) ~[client-1.20.1-20230612.114412-srg.jar%23506!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.Util.m_137521_(Util.java:421) ~[client-1.20.1-20230612.114412-srg.jar%23506!/:?] {re:classloading,pl:accesstransformer:B,re:mixin,pl:accesstransformer:B}     at net.minecraft.client.Minecraft.lambda$new$5(Minecraft.java:564) ~[client-1.20.1-20230612.114412-srg.jar%23506!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraftforge.client.loading.ForgeLoadingOverlay.m_88315_(ForgeLoadingOverlay.java:146) ~[forge-1.20.1-47.2.0-universal.jar%23511!/:?] {re:classloading}     at net.minecraft.client.renderer.GameRenderer.m_109093_(GameRenderer.java:954) ~[client-1.20.1-20230612.114412-srg.jar%23506!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1146) ~[client-1.20.1-20230612.114412-srg.jar%23506!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:718) ~[client-1.20.1-20230612.114412-srg.jar%23506!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:218) ~[forge-47.2.0.jar:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:flywheel.mixins.json:ClientMainMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {}     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}     at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {}     at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.runTarget(CommonLaunchHandler.java:111) ~[fmlloader-1.20.1-47.2.0.jar:?] {}     at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.clientService(CommonLaunchHandler.java:99) ~[fmlloader-1.20.1-47.2.0.jar:?] {}     at net.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$makeService$0(CommonClientLaunchHandler.java:25) ~[fmlloader-1.20.1-47.2.0.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:108) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:78) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) ~[bootstraplauncher-1.1.2.jar:?] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace:     at com.electronwill.nightconfig.core.io.ParsingException.notEnoughData(ParsingException.java:22) ~[core-3.6.4.jar%2393!/:?] {} -- MOD terrablender -- Details:     Caused by 0: java.lang.ExceptionInInitializerError         at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] {}         at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?] {}         at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?] {}         at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?] {}         at java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?] {}         at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:68) ~[javafmllanguage-1.20.1-47.2.0.jar%23508!/:?] {}         at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$10(ModContainer.java:123) ~[fmlcore-1.20.1-47.2.0.jar%23507!/:?] {}         at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}         at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {}         at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}         at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}         at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {}         at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {}         at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {}     Mod File: /C:/Users/HMSni/curseforge/minecraft/Instances/Minecolonies Medieval Magick/mods/TerraBlender-forge-1.20.1-3.0.1.4.jar     Failure message: TerraBlender (terrablender) has failed to load correctly         java.lang.ExceptionInInitializerError: null     Mod Version: 3.0.1.4     Mod Issue URL: https://github.com/Glitchfiend/TerraBlender/issues     Exception message: com.electronwill.nightconfig.core.io.ParsingException: Not enough data available Stacktrace:     at com.electronwill.nightconfig.core.io.ParsingException.notEnoughData(ParsingException.java:22) ~[core-3.6.4.jar%2393!/:?] {}     at com.electronwill.nightconfig.core.io.ReaderInput.directReadChar(ReaderInput.java:36) ~[core-3.6.4.jar%2393!/:?] {}     at com.electronwill.nightconfig.core.io.AbstractInput.readChar(AbstractInput.java:49) ~[core-3.6.4.jar%2393!/:?] {}     at com.electronwill.nightconfig.core.io.AbstractInput.readCharsUntil(AbstractInput.java:123) ~[core-3.6.4.jar%2393!/:?] {}     at com.electronwill.nightconfig.toml.TableParser.parseKey(TableParser.java:166) ~[toml-3.6.4.jar%2394!/:?] {}     at com.electronwill.nightconfig.toml.TableParser.parseDottedKey(TableParser.java:145) ~[toml-3.6.4.jar%2394!/:?] {}     at com.electronwill.nightconfig.toml.TableParser.parseNormal(TableParser.java:55) ~[toml-3.6.4.jar%2394!/:?] {}     at com.electronwill.nightconfig.toml.TomlParser.parse(TomlParser.java:44) ~[toml-3.6.4.jar%2394!/:?] {}     at com.electronwill.nightconfig.toml.TomlParser.parse(TomlParser.java:37) ~[toml-3.6.4.jar%2394!/:?] {}     at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:113) ~[core-3.6.4.jar%2393!/:?] {}     at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:219) ~[core-3.6.4.jar%2393!/:?] {}     at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:202) ~[core-3.6.4.jar%2393!/:?] {}     at com.electronwill.nightconfig.core.file.WriteSyncFileConfig.load(WriteSyncFileConfig.java:73) ~[core-3.6.4.jar%2393!/:?] {}     at com.electronwill.nightconfig.core.file.AutosaveCommentedFileConfig.load(AutosaveCommentedFileConfig.java:85) ~[core-3.6.4.jar%2393!/:?] {}     at terrablender.config.ConfigFile.<init>(ConfigFile.java:34) ~[TerraBlender-forge-1.20.1-3.0.1.4.jar%23485!/:3.0.1.4] {re:mixin,re:classloading}     at terrablender.config.TerraBlenderConfig.<init>(TerraBlenderConfig.java:31) ~[TerraBlender-forge-1.20.1-3.0.1.4.jar%23485!/:3.0.1.4] {re:mixin,re:classloading,pl:mixin:A}     at terrablender.core.TerraBlenderForge.<clinit>(TerraBlenderForge.java:30) ~[TerraBlender-forge-1.20.1-3.0.1.4.jar%23485!/:3.0.1.4] {re:classloading}     at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] {}     at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?] {}     at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?] {}     at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?] {}     at java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?] {}     at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:68) ~[javafmllanguage-1.20.1-47.2.0.jar%23508!/:?] {}     at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$10(ModContainer.java:123) ~[fmlcore-1.20.1-47.2.0.jar%23507!/:?] {}     at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}     at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {}     at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}     at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}     at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {}     at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {}     at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {} -- MOD tlc -- Details:     Caused by 0: java.lang.reflect.InvocationTargetException         at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] {}         at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?] {}         at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?] {}         at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?] {}         at java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?] {}         at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:68) ~[javafmllanguage-1.20.1-47.2.0.jar%23508!/:?] {}         at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$10(ModContainer.java:123) ~[fmlcore-1.20.1-47.2.0.jar%23507!/:?] {}         at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}         at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {}         at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}         at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}         at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {}         at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {}         at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {}     Mod File: /C:/Users/HMSni/curseforge/minecraft/Instances/Minecolonies Medieval Magick/mods/tlc_forge-1.0.3-R-1.20.X.jar     Failure message: The Lost Castle (tlc) has failed to load correctly         java.lang.reflect.InvocationTargetException: null     Mod Version: 1.0.2     Mod Issue URL: https://github.com/Team-Remastered/End-Remastered-Forge/issues     Exception message: com.electronwill.nightconfig.core.io.ParsingException: Not enough data available Stacktrace:     at com.electronwill.nightconfig.core.io.ParsingException.notEnoughData(ParsingException.java:22) ~[core-3.6.4.jar%2393!/:?] {}     at com.electronwill.nightconfig.core.io.ReaderInput.directReadChar(ReaderInput.java:36) ~[core-3.6.4.jar%2393!/:?] {}     at com.electronwill.nightconfig.core.io.AbstractInput.readChar(AbstractInput.java:49) ~[core-3.6.4.jar%2393!/:?] {}     at com.electronwill.nightconfig.core.io.AbstractInput.readCharsUntil(AbstractInput.java:123) ~[core-3.6.4.jar%2393!/:?] {}     at com.electronwill.nightconfig.toml.TableParser.parseKey(TableParser.java:166) ~[toml-3.6.4.jar%2394!/:?] {}     at com.electronwill.nightconfig.toml.TableParser.parseDottedKey(TableParser.java:145) ~[toml-3.6.4.jar%2394!/:?] {}     at com.electronwill.nightconfig.toml.TableParser.parseNormal(TableParser.java:55) ~[toml-3.6.4.jar%2394!/:?] {}     at com.electronwill.nightconfig.toml.TomlParser.parse(TomlParser.java:44) ~[toml-3.6.4.jar%2394!/:?] {}     at com.electronwill.nightconfig.toml.TomlParser.parse(TomlParser.java:37) ~[toml-3.6.4.jar%2394!/:?] {}     at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:113) ~[core-3.6.4.jar%2393!/:?] {}     at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:219) ~[core-3.6.4.jar%2393!/:?] {}     at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:202) ~[core-3.6.4.jar%2393!/:?] {}     at com.electronwill.nightconfig.core.file.WriteSyncFileConfig.load(WriteSyncFileConfig.java:73) ~[core-3.6.4.jar%2393!/:?] {}     at com.electronwill.nightconfig.core.file.AutosaveCommentedFileConfig.load(AutosaveCommentedFileConfig.java:85) ~[core-3.6.4.jar%2393!/:?] {}     at com.teamremastered.tlc.config.TLCConfig.load(TLCConfig.java:47) ~[tlc_forge-1.0.3-R-1.20.X.jar%23490!/:1.0.3-R-1.20.1] {re:mixin,re:classloading}     at com.teamremastered.tlc.TheLostCastle.<init>(TheLostCastle.java:33) ~[tlc_forge-1.0.3-R-1.20.X.jar%23490!/:1.0.3-R-1.20.1] {re:classloading}     at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] {}     at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?] {}     at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?] {}     at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?] {}     at java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?] {}     at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:68) ~[javafmllanguage-1.20.1-47.2.0.jar%23508!/:?] {}     at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$10(ModContainer.java:123) ~[fmlcore-1.20.1-47.2.0.jar%23507!/:?] {}     at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}     at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {}     at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}     at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}     at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {}     at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {}     at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {} -- MOD transmog -- Details:     Caused by 0: java.lang.reflect.InvocationTargetException         at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] {}         at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?] {}         at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?] {}         at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?] {}         at java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?] {}         at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:68) ~[javafmllanguage-1.20.1-47.2.0.jar%23508!/:?] {}         at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$10(ModContainer.java:123) ~[fmlcore-1.20.1-47.2.0.jar%23507!/:?] {}         at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}         at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {}         at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}         at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}         at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {}         at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {}         at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {}     Caused by 1: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $         at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:395) ~[gson-2.10.jar%23107!/:?] {}         at com.google.gson.Gson.fromJson(Gson.java:1214) ~[gson-2.10.jar%23107!/:?] {}         at com.google.gson.Gson.fromJson(Gson.java:1124) ~[gson-2.10.jar%23107!/:?] {}         at com.google.gson.Gson.fromJson(Gson.java:1034) ~[gson-2.10.jar%23107!/:?] {}         at com.google.gson.Gson.fromJson(Gson.java:969) ~[gson-2.10.jar%23107!/:?] {}         at com.hidoni.transmog.config.Config.loadConfigFromFile(Config.java:28) ~[transmog-forge-1.2.4+1.20.jar%23496!/:1.2.4+1.20] {re:mixin,re:classloading}         at com.hidoni.transmog.Transmog.loadConfig(Transmog.java:18) ~[transmog-forge-1.2.4+1.20.jar%23496!/:1.2.4+1.20] {re:classloading}         at com.hidoni.transmog.Transmog.init(Transmog.java:11) ~[transmog-forge-1.2.4+1.20.jar%23496!/:1.2.4+1.20] {re:classloading}         at com.hidoni.transmog.TransmogForge.<init>(TransmogForge.java:10) ~[transmog-forge-1.2.4+1.20.jar%23496!/:1.2.4+1.20] {re:classloading}         at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] {}         at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?] {}         at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?] {}         at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?] {}         at java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?] {}         at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:68) ~[javafmllanguage-1.20.1-47.2.0.jar%23508!/:?] {}         at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$10(ModContainer.java:123) ~[fmlcore-1.20.1-47.2.0.jar%23507!/:?] {}         at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}         at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {}         at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}         at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}         at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {}         at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {}         at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {}     Mod File: /C:/Users/HMSni/curseforge/minecraft/Instances/Minecolonies Medieval Magick/mods/transmog-forge-1.2.4+1.20.jar     Failure message: Transmog (transmog) has failed to load correctly         java.lang.reflect.InvocationTargetException: null     Mod Version: 1.2.4+1.20     Mod Issue URL: NOT PROVIDED     Exception message: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $ Stacktrace:     at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:393) ~[gson-2.10.jar%23107!/:?] {}     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:384) ~[gson-2.10.jar%23107!/:?] {}     at com.google.gson.Gson.fromJson(Gson.java:1214) ~[gson-2.10.jar%23107!/:?] {}     at com.google.gson.Gson.fromJson(Gson.java:1124) ~[gson-2.10.jar%23107!/:?] {}     at com.google.gson.Gson.fromJson(Gson.java:1034) ~[gson-2.10.jar%23107!/:?] {}     at com.google.gson.Gson.fromJson(Gson.java:969) ~[gson-2.10.jar%23107!/:?] {}     at com.hidoni.transmog.config.Config.loadConfigFromFile(Config.java:28) ~[transmog-forge-1.2.4+1.20.jar%23496!/:1.2.4+1.20] {re:mixin,re:classloading}     at com.hidoni.transmog.Transmog.loadConfig(Transmog.java:18) ~[transmog-forge-1.2.4+1.20.jar%23496!/:1.2.4+1.20] {re:classloading}     at com.hidoni.transmog.Transmog.init(Transmog.java:11) ~[transmog-forge-1.2.4+1.20.jar%23496!/:1.2.4+1.20] {re:classloading}     at com.hidoni.transmog.TransmogForge.<init>(TransmogForge.java:10) ~[transmog-forge-1.2.4+1.20.jar%23496!/:1.2.4+1.20] {re:classloading}     at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] {}     at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?] {}     at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?] {}     at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?] {}     at java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?] {}     at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:68) ~[javafmllanguage-1.20.1-47.2.0.jar%23508!/:?] {}     at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$10(ModContainer.java:123) ~[fmlcore-1.20.1-47.2.0.jar%23507!/:?] {}     at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}     at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {}     at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}     at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}     at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {}     at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {}     at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {} -- System Details -- Details:     Minecraft Version: 1.20.1     Minecraft Version ID: 1.20.1     Operating System: Windows 11 (amd64) version 10.0     Java Version: 17.0.8, Microsoft     Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Microsoft     Memory: 770444472 bytes (734 MiB) / 1577058304 bytes (1504 MiB) up to 21474836480 bytes (20480 MiB)     CPUs: 16     Processor Vendor: GenuineIntel     Processor Name: 13th Gen Intel(R) Core(TM) i5-13400F     Identifier: Intel64 Family 6 Model 191 Stepping 2     Microarchitecture: unknown     Frequency (GHz): 2.50     Number of physical packages: 1     Number of physical CPUs: 10     Number of logical CPUs: 16     Graphics card #0 name: NVIDIA GeForce RTX 4060     Graphics card #0 vendor: NVIDIA (0x10de)     Graphics card #0 VRAM (MB): 4095.00     Graphics card #0 deviceId: 0x2882     Graphics card #0 versionInfo: DriverVersion=31.0.15.4601     Memory slot #0 capacity (MB): 16384.00     Memory slot #0 clockSpeed (GHz): 4.80     Memory slot #0 type: Unknown     Memory slot #1 capacity (MB): 16384.00     Memory slot #1 clockSpeed (GHz): 4.80     Memory slot #1 type: Unknown     Virtual memory max (MB): 65369.07     Virtual memory used (MB): 14889.34     Swap memory total (MB): 32768.00     Swap memory used (MB): 0.00     JVM Flags: 9 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx20G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M     Loaded Shaderpack: (off)     ModLauncher: 10.0.9+10.0.9+main.dcd20f30     ModLauncher launch target: forgeclient     ModLauncher naming: srg     ModLauncher services:          mixin-0.8.5.jar mixin PLUGINSERVICE          eventbus-6.0.5.jar eventbus PLUGINSERVICE          fmlloader-1.20.1-47.2.0.jar slf4jfixer PLUGINSERVICE          fmlloader-1.20.1-47.2.0.jar object_holder_definalize PLUGINSERVICE          fmlloader-1.20.1-47.2.0.jar runtime_enum_extender PLUGINSERVICE          fmlloader-1.20.1-47.2.0.jar capability_token_subclass PLUGINSERVICE          accesstransformers-8.0.4.jar accesstransformer PLUGINSERVICE          fmlloader-1.20.1-47.2.0.jar runtimedistcleaner PLUGINSERVICE          modlauncher-10.0.9.jar mixin TRANSFORMATIONSERVICE          modlauncher-10.0.9.jar fml TRANSFORMATIONSERVICE      FML Language Providers:          [email protected]         lowcodefml@null         javafml@null     Mod List:          player-animation-lib-forge-1.0.2-rc1+1.20.jar     |Player Animator               |playeranimator                |1.0.2-rc1+1.20      |COMMON_SET|Manifest: NOSIGNATURE         hourglass-1.20-1.2.1.1.jar                        |Hourglass                     |hourglass                     |1.2.1.1             |COMMON_SET|Manifest: NOSIGNATURE         Neat-1.20-35-FORGE.jar                            |Neat                          |neat                          |1.20-35-FORGE       |COMMON_SET|Manifest: NOSIGNATURE         MaxHealthFix-Forge-1.20.1-12.0.2.jar              |MaxHealthFix                  |maxhealthfix                  |12.0.2              |COMMON_SET|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         lootbeams-1.20.1-1.2.5.jar                        |LootBeams                     |lootbeams                     |1.20.1              |COMMON_SET|Manifest: NOSIGNATURE         clickadv-1.20.1-3.7.jar                           |clickadv mod                  |clickadv                      |1.20.1-3.7          |COMMON_SET|Manifest: NOSIGNATURE         balm-forge-1.20.1-7.2.2.jar                       |Balm                          |balm                          |7.2.2               |COMMON_SET|Manifest: NOSIGNATURE         dynview-1.20.1-3.9.jar                            |Dynamic view distance         |dynview                       |2.3                 |COMMON_SET|Manifest: NOSIGNATURE         immersive_armors-1.6.1+1.20.1-forge.jar           |Immersive Armors              |immersive_armors              |1.6.1+1.20.1        |COMMON_SET|Manifest: NOSIGNATURE         JustEnoughResources-1.20.1-1.4.0.247.jar          |Just Enough Resources         |jeresources                   |1.4.0.247           |COMMON_SET|Manifest: NOSIGNATURE         cloth-config-11.1.118-forge.jar                   |Cloth Config v10 API          |cloth_config                  |11.1.118            |COMMON_SET|Manifest: NOSIGNATURE         embeddium-0.3.12+mc1.20.1.jar                     |Embeddium                     |embeddium                     |0.3.12+mc1.20.1     |COMMON_SET|Manifest: NOSIGNATURE         stylecolonies-1.3.2.jar                           |stylecolonies mod             |stylecolonies                 |1.3.2               |COMMON_SET|Manifest: NOSIGNATURE         solapplepie-1.20.1-2.3.0.jar                      |Spice of Life: Apple Pie Editi|solapplepie                   |1.20.1-2.3.0        |COMMON_SET|Manifest: NOSIGNATURE         corpse-forge-1.20.1-1.0.12.jar                    |Corpse                        |corpse                        |1.20.1-1.0.12       |COMMON_SET|Manifest: NOSIGNATURE         repurposed_structures-7.1.13+1.20.1-forge.jar     |Repurposed Structures         |repurposed_structures         |7.1.13+1.20.1-forge |COMMON_SET|Manifest: NOSIGNATURE         BotanyTrees-Forge-1.20.1-9.0.11.jar               |BotanyTrees                   |botanytrees                   |9.0.11              |COMMON_SET|Manifest: NOSIGNATURE         supermartijn642corelib-1.1.17-forge-mc1.20.1.jar  |SuperMartijn642's Core Lib    |supermartijn642corelib        |1.1.17              |COMMON_SET|Manifest: NOSIGNATURE         resourcefulconfig-forge-1.20.1-2.1.2.jar          |Resourcefulconfig             |resourcefulconfig             |2.1.2               |COMMON_SET|Manifest: NOSIGNATURE         hostilevillages-1.20.1-5.3.jar                    |Example Mod                   |hostilevillages               |1.20.1-5.3          |COMMON_SET|Manifest: NOSIGNATURE         spark-1.10.53-forge.jar                           |spark                         |spark                         |1.10.53             |COMMON_SET|Manifest: NOSIGNATURE         portablemobs-1.2.0-forge-mc1.20.jar               |Portable Mobs                 |portablemobs                  |1.2.0               |COMMON_SET|Manifest: NOSIGNATURE         Philips-Ruins1.20.1-3.5.jar                       |Philips Ruins                 |philipsruins                  |3.4                 |COMMON_SET|Manifest: NOSIGNATURE         curios-forge-5.8.0-beta.2+1.20.1.jar              |Curios API                    |curios                        |5.8.0-beta.2+1.20.1 |COMMON_SET|Manifest: NOSIGNATURE         corail_woodcutter-1.20.1-3.0.4.jar                |Corail Woodcutter             |corail_woodcutter             |3.0.4               |COMMON_SET|Manifest: NOSIGNATURE         oculus-mc1.20.1-1.6.15a.jar                       |Oculus                        |oculus                        |1.6.15a             |COMMON_SET|Manifest: NOSIGNATURE         Searchables-forge-1.20.1-1.0.2.jar                |Searchables                   |searchables                   |1.0.2               |COMMON_SET|Manifest: NOSIGNATURE         bettervillage-forge-1.20.1-3.2.0.jar              |Better village                |bettervillage                 |3.1.0               |COMMON_SET|Manifest: NOSIGNATURE         NaturesAura-39.4.jar                              |NaturesAura                   |naturesaura                   |39.4                |COMMON_SET|Manifest: NOSIGNATURE         flib-1.20.1-0.0.11.jar                            |flib                          |flib                          |0.0.11              |COMMON_SET|Manifest: 1f:47:ac:b1:61:82:96:b8:47:19:16:d2:61:81:11:60:3a:06:4b:61:31:56:7d:44:31:1e:0c:6f:22:5b:4c:ed         JadeAddons-1.20.1-forge-5.2.2.jar                 |Jade Addons                   |jadeaddons                    |5.2.2               |COMMON_SET|Manifest: NOSIGNATURE         l2library-2.4.24.jar                              |L2 Library                    |l2library                     |2.4.24              |COMMON_SET|Manifest: NOSIGNATURE         toms_storage-1.20-1.6.6.jar                       |Tom's Simple Storage Mod      |toms_storage                  |1.6.6               |COMMON_SET|Manifest: NOSIGNATURE         crafting-on-a-stick-1.20.1-1.1.4.jar              |Crafting On A Stick           |crafting_on_a_stick           |1.1.4               |COMMON_SET|Manifest: NOSIGNATURE         SmartBrainLib-forge-1.20.1-1.13.jar               |SmartBrainLib                 |smartbrainlib                 |1.13                |COMMON_SET|Manifest: NOSIGNATURE         elytraslot-forge-6.3.0+1.20.1.jar                 |Elytra Slot                   |elytraslot                    |6.3.0+1.20.1        |COMMON_SET|Manifest: NOSIGNATURE         l2tabs-0.2.6.jar                                  |L2 Tabs                       |l2tabs                        |0.2.6               |COMMON_SET|Manifest: NOSIGNATURE         betterharvesting-1.20-forge-0.0.2.jar             |Better Harvesting             |betterharvesting              |0.0.2               |COMMON_SET|Manifest: NOSIGNATURE         jei-1.20.1-forge-15.3.0.4.jar                     |Just Enough Items             |jei                           |15.3.0.4            |COMMON_SET|Manifest: NOSIGNATURE         Nameless Trinkets-1.20.1-1.7.8.jar                |Nameless Trinkets             |nameless_trinkets             |1.20.1-1.7.8        |COMMON_SET|Manifest: NOSIGNATURE         AttributeFix-Forge-1.20.1-21.0.4.jar              |AttributeFix                  |attributefix                  |21.0.4              |COMMON_SET|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         libraryferret-forge-1.20.1-4.0.0.jar              |Library ferret                |libraryferret                 |4.0.0               |COMMON_SET|Manifest: NOSIGNATURE         goblintraders-forge-1.20.1-1.9.3.jar              |Goblin Traders                |goblintraders                 |1.9.3               |COMMON_SET|Manifest: 0d:78:5f:44:c0:47:0c:8c:e2:63:a3:04:43:d4:12:7d:b0:7c:35:37:dc:40:b1:c1:98:ec:51:eb:3b:3c:45:99         epicsamurai-0.0.42-1.20.1-neo.jar                 |Epic Samurai                  |epicsamurai                   |0.0.42-1.20.1-neo   |COMMON_SET|Manifest: NOSIGNATURE         caelus-forge-3.1.0+1.20.jar                       |Caelus API                    |caelus                        |3.1.0+1.20          |COMMON_SET|Manifest: NOSIGNATURE         awesomedungeon-forge-1.20.1-3.2.0.jar             |Awesome dungeon               |awesomedungeon                |3.2.0               |COMMON_SET|Manifest: NOSIGNATURE         forgivingworld-1.20.1-4.3.jar                     |Forgiving world mod           |forgivingworld                |1.20.1-4.3          |COMMON_SET|Manifest: NOSIGNATURE         NaturesCompass-1.20.1-1.11.2-forge.jar            |Nature's Compass              |naturescompass                |1.20.1-1.11.2-forge |COMMON_SET|Manifest: NOSIGNATURE         EpheroLib-1.20.1-FORGE-1.2.0.jar                  |BOZOID                        |epherolib                     |0.1.2               |COMMON_SET|Manifest: NOSIGNATURE         badpackets-forge-0.4.3.jar                        |Bad Packets                   |badpackets                    |0.4.3               |COMMON_SET|Manifest: NOSIGNATURE         BotanyPots-Forge-1.20.1-13.0.26.jar               |BotanyPots                    |botanypots                    |13.0.26             |COMMON_SET|Manifest: NOSIGNATURE         l2screentracker-0.1.4.jar                         |L2 Screen Tracker             |l2screentracker               |0.1.4               |COMMON_SET|Manifest: NOSIGNATURE         forge-1.20.1-47.2.0-universal.jar                 |Forge                         |forge                         |47.2.0              |COMMON_SET|Manifest: 84:ce:76:e8:45:35:e4:0e:63:86:df:47:59:80:0f:67:6c:c1:5f:6e:5f:4d:b3:54:47:1a:9f:7f:ed:5e:f2:90         awesomedungeonocean-forge-1.20.1-3.3.0.jar        |Awesome dungeon edition ocean |awesomedungeonocean           |3.3.0               |COMMON_SET|Manifest: NOSIGNATURE         tectonic-forge-1.19.3-2.3.4.jar                   |Tectonic                      |tectonic                      |2.3.4               |COMMON_SET|Manifest: NOSIGNATURE         DistractingTrims-Forge-1.20.1-2.0.3.jar           |DistractingTrims              |distractingtrims              |2.0.3               |COMMON_SET|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         client-1.20.1-20230612.114412-srg.jar             |Minecraft                     |minecraft                     |1.20.1              |COMMON_SET|Manifest: a1:d4:5e:04:4f:d3:d6:e0:7b:37:97:cf:77:b0:de:ad:4a:47:ce:8c:96:49:5f:0a:cf:8c:ae:b2:6d:4b:8a:3f         smoothchunk-1.20.1-3.6.jar                        |Smoothchunk mod               |smoothchunk                   |1.20.1-3.6          |COMMON_SET|Manifest: NOSIGNATURE         logprot-1.20.1-3.3.jar                            |Logprot                       |logprot                       |1.4                 |COMMON_SET|Manifest: NOSIGNATURE         voicechat-forge-1.20.1-2.5.12.jar                 |Simple Voice Chat             |voicechat                     |1.20.1-2.5.12       |COMMON_SET|Manifest: NOSIGNATURE         sound-physics-remastered-forge-1.20.1-1.3.1.jar   |Sound Physics Remastered      |sound_physics_remastered      |1.20.1-1.3.1        |COMMON_SET|Manifest: NOSIGNATURE         TerraBlender-forge-1.20.1-3.0.1.4.jar             |TerraBlender                  |terrablender                  |3.0.1.4             |ERROR     |Manifest: NOSIGNATURE         BiomesOPlenty-1.20.1-18.0.0.598.jar               |Biomes O' Plenty              |biomesoplenty                 |18.0.0.598          |COMMON_SET|Manifest: NOSIGNATURE         MouseTweaks-forge-mc1.20-2.25.jar                 |Mouse Tweaks                  |mousetweaks                   |2.25                |COMMON_SET|Manifest: NOSIGNATURE         Companion-1.20.1-forge-5.0.1.jar                  |Companion                     |companion                     |5.0.1               |COMMON_SET|Manifest: NOSIGNATURE         awesomedungeonnether-forge-1.20.1-3.1.1.jar       |Awesome dungeon nether        |awesomedungeonnether          |3.1.1               |COMMON_SET|Manifest: NOSIGNATURE         commonality-1.20.1-7.0.0.jar                      |Commonality                   |commonality                   |7.0.0               |COMMON_SET|Manifest: NOSIGNATURE         pamhc2crops-1.20-1.0.3.jar                        |Pam's HarvestCraft 2 - Crops  |pamhc2crops                   |1.0.3               |COMMON_SET|Manifest: NOSIGNATURE         cleanswing-1.20-1.5.jar                           |Clean Swing Through Grass     |cleanswing                    |1.20-1.5            |COMMON_SET|Manifest: NOSIGNATURE         spectrelib-forge-0.13.15+1.20.1.jar               |SpectreLib                    |spectrelib                    |0.13.15+1.20.1      |COMMON_SET|Manifest: NOSIGNATURE         domum_ornamentum-1.20.1-1.0.184-BETA-universal.jar|Domum Ornamentum              |domum_ornamentum              |1.20.1-1.0.184-BETA |COMMON_SET|Manifest: NOSIGNATURE         betterfpsdist-1.20.1-4.3.jar                      |betterfpsdist mod             |betterfpsdist                 |1.20.1-4.3          |COMMON_SET|Manifest: NOSIGNATURE         flywheel-forge-1.20.1-0.6.10-7.jar                |Flywheel                      |flywheel                      |0.6.10-7            |COMMON_SET|Manifest: NOSIGNATURE         pamhc2foodcore-1.20.4-1.0.5.jar                   |Pam's HarvestCraft 2 - Food Co|pamhc2foodcore                |1.0.5               |COMMON_SET|Manifest: NOSIGNATURE         Croptopia-1.20.1-FORGE-3.0.4.jar                  |Croptopia                     |croptopia                     |3.0.4               |COMMON_SET|Manifest: NOSIGNATURE         polymorph-forge-0.49.3+1.20.1.jar                 |Polymorph                     |polymorph                     |0.49.3+1.20.1       |COMMON_SET|Manifest: NOSIGNATURE         Zeta-1.0-15.jar                                   |Zeta                          |zeta                          |1.0-15              |COMMON_SET|Manifest: NOSIGNATURE         extended_armor-1.20.1-1.8.jar                     |Extended Armor                |extended_armor                |1.20.1-1.8          |COMMON_SET|Manifest: NOSIGNATURE         structurize-1.20.1-1.0.718-BETA.jar               |Structurize                   |structurize                   |1.20.1-1.0.718-BETA |COMMON_SET|Manifest: NOSIGNATURE         tlc_forge-1.0.3-R-1.20.X.jar                      |The Lost Castle               |tlc                           |1.0.2               |ERROR     |Manifest: NOSIGNATURE         appleskin-forge-mc1.20.1-2.5.1.jar                |AppleSkin                     |appleskin                     |2.5.1+mc1.20.1      |COMMON_SET|Manifest: NOSIGNATURE         lootr-forge-1.20-0.7.33.83.jar                    |Lootr                         |lootr                         |0.7.33.82           |COMMON_SET|Manifest: NOSIGNATURE         occultism-1.20.1-1.124.3.jar                      |Occultism                     |occultism                     |1.124.3             |COMMON_SET|Manifest: NOSIGNATURE         biomemusic-1.20.1-2.3.jar                         |biomemusic mod                |biomemusic                    |1.20.1-2.3          |COMMON_SET|Manifest: NOSIGNATURE         FriendlyFire-Forge-1.20.1-18.0.6.jar              |FriendlyFire                  |friendlyfire                  |18.0.6              |COMMON_SET|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         extremesoundmuffler-3.41-forge-1.20.jar           |Extreme Sound Muffler         |extremesoundmuffler           |3.41-forge-1.20     |COMMON_SET|Manifest: NOSIGNATURE         cosmeticarmorreworked-1.20.1-v1a.jar              |CosmeticArmorReworked         |cosmeticarmorreworked         |1.20.1-v1a          |COMMON_SET|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         chunksending-1.20.1-2.8.jar                       |chunksending mod              |chunksending                  |1.20.1-2.8          |COMMON_SET|Manifest: NOSIGNATURE         cristellib-1.1.5-forge.jar                        |Cristel Lib                   |cristellib                    |1.1.5               |COMMON_SET|Manifest: NOSIGNATURE         tetra-1.20.1-6.3.0.jar                            |tetra                         |tetra                         |6.3.0               |COMMON_SET|Manifest: NOSIGNATURE         CyclopsCore-1.20.1-1.19.0.jar                     |Cyclops Core                  |cyclopscore                   |1.19.0              |COMMON_SET|Manifest: NOSIGNATURE         TreeChop-1.20.1-forge-0.19.0.jar                  |HT's TreeChop                 |treechop                      |0.18.8              |COMMON_SET|Manifest: NOSIGNATURE         transmog-forge-1.2.4+1.20.jar                     |Transmog                      |transmog                      |1.2.4+1.20          |ERROR     |Manifest: NOSIGNATURE         geckolib-forge-1.20.1-4.4.4.jar                   |GeckoLib 4                    |geckolib                      |4.4.4               |COMMON_SET|Manifest: NOSIGNATURE         ars_nouveau-1.20.1-4.10.0-all.jar                 |Ars Nouveau                   |ars_nouveau                   |4.10.0              |COMMON_SET|Manifest: NOSIGNATURE         eidolon_repraised-1.20.1-0.3.8.9.jar              |Eidolon:Repraised             |eidolon                       |1.20.1-0.3.8.9      |COMMON_SET|Manifest: NOSIGNATURE         towntalk-1.20.1-1.0.1.jar                         |TownTalk                      |towntalk                      |1.0.1               |COMMON_SET|Manifest: NOSIGNATURE         connectivity-1.20.1-5.5.jar                       |Connectivity Mod              |connectivity                  |1.20.1-5.5          |COMMON_SET|Manifest: NOSIGNATURE         sophisticatedcore-1.20.1-0.6.18.597.jar           |Sophisticated Core            |sophisticatedcore             |0.6.18.597          |COMMON_SET|Manifest: NOSIGNATURE         structureessentials-1.20.1-3.3.jar                |Structure Essentials mod      |structureessentials           |1.20.1-3.3          |COMMON_SET|Manifest: NOSIGNATURE         cookingforblockheads-forge-1.20.1-16.0.3.jar      |CookingForBlockheads          |cookingforblockheads          |16.0.3              |COMMON_SET|Manifest: NOSIGNATURE         Controlling-forge-1.20.1-12.0.2.jar               |Controlling                   |controlling                   |12.0.2              |COMMON_SET|Manifest: NOSIGNATURE         citadel-2.5.4-1.20.1.jar                          |Citadel                       |citadel                       |2.5.4               |COMMON_SET|Manifest: NOSIGNATURE         lootintegrations-1.20.1-3.4.jar                   |Lootintegrations mod          |lootintegrations              |1.20.1-3.4          |COMMON_SET|Manifest: NOSIGNATURE         mc_style_paintings forge-1.20.1.jar               |minecraft style paintings     |minecraft_style_paintings     |1.0.0               |COMMON_SET|Manifest: NOSIGNATURE         mixinextras-forge-0.2.0-beta.8.jar                |MixinExtras                   |mixinextras                   |0.2.0-beta.8        |COMMON_SET|Manifest: NOSIGNATURE         Bookshelf-Forge-1.20.1-20.1.10.jar                |Bookshelf                     |bookshelf                     |20.1.10             |COMMON_SET|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.20.1-3.20.5.1039.jar     |Sophisticated Backpacks       |sophisticatedbackpacks        |3.20.5.1039         |COMMON_SET|Manifest: NOSIGNATURE         BetterCopper 1.20.1 -1.2.jar                      |Better Copper                 |bettercopper                  |1.2                 |COMMON_SET|Manifest: NOSIGNATURE         Rex's-AdditionalStructures-1.20.x-(v.4.2.1).jar   |Additional Structures         |additionalstructures          |4.2.1               |COMMON_SET|Manifest: NOSIGNATURE         l2damagetracker-0.2.8.jar                         |L2 Damage Tracker             |l2damagetracker               |0.2.8               |COMMON_SET|Manifest: NOSIGNATURE         twilightforest-1.20.1-4.3.2145-universal.jar      |The Twilight Forest           |twilightforest                |4.3.2145            |COMMON_SET|Manifest: NOSIGNATURE         FarmersDelight-1.20.1-1.2.4.jar                   |Farmer's Delight              |farmersdelight                |1.20.1-1.2.4        |COMMON_SET|Manifest: NOSIGNATURE         curious_armor_stands-1.20-5.0.1.jar               |Curious Armor Stands          |curious_armor_stands          |1.20-5.0.1          |COMMON_SET|Manifest: NOSIGNATURE         AmbientSounds_FORGE_v5.3.9_mc1.20.1.jar           |AmbientSounds                 |ambientsounds                 |5.3.9               |COMMON_SET|Manifest: NOSIGNATURE         getittogetherdrops-forge-1.20-1.3.jar             |Get It Together, Drops!       |getittogetherdrops            |1.3                 |COMMON_SET|Manifest: NOSIGNATURE         endrem_forge-5.2.3-R-1.20.X.jar                   |End Remastered                |endrem                        |5.2.3-R-1.20.1      |COMMON_SET|Manifest: NOSIGNATURE         bfendcities-1.0.jar                               |Big F&$%ing End Cities        |bfendcities                   |1.0                 |COMMON_SET|Manifest: NOSIGNATURE         colorfulhearts-forge-1.20.1-4.0.4.jar             |Colorful Hearts               |colorfulhearts                |4.0.4               |COMMON_SET|Manifest: NOSIGNATURE         zmedievalmusic-1.20.1-2.1.jar                     |medievalmusic mod             |medievalmusic                 |1.20.1-2.1          |COMMON_SET|Manifest: NOSIGNATURE         pamhc2foodextended-1.20.4-1.0.1.jar               |Pam's HarvestCraft 2 - Food Ex|pamhc2foodextended            |0.0NONE             |COMMON_SET|Manifest: NOSIGNATURE         L_Enders_Cataclysm-1.90 -1.20.1.jar               |Cataclysm Mod                 |cataclysm                     |1.0                 |COMMON_SET|Manifest: NOSIGNATURE         Patchouli-1.20.1-84-FORGE.jar                     |Patchouli                     |patchouli                     |1.20.1-84-FORGE     |COMMON_SET|Manifest: NOSIGNATURE         ars_artifice-1.20.1-2.0.4.jar                     |Ars Artifice                  |ars_artifice                  |1.20.1-2.0.4        |COMMON_SET|Manifest: NOSIGNATURE         blockui-1.20.1-1.0.151-BETA.jar                   |UI Library Mod                |blockui                       |1.20.1-1.0.151-BETA |COMMON_SET|Manifest: NOSIGNATURE         storageracks-1.20.1-1.7.jar                       |Storage Racks                 |storageracks                  |1.20.1-1.7          |COMMON_SET|Manifest: NOSIGNATURE         multipiston-1.20-1.2.43-RELEASE.jar               |Multi-Piston                  |multipiston                   |1.20-1.2.43-RELEASE |COMMON_SET|Manifest: NOSIGNATURE         resourcefullib-forge-1.20.1-2.1.20.jar            |Resourceful Lib               |resourcefullib                |2.1.20              |COMMON_SET|Manifest: NOSIGNATURE         architectury-9.2.14-forge.jar                     |Architectury                  |architectury                  |9.2.14              |COMMON_SET|Manifest: NOSIGNATURE         cupboard-1.20.1-2.6.jar                           |Cupboard utilities            |cupboard                      |1.20.1-2.6          |COMMON_SET|Manifest: NOSIGNATURE         ars_ocultas-1.20.1-1.2.2-all.jar                  |Ars Ocultas                   |ars_ocultas                   |1.2.2               |COMMON_SET|Manifest: NOSIGNATURE         inventoryessentials-forge-1.20.1-8.2.3.jar        |Inventory Essentials          |inventoryessentials           |8.2.3               |COMMON_SET|Manifest: NOSIGNATURE         framework-forge-1.20.1-0.6.27.jar                 |Framework                     |framework                     |0.6.27              |COMMON_SET|Manifest: 0d:78:5f:44:c0:47:0c:8c:e2:63:a3:04:43:d4:12:7d:b0:7c:35:37:dc:40:b1:c1:98:ec:51:eb:3b:3c:45:99         Towns-and-Towers-1.12-Fabric+Forge.jar            |Towns and Towers              |t_and_t                       |0.0NONE             |COMMON_SET|Manifest: NOSIGNATURE         toomanyglyphs-1.20.1-2.3.2.12345.jar              |Too Many Glyphs               |toomanyglyphs                 |2.3.2.12345         |COMMON_SET|Manifest: NOSIGNATURE         quark_delight_1.0.0_forge_1.20.1.jar              |Quark Delight                 |quarkdelight                  |1.0.0               |COMMON_SET|Manifest: NOSIGNATURE         inventorysorter-1.20.1-23.0.1.jar                 |Simple Inventory Sorter       |inventorysorter               |23.0.1              |COMMON_SET|Manifest: NOSIGNATURE         Cucumber-1.20.1-7.0.8.jar                         |Cucumber Library              |cucumber                      |7.0.8               |COMMON_SET|Manifest: NOSIGNATURE         trashslot-forge-1.20-15.1.0.jar                   |TrashSlot                     |trashslot                     |15.1.0              |COMMON_SET|Manifest: NOSIGNATURE         treasuredistance-1.20-1.2.jar                     |Treasure Distance mod         |treasuredistance              |1.20-1.2            |COMMON_SET|Manifest: NOSIGNATURE         pamhc2trees-1.20-1.0.2.jar                        |Pam's HarvestCraft 2 - Trees  |pamhc2trees                   |1.0.2               |COMMON_SET|Manifest: NOSIGNATURE         awesomedungeonend-forge-1.20.1-3.1.1.jar          |Awesome dungeon the end       |awesomedungeonend             |3.1.1               |COMMON_SET|Manifest: NOSIGNATURE         sophisticatedstorage-1.20.1-0.10.20.778.jar       |Sophisticated Storage         |sophisticatedstorage          |0.10.20.778         |COMMON_SET|Manifest: NOSIGNATURE         limitedchunks-1.20.1-4.0.jar                      |Limited Chunkloading          |limitedchunks                 |1.8                 |COMMON_SET|Manifest: NOSIGNATURE         TinyCoal-forge-1.20.1-1.1.5.jar                   |Tiny Coal                     |tinycoal                      |1.1.5               |COMMON_SET|Manifest: NOSIGNATURE         create-1.20.1-0.5.1.f.jar                         |Create                        |create                        |0.5.1.f             |COMMON_SET|Manifest: NOSIGNATURE         waystones-forge-1.20-14.1.3.jar                   |Waystones                     |waystones                     |14.1.3              |COMMON_SET|Manifest: NOSIGNATURE         journeymap-1.20.1-5.9.20-forge.jar                |Journeymap                    |journeymap                    |5.9.20              |COMMON_SET|Manifest: NOSIGNATURE         comforts-forge-6.3.5+1.20.1.jar                   |Comforts                      |comforts                      |6.3.5+1.20.1        |COMMON_SET|Manifest: NOSIGNATURE         artifacts-forge-9.4.2.jar                         |Artifacts                     |artifacts                     |9.4.2               |COMMON_SET|Manifest: NOSIGNATURE         [1.20.1-forge]-Epic-Knights-9.7.jar               |Epic Knights Mod              |magistuarmory                 |9.7                 |COMMON_SET|Manifest: NOSIGNATURE         ExplorersCompass-1.20.1-1.3.3-forge.jar           |Explorer's Compass            |explorerscompass              |1.20.1-1.3.3-forge  |COMMON_SET|Manifest: NOSIGNATURE         farsight-1.20.1-3.6.jar                           |Farsight mod                  |farsight_view                 |1.20.1-3.6          |COMMON_SET|Manifest: NOSIGNATURE         azurelib-neo-1.20.1-2.0.20.jar                    |AzureLib                      |azurelib                      |2.0.20              |COMMON_SET|Manifest: NOSIGNATURE         bloodmagic-1.20.1-3.3.2-44.jar                    |Blood Magic                   |bloodmagic                    |3.3.2-44            |COMMON_SET|Manifest: NOSIGNATURE         tomeofblood-1.20.1-0.4.4-all.jar                  |Tome of Blood: Rebirth        |tomeofblood                   |0.4.4               |COMMON_SET|Manifest: NOSIGNATURE         MysticalAgriculture-1.20.1-7.0.11.jar             |Mystical Agriculture          |mysticalagriculture           |7.0.11              |COMMON_SET|Manifest: NOSIGNATURE         MysticalAgradditions-1.20.1-7.0.3.jar             |Mystical Agradditions         |mysticalagradditions          |7.0.3               |COMMON_SET|Manifest: NOSIGNATURE         craftingtweaks-forge-1.20.1-18.2.3.jar            |CraftingTweaks                |craftingtweaks                |18.2.3              |COMMON_SET|Manifest: NOSIGNATURE         tetrasdelight-1.20.1-1.jar                        |Tetra's Delight               |tetrasdelight                 |1.20.1-1            |COMMON_SET|Manifest: NOSIGNATURE         vanillaplustools-1.20-1.0.jar                     |Vanilla+ Tools                |vanillaplustools              |1.20-1.0            |COMMON_SET|Manifest: NOSIGNATURE         simplyswords-forge-1.54.0-1.20.1.jar              |Simply Swords                 |simplyswords                  |1.54.0-1.20.1       |COMMON_SET|Manifest: NOSIGNATURE         EnchantmentDescriptions-Forge-1.20.1-17.0.14.jar  |EnchantmentDescriptions       |enchdesc                      |17.0.14             |COMMON_SET|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         titanium-1.20.1-3.8.27.jar                        |Titanium                      |titanium                      |3.8.27              |COMMON_SET|Manifest: NOSIGNATURE         Jade-1.20.1-forge-11.8.0.jar                      |Jade                          |jade                          |11.8.0              |COMMON_SET|Manifest: NOSIGNATURE         CreativeCore_FORGE_v2.11.25_mc1.20.1.jar          |CreativeCore                  |creativecore                  |2.11.25             |COMMON_SET|Manifest: NOSIGNATURE         modulargolems-2.4.30.jar                          |Modular Golems                |modulargolems                 |2.4.30              |COMMON_SET|Manifest: NOSIGNATURE         easy-villagers-forge-1.20.1-1.1.4.jar             |Easy Villagers                |easy_villagers                |1.20.1-1.1.4        |COMMON_SET|Manifest: NOSIGNATURE         anvilbalance-1.20-1.1.0-all.jar                   |anvilbalance mod              |anvilbalance                  |1.20-1.1.0          |COMMON_SET|Manifest: NOSIGNATURE         Quark-4.0-439.jar                                 |Quark                         |quark                         |4.0-439             |COMMON_SET|Manifest: NOSIGNATURE         mutil-1.20.1-6.1.1.jar                            |mutil                         |mutil                         |6.1.1               |COMMON_SET|Manifest: NOSIGNATURE         mes-1.3-1.20-forge.jar                            |Moog's End Structures         |mes                           |1.3-1.20-forge      |COMMON_SET|Manifest: NOSIGNATURE         ars_elemental-1.20.1-0.6.4.1.jar                  |Ars Elemental                 |ars_elemental                 |1.20.1-0.6.4.1      |COMMON_SET|Manifest: NOSIGNATURE         irons_spellbooks-1.20.1-3.1.3.jar                 |Iron's Spells 'n Spellbooks   |irons_spellbooks              |1.20.1-3.1.3        |COMMON_SET|Manifest: NOSIGNATURE         armourersworkshop-forge-1.20.1-2.1.2.jar          |Armourer's Workshop           |armourers_workshop            |2.1.2               |COMMON_SET|Manifest: 58:d0:3b:4b:a0:4b:43:fb:59:0f:27:f5:39:d5:65:de:9a:24:ee:2e:15:48:b1:4f:78:1a:e1:ef:cd:a4:d9:0a         modonomicon-1.20.1-forge-1.67.0.jar               |Modonomicon                   |modonomicon                   |1.67.0              |COMMON_SET|Manifest: NOSIGNATURE         minecolonies-1.20.1-1.1.550-BETA.jar              |MineColonies                  |minecolonies                  |1.20.1-1.1.550-BETA |COMMON_SET|Manifest: NOSIGNATURE         JadeColonies-1.20.1-1.4.2.jar                     |JadeColonies                  |jadecolonies                  |1.4.2               |COMMON_SET|Manifest: NOSIGNATURE         mvs-4.1.1-1.20-forge.jar                          |Moog's Voyager Structures     |mvs                           |4.1.1-1.20-forge    |COMMON_SET|Manifest: NOSIGNATURE         creeperoverhaul-3.0.2-forge.jar                   |Creeper Overhaul              |creeperoverhaul               |3.0.2               |COMMON_SET|Manifest: NOSIGNATURE         functionalstorage-1.20.1-1.2.10.jar               |Functional Storage            |functionalstorage             |1.20.1-1.2.10       |COMMON_SET|Manifest: NOSIGNATURE         apexcore-1.20.1-10.0.0.jar                        |ApexCore                      |apexcore                      |10.0.0              |COMMON_SET|Manifest: NOSIGNATURE         infusedfoods-1.20.1-10.0.0.jar                    |InfusedFoods                  |infusedfoods                  |10.0.0              |COMMON_SET|Manifest: NOSIGNATURE         moredragoneggs-4.0.jar                            |More Dragon Eggs              |moredragoneggs                |4.0                 |COMMON_SET|Manifest: NOSIGNATURE         charmofundying-forge-6.5.0+1.20.1.jar             |Charm of Undying              |charmofundying                |6.5.0+1.20.1        |COMMON_SET|Manifest: NOSIGNATURE         l2itemselector-0.1.8.jar                          |L2 Item Selector              |l2itemselector                |0.1.8               |COMMON_SET|Manifest: NOSIGNATURE         expandability-9.0.0.jar                           |ExpandAbility                 |expandability                 |9.0.0               |COMMON_SET|Manifest: NOSIGNATURE     Flywheel Backend: GL33 Instanced Arrays     Crash Report UUID: b50f67e4-a892-4098-a1f4-4fb465c66885     FML: 47.2     Forge: net.minecraftforge:47.2.0
  • Topics

×
×
  • Create New...

Important Information

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