Jump to content

Block doesn't open GUI


dyno

Recommended Posts

I've made a block with a GUI. When I right click it, GUI doesn't appear

 

Block

Spoiler

package OliveMod.machines.AlloySmelter;

import java.util.Random;

import com.google.common.util.concurrent.Service.State;

import OliveMod.Main;
import OliveMod.blocks.BlockBase_noRotation;
import OliveMod.init.ModBlocks;
import OliveMod.init.ModItems;
import OliveMod.util.IHasModels;
import OliveMod.util.Reference;
import OliveMod.util.handler.GuiHandler;
import net.minecraft.block.Block;
import net.minecraft.block.BlockHorizontal;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.InventoryHelper;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumBlockRenderType;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.Mirror;
import net.minecraft.util.Rotation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;


public class AlloySmelter extends BlockBase_noRotation implements ITileEntityProvider{
    
    public static final PropertyDirection FACING = BlockHorizontal.FACING;
    public static final PropertyBool BURNING = PropertyBool.create("burning");
    
    public AlloySmelter(String name) {
        super(name, Material.IRON);    
        setSoundType(SoundType.STONE);
        this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH).withProperty(BURNING, false));        
    }    
    
    public boolean obBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, 
            EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ){

        if(!worldIn.isRemote)
        {            
            playerIn.openGui(Main.instance, Reference.GUI_ALLOY_SMELTER, worldIn, pos.getX(), pos.getY(), pos.getZ());        
        }
        return true;
    }

    public Item getItemDropped(IBlockState state, Random rand, int fortune){
        return Item.getItemFromBlock(ModBlocks.ALLOY_SMELTER);        
    }
    
    public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state){
        return new ItemStack(ModBlocks.ALLOY_SMELTER);
    }


    
    public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state)
    {
        if(!worldIn.isRemote)
        {
            IBlockState north = worldIn.getBlockState(pos.north());
            IBlockState south = worldIn.getBlockState(pos.south());
            IBlockState east = worldIn.getBlockState(pos.east());
            IBlockState west = worldIn.getBlockState(pos.west());
            EnumFacing face = (EnumFacing)state.getValue(FACING);
            
            if(face == EnumFacing.NORTH && north.isFullBlock() && !south.isFullBlock())
                face = EnumFacing.SOUTH;
            else if (face == EnumFacing.SOUTH && south.isFullBlock() && !north.isFullBlock())
                face = EnumFacing.NORTH;
            
            else if (face == EnumFacing.WEST && west.isFullBlock() && !east.isFullBlock())
                face = EnumFacing.EAST;
            else if (face == EnumFacing.EAST && east.isFullBlock() && !west.isFullBlock())
                face = EnumFacing.WEST;
            
            worldIn.setBlockState(pos, state.withProperty(FACING, face), 2);
        }
    }
    
    public static void setState(boolean active, World worldIn, BlockPos pos) {
        IBlockState state = worldIn.getBlockState(pos);
        TileEntity tileentity = worldIn.getTileEntity(pos);
        
        if(active)
            worldIn.setBlockState(pos, ModBlocks.ALLOY_SMELTER.getDefaultState().withProperty(FACING, state.getValue(FACING)).withProperty(BURNING, true), 3);
        else
            worldIn.setBlockState(pos, ModBlocks.ALLOY_SMELTER.getDefaultState().withProperty(FACING, state.getValue(FACING)).withProperty(BURNING, false), 3);
        
        if(tileentity != null)
        {
            tileentity.validate();
            worldIn.setTileEntity(pos, tileentity);
        }
        
    }

    @Override
    public TileEntity createNewTileEntity(World worldIn, int meta) {
        return new TileEntityAlloySmelter();
    }
    
    @Override
    public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ,
            int meta, EntityLivingBase placer, EnumHand hand)
    {
        return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
    }

    @Override
    public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, 
            ItemStack stack)
    {
        worldIn.setBlockState(pos, this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite()),2);
    }
    
    @Override
    public void breakBlock(World worldIn, BlockPos pos, IBlockState state) {
        TileEntityAlloySmelter tileentity = (TileEntityAlloySmelter)worldIn.getTileEntity(pos);
        InventoryHelper.dropInventoryItems(worldIn, pos, tileentity);
        super.breakBlock(worldIn, pos, state);
    }
    
    public EnumBlockRenderType getRenderType(IBlockState state)
    {
        return EnumBlockRenderType.MODEL;
    }
    
    public IBlockState withRotation(IBlockState state, Rotation rot)
    {
        return state.withProperty(FACING, rot.rotate((EnumFacing)state.getValue(FACING)));
    }
    
    @Override
    public IBlockState withMirror(IBlockState state, Mirror mirrorIn) {
        
        return state.withRotation(mirrorIn.toRotation((EnumFacing)state.getValue(FACING)));
    }
    
    @Override
    protected BlockStateContainer createBlockState() {
        return new BlockStateContainer(this, new IProperty[] {BURNING, FACING});
    }
    
    @Override
    public IBlockState getStateFromMeta(int meta) {
        EnumFacing facing = EnumFacing.getFront(meta);
        if(facing.getAxis() == EnumFacing.Axis.Y)
            facing = EnumFacing.NORTH;
        return this.getDefaultState().withProperty(FACING, facing);
    }
    
    @Override
    public int getMetaFromState(IBlockState state) {
        return ((EnumFacing)state.getValue(FACING)).getIndex();
    }
}
 

Container

Spoiler

package OliveMod.machines.AlloySmelter;

import OliveMod.machines.AlloySmelter.slots.SlotSeparatorFuel;
import OliveMod.machines.AlloySmelter.slots.SlotSeparatorOutput;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IContainerListener;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraftforge.event.enchanting.EnchantmentLevelSetEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import scala.xml.dtd.EMPTY;

public class ContainerAlloySmelter extends Container {

