Jump to content

Tile Entity Bugs, part 2


Flenix

Recommended Posts

Hey,

 

I figured I'll let the old thread die as it's bugs were fixed, but my TileEntity still has a few different bugs.

 

1. Firstly, if I shift-click from my inventory to the chest, it clones the item, leaving a ghost in my inventory. The inventory-side item is unusable (and if it's a block, it disappears when I try and place it) so it's only a graphical bug, but I'd still like to fix it. Any ideas? There is no stacktrace.

 

2. How do I set the texture O.o I've tried various things that would usually work, but nothing does... (Nothing currently set)

 

3. How do I use multiple GUIs within my mod? Everyone I've asked makes it sound so simple, but I can't get it to work, so obviously I'm missing something. I can get one of the three chests I have to open at a time, but not all 3. FIXED

 

There's quite a few classes that are relevant here, so the easiest way is to just link my github. Note that a lot of the unrelated code isn't done so ignore that ;)

 

 

The main class is pretty big (as you see), so here's everything unimportant cut out:

@Mod(modid="Remula", name="Remula", version="0.0.1")
@NetworkMod(clientSideRequired=true, serverSideRequired=false)
public class Remula { 

public static CreativeTabs tabRemula = new CreativeTabs("tabRemula") {
	public ItemStack getIconItemStack() {
		return new ItemStack(Remula.advancedP5RobotSpawner, 1, 0);
	}

    @Instance("Remula")
    public static Remula instance;
    
    //GUIs
    public static SilvaniteGuiHandler silvaniteGuiHandler = new SilvaniteGuiHandler();
    public static MerciliteGuiHandler merciliteGuiHandler = new MerciliteGuiHandler();
    public static RemulaGuiHandler remulaGuiHandler = new RemulaGuiHandler();

    // Says where the client and server proxy code is loaded.
    @SidedProxy(clientSide="co.uk.silvania.Remula.client.ClientProxy", serverSide="co.uk.silvania.Remula.CommonProxy")
    public static CommonProxy proxy;
    
    //public static int blockRemulaID;
    @SideOnly(Side.CLIENT)

    @PreInit
    public void preInit(FMLPreInitializationEvent event) {
    NetworkRegistry.instance().registerGuiHandler(this, remulaGuiHandler);
    NetworkRegistry.instance().registerGuiHandler(this, merciliteGuiHandler);
    NetworkRegistry.instance().registerGuiHandler(this, silvaniteGuiHandler);
    }
    public static WorldGen worldGen = new WorldGen();

    public final static Block silvaniteChest = new SilvaniteChest(1850).setBlockName("silvaniteChest");
    public final static Block merciliteChest = new MerciliteChest(1851).setBlockName("merciliteChest");
    public final static Block remulaChest = new RemulaChest(1852).setBlockName("remulaChest");


    
    @Init
    public void load(FMLInitializationEvent event) {
            proxy.registerRenderThings();
            proxy.init();

            //Storage and Tile Entites
            LanguageRegistry.addName(silvaniteChest, "Silvanite Chest");
            LanguageRegistry.addName(merciliteChest, "Mercilite Chest");
            LanguageRegistry.addName(remulaChest, "Remula Chest");
           
            //Storage Blocks/Tile Entites
            GameRegistry.registerBlock(silvaniteChest, "silvaniteChest");
            GameRegistry.registerBlock(merciliteChest, "merciliteChest");
            GameRegistry.registerBlock(remulaChest, "remulaChest");
            
            //Tile Entities
            GameRegistry.registerTileEntity(TileEntitySilvaniteChest.class, "tileEntitySilvaniteChest");
            GameRegistry.registerTileEntity(TileEntityMerciliteChest.class, "tileEntityMerciliteChest");
            GameRegistry.registerTileEntity(TileEntityRemulaChest.class, "tileEntityRemulaChest");
            
            //Other Registry Stuff
            LanguageRegistry.instance().addStringLocalization("itemGroup.tabRemula", "en_US", "Remula");
            LanguageRegistry.instance().addStringLocalization("itemGroup.tabAkatoe", "en_US", "Akatoe");
            LanguageRegistry.instance().addStringLocalization("itemGroup.tabBaloinus", "en_US", "Baloinus");
            LanguageRegistry.instance().addStringLocalization("itemGroup.tabDeepSpace", "en_US", "Deep-Space");
            GameRegistry.registerWorldGenerator(new WorldGen());
            NetworkRegistry.instance().registerGuiHandler(this, new SilvaniteGuiHandler());
            NetworkRegistry.instance().registerGuiHandler(this, new MerciliteGuiHandler());
            NetworkRegistry.instance().registerGuiHandler(this, new RemulaGuiHandler());
            GameRegistry.addBiome(akatoePlainsBiome);
    }


@PostInit
    public void postInit(FMLPostInitializationEvent event) {
            // Stub Method
    		}
}

 

Finally on a more advanced note, if you look at my GUI images, you'll see the chests have built-in tanks. How would I make these functional? Each tank should hold 9 buckets-worth of a single liquid, and once a liquid is in it wont accept any other liquid (Like the buildcraft tank). Also if possible, I want the slots above/below to only accept buckets (filled or empty)

 

Any help is great, sorry for so much in one thread :P

width=463 height=200

http://s13.postimg.org/z9mlly2av/siglogo.png[/img]

My mods (Links coming soon)

Cities | Roads | Remula | SilvaniaMod | MoreStats

Link to comment
Share on other sites

UPDATE in relation to #3

 

I was following another thread with a similar issue to one of mine. I'm now getting the "A mod tried to open a gui on the server without being a NetworkMod". However, I couldn't comment on there, because the thread author decided that as his problem was solved, noone else was ever going to get the issue and locked his thread.

 

So, I've updated the GitHub. Only thing changed in the base class was the following line:

 

 

@NetworkMod(clientSideRequired=true, serverSideRequired=false, clientPacketHandlerSpec = @SidedPacketHandler(channels = "RemulaCltPacket", packetHandler = ClientPacketHandler.class), serverPacketHandlerSpec = @SidedPacketHandler(channels = "RemulaSrvPacket", packetHandler = ServerPacketHandler.class))

 

 

The two packet handlers are here: https://github.com/Flenix/Remula/tree/master/co/uk/silvania/Remula/network

 

Anyone able to help?

width=463 height=200

http://s13.postimg.org/z9mlly2av/siglogo.png[/img]

My mods (Links coming soon)

Cities | Roads | Remula | SilvaniaMod | MoreStats

Link to comment
Share on other sites

UPDATE in relation to #3

 

I was following another thread with a similar issue to one of mine. I'm now getting the "A mod tried to open a gui on the server without being a NetworkMod". However, I couldn't comment on there, because the thread author decided that as his problem was solved, noone else was ever going to get the issue and locked his thread.

 

So, I've updated the GitHub. Only thing changed in the base class was the following line:

 

 

@NetworkMod(clientSideRequired=true, serverSideRequired=false, clientPacketHandlerSpec = @SidedPacketHandler(channels = "RemulaCltPacket", packetHandler = ClientPacketHandler.class), serverPacketHandlerSpec = @SidedPacketHandler(channels = "RemulaSrvPacket", packetHandler = ServerPacketHandler.class))

 

 

The two packet handlers are here: https://github.com/Flenix/Remula/tree/master/co/uk/silvania/Remula/network

 

Anyone able to help?

 

What line of code do you use to open your GUI?

Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! |

mah twitter

This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.

Link to comment
Share on other sites

It's in the block class (SilvaniteChest, RemulaChest or MerciliteChest)

 