    private final TileEntityAlloySmelter tileentity;
    private int BurnTime, WorkTime, currentWorkTime, totalWorkTime;
    
    
    public ContainerAlloySmelter(InventoryPlayer player, TileEntityAlloySmelter tileentity) 
    {
        this.tileentity = tileentity;
        this.addSlotToContainer(new Slot(tileentity, 0, 26, 11));
        this.addSlotToContainer(new Slot(tileentity, 1, 26, 59));
        this.addSlotToContainer(new SlotSeparatorFuel(tileentity, 2, 7, 35));
        this.addSlotToContainer(new SlotSeparatorOutput(player.player, tileentity, 3, 81, 36));
        
        for(int y=0; y<3; y++)
        {
            for(int x=0; x<9; x++)
            {
                this.addSlotToContainer(new Slot(player, x+y*9+9, 8+x*18, 84+y*18));
            }
        }
        
        for(int x=0; x<9; x++)
        {
            this.addSlotToContainer(new Slot(player, x, 8+x*18 , 142));
        }
    }
    
    
    @Override
    public void addListener(IContainerListener listener) {
        super.addListener(listener);
        listener.sendAllWindowProperties(this, this.tileentity);
    }
    
    
    @Override
    public void detectAndSendChanges() {
        super.detectAndSendChanges();
        
        for(int i=0; i < this.listeners.size(); ++i)
        {
            IContainerListener listener = (IContainerListener)this.listeners.get(i);
            
            if(this.WorkTime != this.tileentity.getField(2))
                listener.sendWindowProperty(this, 2, this.tileentity.getField(2));
            if(this.BurnTime != this.tileentity.getField(0))
                listener.sendWindowProperty(this, 0, this.tileentity.getField(0));
            if(this.currentWorkTime != this.tileentity.getField(1))
                listener.sendWindowProperty(this, 1, this.tileentity.getField(1));
            if(this.totalWorkTime != this.tileentity.getField(3))
                listener.sendWindowProperty(this, 3, this.tileentity.getField(3));
        }
        
        this.WorkTime = this.tileentity.getField(2);
        this.BurnTime = this.tileentity.getField(0);
        this.currentWorkTime = this.tileentity.getField(1);
        this.totalWorkTime = this.tileentity.getField(3);
    }
    
    
    @Override
    @SideOnly(Side.CLIENT)
    public void updateProgressBar(int id, int data) {
        this.tileentity.setField(id, data);
    }
    
    
    @Override
    public boolean canInteractWith(EntityPlayer playerIn) {
        return this.tileentity.isUsableByPlayer(playerIn);
    }
    
    
    @Override
    public ItemStack transferStackInSlot(EntityPlayer playerIn, int index) {
        
        ItemStack stack = ItemStack.EMPTY;
        Slot slot = (Slot)this.inventorySlots.get(index);
        
        if(slot != null && slot.getHasStack())
        {
            ItemStack stack1 = slot.getStack();
            stack = stack1.copy();
            
             if(index == 3)
             {
                 if(!this.mergeItemStack(stack1, 4, 40, true))
                     slot.onSlotChange(stack1, stack);     
             }
             else if (index != 2 && index != 1 && index != 0)
             {
                 Slot slot1 = this.inventorySlots.get(index + 1);
                 
                 if(AlloySmelterRecipes.getInstance().getSeparatorResult(stack1, slot1.getStack()).isEmpty())
                 {
                     if(!this.mergeItemStack(stack1, 0, 2, false))
                     {
                         return ItemStack.EMPTY;
                     }
                     else if (TileEntityAlloySmelter.isItemFuel(stack1))
                     {
                         if(!this.mergeItemStack(stack1, 2, 3, false))
                             return ItemStack.EMPTY;         
                     }
                     else if (TileEntityAlloySmelter.isItemFuel(stack1))
                     {
                         if(!this.mergeItemStack(stack1, 2, 3, false))
                             return ItemStack.EMPTY;         
                     }
                     else if (TileEntityAlloySmelter.isItemFuel(stack1))
                     {
                         if(!this.mergeItemStack(stack1, 2, 3, false))
                             return ItemStack.EMPTY;         
                     }
                     else if (index >= 4 && index < 31)
                     {
                         if(!this.mergeItemStack(stack1, 31, 40, false))
                             return ItemStack.EMPTY;
                     }
                     else if(index <= 31 && index < 40 && !this.mergeItemStack(stack1, 4, 31, false))
                         return ItemStack.EMPTY;
                     
                 }
             }
             else if (!mergeItemStack(stack1, 4, 40, false))
             {
                 return ItemStack.EMPTY;
             }
             if(stack1.isEmpty())
             {
                 slot.putStack(ItemStack.EMPTY);
             }
             else
             {
                 slot.onSlotChanged();
             }
             if(stack1.getCount() == stack.getCount())
                 return ItemStack.EMPTY;
             slot.onTake(playerIn, stack1);
        }
        return stack;
    }
}
 

GUI

Spoiler

package OliveMod.machines.AlloySmelter;

import OliveMod.util.Reference;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.util.ResourceLocation;

public class GUI_AlloySmelter extends GuiContainer{

    private static final ResourceLocation TEXTURES = new ResourceLocation(Reference.MOD_ID + "oil:textures/gui/alloy_smelter");
    private final InventoryPlayer player;
    private final TileEntityAlloySmelter tileentity;

    
    public GUI_AlloySmelter(InventoryPlayer player, TileEntityAlloySmelter tileentity) {
        super(new ContainerAlloySmelter(player, tileentity));
        this.player = player;
        this.tileentity = tileentity;
    }
    
    
    @Override
    protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
        String tileName = this.tileentity.getDisplayName().getUnformattedText();
        this.fontRenderer.drawString(tileName, (this.xSize / 2 - this.fontRenderer.getStringWidth(tileName) / 2) + 3, 8, 4210752);
        this.fontRenderer.drawString(this.player.getDisplayName().getUnformattedText(), 122, this.ySize - 96 + 2, 4210752);
        super.drawGuiContainerForegroundLayer(mouseX, mouseY);
    }
    
    
    @Override
    protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) {
        GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f);
        this.mc.getTextureManager().bindTexture(TEXTURES);
        this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, this.xSize, this.ySize);
        
        if(TileEntityAlloySmelter.isWorking(tileentity))
        {
            int k = getWorkLeftScale(13);
            this.drawTexturedModalRect(this.guiLeft + 45, this.guiTop + 32 + 12 - k, 166, 12 - k, 14, k + 1);
            
        }
        
        int l = this.getWorkProgressScaled(24);
        this.drawTexturedModalRect(this.guiLeft + 78, this.guiTop + 30, 166, 14, l + 1, 16);
    }
    
    
    private int getWorkLeftScale(int pixels){
        int i = this.tileentity.getField(1);
        if (i == 0)
            i = 200;
        return this.tileentity.getField(1) * pixels/i;
    }
    
    private int getWorkProgressScaled(int pixels) {
        int i = this.tileentity.getField(2);
        int j = this.tileentity.getField(3);
        
        return j != 0 && i != 0 ? i * pixels / j : 0;
    }
    
}
 

TileEntity

Spoiler

package OliveMod.machines.AlloySmelter;

import OliveMod.init.ModBlocks;
import OliveMod.init.ModItems;
import OliveMod.items.ItemBase;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.ItemStackHelper;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ITickable;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.util.text.TextComponentTranslation;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import scala.tools.nsc.doc.model.Public;

public class TileEntityAlloySmelter extends TileEntity implements IInventory, ITickable {

    NonNullList<ItemStack> inventory = NonNullList.<ItemStack>withSize(4, ItemStack.EMPTY);
    private String customName;
    
    private int burnTime;
    private int currentCookTime;
    private int cookTime;
    private int totalCookTime;
    
    @Override
    public String getName() {
        return this.hasCustomName() ? this.customName : "container.alloy_smelter"; 
    }
    
    
    @Override
    public boolean hasCustomName() {
        return this.customName != null && !this.customName.isEmpty();
    }
    
    
    public void setCustomName(String customName)
    {
        this.customName = customName;
    }
    
    @Override
    public ITextComponent getDisplayName()
    {
        return this.hasCustomName() ? new TextComponentString(this.getName()) : new TextComponentTranslation(this.getName());
    }
    
    
    @Override
    public int getSizeInventory() {
        return this.inventory.size();
    }
    
    
    @Override
    public boolean isEmpty() {
        for(ItemStack stack : this.inventory)
        {
            if (!stack.isEmpty())
                return false;
        }
        return true;
    }
    
    
    @Override
    public ItemStack getStackInSlot(int index) {
        return (ItemStack)this.inventory.get(index);
    }
    
    
    @Override
    public ItemStack decrStackSize(int index, int count) {
        return ItemStackHelper.getAndSplit(this.inventory, index, count);
    }
    
    
    @Override
    public ItemStack removeStackFromSlot(int index) {
        return ItemStackHelper.getAndRemove(this.inventory, index);
    }
    
    
    @Override
    public void setInventorySlotContents(int index, ItemStack stack) {
        ItemStack itemstack = (ItemStack)this.inventory.get(index);
        boolean flag = !stack.isEmpty() && stack.isItemEqual(itemstack) && ItemStack.areItemStacksEqual(stack, itemstack);
        this.inventory.set(index, stack);
        
        if(stack.getCount() > this.getInventoryStackLimit() )
            stack.setCount(this.getInventoryStackLimit());
        
        if(index == 0 && index + 1 == 1 && !flag)
        {
            ItemStack stack1 = (ItemStack)this.inventory.get(index + 1);
            this.totalCookTime = this.getBurnTime(index, stack1);
            this.cookTime = 0;
            this.markDirty();
        }
    }
    
    private int getBurnTime(int index, ItemStack stack1) {
        // TODO Auto-generated method stub
        return 0;
    }


    @Override
    public void readFromNBT(NBTTagCompound compound)
    {
        super.readFromNBT(compound);
        this.inventory = NonNullList.<ItemStack>withSize(this.getSizeInventory(), ItemStack.EMPTY);
        ItemStackHelper.loadAllItems(compound, this.inventory);
        this.burnTime = compound.getInteger("BurnTime");
        this.cookTime = compound.getInteger("CookTime");
        this.totalCookTime = compound.getInteger("WorkTimeTotal");
        this.currentCookTime = getItemBurnTime((ItemStack)this.inventory.get(2));
    
        if(compound.hasKey("customName", 0))
            this.setCustomName(compound.getString("customName"));
    }
    
    public NBTTagCompound writeToNBT(NBTTagCompound compound)
    {
        super.writeToNBT(compound);
        compound.setInteger("BurnTime", (short)this.burnTime);
        compound.setInteger("WorkTime", (short)this.cookTime);
        compound.setInteger("WorkTimeTotal", (short)this.totalCookTime);
        ItemStackHelper.saveAllItems(compound, this.inventory);
        
        if(this.hasCustomName())
            compound.setString("custonName", this.customName);
        
        return compound;        
    }


    @Override
    public int getInventoryStackLimit() {
        return 64;
    }
    
    public boolean isBurning(){
        return this.cookTime > 0;
    }
    
    
    @SideOnly(Side.CLIENT)
    public static boolean isWorking(IInventory inventory){
        return inventory.getField(0) > 0;
    }
    
    public void update()
    {
        boolean flag = this.isBurning();
        boolean flag1 = false;
        
        if(this.isBurning()) 
            --this.cookTime;
        
        if(this.world.isRemote)
        {
            ItemStack stack = (ItemStack)this.inventory.get(2);
            if(this.isBurning() || !stack.isEmpty() && !((((ItemStack)this.inventory.get(0)).isEmpty()) || ((ItemStack)this.inventory.get(0)).isEmpty()) )
            {
                if(!this.isBurning() && this.canWork() )
                {
                    this.burnTime = getItemBurnTime(stack);
                    this.currentCookTime = cookTime;
                    
                    if(this.isBurning())
                    {
                        flag1 = true;
                        
                        if(!stack.isEmpty())
                        {
                            Item item = stack.getItem();
                            stack.shrink(1);
                            
                            if(stack.isEmpty())
                            {
                                ItemStack item1 = item.getContainerItem(stack);
                                this.inventory.set(2, item1);
                            }
                        }
                    }
                    
                }
                if(this.isBurning() && this.canWork())
                {
                    ++this.cookTime;
                    if(this.cookTime == this.totalCookTime)
                    {
                        this.cookTime = 0;
                        this.totalCookTime = this.getWorkTime((ItemStack)this.inventory.get(0), (ItemStack)this.inventory.get(1));
                        this.WorkItem();
                        flag1 = true;
                    }
                    else this.cookTime = 0;
                    
                }
                else if(!this.isBurning() && this.cookTime > 0)
                {
                    this.cookTime = MathHelper.clamp(this.cookTime - 2, 0, this.totalCookTime);
                }
                if(flag != this.isBurning())
                {
                    flag1 = true;
                    AlloySmelter.setState(this.isBurning(), this.world, this.pos);
                }
            }
            if(flag1)
                this.markDirty();
        }
    }
    
    
    
    private static int getItemBurnTime(ItemStack fuel) {
        if(fuel.isEmpty())
            return 0;
        else
        {
            Item item = fuel.getItem();
            if(item instanceof ItemBase && Block.getBlockFromItem(item) != Blocks.AIR)
            {
                Block itemToWork = Block.getBlockFromItem(item);
                if(itemToWork == Blocks.COAL_BLOCK)
                    return 16000;
                if(itemToWork.getDefaultState().getMaterial() == Material.WOOD)
                    return 200;

            }
            if(item == Items.COAL)
                return 1600;
            
            return GameRegistry.getFuelValue(fuel);
        }
        
    }
    
    public static boolean isItemFuel(ItemStack fuel)
    {
        return getItemBurnTime(fuel) > 0;
    }


    private void WorkItem() {
        if(this.canWork())
        {
            ItemStack input1 = (ItemStack)this.inventory.get(0);
            ItemStack input2 = (ItemStack)this.inventory.get(1);
            ItemStack result = AlloySmelterRecipes.getInstance().getSeparatorResult(input1, input2);
            ItemStack output = (ItemStack)this.inventory.get(3);    
            
            if(output.isEmpty())
                this.inventory.set(3, result.copy());
            else if (output.getItem() == result.getItem())
                output.grow(result.getCount());
            input1.shrink(1);
            input2.shrink(1);
        }
        
        
    }


    private int getWorkTime(ItemStack itemStack, ItemStack stack1) {

        return 200;
    }

 

    private boolean canWork() {
        if (((ItemStack)this.inventory.get(0)).isEmpty() || ((ItemStack)this.inventory.get(1)).isEmpty())        
            return false;
        else
        {
            ItemStack result = AlloySmelterRecipes.getInstance().getSeparatorResult((ItemStack)this.inventory.get(0), (ItemStack)this.inventory.get(1));
            if(result.isEmpty())
                return false;
            else
            {
                ItemStack output = (ItemStack)this.inventory.get(3);
                if(output.isEmpty())
                    return true;
                if(!output.isItemEqual(result))
                    return false;
                int res = output.getCount() + result.getCount();
                return res <= getInventoryStackLimit() && res <= output.getMaxStackSize();
            }
        }
    }


    @Override
    public boolean isUsableByPlayer(EntityPlayer player) {
        return this.world.getTileEntity(this.pos) != this ? false : player.getDistanceSq((double)this.pos.getX()+0.5D, (double)this.pos.getY()+0.5D,(double)this.pos.getZ()+0.5D) <= 64;
    }
    
    
    @Override
    public void openInventory(EntityPlayer player) {        
    }
    
    
    @Override
    public void closeInventory(EntityPlayer player) {    
    }
    
    
    @Override
    public boolean isItemValidForSlot(int index, ItemStack stack) {
        if(index == 3)
            return true;
        else if (index != 2)
            return true;
        else
            return isItemFuel(stack);
    }
    
    
    public String getGuiID()
    {
        return "oil:separator";
    }
    