        @Override
        public boolean onBlockActivated(World world, int x, int y, int z,
                        EntityPlayer player, int i, float j, float k, float l) {
                TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
                if (tileEntity == null || player.isSneaking()) {
                        return false;
                }
        player.openGui(Remula.remulaGuiHandler, 0, world, x, y, z);
                return true;
        }

 

To be fair, it's code I got from a tutorial which has since proved to be less than helpful, so I wouldn't be surprised if something is wrong in there.

width=463 height=200

http://s13.postimg.org/z9mlly2av/siglogo.png[/img]

My mods (Links coming soon)

Cities | Roads | Remula | SilvaniaMod | MoreStats

Link to comment
Share on other sites

It's in the block class (SilvaniteChest, RemulaChest or MerciliteChest)

 

        @Override
        public boolean onBlockActivated(World world, int x, int y, int z,
                        EntityPlayer player, int i, float j, float k, float l) {
                TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
                if (tileEntity == null || player.isSneaking()) {
                        return false;
                }
        player.openGui(Remula.remulaGuiHandler, 0, world, x, y, z);
                return true;
        }

 

To be fair, it's code I got from a tutorial which has since proved to be less than helpful, so I wouldn't be surprised if something is wrong in there.

 

        player.openGui(Remula.remulaGuiHandler, 0, world, x, y, z);

The first parameter is wrong. It must be your Mod's instance (the @Instance field inside your main mod class)

 

https://github.com/SanAndreasP/TurretModv3/blob/master/sanandreasp/mods/TurretMod3/block/BlockLaptop.java#L104

Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! |

mah twitter

This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.

Link to comment
Share on other sites

ok; now the Remula chest will open but the other two still don't. I don't have any errors either, just nothing happens when I right-click.

 

the second parameter is the GuiID, which you can use in your GuiHandler to specify which GUI / Container will open.

Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! |

mah twitter

This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.

Link to comment
Share on other sites

ok; now the Remula chest will open but the other two still don't. I don't have any errors either, just nothing happens when I right-click.

 

the second parameter is the GuiID, which you can use in your GuiHandler to specify which GUI / Container will open.

 

I've experimented for the past 30 mins or so with this, even tried using your GuiHandler (edited for my things); Everything I try throws the same error for right-clicking the Remula chest and still no result for the other two:

2013-05-16 15:21:43 [iNFO] [sTDERR] java.lang.ClassCastException: co.uk.silvania.Remula.tileentity.ContainerRemulaChest cannot be cast to net.minecraft.client.gui.GuiScreen
2013-05-16 15:21:43 [iNFO] [sTDERR] 	at cpw.mods.fml.client.FMLClientHandler.showGuiScreen(FMLClientHandler.java:321)
2013-05-16 15:21:43 [iNFO] [sTDERR] 	at cpw.mods.fml.common.FMLCommonHandler.showGuiScreen(FMLCommonHandler.java:335)
2013-05-16 15:21:43 [iNFO] [sTDERR] 	at cpw.mods.fml.common.network.NetworkRegistry.openLocalGui(NetworkRegistry.java:316)
2013-05-16 15:21:43 [iNFO] [sTDERR] 	at cpw.mods.fml.common.network.FMLNetworkHandler.openGui(FMLNetworkHandler.java:339)
2013-05-16 15:21:43 [iNFO] [sTDERR] 	at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2304)
2013-05-16 15:21:43 [iNFO] [sTDERR] 	at co.uk.silvania.Remula.tileentity.RemulaChest.onBlockActivated(RemulaChest.java:41)
2013-05-16 15:21:43 [iNFO] [sTDERR] 	at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:358)
2013-05-16 15:21:43 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.clickMouse(Minecraft.java:1329)
2013-05-16 15:21:43 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.runTick(Minecraft.java:1812)
2013-05-16 15:21:43 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:848)
2013-05-16 15:21:43 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.run(Minecraft.java:773)
2013-05-16 15:21:43 [iNFO] [sTDERR] 	at java.lang.Thread.run(Unknown Source)

 

I can't seem to find any reference to GuiScreen in my code, so I don't know what's causing that.

 

On a plus note; thanks to that turorial I thought I needed a GuiHandler for each GUI- at least now I know I don't need those :P

width=463 height=200

http://s13.postimg.org/z9mlly2av/siglogo.png[/img]

My mods (Links coming soon)

Cities | Roads | Remula | SilvaniaMod | MoreStats

Link to comment
Share on other sites

I can't seem to find any reference to GuiScreen in my code, so I don't know what's causing that.

 

On a plus note; thanks to that turorial I thought I needed a GuiHandler for each GUI- at least now I know I don't need those :P

 

It means you're passing a TileEntity to a function that is expecting a GuiScreen.

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

I can't seem to find any reference to GuiScreen in my code, so I don't know what's causing that.

 

On a plus note; thanks to that turorial I thought I needed a GuiHandler for each GUI- at least now I know I don't need those :P

 

It means you're passing a TileEntity to a function that is expecting a GuiScreen.

 

not a TileEntity, but a container.

Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! |

mah twitter

This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.

Link to comment
Share on other sites

Found it; I'd accidentally put the containers in the client side instead of the GUIs.

 

No errors again now, but I can still only open one of the three chests. Here's the relevant code currently:

 

[spoiler=GuiHandler]

package co.uk.silvania.Remula.tileentity;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import cpw.mods.fml.common.network.IGuiHandler;

public class GuiHandler implements IGuiHandler {