    @Override
    public int getField(int id) {
        switch (id)
        {
        case 0:
            return this.burnTime;
        case 1:
            return this.currentCookTime;
        case 2:
            return this.cookTime;
        case 3:
            return this.totalCookTime;
            
        default:
            return 0;
        }
    }
    
    
    @Override
    public void setField(int id, int value) {
        switch (id)
        {
        case 0:
            this.burnTime = value;
        case 1:
            this.currentCookTime = value;
        case 2:
            this.cookTime = value;
        case 3:
            this.totalCookTime = value;
        }
        
    }
    
    
    @Override
    public int getFieldCount() {
        return 4;
    }
    
    
    @Override
    public void clear() {
        this.inventory.clear();
    }
    
}
 

Gui Handler

Spoiler

package OliveMod.util.handler;


import OliveMod.machines.AlloySmelter.ContainerAlloySmelter;
import OliveMod.machines.AlloySmelter.GUI_AlloySmelter;
import OliveMod.machines.AlloySmelter.TileEntityAlloySmelter;
import OliveMod.util.Reference;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.network.IGuiHandler;

public class GuiHandler implements IGuiHandler {
    
    
    @Override
    public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
        if(ID == Reference.GUI_ALLOY_SMELTER)
            return new ContainerAlloySmelter(player.inventory, (TileEntityAlloySmelter)world.getTileEntity(new BlockPos(x, y, z)));
        return null;

    }

    @Override
    public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
        if(ID == Reference.GUI_ALLOY_SMELTER)
            return new GUI_AlloySmelter(player.inventory, (TileEntityAlloySmelter)world.getTileEntity(new BlockPos(x, y, z)));
        return null;
    }

}
 

Register Handler

Spoiler

package OliveMod.util.handler;

import com.google.common.graph.Network;

import OliveMod.Main;
import OliveMod.init.ModBlocks;
import OliveMod.init.ModItems;
import OliveMod.util.IHasModels;
import net.minecraft.block.Block;
import net.minecraft.client.audio.SoundHandler;
import net.minecraft.item.Item;
import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.network.NetworkRegistry;

@EventBusSubscriber
public class RegistryHandlers {

    @SubscribeEvent
    public static void onItemRegister(RegistryEvent.Register<Item> event) {
        event.getRegistry().registerAll(ModItems.ITEMS.toArray(new Item[0]));

    }

    @SubscribeEvent
    public static void onBlockRegister(RegistryEvent.Register<Block> event) {
        event.getRegistry().registerAll(ModBlocks.BLOCKS.toArray(new Block[0]));
        TileEntityHandler.registerTileEntities();

    }

    @SubscribeEvent
    public static void onModelRegister(ModelRegistryEvent event) {

        for (Item item : ModItems.ITEMS) {
            if (item instanceof IHasModels) {

                ((IHasModels) item).registerModels();

            }
        }

        for (Block block : ModBlocks.BLOCKS) {
            if (block instanceof IHasModels) {

                ((IHasModels) block).registerModels();

            }
        }

    }
    
    public static void initRegistries() {
        NetworkRegistry.INSTANCE.registerGuiHandler(Main.instance, new GuiHandler());
    }
}
 

TileEntity Handler

Spoiler

package OliveMod.util.handler;

import OliveMod.machines.AlloySmelter.TileEntityAlloySmelter;
import net.minecraftforge.fml.common.registry.GameRegistry;

public class TileEntityHandler {