	public GuiHandler() {
	}
        @Override
        public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) {
        	switch(id) {
        	case 0: {
                TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
                if(tileEntity instanceof TileEntityRemulaChest) {
                	if(id == 0)
                        return new ContainerRemulaChest(player.inventory, (TileEntityRemulaChest) tileEntity);
                }	
                return null;
        	}
            case 1: {
                TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
                if(tileEntity instanceof TileEntitySilvaniteChest) {
                	if(id == 2)
                        return new ContainerSilvaniteChest(player.inventory, (TileEntitySilvaniteChest) tileEntity);
                }
                return null;
        	}
            case 2: {
                TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
                if(tileEntity instanceof TileEntityMerciliteChest) {
                	if(id == 1)
                        return new ContainerMerciliteChest(player.inventory, (TileEntityMerciliteChest) tileEntity);
                }
                return null;
        	}
        }	
        	return null;
        }

        @Override
        public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) {
        	switch(id) {
        	case 0: {
                TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
                if(tileEntity instanceof TileEntityRemulaChest) {
                	if(id == 0)
                        return new RemulaGuiChest(player.inventory, (TileEntityRemulaChest) tileEntity);
                }	
        	}
            break;
            
        	case 1: {
                TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
                if(tileEntity instanceof TileEntitySilvaniteChest) {
                	if(id == 2)
                        return new SilvaniteGuiChest(player.inventory, (TileEntitySilvaniteChest) tileEntity);
                }
        	}
            break;
            
        	case 2: {
                TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
                if(tileEntity instanceof TileEntityMerciliteChest) {
                	if(id == 1)
                        return new MerciliteGuiChest(player.inventory, (TileEntityMerciliteChest) tileEntity);
                }
        	}
            break;
        	}	
        	return null;
        }
}

 

 

[spoiler=SilvaniteChest]

package co.uk.silvania.Remula.tileentity;

import java.util.Random;

import co.uk.silvania.Remula.CommonProxy;
import co.uk.silvania.Remula.Remula;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;

public class SilvaniteChest extends BlockContainer {

        public SilvaniteChest (int id) {
                super(id, Material.iron);
                setHardness(2.0F);
                setResistance(5.0F);
                setCreativeTab(Remula.tabRemula);
                this.setBlockBounds(0.0625F, 0.0F, 0.0625F, 0.9375F, 0.875F, 0.9375F);
        }

        @Override
        public boolean onBlockActivated(World world, int x, int y, int z,
                        EntityPlayer player, int i, float j, float k, float l) {
                TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
                if (tileEntity == null || player.isSneaking()) {
                        return false;
                }
        player.openGui(Remula.instance, 2, world, x, y, z);
                return true;
        }

        @Override
        public void breakBlock(World world, int x, int y, int z, int par5, int par6) {
                dropItems(world, x, y, z);
                super.breakBlock(world, x, y, z, par5, par6);
        }
        
        public boolean isOpaqueCube()
        {
            return false;
        }

        public boolean renderAsNormalBlock()
        {
            return false;
        }

        public int getRenderType()
        {
            return 22;
        }
        
        public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLiving par5EntityLiving)
        {
            int var6 = par1World.getBlockId(par2, par3, par4 - 1);
            int var7 = par1World.getBlockId(par2, par3, par4 + 1);
            int var8 = par1World.getBlockId(par2 - 1, par3, par4);
            int var9 = par1World.getBlockId(par2 + 1, par3, par4);
            byte var10 = 0;
            int var11 = MathHelper.floor_double((double)(par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;

            if (var11 == 0)
            {
                var10 = 2;
            }

            if (var11 == 1)
            {
                var10 = 5;
            }

            if (var11 == 2)
            {
                var10 = 3;
            }

            if (var11 == 3)
            {
                var10 = 4;
            }

            if (var6 != this.blockID && var7 != this.blockID && var8 != this.blockID && var9 != this.blockID)
            {
                par1World.setBlockMetadataWithNotify(par2, par3, par4, var10);
            }
            else
            {
                if ((var6 == this.blockID || var7 == this.blockID) && (var10 == 4 || var10 == 5))
                {
                    if (var6 == this.blockID)
                    {
                        par1World.setBlockMetadataWithNotify(par2, par3, par4 - 1, var10);
                    }
                    else
                    {
                        par1World.setBlockMetadataWithNotify(par2, par3, par4 + 1, var10);
                    }

                    par1World.setBlockMetadataWithNotify(par2, par3, par4, var10);
                }

                if ((var8 == this.blockID || var9 == this.blockID) && (var10 == 2 || var10 == 3))
                {
                    if (var8 == this.blockID)
                    {
                        par1World.setBlockMetadataWithNotify(par2 - 1, par3, par4, var10);
                    }
                    else
                    {
                        par1World.setBlockMetadataWithNotify(par2 + 1, par3, par4, var10);
                    }

                    par1World.setBlockMetadataWithNotify(par2, par3, par4, var10);
                }
            }
        }

        private void dropItems(World world, int x, int y, int z){
                Random rand = new Random();

                TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
                if (!(tileEntity instanceof IInventory)) {
                        return;
                }
                IInventory inventory = (IInventory) tileEntity;

                for (int i = 0; i < inventory.getSizeInventory(); i++) {
                        ItemStack item = inventory.getStackInSlot(i);

                        if (item != null && item.stackSize > 0) {
                                float rx = rand.nextFloat() * 0.8F + 0.1F;
                                float ry = rand.nextFloat() * 0.8F + 0.1F;
                                float rz = rand.nextFloat() * 0.8F + 0.1F;

                                EntityItem entityItem = new EntityItem(world,
                                                x + rx, y + ry, z + rz,
                                                new ItemStack(item.itemID, item.stackSize, item.getItemDamage()));

                                if (item.hasTagCompound()) {
                                        entityItem.getEntityItem().setTagCompound((NBTTagCompound) item.getTagCompound().copy());
                                }

                                float factor = 0.05F;
                                entityItem.motionX = rand.nextGaussian() * factor;
                                entityItem.motionY = rand.nextGaussian() * factor + 0.2F;
                                entityItem.motionZ = rand.nextGaussian() * factor;
                                world.spawnEntityInWorld(entityItem);
                                item.stackSize = 0;
                        }
                }
        }

        @Override
        public TileEntity createNewTileEntity(World world) {
                return new TileEntitySilvaniteChest();
        }
}

 

 

[spoiler=MerciliteChest]

package co.uk.silvania.Remula.tileentity;

import java.util.Random;

import co.uk.silvania.Remula.CommonProxy;
import co.uk.silvania.Remula.Remula;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;

public class MerciliteChest extends BlockContainer {

        public MerciliteChest (int id) {
                super(id, Material.iron);
                setHardness(2.0F);
                setResistance(5.0F);
                setCreativeTab(Remula.tabRemula);
                this.setBlockBounds(0.0625F, 0.0F, 0.0625F, 0.9375F, 0.875F, 0.9375F);
        		this.currentTexture = "/co/uk/silvania/Remula/resources/SilvaniteChest1.png";
        }

        @Override
        public boolean onBlockActivated(World world, int x, int y, int z,
                        EntityPlayer player, int i, float j, float k, float l) {
                TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
                if (tileEntity == null || player.isSneaking()) {
                        return false;
                }
        player.openGui(Remula.instance, 1, world, x, y, z);
                return true;
        }

        @Override
        public void breakBlock(World world, int x, int y, int z, int par5, int par6) {
                dropItems(world, x, y, z);
                super.breakBlock(world, x, y, z, par5, par6);
        }
        
        public boolean isOpaqueCube()
        {
            return false;
        }

        public boolean renderAsNormalBlock()
        {
            return false;
        }

        public int getRenderType()
        {
            return 22;
        }
        
        public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLiving par5EntityLiving)
        {
            int var6 = par1World.getBlockId(par2, par3, par4 - 1);
            int var7 = par1World.getBlockId(par2, par3, par4 + 1);
            int var8 = par1World.getBlockId(par2 - 1, par3, par4);
            int var9 = par1World.getBlockId(par2 + 1, par3, par4);
            byte var10 = 0;
            int var11 = MathHelper.floor_double((double)(par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;

            if (var11 == 0)
            {
                var10 = 2;
            }

            if (var11 == 1)
            {
                var10 = 5;
            }

            if (var11 == 2)
            {
                var10 = 3;
            }

            if (var11 == 3)
            {
                var10 = 4;
            }

            if (var6 != this.blockID && var7 != this.blockID && var8 != this.blockID && var9 != this.blockID)
            {
                par1World.setBlockMetadataWithNotify(par2, par3, par4, var10);
            }
            else
            {
                if ((var6 == this.blockID || var7 == this.blockID) && (var10 == 4 || var10 == 5))
                {
                    if (var6 == this.blockID)
                    {
                        par1World.setBlockMetadataWithNotify(par2, par3, par4 - 1, var10);
                    }
                    else
                    {
                        par1World.setBlockMetadataWithNotify(par2, par3, par4 + 1, var10);
                    }

                    par1World.setBlockMetadataWithNotify(par2, par3, par4, var10);
                }

                if ((var8 == this.blockID || var9 == this.blockID) && (var10 == 2 || var10 == 3))
                {
                    if (var8 == this.blockID)
                    {
                        par1World.setBlockMetadataWithNotify(par2 - 1, par3, par4, var10);
                    }
                    else
                    {
                        par1World.setBlockMetadataWithNotify(par2 + 1, par3, par4, var10);
                    }

                    par1World.setBlockMetadataWithNotify(par2, par3, par4, var10);
                }
            }
        }

        private void dropItems(World world, int x, int y, int z){
                Random rand = new Random();

                TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
                if (!(tileEntity instanceof IInventory)) {
                        return;
                }
                IInventory inventory = (IInventory) tileEntity;

                for (int i = 0; i < inventory.getSizeInventory(); i++) {
                        ItemStack item = inventory.getStackInSlot(i);

                        if (item != null && item.stackSize > 0) {
                                float rx = rand.nextFloat() * 0.8F + 0.1F;
                                float ry = rand.nextFloat() * 0.8F + 0.1F;
                                float rz = rand.nextFloat() * 0.8F + 0.1F;

                                EntityItem entityItem = new EntityItem(world,
                                                x + rx, y + ry, z + rz,
                                                new ItemStack(item.itemID, item.stackSize, item.getItemDamage()));

                                if (item.hasTagCompound()) {
                                        entityItem.getEntityItem().setTagCompound((NBTTagCompound) item.getTagCompound().copy());
                                }

                                float factor = 0.05F;
                                entityItem.motionX = rand.nextGaussian() * factor;
                                entityItem.motionY = rand.nextGaussian() * factor + 0.2F;
                                entityItem.motionZ = rand.nextGaussian() * factor;
                                world.spawnEntityInWorld(entityItem);
                                item.stackSize = 0;
                        }
                }
        }

        @Override
        public TileEntity createNewTileEntity(World world) {
                return new TileEntityMerciliteChest();
        }
}

 

 

[spoiler=RemulaChest]

package co.uk.silvania.Remula.tileentity;

import java.util.Random;

import co.uk.silvania.Remula.CommonProxy;
import co.uk.silvania.Remula.Remula;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;

public class RemulaChest extends BlockContainer {

        public RemulaChest (int id) {
                super(id, Material.iron);
                setHardness(2.0F);
                setResistance(5.0F);
                setCreativeTab(Remula.tabRemula);
                this.setBlockBounds(0.0625F, 0.0F, 0.0625F, 0.9375F, 0.875F, 0.9375F);
        }

        @Override
        public boolean onBlockActivated(World world, int x, int y, int z,
                        EntityPlayer player, int i, float j, float k, float l) {
                TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
                if (tileEntity == null || player.isSneaking()) {
                        return false;
                }
        player.openGui(Remula.instance, 0, world, x, y, z);
                return true;
        }

        @Override
        public void breakBlock(World world, int x, int y, int z, int par5, int par6) {
                dropItems(world, x, y, z);
                super.breakBlock(world, x, y, z, par5, par6);
        }
        
        public boolean isOpaqueCube()
        {
            return false;
        }

        public boolean renderAsNormalBlock()
        {
            return false;
        }

        public int getRenderType()
        {
            return 22;
        }
        
        public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLiving par5EntityLiving)
        {
            int var6 = par1World.getBlockId(par2, par3, par4 - 1);
            int var7 = par1World.getBlockId(par2, par3, par4 + 1);
            int var8 = par1World.getBlockId(par2 - 1, par3, par4);
            int var9 = par1World.getBlockId(par2 + 1, par3, par4);
            byte var10 = 0;
            int var11 = MathHelper.floor_double((double)(par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;

            if (var11 == 0)
            {
                var10 = 2;
            }

            if (var11 == 1)
            {
                var10 = 5;
            }

            if (var11 == 2)
            {
                var10 = 3;
            }

            if (var11 == 3)
            {
                var10 = 4;
            }

            if (var6 != this.blockID && var7 != this.blockID && var8 != this.blockID && var9 != this.blockID)
            {
                par1World.setBlockMetadataWithNotify(par2, par3, par4, var10);
            }
            else
            {
                if ((var6 == this.blockID || var7 == this.blockID) && (var10 == 4 || var10 == 5))
                {
                    if (var6 == this.blockID)
                    {
                        par1World.setBlockMetadataWithNotify(par2, par3, par4 - 1, var10);
                    }
                    else
                    {
                        par1World.setBlockMetadataWithNotify(par2, par3, par4 + 1, var10);
                    }

                    par1World.setBlockMetadataWithNotify(par2, par3, par4, var10);
                }

                if ((var8 == this.blockID || var9 == this.blockID) && (var10 == 2 || var10 == 3))
                {
                    if (var8 == this.blockID)
                    {
                        par1World.setBlockMetadataWithNotify(par2 - 1, par3, par4, var10);
                    }
                    else
                    {
                        par1World.setBlockMetadataWithNotify(par2 + 1, par3, par4, var10);
                    }

                    par1World.setBlockMetadataWithNotify(par2, par3, par4, var10);
                }
            }
        }

        private void dropItems(World world, int x, int y, int z){
                Random rand = new Random();

                TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
                if (!(tileEntity instanceof IInventory)) {
                        return;
                }
                IInventory inventory = (IInventory) tileEntity;

                for (int i = 0; i < inventory.getSizeInventory(); i++) {
                        ItemStack item = inventory.getStackInSlot(i);

                        if (item != null && item.stackSize > 0) {
                                float rx = rand.nextFloat() * 0.8F + 0.1F;
                                float ry = rand.nextFloat() * 0.8F + 0.1F;
                                float rz = rand.nextFloat() * 0.8F + 0.1F;

                                EntityItem entityItem = new EntityItem(world,
                                                x + rx, y + ry, z + rz,
                                                new ItemStack(item.itemID, item.stackSize, item.getItemDamage()));

                                if (item.hasTagCompound()) {
                                        entityItem.getEntityItem().setTagCompound((NBTTagCompound) item.getTagCompound().copy());
                                }

                                float factor = 0.05F;
                                entityItem.motionX = rand.nextGaussian() * factor;
                                entityItem.motionY = rand.nextGaussian() * factor + 0.2F;
                                entityItem.motionZ = rand.nextGaussian() * factor;
                                world.spawnEntityInWorld(entityItem);
                                item.stackSize = 0;
                        }
                }
        }

        @Override
        public TileEntity createNewTileEntity(World world) {
                return new TileEntityRemulaChest();
        }
}

 

 

 

[spoiler=parts of my mod file]

    @Instance("Remula")
    public static Remula instance;
    public static GuiHandler remulaGuiHandler = new GuiHandler();

    @PreInit
    public void preInit(FMLPreInitializationEvent event) {
    	NetworkRegistry.instance().registerGuiHandler(this, remulaGuiHandler);
    }

    @Init
    public void load(FMLInitializationEvent event) {
            proxy.registerRenderThings();
            proxy.init();
            NetworkRegistry.instance().registerGuiHandler(this, new GuiHandler());

width=463 height=200

http://s13.postimg.org/z9mlly2av/siglogo.png[/img]

My mods (Links coming soon)

Cities | Roads | Remula | SilvaniaMod | MoreStats

Link to comment
Share on other sites

case 2: {
    ...
   if(id == 1)
   ...

 

The if statements are never true, just saying. Also they're useless, Why do you check the ID 2 times (one time in the switch statement and one in the if statements)?

Here's my GuiHandler as a reference: https://github.com/SanAndreasP/TurretModv3/blob/master/sanandreasp/mods/TurretMod3/registry/GuiHandler.java

Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! |

mah twitter

This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.

Link to comment
Share on other sites

Actually, I got the idea for the if statements from there to begin with. When you posted the other link earlier, I went to look at your GuiHandler then to see if I could see anything useful. I noticed the if statements in the client stuff, so I thought I'd give it a try...

 

Removed the if statements made no difference, so I agree they were useless but removing them didn't help either...

width=463 height=200

http://s13.postimg.org/z9mlly2av/siglogo.png[/img]

My mods (Links coming soon)

Cities | Roads | Remula | SilvaniaMod | MoreStats

Link to comment
Share on other sites

Actually, I got the idea for the if statements from there to begin with. When you posted the other link earlier, I went to look at your GuiHandler then to see if I could see anything useful. I noticed the if statements in the client stuff, so I thought I'd give it a try...

 

Removed the if statements made no difference, so I agree they were useless but removing them didn't help either...

 

The if statements I have in my GuiHandler are there because I use Fall-Throughts.

 

Can I see the modified GuiHandler, and could you use pastebin (with java highlighting on)?

Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! |

mah twitter

This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.

Link to comment
Share on other sites

http://pastebin.com/zBASdNX1

 

I only removed the if's and also changed return null; to return id;

 

Strangely, the latter thing made two out of 3 chests work. I've not changed anything in the chest files, but the three are all identical bar the names etc and their opengui ID's... It's the Silvanite Chest which isn't working now, with a crash:

 

2013-05-17 13:24:33 [iNFO] [sTDERR] java.lang.ClassCastException: java.lang.Integer cannot be cast to net.minecraft.client.gui.GuiScreen
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at cpw.mods.fml.client.FMLClientHandler.showGuiScreen(FMLClientHandler.java:321)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at cpw.mods.fml.common.FMLCommonHandler.showGuiScreen(FMLCommonHandler.java:335)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at cpw.mods.fml.common.network.NetworkRegistry.openLocalGui(NetworkRegistry.java:316)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at cpw.mods.fml.common.network.FMLNetworkHandler.openGui(FMLNetworkHandler.java:339)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2304)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at co.uk.silvania.Remula.tileentity.SilvaniteChest.onBlockActivated(SilvaniteChest.java:41)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:358)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.clickMouse(Minecraft.java:1329)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.runTick(Minecraft.java:1812)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:848)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.run(Minecraft.java:773)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at java.lang.Thread.run(Unknown Source)

 

 

Again it's referencing the GuiScreen thing, but I fixed it earlier and I can't see anything else...

        player.openGui(Remula.instance, 2, world, x, y, z);
                return true;
        }

is the line from the stacktrace.

 

width=463 height=200

http://s13.postimg.org/z9mlly2av/siglogo.png[/img]

My mods (Links coming soon)

Cities | Roads | Remula | SilvaniaMod | MoreStats

Link to comment
Share on other sites

http://pastebin.com/zBASdNX1

 

I only removed the if's and also changed return null; to return id;

 

Strangely, the latter thing made two out of 3 chests work. I've not changed anything in the chest files, but the three are all identical bar the names etc and their opengui ID's... It's the Silvanite Chest which isn't working now, with a crash:

 

2013-05-17 13:24:33 [iNFO] [sTDERR] java.lang.ClassCastException: java.lang.Integer cannot be cast to net.minecraft.client.gui.GuiScreen
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at cpw.mods.fml.client.FMLClientHandler.showGuiScreen(FMLClientHandler.java:321)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at cpw.mods.fml.common.FMLCommonHandler.showGuiScreen(FMLCommonHandler.java:335)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at cpw.mods.fml.common.network.NetworkRegistry.openLocalGui(NetworkRegistry.java:316)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at cpw.mods.fml.common.network.FMLNetworkHandler.openGui(FMLNetworkHandler.java:339)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2304)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at co.uk.silvania.Remula.tileentity.SilvaniteChest.onBlockActivated(SilvaniteChest.java:41)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:358)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.clickMouse(Minecraft.java:1329)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.runTick(Minecraft.java:1812)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:848)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.run(Minecraft.java:773)
2013-05-17 13:24:33 [iNFO] [sTDERR] 	at java.lang.Thread.run(Unknown Source)

 

 