    public static void registerTileEntities() {
        GameRegistry.registerTileEntity(TileEntityAlloySmelter.class, "alloy_smelter");
    }
}
 

 

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • what's wrong here? info: [2024-05-08T11:50:59Z DEBUG rust_launcher::downloader] Downloading https://game-launcher.feathermc.com/release/version_index.json to C:\Users\Dell\AppData\Roaming\.minecraft\version_index.json... info: [2024-05-08T11:50:59Z DEBUG rust_launcher::downloader] Download from https://game-launcher.feathermc.com/release/version_index.json to C:\Users\Dell\AppData\Roaming\.minecraft\version_index.json completed. info: [2024-05-08T11:51:04Z ERROR rust_launcher::start::drm] Error while getting NTP time: Próba połączenia nie powiodła się, ponieważ połączona strona nie odpowiedziała poprawnie po ustalonym okresie czasu lub utworzone połączenie nie powiodło się, ponieważ połączony host nie odpowiedział. (os error 10060) info: CONNECTING TO SERVER undefined info: [2024-05-08T11:51:04Z INFO  rust_launcher::start::bindings] server: None info: [2024-05-08T11:51:04Z INFO  rust_launcher::start] Loading version info: {"versionSize":221968648,"state":{"VersionLoading":true},"currentDownloadRate":0,"expectedTasks":6,"downloadSpeed":0,"downloaded":0} info: [2024-05-08T11:51:04Z INFO  rust_launcher::start] Finished loading version info: [2024-05-08T11:51:04Z INFO  rust_launcher::start] Finished moving mods info: [2024-05-08T11:51:04Z INFO  rust_launcher::start] Preparing assets [2024-05-08T11:51:04Z INFO  rust_launcher::start] Preparing JRE info: {"versionSize":221968648,"state":{"Downloading":["Assets","Mods","Jre","Libraries"]},"currentDownloadRate":0,"expectedTasks":6,"downloadSpeed":0,"downloaded":75483} info: [2024-05-08T11:51:04Z DEBUG rust_launcher::start] Finished preparing JRE [2024-05-08T11:51:04Z INFO  rust_launcher::start] Preparing libraries info: [2024-05-08T11:51:04Z INFO  rust_launcher::start] Preparing mods [2024-05-08T11:51:04Z INFO  rust_launcher::start] Finished preparing mods info: {"versionSize":221968648,"state":{"Downloading":["Assets","Mods","Libraries"]},"currentDownloadRate":0,"expectedTasks":6,"downloadSpeed":0,"downloaded":43223364} info: {"versionSize":221968648,"state":{"Downloading":["Assets","Libraries"]},"currentDownloadRate":0,"expectedTasks":6,"downloadSpeed":0,"downloaded":43223364} info: {"versionSize":221968648,"state":{"Downloading":["Assets","Libraries"]},"currentDownloadRate":0,"expectedTasks":6,"downloadSpeed":0,"downloaded":132324388} info: {"versionSize":221968648,"state":{"Downloading":["Assets","Libraries"]},"currentDownloadRate":0,"expectedTasks":6,"downloadSpeed":0,"downloaded":361246457} info: [2024-05-08T11:51:07Z INFO  rust_launcher::start] Finished preparing libraries info: {"versionSize":221968648,"state":{"Downloading":["Assets"]},"currentDownloadRate":0,"expectedTasks":6,"downloadSpeed":0,"downloaded":628395692} info: {"versionSize":221968648,"state":{"Downloading":["Assets"]},"currentDownloadRate":0,"expectedTasks":6,"downloadSpeed":0,"downloaded":653786583} info: {"versionSize":221968648,"state":{"Downloading":["Assets"]},"currentDownloadRate":0,"expectedTasks":6,"downloadSpeed":0,"downloaded":678407583} info: {"versionSize":221968648,"state":{"Downloading":["Assets"]},"currentDownloadRate":0,"expectedTasks":6,"downloadSpeed":0,"downloaded":703052935} info: [2024-05-08T11:51:10Z INFO  rust_launcher::start] Finished preparing assets [2024-05-08T11:51:10Z INFO  rust_launcher::start] Preparing registry info: {"versionSize":221968648,"state":{"Jvm":true},"currentDownloadRate":0,"expectedTasks":6,"downloadSpeed":0,"downloaded":800814091} info: [2024-05-08T11:51:10Z INFO  rust_launcher::start] Finished preparing registry info: [2024-05-08T11:51:10Z INFO  rust_launcher::common::launch] starting JVM with arguments: ["-Djava.library.path=libraries/native\\net/digitalingot/fcef-windows/0.0.9\\extracted/;libraries/native\\net/digitalingot/fwebp-windows/0.0.2\\extracted/;libraries/native\\net/digitalingot/favif-windows/0.0.1\\extracted/;libraries/native\\com/discord/discord-game-sdk/3.2.1\\extracted/;libraries/native\\net/digitalingot/fdiscord/0.0.1\\extracted/;libraries/native\\net/digitalingot/fjni/0.0.1\\extracted/;libraries/native\\org/jitsi/jnopus/1.0\\extracted/;libraries/native\\org/lwjgl/lwjgl/3.3.1\\extracted/;libraries/native\\org/lwjgl/lwjgl-jemalloc/3.3.1\\extracted/;libraries/native\\org/lwjgl/lwjgl-openal/3.3.1\\extracted/;libraries/native\\org/lwjgl/lwjgl-opengl/3.3.1\\extracted/;libraries/native\\org/lwjgl/lwjgl-glfw/3.3.1\\extracted/;libraries/native\\org/lwjgl/lwjgl-stb/3.3.1\\extracted/;libraries/native\\org/lwjgl/lwjgl-tinyfd/3.3.1\\extracted/;libraries/native\\com/mojang/text2speech/1.13.9\\extracted/", "--add-opens=java.desktop/java.awt.event=ALL-UNNAMED", "--add-opens=java.desktop/java.awt.color=ALL-UNNAMED", "--add-opens=java.desktop/java.awt=ALL-UNNAMED", "--add-opens=java.base/java.lang=ALL-UNNAMED", "-Xmx4474M", "-XX:+UnlockExperimentalVMOptions", "-XX:+UseG1GC", "-XX:G1NewSizePercent=20", "-XX:G1ReservePercent=20", "-XX:MaxGCPauseMillis=50", "-XX:G1HeapRegionSize=32M", "-Dlog4j2.formatMsgNoLookups=true", "-XX:ErrorFile=feather/java_error.log", "-Djavax.accessibility.assistive_technologies=", "-Djavax.net.ssl.trustStoreType=WINDOWS-ROOT", "-cp", "libraries\\java\\net/minecraft/client/1.19.2/minecraft-1.19.2.jar;libraries\\java\\net/fabricmc/sponge-mixin/0.13.4+mixin.0.8.5/sponge-mixin-0.13.4+mixin.0.8.5.jar;libraries\\java\\org/ow2/asm/asm/9.6/asm-9.6.jar;libraries\\java\\org/ow2/asm/asm-analysis/9.6/asm-analysis-9.6.jar;libraries\\java\\org/ow2/asm/asm-commons/9.6/asm-commons-9.6.jar;libraries\\java\\org/ow2/asm/asm-tree/9.6/asm-tree-9.6.jar;libraries\\java\\org/ow2/asm/asm-util/9.6/asm-util-9.6.jar;libraries\\java\\net/fabricmc/intermediary/1.19.2/intermediary-1.19.2.jar;libraries/java\\net/fabricmc/fabric-loader/0.15.11/fabric-loader-0.15.11.jar;libraries\\java\\de/javagl/obj/0.3.0/obj-0.3.0.jar;libraries\\java\\net/digitalingot/fjni/0.0.1/fjni-0.0.1.jar;libraries\\java\\net/digitalingot/fdiscord/0.0.1/fdiscord-0.0.1.jar;libraries\\java\\software/bernie/geckolib/geckolib-fabric-1.19-3.5.0.jar;libraries\\java\\net/digitalingot/rust-extension/1.0.7/rust-extension-1.0.7.jar;libraries\\java\\net/digitalingot/fcef/0.0.6/fcef-0.0.6.jar;libraries\\java\\net/digitalingot/fwebp/0.0.1/fwebp-0.0.1.jar;libraries\\java\\net/digitalingot/favif/0.0.1/favif-0.0.1.jar;libraries\\java\\org/joml/joml/1.10.5/joml-1.10.5.jar;libraries\\java\\net/digitalingot/feather-server-api/messaging/0.0.4/messaging-0.0.4-SNAPSHOT.jar;libraries\\java\\org/jitsi/libjitsi/1.0-CUSTOM/libjitsi-1.0-CUSTOM.jar;libraries\\java\\org/jitsi/jitsi-utils/1.0-45-gc3afb76/jitsi-utils-1.0-45-gc3afb76.jar;libraries\\java\\org/capnproto/runtime/0.1.10/runtime-0.1.10.jar;libraries\\java\\com/google/inject/guice/5.1.0/guice-vendored-5.1.0.jar;libraries\\java\\javassist/javassist/3.12.1.GA/javassist-3.12.1.GA.jar;libraries\\java\\com/mojang/logging/1.0.0/logging-1.0.0.jar;libraries\\java\\com/mojang/blocklist/1.0.10/blocklist-1.0.10.jar;libraries\\java\\com/mojang/patchy/2.2.10/patchy-2.2.10.jar;libraries\\java\\com/github/oshi/oshi-core/5.8.5/oshi-core-5.8.5.jar;libraries\\java\\net/java/dev/jna/jna/5.10.0/jna-5.10.0.jar;libraries\\java\\net/java/dev/jna/jna-platform/5.10.0/jna-platform-5.10.0.jar;libraries\\java\\org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.jar;libraries\\java\\org/apache/logging/log4j/log4j-slf4j18-impl/2.17.0/log4j-slf4j18-impl-2.17.0.jar;libraries\\java\\com/ibm/icu/icu4j/70.1/icu4j-70.1.jar;libraries\\java\\com/mojang/javabridge/1.2.24/javabridge-1.2.24.jar;libraries\\java\\net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar;libraries\\java\\io/netty/netty-codec-http/4.1.76.Final/netty-codec-http-4.1.76.Final.jar;libraries\\java\\io/netty/netty-common/4.1.76.Final/netty-common-4.1.76.Final.jar;libraries\\java\\io/netty/netty-buffer/4.1.76.Final/netty-buffer-4.1.76.Final.jar;libraries\\java\\io/netty/netty-codec/4.1.76.Final/netty-codec-4.1.76.Final.jar;libraries\\java\\io/netty/netty-handler/4.1.76.Final/netty-handler-4.1.76.Final.jar;libraries\\java\\io/netty/netty-resolver/4.1.76.Final/netty-resolver-4.1.76.Final.jar;libraries\\java\\io/netty/netty-transport/4.1.76.Final/netty-transport-4.1.76.Final.jar;libraries\\java\\io/netty/netty-transport-native-unix-common/4.1.76.Final/netty-transport-native-unix-common-4.1.76.Final.jar;libraries\\java\\io/netty/netty-transport-classes-epoll/4.1.76.Final/netty-transport-classes-epoll-4.1.76.Final.jar;libraries\\java\\com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar;libraries\\java\\com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar;libraries\\java\\org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar;libraries\\java\\commons-io/commons-io/2.11.0/commons-io-2.11.0.jar;libraries\\java\\commons-codec/commons-codec/1.15/commons-codec-1.15.jar;libraries\\java\\com/mojang/brigadier/1.0.18/brigadier-1.0.18.jar;libraries\\java\\com/mojang/datafixerupper/5.0.28/datafixerupper-5.0.28.jar;libraries\\java\\com/google/code/gson/gson/2.8.9/gson-2.8.9.jar;libraries\\java\\com/mojang/authlib/3.11.49/authlib-3.11.49.jar;libraries\\java\\org/apache/commons/commons-compress/1.21/commons-compress-1.21.jar;libraries\\java\\org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar;libraries\\java\\commons-logging/commons-logging/1.2/commons-logging-1.2.jar;libraries\\java\\org/apache/httpcomponents/httpcore/4.4.14/httpcore-4.4.14.jar;libraries\\java\\it/unimi/dsi/fastutil/8.5.6/fastutil-8.5.6.jar;libraries\\java\\org/apache/logging/log4j/log4j-api/2.17.0/log4j-api-2.17.0.jar;libraries\\java\\org/apache/logging/log4j/log4j-core/2.17.0/log4j-core-2.17.0.jar;libraries\\java\\org/lwjgl/lwjgl/3.3.1/lwjgl-3.3.1.jar;libraries\\java\\org/lwjgl/lwjgl-jemalloc/3.3.1/lwjgl-jemalloc-3.3.1.jar;libraries\\java\\org/lwjgl/lwjgl-openal/3.3.1/lwjgl-openal-3.3.1.jar;libraries\\java\\org/lwjgl/lwjgl-opengl/3.3.1/lwjgl-opengl-3.3.1.jar;libraries\\java\\org/lwjgl/lwjgl-glfw/3.3.1/lwjgl-glfw-3.3.1.jar;libraries\\java\\org/lwjgl/lwjgl-stb/3.3.1/lwjgl-stb-3.3.1.jar;libraries\\java\\org/lwjgl/lwjgl-tinyfd/3.3.1/lwjgl-tinyfd-3.3.1.jar;libraries\\java\\com/mojang/text2speech/1.13.9/text2speech-1.13.9.jar", "-DFabricMcEmu= net.minecraft.client.main.Main ", "net.digitalingot.rustextension.ProxiedStart", "net.fabricmc.loader.launch.knot.KnotClient", "--username", "yeeeat", "--version", "1.19.2-feather", "--gameDir", "C:\\Users\\Dell\\AppData\\Roaming/.minecraft", "--assetsDir", "assets", "--assetIndex", "1.19-feather-game", "--uuid", "4820f9fb67c34cb6927e80e8a03a21c6", "--accessToken", "<hidden>", "--userType", "msa", "--versionType", "feather"] info: sending javaw pid info: starting cleanup info: [13:51:11] [main/INFO]: Loading Minecraft 1.19.2 with Fabric Loader 0.15.11 info: [13:51:12] [ForkJoinPool-1-worker-2/WARN]: Mod feather uses the version release/756b8dc6 which isn't compatible with Loader's extended semantic version format (Could not parse version number component 'release/756b8dc6'!), SemVer is recommended for reliably evaluating dependencies and prioritizing newer version info: [13:51:12] [main/INFO]: Loading 126 mods:     - appleskin 2.4.1+mc1.19     - architectury 6.5.85     - betterhurtcam 1.3.3+mc1.19.2     - boostedbrightness 2.1.2     - clearhitboxes 1.2     - cloth-config 8.2.88        \-- cloth-basic-math 0.6.1     - cmdkeybind 1.6.0-1.19        \-- kyrptconfig 1.4.14-1.19     - collective 6.61     - completeconfig 2.1.0        |-- coat 1.0.0-beta.19+mc22w17a        |-- completeconfig-base 2.1.0        |-- completeconfig-gui-cloth 2.1.0        |-- completeconfig-gui-coat 2.1.0        \-- completeconfig-gui-yacl 2.1.0     - cull-less-leaves 1.0.6        \-- conditional-mixin 0.3.0     - custom_hud 3.0.0+1.19.2     - darkkore 0.3.1-1.19        |-- com_electronwill_night-config_core 3.6.5        |-- com_electronwill_night-config_json 3.6.5        |-- com_electronwill_night-config_toml 3.6.5        |-- com_github_darkkronicle_konstruct_addons 2.0.3-build1        \-- com_github_darkkronicle_konstruct_core 2.0.3-build1     - debugify 2.8.0     - entitycollisionfpsfix 2.0.0.0     - entityculling 1.6.1-mc1.19.2     - exordium 1.0.2-mc1.19.2     - fabric-api 0.76.1+1.19.2        |-- fabric-api-base 0.4.15+8f4e8eb390        |-- fabric-api-lookup-api-v1 1.6.14+93d8cb8290        |-- fabric-biome-api-v1 9.1.1+16f1e31390        |-- fabric-block-api-v1 1.0.2+e415d50e90        |-- fabric-blockrenderlayer-v1 1.1.25+cafc6e8e90        |-- fabric-client-tags-api-v1 1.0.5+b35fea8390        |-- fabric-command-api-v1 1.2.16+f71b366f90        |-- fabric-command-api-v2 2.2.1+413cbbc790        |-- fabric-commands-v0 0.2.33+df3654b390        |-- fabric-containers-v0 0.1.42+df3654b390        |-- fabric-content-registries-v0 3.5.2+7c6cd14d90        |-- fabric-convention-tags-v1 1.3.0+4bc6e26290        |-- fabric-crash-report-info-v1 0.2.8+aeb40ebe90        |-- fabric-data-generation-api-v1 5.3.9+413cbbc790        |-- fabric-dimensions-v1 2.1.35+0d0f210290        |-- fabric-entity-events-v1 1.5.4+9244241690        |-- fabric-events-interaction-v0 0.4.34+562bff6e90        |-- fabric-events-lifecycle-v0 0.2.36+df3654b390        |-- fabric-game-rule-api-v1 1.0.24+b6b6abb490        |-- fabric-item-api-v1 1.6.6+b7d1888890        |-- fabric-item-groups-v0 0.3.39+9244241690        |-- fabric-key-binding-api-v1 1.0.25+5c4fce2890        |-- fabric-keybindings-v0 0.2.23+df3654b390        |-- fabric-lifecycle-events-v1 2.2.4+1b46dc7890        |-- fabric-loot-api-v2 1.1.13+83a8659290        |-- fabric-loot-tables-v1 1.1.16+9e7660c690        |-- fabric-message-api-v1 5.0.7+93d8cb8290        |-- fabric-mining-level-api-v1 2.1.24+33fbc73890        |-- fabric-models-v0 0.3.21+c6af733c90        |-- fabric-networking-api-v1 1.2.12+def3f86d90        |-- fabric-networking-v0 0.3.29+df3654b390        |-- fabric-object-builder-api-v1 4.2.2+d8ef690890        |-- fabric-particles-v1 1.0.14+4d0d570390        |-- fabric-recipe-api-v1 1.0.2+413cbbc790        |-- fabric-registry-sync-v0 0.9.33+9244241690        |-- fabric-renderer-api-v1 1.2.1+1adbf27790        |-- fabric-renderer-indigo 0.8.0+1adbf27790        |-- fabric-renderer-registries-v1 3.2.24+df3654b390        |-- fabric-rendering-data-attachment-v1 0.3.19+6e0787e690        |-- fabric-rendering-fluids-v1 3.0.11+4d0d570390        |-- fabric-rendering-v0 1.1.27+df3654b390        |-- fabric-rendering-v1 1.12.1+d8ef690890        |-- fabric-resource-conditions-api-v1 2.1.2+aae9039d90        |-- fabric-resource-loader-v0 0.8.4+edbdcddb90        |-- fabric-screen-api-v1 1.0.32+4d0d570390        |-- fabric-screen-handler-api-v1 1.3.8+1cc24b1b90        |-- fabric-sound-api-v1 1.0.2+c4f28df590        |-- fabric-textures-v0 1.0.24+aeb40ebe90        |-- fabric-transfer-api-v1 2.1.6+413cbbc790        \-- fabric-transitive-access-wideners-v1 1.3.3+08b73de490     - fabric-language-kotlin 1.9.5+kotlin.1.8.22        |-- org_jetbrains_kotlin_kotlin-reflect 1.8.22        |-- org_jetbrains_kotlin_kotlin-stdlib 1.8.22        |-- org_jetbrains_kotlin_kotlin-stdlib-jdk7 1.8.22        |-- org_jetbrains_kotlin_kotlin-stdlib-jdk8 1.8.22        |-- org_jetbrains_kotlinx_atomicfu-jvm 0.20.2        |-- org_jetbrains_kotlinx_kotlinx-coroutines-core-jvm 1.7.1        |-- org_jetbrains_kotlinx_kotlinx-coroutines-jdk8 1.7.1        |-- org_jetbrains_kotlinx_kotlinx-datetime-jvm 0.4.0        |-- org_jetbrains_kotlinx_kotlinx-serialization-cbor-jvm 1.5.1        |-- org_jetbrains_kotlinx_kotlinx-serialization-core-jvm 1.5.1        \-- org_jetbrains_kotlinx_kotlinx-serialization-json-jvm 1.5.1     - fabricloader 0.15.11        \-- mixinextras 0.3.5     - feather release/756b8dc6     - ferritecore 5.0.3     - forcecloseloadingscreen 1.1.1     - ias 8.0.1     - inventoryhud 3.4.2     - itemmodelfix 1.0.3+1.19     - java 17     - kronhud 1.19.2-2.2.3     - lessglintythings 1.3.2     - memoryleakfix 1.1.1     - minecraft 1.19.2     - mixin-conflict-helper 1.2.0     - modmenu 4.2.0-beta.2     - morecosmetics 1.2     - nametagping 1.19.2-1.2     - optifabric 1.13.24        \-- mm 2.3     - perspektive 1.2.1     - recursiveresources 2.4.3+1.19        |-- cicada 0.4.0        \-- shared-resources-api 1.5.0     - shulkerboxtooltip 3.2.2+1.19.2     - slotlock 1.1.1-BETA+1.19     - timechanger 1.2.0        \-- midnightlib 0.5.2     - ukulib 0.6.1+1.19.2        |-- com_moandjiezana_toml_toml4j 0.7.2        \-- gs_mclo_java_mclogs-java 2.1.1     - waveycapes 1.3.2     - whoami 1.0     - xaerobetterpvp 24.1.1     - yet-another-config-lib 2.2.0-for-1.19.2 info: [13:51:13] [main/INFO]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=file:/C:/Users/Dell/AppData/Roaming/.minecraft/libraries/java/net/fabricmc/sponge-mixin/0.13.4+mixin.0.8.5/sponge-mixin-0.13.4+mixin.0.8.5.jar Service=Knot/Fabric Env=CLIENT info: [13:51:13] [main/INFO]: Compatibility level set to JAVA_16 info: [13:51:13] [main/INFO]: Compatibility level set to JAVA_17 info: [13:51:13] [main/INFO]: [Feather::EssentialMod] Installed: false info: [13:51:14] [main/WARN]: Reference map 'shared-resources-api-refmap.json' for shared-resources-api.mixins.json could not be read. If this is a development environment you can ignore this message info: [13:51:14] [main/WARN]: Error loading class: me/jellysquid/mods/sodium/client/gui/options/control/SliderControl (java.lang.ClassNotFoundException: me/jellysquid/mods/sodium/client/gui/options/control/SliderControl) info: [13:51:14] [main/WARN]: Error loading class: me/jellysquid/mods/sodium/client/gui/options/OptionImpl (java.lang.ClassNotFoundException: me/jellysquid/mods/sodium/client/gui/options/OptionImpl) info: [13:51:14] [main/WARN]: Force disabled MC-121772 because it only applies to OS: MAC [13:51:14] [main/WARN]: Force disabled MC-122477 because it only applies to OS: LINUX info: [13:51:14] [main/WARN]: Force disabled MC-22882 because it only applies to OS: MAC info: [13:51:14] [main/WARN]: Force disabled MC-228976 because it's conflicting with: entitycollisionfpsfix info: [13:51:14] [main/WARN]: Force disabled MC-249059 because it's conflicting with: forcecloseloadingscreen info: [13:51:15] [main/INFO]: [MemoryLeakFix] Will be applying 4 memory leak fixes! [13:51:15] [main/INFO]: [MemoryLeakFix] Currently enabled memory leak fixes: [targetEntityLeak, entityMemoriesLeak, biomeTemperatureLeak, hugeScreenshotLeak] info: [13:51:15] [main/WARN]: Error loading class: org/jetbrains/annotations/ApiStatus$Internal (java.lang.ClassNotFoundException: org/jetbrains/annotations/ApiStatus$Internal) error: Failed to setup optifine: java.lang.NoClassDefFoundError: net/fabricmc/tinyremapper/IMappingProvider     at me.modmuss50.optifabric.mod.OptifabricSetup.run(OptifabricSetup.java:46)     at java.base/java.util.ArrayList.forEach(Unknown Source)     at com.chocohead.mm.Plugin.getMixins(Plugin.java:340)     at org.spongepowered.asm.mixin.transformer.PluginHandle.getMixins(PluginHandle.java:128)     at org.spongepowered.asm.mixin.transformer.MixinConfig.postInitialise(MixinConfig.java:796)     at org.spongepowered.asm.mixin.transformer.MixinProcessor.prepareConfigs(MixinProcessor.java:568)     at org.spongepowered.asm.mixin.transformer.MixinProcessor.select(MixinProcessor.java:462)     at org.spongepowered.asm.mixin.transformer.MixinProcessor.checkSelect(MixinProcessor.java:438)     at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:290)     at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:234)     at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:202)     at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:422)     at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:323)     at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.loadClass(KnotClassDelegate.java:218)     at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:119)     at java.base/java.lang.ClassLoader.loadClass(Unknown Source)     at java.base/java.lang.Class.forName0(Native Method)     at java.base/java.lang.Class.forName(Unknown Source)     at net.fabricmc.loader.impl.util.DefaultLanguageAdapter.create(DefaultLanguageAdapter.java:50)     at net.fabricmc.loader.impl.entrypoint.EntrypointStorage$NewEntry.getOrCreate(EntrypointStorage.java:117)     at net.fabricmc.loader.impl.entrypoint.EntrypointContainerImpl.getEntrypoint(EntrypointContainerImpl.java:53)     at net.fabricmc.loader.impl.FabricLoaderImpl.invokeEntrypoints(FabricLoaderImpl.java:384)     at net.fabricmc.loader.impl.launch.knot.Knot.init(Knot.java:160)     at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:68)     at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:28)     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)     at java.base/java.lang.reflect.Method.invoke(Unknown Source)     at net.digitalingot.rustextension.ProxiedStart.main(ProxiedStart.java:16) Caused by: java.lang.ClassNotFoundException: net.fabricmc.tinyremapper.IMappingProvider     at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)     at java.base/java.lang.ClassLoader.loadClass(Unknown Source)     at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.loadClass(KnotClassDelegate.java:226)     at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:119)     at java.base/java.lang.ClassLoader.loadClass(Unknown Source)     ... 30 more info: [13:51:15] [main/WARN]: Error loading class: net/optifine/Config (java.lang.ClassNotFoundException: net/optifine/Config) info: [13:51:15] [main/INFO]: Initializing MixinExtras via com.llamalad7.mixinextras.service.MixinExtrasServiceImpl(version=0.3.5). info: [13:51:15] [main/ERROR]: Minecraft has crashed! net.fabricmc.loader.impl.FormattedException: java.lang.RuntimeException: Mixin transformation of net.minecraft.class_155 failed     at net.fabricmc.loader.impl.FormattedException.ofLocalized(FormattedException.java:63) ~[fabric-loader-0.15.11.jar:?]     at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:472) ~[fabric-loader-0.15.11.jar:?]     at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) [fabric-loader-0.15.11.jar:?]     at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:28) [fabric-loader-0.15.11.jar:?]     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:?]     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?]     at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?]     at net.digitalingot.rustextension.ProxiedStart.main(ProxiedStart.java:16) [rust-extension-1.0.7.jar:?] Caused by: java.lang.RuntimeException: Mixin transformation of net.minecraft.class_155 failed     at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:427) ~[fabric-loader-0.15.11.jar:?]     at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:323) ~[fabric-loader-0.15.11.jar:?]     at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.loadClass(KnotClassDelegate.java:218) ~[fabric-loader-0.15.11.jar:?]     at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:119) ~[fabric-loader-0.15.11.jar:?]     at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]     at net.minecraft.client.main.Main.method_44604(Main.java:55) ~[minecraft-1.19.2.jar:?]     at net.minecraft.client.main.Main.main(Main.java:51) ~[minecraft-1.19.2.jar:?]     at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:470) ~[fabric-loader-0.15.11.jar:?]     ... 7 more Caused by: org.spongepowered.asm.mixin.transformer.throwables.MixinTransformerError: An unexpected critical error was encountered     at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:392) ~[sponge-mixin-0.13.4+mixin.0.8.5.jar:0.13.4+mixin.0.8.5]     at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:234) ~[sponge-mixin-0.13.4+mixin.0.8.5.jar:0.13.4+mixin.0.8.5]     at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:202) ~[sponge-mixin-0.13.4+mixin.0.8.5.jar:0.13.4+mixin.0.8.5]     at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:422) ~[fabric-loader-0.15.11.jar:?]     at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:323) ~[fabric-loader-0.15.11.jar:?]     at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.loadClass(KnotClassDelegate.java:218) ~[fabric-loader-0.15.11.jar:?]     at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:119) ~[fabric-loader-0.15.11.jar:?]     at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]     at net.minecraft.client.main.Main.method_44604(Main.java:55) ~[minecraft-1.19.2.jar:?]     at net.minecraft.client.main.Main.main(Main.java:51) ~[minecraft-1.19.2.jar:?]     at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:470) ~[fabric-loader-0.15.11.jar:?]     ... 7 more Caused by: java.lang.ClassCastException: class com.llamalad7.mixinextras.lib.apache.commons.tuple.ImmutablePair cannot be cast to class org.apache.commons.lang3.tuple.Pair (com.llamalad7.mixinextras.lib.apache.commons.tuple.ImmutablePair and org.apache.commons.lang3.tuple.Pair are in unnamed module of loader net.fabricmc.loader.impl.launch.knot.KnotClassLoader @66a3ffec)     at ca.fxco.memoryleakfix.config.mixinExtension.UnMixinExtension.preApply(UnMixinExtension.java:23) ~[memoryleakfix-fabric-1.17+-1.1.1.temp.jar:?]     at org.spongepowered.asm.mixin.transformer.ext.Extensions.preApply(Extensions.java:156) ~[sponge-mixin-0.13.4+mixin.0.8.5.jar:0.13.4+mixin.0.8.5]     at org.spongepowered.asm.mixin.transformer.TargetClassContext.preApply(TargetClassContext.java:414) ~[sponge-mixin-0.13.4+mixin.0.8.5.jar:0.13.4+mixin.0.8.5]     at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:401) ~[sponge-mixin-0.13.4+mixin.0.8.5.jar:0.13.4+mixin.0.8.5]     at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363) ~[sponge-mixin-0.13.4+mixin.0.8.5.jar:0.13.4+mixin.0.8.5]     at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:234) ~[sponge-mixin-0.13.4+mixin.0.8.5.jar:0.13.4+mixin.0.8.5]     at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:202) ~[sponge-mixin-0.13.4+mixin.0.8.5.jar:0.13.4+mixin.0.8.5]     at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:422) ~[fabric-loader-0.15.11.jar:?]     at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:323) ~[fabric-loader-0.15.11.jar:?]     at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.loadClass(KnotClassDelegate.java:218) ~[fabric-loader-0.15.11.jar:?]     at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:119) ~[fabric-loader-0.15.11.jar:?]     at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]     at net.minecraft.client.main.Main.method_44604(Main.java:55) ~[minecraft-1.19.2.jar:?]     at net.minecraft.client.main.Main.main(Main.java:51) ~[minecraft-1.19.2.jar:?]     at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:470) ~[fabric-loader-0.15.11.jar:?]     ... 7 more info: [2024-05-08T11:51:15Z INFO  rust_launcher::start::bindings] launch stalled  
    • Add PacketFixer: https://www.curseforge.com/minecraft/mc-mods/packet-fixer
    • torohealth and legendarytooltips are client-side-only mods Remove these from your server, keep these in your client
  • Topics

×
×
  • Create New...

Important Information

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