Again it's referencing the GuiScreen thing, but I fixed it earlier and I can't see anything else...

        player.openGui(Remula.instance, 2, world, x, y, z);
                return true;
        }

is the line from the stacktrace.

 

Most likely the return value is expected to be a GuiScreen and NOT an Integer. If it shouldn't return anything, then just return null. And I highly doubt that returning the ID made the second GUI work.

What I see is that the IDs in the openGUI call inside your blocks Silvanite- and MerciliteChest are the wrong way around (The silvanite chest tries to open the Mercilite GUI and the other way around.

Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! |

mah twitter

This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.

Link to comment
Share on other sites

Yup that fixed it!

 

1 down, 2 to go. Thanks! I've added you to my credits list for when it's finally released as a help :P

 

For the second: Does it have a TileEntitySpecialRenderer?

Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! |

mah twitter

This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.

Link to comment
Share on other sites

Yup that fixed it!

 

1 down, 2 to go. Thanks! I've added you to my credits list for when it's finally released as a help :P

 

For the second: Does it have a TileEntitySpecialRenderer?

 

Sorry, been away for a couple of days.

 

It has got one, here's one of them:

 

package co.uk.silvania.Remula.tileentity;

import cpw.mods.fml.common.FMLLog;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.util.Calendar;
import net.minecraft.block.Block;
import net.minecraft.block.BlockChest;
import net.minecraft.client.model.ModelChest;
import net.minecraft.client.model.ModelLargeChest;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityChest;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;

@SideOnly(Side.CLIENT)
public class TileEntityMerciliteChestRenderer extends TileEntitySpecialRenderer
{
    /** The normal small chest model. */
    private ModelChest chestModel = new ModelChest();

    /** The large double chest model. */
    private ModelChest largeChestModel = new ModelLargeChest();
    private boolean field_92061_d;

    public TileEntityMerciliteChestRenderer()
    {
        Calendar var1 = Calendar.getInstance();

        if (var1.get(2) + 1 == 12 && var1.get(5) >= 24 && var1.get(5) <= 26)
        {
            this.field_92061_d = true;
        }
    }

    /**
     * Renders the TileEntity for the chest at a position.
     */
    public void renderTileEntityChestAt(TileEntityChest par1TileEntityChest, double par2, double par4, double par6, float par8)
    {
        int var9;

        if (!par1TileEntityChest.func_70309_m())
        {
            var9 = 0;
        }
        else
        {
            Block var10 = par1TileEntityChest.getBlockType();
            var9 = par1TileEntityChest.getBlockMetadata();

            if (var10 != null && var9 == 0)
            {
                try
                {
                    ((BlockChest)var10).unifyAdjacentChests(par1TileEntityChest.getWorldObj(), par1TileEntityChest.xCoord, par1TileEntityChest.yCoord, par1TileEntityChest.zCoord);
                }
                catch (ClassCastException e)
                {
                    FMLLog.severe("Attempted to render a chest at %d,  %d, %d that was not a chest",
                            par1TileEntityChest.xCoord, par1TileEntityChest.yCoord, par1TileEntityChest.zCoord);
                }
                var9 = par1TileEntityChest.getBlockMetadata();
            }

            par1TileEntityChest.checkForAdjacentChests();
        }

        if (par1TileEntityChest.adjacentChestZNeg == null && par1TileEntityChest.adjacentChestXNeg == null)
        {
            ModelChest var14;

            if (par1TileEntityChest.adjacentChestXPos == null && par1TileEntityChest.adjacentChestZPosition == null)
            {
                var14 = this.chestModel;

                if (this.field_92061_d)
                {
                    this.bindTextureByName("/item/xmaschest.png");
                }
                else
                {
                    this.bindTextureByName("/item/chest.png");
                }
            }
            else
            {
                var14 = this.largeChestModel;

                if (this.field_92061_d)
                {
                    this.bindTextureByName("/item/largexmaschest.png");
                }
                else
                {
                    this.bindTextureByName("/item/largechest.png");
                }
            }

            GL11.glPushMatrix();
            GL11.glEnable(GL12.GL_RESCALE_NORMAL);
            GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
            GL11.glTranslatef((float)par2, (float)par4 + 1.0F, (float)par6 + 1.0F);
            GL11.glScalef(1.0F, -1.0F, -1.0F);
            GL11.glTranslatef(0.5F, 0.5F, 0.5F);
            short var11 = 0;

            if (var9 == 2)
            {
                var11 = 180;
            }

            if (var9 == 3)
            {
                var11 = 0;
            }

            if (var9 == 4)
            {
                var11 = 90;
            }

            if (var9 == 5)
            {
                var11 = -90;
            }

            if (var9 == 2 && par1TileEntityChest.adjacentChestXPos != null)
            {
                GL11.glTranslatef(1.0F, 0.0F, 0.0F);
            }

            if (var9 == 5 && par1TileEntityChest.adjacentChestZPosition != null)
            {
                GL11.glTranslatef(0.0F, 0.0F, -1.0F);
            }

            GL11.glRotatef((float)var11, 0.0F, 1.0F, 0.0F);
            GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
            float var12 = par1TileEntityChest.prevLidAngle + (par1TileEntityChest.lidAngle - par1TileEntityChest.prevLidAngle) * par8;
            float var13;

            if (par1TileEntityChest.adjacentChestZNeg != null)
            {
                var13 = par1TileEntityChest.adjacentChestZNeg.prevLidAngle + (par1TileEntityChest.adjacentChestZNeg.lidAngle - par1TileEntityChest.adjacentChestZNeg.prevLidAngle) * par8;

                if (var13 > var12)
                {
                    var12 = var13;
                }
            }

            if (par1TileEntityChest.adjacentChestXNeg != null)
            {
                var13 = par1TileEntityChest.adjacentChestXNeg.prevLidAngle + (par1TileEntityChest.adjacentChestXNeg.lidAngle - par1TileEntityChest.adjacentChestXNeg.prevLidAngle) * par8;

                if (var13 > var12)
                {
                    var12 = var13;
                }
            }

            var12 = 1.0F - var12;
            var12 = 1.0F - var12 * var12 * var12;
            var14.chestLid.rotateAngleX = -(var12 * (float)Math.PI / 2.0F);
            var14.renderAll();
            GL11.glDisable(GL12.GL_RESCALE_NORMAL);
            GL11.glPopMatrix();
            GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        }
    }

    public void renderTileEntityAt(TileEntity par1TileEntity, double par2, double par4, double par6, float par8)
    {
        this.renderTileEntityChestAt((TileEntityChest)par1TileEntity, par2, par4, par6, par8);
    }
}

 

Again, right now it's just the same as the vanilla chest. I want to get that working before I try and edit it to be my custom model/texture.

width=463 height=200

http://s13.postimg.org/z9mlly2av/siglogo.png[/img]

My mods (Links coming soon)

Cities | Roads | Remula | SilvaniaMod | MoreStats

Link to comment
Share on other sites

Do your TileEntities extend TileEntityChest? If not you need to change the references / casts there first.

Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! |

mah twitter

This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.

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

    • java.lang.RuntimeException:null at net.minecraftforge.registries.GameData.postRegisterEvents(GameData.java:315) ~[forge-1.20.1-47.3.10-universal.jar%23329!/:?] {re:mixin,re:classloading,pl:mixin:APP:supermartijn642corelib.mixins.json:GameDataMixin,pl:mixin:A}at net.minecraftforge.common.ForgeStatesProvider.lambda$new$4(ForgeStatesProvider.java:25) ~[forge-1.20.1-47.3.10-universal.jar%23329!/:?] {re:classloading}at net.minecraftforge.fml.ModLoader.handleInlineTransition(ModLoader.java:217) ~[fmlcore-1.20.1-47.3.10.jar%23325!/:?] {}at net.minecraftforge.fml.ModLoader.lambda$dispatchAndHandleError$19(ModLoader.java:209) ~[fmlcore-1.20.1-47.3.10.jar%23325!/:?] {}at java.util.Optional.ifPresent(Optional.java:178) ~[?:?] {re:mixin}at net.minecraftforge.fml.ModLoader.dispatchAndHandleError(ModLoader.java:209) ~[fmlcore-1.20.1-47.3.10.jar%23325!/:?] {}at net.minecraftforge.fml.ModLoader.lambda$gatherAndInitializeMods$13(ModLoader.java:183) ~[fmlcore-1.20.1-47.3.10.jar%23325!/:?] {}at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}at net.minecraftforge.fml.ModLoader.gatherAndInitializeMods(ModLoader.java:183) ~[fmlcore-1.20.1-47.3.10.jar%23325!/:?] {}at net.minecraftforge.client.loading.ClientModLoader.lambda$begin$1(ClientModLoader.java:69) ~[forge-1.20.1-47.3.10-universal.jar%23329!/:?] {re:classloading,pl:runtimedistcleaner:A}at net.minecraftforge.client.loading.ClientModLoader.lambda$createRunnableWithCatch$4(ClientModLoader.java:89) ~[forge-1.20.1-47.3.10-universal.jar%23329!/:?] {re:classloading,pl:runtimedistcleaner:A}at net.minecraftforge.client.loading.ClientModLoader.begin(ClientModLoader.java:69) ~[forge-1.20.1-47.3.10-universal.jar%23329!/:?] {re:classloading,pl:runtimedistcleaner:A}at net.minecraft.client.Minecraft.                Size    Insert image from URL
    • My Bitcoin Recovery Experience With  The Hack Angels.     I highly recommend the service of The Hack Angels to everyone who wishes to recover lost money either bitcoin or other cryptocurrencies from these online scammers, wallet hackers, or if you ever sent bitcoins to the wrong wallet address. I was able to recover my lost bitcoins from online swindlers in less than two days after contacting them. They are the best professional hackers out there and I’m truly thankful for their help in recovering all I lost. If you need their service too, here is their contact information.   Mail Box; support@thehackangels. com    (Web: https://thehackangels.com) Whats Ap; +1 520) - 200, 23  20
    • Temu Coupon Code $50 off [taa85211] or [tad85211] for New and Existing Users To get Temu $50 off Coupon Code [taa85211] or [tad85211] as a new user enter the Coupon during checkout when making your first purchase at Temu You will receive the benefit once the Coupon applied. TEMU App is a shopping platform that provides us with the best-branded items at Cheap prices. You will also notice that TEMU offers users to save extra by applying the TEMU Coupon Code during checkout. You can get $50 off Temu by using the Coupon Code “taa85211} or {tad85211} ”. Existing customers can use this code. Temu existing user Coupon Code: [taa85211} or {tad85211} Using Temu’s Coupon Code [taa85211} or {tad85211] will get you $50 off, access to exclusive deals, and benefits for additional savings. Save $50 off with Temu Coupon Codes. New and existing customer offers. What is Temu $50 Coupon Bundle? New Temu $50 Coupon bundle includes $50 worth of Temu Coupon Codes. The Temu $50 Coupon Code [taa85211} or {tad85211] can be used by new and existing Temu users to get a Coupon on their purchases. Temu $50 Coupon Bundle Code [taa85211} or {tad85211] Temu Coupon $50 off for existing customers There are a number of Coupons and deals shoppers can take advantage of with the Teemu Coupon Bundle [taa85211} or {tad85211]. Temu Coupon $50 off for existing customers"taa85211} or {tad85211" will save you $100 on your order. To get a Coupon, click on the item to purchase and enter the code. You can think of it as a supercharged savings pack for all your shopping needs Temu Coupon Code $50 off free shipping You will save $50 when you use Temu’s $50 OFF Coupon Code [taa85211} or {tad85211]. Enter the Coupon Code when purchasing an item How Does Temu $50 Coupon Work Temu’s $50 Coupon Code isn’t just one big Coupon you use all at once. Instead, think of it as a welcome package filled with different Coupons and offers worth $50. New customers are welcome. Temu Coupon Code $50 off Temu $40 OFF Coupon Code “taa85211} or {tad85211” will save you $50 on your order. To get a Coupon, click on the item to purchase and enter the code. Yes, Temu offers $50 off Coupon Code “taa85211} or {tad85211” for first time users. You can get a $50 bonus plus 30% off any purchase at Temu with the $40 Coupon Bundle at Temu if you sign up with the Coupon Code [taa85211} or {tad85211] and make a first purchase of $50 or more. How Do Apply Temu Coupon Code [taa85211} or {tad85211]? 1.Download the TEMU app and create a new account. 2.Fill in basic details to complete account verification. 3. Select the item you want to purchase and add it to your cart Minimum of $100. 4.Click on the Coupon Code option and enter the TEMU Coupon Code. 5.Once the Coupon has been applied, you will see the final Coupon. 6.P rice Select your payment method and complete your purchase. Temu Coupon Code $50 off first time user yes, If you’re a first-time user, Temu offers $50 off with Coupon Code “taa85211} or {tad85211” Temu offers first-time users a $50 Coupon. Here are some Temu Coupons! The fact that new users can benefit from such generous Coupons is great. How do you redeem Temu $50 Coupon Code? Yes, To redeem the Temu $50 Coupon Code, follow these steps: 1.Sign Up: If you haven’t already, sign up for a Temu account on their website or app. 2.Add Items to Cart: Browse through the products you’d like to purchase. Add items worth $50 or more to your cart. 3.Apply Coupon Code: During checkout, enter the Coupon Code “taa85211} or {tad85211” in the designated field. This will unlock the $50 Coupon bundle. You can also use the Coupon Code “taa85211} or {tad85211” when signing up to receive the same benefit. 4.Enjoy Savings: The Coupon will be applied, and you’ll enjoy additional savings on your purchase. Plus, you can combine this with other available Coupons, such as the 50% off code for fashion, home, and beauty categories.
    • Temu Coupon Code $50 off [taa85211] or [tad85211] for New and Existing Users To get Temu $50 off Coupon Code [taa85211] or [tad85211] as a new user enter the Coupon during checkout when making your first purchase at Temu You will receive the benefit once the Coupon applied. TEMU App is a shopping platform that provides us with the best-branded items at Cheap prices. You will also notice that TEMU offers users to save extra by applying the TEMU Coupon Code during checkout. You can get $50 off Temu by using the Coupon Code “taa85211} or {tad85211} ”. Existing customers can use this code. Temu existing user Coupon Code: [taa85211} or {tad85211} Using Temu’s Coupon Code [taa85211} or {tad85211] will get you $50 off, access to exclusive deals, and benefits for additional savings. Save $50 off with Temu Coupon Codes. New and existing customer offers. What is Temu $50 Coupon Bundle? New Temu $50 Coupon bundle includes $50 worth of Temu Coupon Codes. The Temu $50 Coupon Code [taa85211} or {tad85211] can be used by new and existing Temu users to get a Coupon on their purchases. Temu $50 Coupon Bundle Code [taa85211} or {tad85211] Temu Coupon $50 off for existing customers There are a number of Coupons and deals shoppers can take advantage of with the Teemu Coupon Bundle [taa85211} or {tad85211]. Temu Coupon $50 off for existing customers"taa85211} or {tad85211" will save you $100 on your order. To get a Coupon, click on the item to purchase and enter the code. You can think of it as a supercharged savings pack for all your shopping needs Temu Coupon Code $50 off free shipping You will save $50 when you use Temu’s $50 OFF Coupon Code [taa85211} or {tad85211]. Enter the Coupon Code when purchasing an item How Does Temu $50 Coupon Work Temu’s $50 Coupon Code isn’t just one big Coupon you use all at once. Instead, think of it as a welcome package filled with different Coupons and offers worth $50. New customers are welcome. Temu Coupon Code $50 off Temu $40 OFF Coupon Code “taa85211} or {tad85211” will save you $50 on your order. To get a Coupon, click on the item to purchase and enter the code. Yes, Temu offers $50 off Coupon Code “taa85211} or {tad85211” for first time users. You can get a $50 bonus plus 30% off any purchase at Temu with the $40 Coupon Bundle at Temu if you sign up with the Coupon Code [taa85211} or {tad85211] and make a first purchase of $50 or more. How Do Apply Temu Coupon Code [taa85211} or {tad85211]? 1.Download the TEMU app and create a new account. 2.Fill in basic details to complete account verification. 3. Select the item you want to purchase and add it to your cart Minimum of $100. 4.Click on the Coupon Code option and enter the TEMU Coupon Code. 5.Once the Coupon has been applied, you will see the final Coupon. 6.P rice Select your payment method and complete your purchase. Temu Coupon Code $50 off first time user yes, If you’re a first-time user, Temu offers $50 off with Coupon Code “taa85211} or {tad85211” Temu offers first-time users a $50 Coupon. Here are some Temu Coupons! The fact that new users can benefit from such generous Coupons is great. How do you redeem Temu $50 Coupon Code? Yes, To redeem the Temu $50 Coupon Code, follow these steps: 1.Sign Up: If you haven’t already, sign up for a Temu account on their website or app. 2.Add Items to Cart: Browse through the products you’d like to purchase. Add items worth $50 or more to your cart. 3.Apply Coupon Code: During checkout, enter the Coupon Code “taa85211} or {tad85211” in the designated field. This will unlock the $50 Coupon bundle. You can also use the Coupon Code “taa85211} or {tad85211” when signing up to receive the same benefit. 4.Enjoy Savings: The Coupon will be applied, and you’ll enjoy additional savings on your purchase. Plus, you can combine this with other available Coupons, such as the 50% off code for fashion, home, and beauty categories.
    • Temu Coupon Code $50 off [taa85211] or [tad85211] for New and Existing Users To get Temu $50 off Coupon Code [taa85211] or [tad85211] as a new user enter the Coupon during checkout when making your first purchase at Temu You will receive the benefit once the Coupon applied. TEMU App is a shopping platform that provides us with the best-branded items at Cheap prices. You will also notice that TEMU offers users to save extra by applying the TEMU Coupon Code during checkout. You can get $50 off Temu by using the Coupon Code “taa85211} or {tad85211} ”. Existing customers can use this code. Temu existing user Coupon Code: [taa85211} or {tad85211} Using Temu’s Coupon Code [taa85211} or {tad85211] will get you $50 off, access to exclusive deals, and benefits for additional savings. Save $50 off with Temu Coupon Codes. New and existing customer offers. What is Temu $50 Coupon Bundle? New Temu $50 Coupon bundle includes $50 worth of Temu Coupon Codes. The Temu $50 Coupon Code [taa85211} or {tad85211] can be used by new and existing Temu users to get a Coupon on their purchases. Temu $50 Coupon Bundle Code [taa85211} or {tad85211] Temu Coupon $50 off for existing customers There are a number of Coupons and deals shoppers can take advantage of with the Teemu Coupon Bundle [taa85211} or {tad85211]. Temu Coupon $50 off for existing customers"taa85211} or {tad85211" will save you $100 on your order. To get a Coupon, click on the item to purchase and enter the code. You can think of it as a supercharged savings pack for all your shopping needs Temu Coupon Code $50 off free shipping You will save $50 when you use Temu’s $50 OFF Coupon Code [taa85211} or {tad85211]. Enter the Coupon Code when purchasing an item How Does Temu $50 Coupon Work Temu’s $50 Coupon Code isn’t just one big Coupon you use all at once. Instead, think of it as a welcome package filled with different Coupons and offers worth $50. New customers are welcome. Temu Coupon Code $50 off Temu $40 OFF Coupon Code “taa85211} or {tad85211” will save you $50 on your order. To get a Coupon, click on the item to purchase and enter the code. Yes, Temu offers $50 off Coupon Code “taa85211} or {tad85211” for first time users. You can get a $50 bonus plus 30% off any purchase at Temu with the $40 Coupon Bundle at Temu if you sign up with the Coupon Code [taa85211} or {tad85211] and make a first purchase of $50 or more. How Do Apply Temu Coupon Code [taa85211} or {tad85211]? 1.Download the TEMU app and create a new account. 2.Fill in basic details to complete account verification. 3. Select the item you want to purchase and add it to your cart Minimum of $100. 4.Click on the Coupon Code option and enter the TEMU Coupon Code. 5.Once the Coupon has been applied, you will see the final Coupon. 6.P rice Select your payment method and complete your purchase. Temu Coupon Code $50 off first time user yes, If you’re a first-time user, Temu offers $50 off with Coupon Code “taa85211} or {tad85211” Temu offers first-time users a $50 Coupon. Here are some Temu Coupons! The fact that new users can benefit from such generous Coupons is great. How do you redeem Temu $50 Coupon Code? Yes, To redeem the Temu $50 Coupon Code, follow these steps: 1.Sign Up: If you haven’t already, sign up for a Temu account on their website or app. 2.Add Items to Cart: Browse through the products you’d like to purchase. Add items worth $50 or more to your cart. 3.Apply Coupon Code: During checkout, enter the Coupon Code “taa85211} or {tad85211” in the designated field. This will unlock the $50 Coupon bundle. You can also use the Coupon Code “taa85211} or {tad85211” when signing up to receive the same benefit. 4.Enjoy Savings: The Coupon will be applied, and you’ll enjoy additional savings on your purchase. Plus, you can combine this with other available Coupons, such as the 50% off code for fashion, home, and beauty categories.
  • Topics

×
×
  • Create New...

Important Information

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