Jump to content

GotPlants (Block & Plantable)


Gotlyfe

Recommended Posts

Continuing from 

I am going to be following the same format of editing the post and describing my actions to create this mod to add new plants.

To be specific, I am going to be adding new blocks, items, sounds and recipes.

 

 

Updates: 

-Adding first plant block (Bamboo)

Spoiler

First read through the documentation at https://mcforge.readthedocs.io/en/latest/blocks/blocks/

Then found some examples from

that I will be working from.

 

-Create new Package and Class named accordingly (plants.bamboo) (BlockBamboo.java)

Spoiler

I will be basing this heavily on @TheGreyGhost's TheGreyGhost MinecraftByExample03_block_variants

as well as the BlockCactus.java from net.minecraft.block

often using the documentation, so also familiarize yourself with the models section MCForge ReadTheDocs Models

 

-Make BlockBamboo extend Block and  implement IPlantable

import net.minecraft.block.Block;

public class BlockBamboo extends Block implements net.minecraftforge.common.IPlantable{
}

This requires us to add a constructor giving the Material for the block

	protected BlockBamboo()
	{
		super(Material.PLANTS);
	}

which requires import net.minecraft.block.material.Material
 

Spoiler

For now I pulled a material that seemed right from Material.class

Spoiler


    public static final Material AIR = new MaterialTransparent(MapColor.AIR);
    public static final Material GRASS = new Material(MapColor.GRASS);
    public static final Material GROUND = new Material(MapColor.DIRT);
    public static final Material WOOD = (new Material(MapColor.WOOD)).setBurning();
    public static final Material ROCK = (new Material(MapColor.STONE)).setRequiresTool();
    public static final Material IRON = (new Material(MapColor.IRON)).setRequiresTool();
    public static final Material ANVIL = (new Material(MapColor.IRON)).setRequiresTool().setImmovableMobility();
    public static final Material WATER = (new MaterialLiquid(MapColor.WATER)).setNoPushMobility();
    public static final Material LAVA = (new MaterialLiquid(MapColor.TNT)).setNoPushMobility();
    public static final Material LEAVES = (new Material(MapColor.FOLIAGE)).setBurning().setTranslucent().setNoPushMobility();
    public static final Material PLANTS = (new MaterialLogic(MapColor.FOLIAGE)).setNoPushMobility();
    public static final Material VINE = (new MaterialLogic(MapColor.FOLIAGE)).setBurning().setNoPushMobility().setReplaceable();
    public static final Material SPONGE = new Material(MapColor.YELLOW);
    public static final Material CLOTH = (new Material(MapColor.CLOTH)).setBurning();
    public static final Material FIRE = (new MaterialTransparent(MapColor.AIR)).setNoPushMobility();
    public static final Material SAND = new Material(MapColor.SAND);
    public static final Material CIRCUITS = (new MaterialLogic(MapColor.AIR)).setNoPushMobility();
    public static final Material CARPET = (new MaterialLogic(MapColor.CLOTH)).setBurning();
    public static final Material GLASS = (new Material(MapColor.AIR)).setTranslucent().setAdventureModeExempt();
    public static final Material REDSTONE_LIGHT = (new Material(MapColor.AIR)).setAdventureModeExempt();
    public static final Material TNT = (new Material(MapColor.TNT)).setBurning().setTranslucent();
    public static final Material CORAL = (new Material(MapColor.FOLIAGE)).setNoPushMobility();
    public static final Material ICE = (new Material(MapColor.ICE)).setTranslucent().setAdventureModeExempt();
    public static final Material PACKED_ICE = (new Material(MapColor.ICE)).setAdventureModeExempt();
    public static final Material SNOW = (new MaterialLogic(MapColor.SNOW)).setReplaceable().setTranslucent().setRequiresTool().setNoPushMobility();
    /** The material for crafted snow. */
    public static final Material CRAFTED_SNOW = (new Material(MapColor.SNOW)).setRequiresTool();
    public static final Material CACTUS = (new Material(MapColor.FOLIAGE)).setTranslucent().setNoPushMobility();
    public static final Material CLAY = new Material(MapColor.CLAY);
    public static final Material GOURD = (new Material(MapColor.FOLIAGE)).setNoPushMobility();
    public static final Material DRAGON_EGG = (new Material(MapColor.FOLIAGE)).setNoPushMobility();
    public static final Material PORTAL = (new MaterialPortal(MapColor.AIR)).setImmovableMobility();
    public static final Material CAKE = (new Material(MapColor.AIR)).setNoPushMobility();
    public static final Material WEB = (new Material(MapColor.CLOTH)
	/** Pistons' material. */
    public static final Material PISTON = (new Material(MapColor.STONE)).setImmovableMobility();
    public static final Material BARRIER = (new Material(MapColor.AIR)).setRequiresTool().setImmovableMobility();
    public static final Material STRUCTURE_VOID = new MaterialTransparent(MapColor.AIR);

 

This isn't related to texture

 

-Need Imports for next steps

import net.minecraft.block.properties.PropertyInteger;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;

-Define an age property before constructor inside class to determine growth

public static final PropertyInteger AGE = PropertyInteger.create("age", 0, 7);

-Initialize the age to 0 inside of our constructor

this.setDefaultState(this.blockState.getBaseState().withProperty(AGE, Integer.valueOf(0)));

 

-IPlantable requires us to implement EnumPlantType getPlantType() and IBlockState getPlant() Both of which are just asking for more metadata about the plant

	@Override
	public EnumPlantType getPlantType(IBlockAccess world, BlockPos pos)
	{	return net.minecraftforge.common.EnumPlantType.Beach;	}

	@Override
	public IBlockState getPlant(IBlockAccess world, BlockPos pos) 
	{	return getDefaultState();	}
Spoiler

The list of return choices from EnumPlantType.class is Plains, Desert, Beach, Cave, Water, Nether or Crop
getPlant just wants the block state from our block. Documentation here https://mcforge.readthedocs.io/en/latest/models/blockstates/forgeBlockstates/#

 

 

-A quick thing to do is set creative tab

import net.minecraft.creativetab.CreativeTabs;

and in the constructor for our block 

this.setCreativeTab(CreativeTabs.DECORATIONS);

 

-Need Random Ticks for Growth, Add inside constructor

this.setTickRandomly(true);

-Then we need an UpdateTick function to tell it to grow

Spoiler

Full code for updateTick


 public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand)
 {
   if (!worldIn.isAreaLoaded(pos, 1)) return; // Forge: prevent growing cactus from loading unloaded chunks with block update
   BlockPos blockpos = pos.up();

   if (worldIn.isAirBlock(blockpos))
   {
     int i;

     for (i = 1; worldIn.getBlockState(pos.down(i)).getBlock() == this; ++i)
     {
       ;
     }

     if (i < 6)//Maximum Height
     {
       int j = ((Integer)state.getValue(AGE)).intValue();

       if(net.minecraftforge.common.ForgeHooks.onCropsGrowPre(worldIn, blockpos, state, true))
       {
         if (j == 7)
         {
           worldIn.setBlockState(blockpos, this.getDefaultState());
           IBlockState iblockstate = state.withProperty(AGE, Integer.valueOf(0));
           worldIn.setBlockState(pos, iblockstate, 4);
           iblockstate.neighborChanged(worldIn, blockpos, this, pos);
         }
         else
         {
           worldIn.setBlockState(pos, state.withProperty(AGE, Integer.valueOf(j + 1)), 4);
         }
         net.minecraftforge.common.ForgeHooks.onCropsGrowPost(worldIn, pos, state, worldIn.getBlockState(pos));
       }
     }
   }
 }

public void neighborChanged(IBlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos)
{	}

 

 

 

-Which was pulled from the BlockCactus.class with only the maximum height, max age and neighborChanged edited

Spoiler

worldIn.isAreaLoaded 

is to determine if the plant is currently in a loaded chunk
 


BlockPos blockpos = pos.up();
        if (worldIn.isAirBlock(blockpos))

determines if the block above our plant is air

 


for (i = 1; worldIn.getBlockState(pos.down(i)).getBlock() == this; ++i)
  if (i < 6)

Checks how many tall our plant is, maximum it lets it grow is 6

 


int j = ((Integer)state.getValue(AGE)).intValue();
if(net.minecraftforge.common.ForgeHooks.onCropsGrowPre(worldIn, blockpos, state, true))
{	if (j == 7)

pregrowth event true if allowing growth

checks age
 


worldIn.setBlockState(blockpos, this.getDefaultState());
IBlockState iblockstate = state.withProperty(AGE, Integer.valueOf(0));
worldIn.setBlockState(pos, iblockstate, 4);

Sets the new block and resets growth states

 


iblockstate.neighborChanged(worldIn, blockpos, this, pos);

We use this later on when we want to change the model for being next to other blocks

 


else
{	worldIn.setBlockState(pos, state.withProperty(AGE, Integer.valueOf(j + 1)), 4);		}

Otherwise ages the plant and finishes with after crop growth event


net.minecraftforge.common.ForgeHooks.onCropsGrowPost(worldIn, pos, state, worldIn.getBlockState(pos));

 

 

We're leaving neightborChanged definition empty for now


-Variable Model

-Pulling directly from BlockWall.class

Spoiler

Imports


import java.util.List;
import javax.annotation.Nullable;
import net.minecraft.util.IStringSerializable;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.NonNullList;
import net.minecraft.util.EnumFacing;
import net.minecraft.item.ItemStack;
import net.minecraft.init.Blocks;
import net.minecraft.entity.Entity;
import net.minecraft.block.BlockFenceGate;
import net.minecraft.block.state.BlockFaceShape;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.properties.PropertyEnum;

Static Variables in Class


public static final PropertyBool UP = PropertyBool.create("up");
public static final PropertyBool NORTH = PropertyBool.create("north");
public static final PropertyBool EAST = PropertyBool.create("east");
public static final PropertyBool SOUTH = PropertyBool.create("south");
public static final PropertyBool WEST = PropertyBool.create("west");
public static final PropertyEnum<BlockBamboo.EnumType> VARIANT = PropertyEnum.<BlockBamboo.EnumType>create("variant", BlockBamboo.EnumType.class);
protected static final AxisAlignedBB[] AABB_BY_INDEX = new AxisAlignedBB[] {new AxisAlignedBB(0.25D, 0.0D, 0.25D, 0.75D, 1.0D, 0.75D), new AxisAlignedBB(0.25D, 0.0D, 0.25D, 0.75D, 1.0D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.25D, 0.75D, 1.0D, 0.75D), new AxisAlignedBB(0.0D, 0.0D, 0.25D, 0.75D, 1.0D, 1.0D), new AxisAlignedBB(0.25D, 0.0D, 0.0D, 0.75D, 1.0D, 0.75D), new AxisAlignedBB(0.3125D, 0.0D, 0.0D, 0.6875D, 0.875D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 0.75D, 1.0D, 0.75D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 0.75D, 1.0D, 1.0D), new AxisAlignedBB(0.25D, 0.0D, 0.25D, 1.0D, 1.0D, 0.75D), new AxisAlignedBB(0.25D, 0.0D, 0.25D, 1.0D, 1.0D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.3125D, 1.0D, 0.875D, 0.6875D), new AxisAlignedBB(0.0D, 0.0D, 0.25D, 1.0D, 1.0D, 1.0D), new AxisAlignedBB(0.25D, 0.0D, 0.0D, 1.0D, 1.0D, 0.75D), new AxisAlignedBB(0.25D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 0.75D), new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D)};
protected static final AxisAlignedBB[] CLIP_AABB_BY_INDEX = new AxisAlignedBB[] {AABB_BY_INDEX[0].setMaxY(1.5D), AABB_BY_INDEX[1].setMaxY(1.5D), AABB_BY_INDEX[2].setMaxY(1.5D), AABB_BY_INDEX[3].setMaxY(1.5D), AABB_BY_INDEX[4].setMaxY(1.5D), AABB_BY_INDEX[5].setMaxY(1.5D), AABB_BY_INDEX[6].setMaxY(1.5D), AABB_BY_INDEX[7].setMaxY(1.5D), AABB_BY_INDEX[8].setMaxY(1.5D), AABB_BY_INDEX[9].setMaxY(1.5D), AABB_BY_INDEX[10].setMaxY(1.5D), AABB_BY_INDEX[11].setMaxY(1.5D), AABB_BY_INDEX[12].setMaxY(1.5D), AABB_BY_INDEX[13].setMaxY(1.5D), AABB_BY_INDEX[14].setMaxY(1.5D), AABB_BY_INDEX[15].setMaxY(1.5D)};

Functions


    public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
    {
        state = this.getActualState(state, source, pos);
        return AABB_BY_INDEX[getAABBIndex(state)];
    }

    public void addCollisionBoxToList(IBlockState state, World worldIn, BlockPos pos, AxisAlignedBB entityBox, List<AxisAlignedBB> collidingBoxes, @Nullable Entity entityIn, boolean isActualState)
    {
        if (!isActualState)
        {
            state = this.getActualState(state, worldIn, pos);
        }

        addCollisionBoxToList(pos, entityBox, collidingBoxes, CLIP_AABB_BY_INDEX[getAABBIndex(state)]);
    }

    @Nullable
    public AxisAlignedBB getCollisionBoundingBox(IBlockState blockState, IBlockAccess worldIn, BlockPos pos)
    {
        blockState = this.getActualState(blockState, worldIn, pos);
        return CLIP_AABB_BY_INDEX[getAABBIndex(blockState)];
    }

    private static int getAABBIndex(IBlockState state)
    {
        int i = 0;

        if (((Boolean)state.getValue(NORTH)).booleanValue())
        {
            i |= 1 << EnumFacing.NORTH.getHorizontalIndex();
        }

        if (((Boolean)state.getValue(EAST)).booleanValue())
        {
            i |= 1 << EnumFacing.EAST.getHorizontalIndex();
        }

        if (((Boolean)state.getValue(SOUTH)).booleanValue())
        {
            i |= 1 << EnumFacing.SOUTH.getHorizontalIndex();
        }

        if (((Boolean)state.getValue(WEST)).booleanValue())
        {
            i |= 1 << EnumFacing.WEST.getHorizontalIndex();
        }

        return i;
    }
      
    public boolean isFullCube(IBlockState state)
    {
        return false;
    }

    /**
     * Determines if an entity can path through this block
     */
    public boolean isPassable(IBlockAccess worldIn, BlockPos pos)
    {
        return false;
    }

    /**
     * Used to determine ambient occlusion and culling when rebuilding chunks for render
     */
    public boolean isOpaqueCube(IBlockState state)
    {
        return false;
    }

    private boolean canConnectTo(IBlockAccess worldIn, BlockPos pos, EnumFacing p_176253_3_)
    {
        IBlockState iblockstate = worldIn.getBlockState(pos);
        Block block = iblockstate.getBlock();
        BlockFaceShape blockfaceshape = iblockstate.getBlockFaceShape(worldIn, pos, p_176253_3_);
        boolean flag = blockfaceshape == BlockFaceShape.MIDDLE_POLE_THICK || blockfaceshape == BlockFaceShape.MIDDLE_POLE && block instanceof BlockFenceGate;
        return !isExcepBlockForAttachWithPiston(block) && blockfaceshape == BlockFaceShape.SOLID || flag;
    }

    protected static boolean isExcepBlockForAttachWithPiston(Block p_194143_0_)
    {
        return Block.isExceptBlockForAttachWithPiston(p_194143_0_) || p_194143_0_ == Blocks.BARRIER || p_194143_0_ == Blocks.MELON_BLOCK || p_194143_0_ == Blocks.PUMPKIN || p_194143_0_ == Blocks.LIT_PUMPKIN;
    }

    /**
     * returns a list of blocks with the same ID, but different meta (eg: wood returns 4 blocks)
     */
    public void getSubBlocks(CreativeTabs itemIn, NonNullList<ItemStack> items)
    {
        for (BlockBamboo.EnumType blockbamboo$enumtype : BlockBamboo.EnumType.values())
        {
            items.add(new ItemStack(this, 1, blockbamboo$enumtype.getMetadata()));
        }
    }

    /**
     * Gets the metadata of the item this Block can drop. This method is called when the block gets destroyed. It
     * returns the metadata of the dropped item based on the old metadata of the block.
     */
    public int damageDropped(IBlockState state)
    {
        return ((BlockBamboo.EnumType)state.getValue(VARIANT)).getMetadata();
    }
    /**
     * Convert the given metadata into a BlockState for this Block
     */
    public IBlockState getStateFromMeta(int meta)
    {
        return this.getDefaultState().withProperty(VARIANT, BlockBamboo.EnumType.byMetadata(meta));
    }

    /**
     * Convert the BlockState into the correct metadata value
     */
    public int getMetaFromState(IBlockState state)
    {
        return ((BlockBamboo.EnumType)state.getValue(VARIANT)).getMetadata();
    }

    /**
     * Get the actual Block state of this Block at the given position. This applies properties not visible in the
     * metadata, such as fence connections.
     */
    public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos)
    {
        boolean flag =  canWallConnectTo(worldIn, pos, EnumFacing.NORTH);
        boolean flag1 = canWallConnectTo(worldIn, pos, EnumFacing.EAST);
        boolean flag2 = canWallConnectTo(worldIn, pos, EnumFacing.SOUTH);
        boolean flag3 = canWallConnectTo(worldIn, pos, EnumFacing.WEST);
        boolean flag4 = flag && !flag1 && flag2 && !flag3 || !flag && flag1 && !flag2 && flag3;
        return state.withProperty(UP, Boolean.valueOf(!flag4 || !worldIn.isAirBlock(pos.up()))).withProperty(NORTH, Boolean.valueOf(flag)).withProperty(EAST, Boolean.valueOf(flag1)).withProperty(SOUTH, Boolean.valueOf(flag2)).withProperty(WEST, Boolean.valueOf(flag3));
    }

    protected BlockStateContainer createBlockState()
    {
        return new BlockStateContainer(this, new IProperty[] {UP, NORTH, EAST, WEST, SOUTH, VARIANT});
    }

    /**
     * Get the geometry of the queried face at the given position and state. This is used to decide whether things like
     * buttons are allowed to be placed on the face, or how glass panes connect to the face, among other things.
     * <p>
     * Common values are {@code SOLID}, which is the default, and {@code UNDEFINED}, which represents something that
     * does not fit the other descriptions and will generally cause other things not to connect to the face.
     * 
     * @return an approximation of the form of the given face
     */
    public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, IBlockState state, BlockPos pos, EnumFacing face)
    {
        return face != EnumFacing.UP && face != EnumFacing.DOWN ? BlockFaceShape.MIDDLE_POLE_THICK : BlockFaceShape.CENTER_BIG;
    }

    /* ======================================== FORGE START ======================================== */

    @Override
    public boolean canBeConnectedTo(IBlockAccess world, BlockPos pos, EnumFacing facing)
    {
        return canConnectTo(world, pos.offset(facing), facing.getOpposite());
    }

    private boolean canWallConnectTo(IBlockAccess world, BlockPos pos, EnumFacing facing)
    {
        BlockPos other = pos.offset(facing);
        Block block = world.getBlockState(other).getBlock();
        return block.canBeConnectedTo(world, other, facing.getOpposite()) || canConnectTo(world, other, facing.getOpposite());
    }

    /* ======================================== FORGE END ======================================== */

BlockBamboo.EnumType


public static enum EnumType implements IStringSerializable
    {
        NORMAL(0, "cobblestone", "normal"),
        DRY(1, "mossy_cobblestone", "dry");

        private static final BlockBamboo.EnumType[] META_LOOKUP = new BlockBamboo.EnumType[values().length];
        private final int meta;
        private final String name;
        private final String unlocalizedName;

        private EnumType(int meta, String name, String unlocalizedName)
        {
            this.meta = meta;
            this.name = name;
            this.unlocalizedName = unlocalizedName;
        }

        public int getMetadata()
        {
            return this.meta;
        }

        public String toString()
        {
            return this.name;
        }

        public static BlockBamboo.EnumType byMetadata(int meta)
        {
            if (meta < 0 || meta >= META_LOOKUP.length)
            {
                meta = 0;
            }

            return META_LOOKUP[meta];
        }

        public String getName()
        {
            return this.name;
        }

        public String getUnlocalizedName()
        {
            return this.unlocalizedName;
        }

        static
        {
            for (BlockBamboo.EnumType blockbamboo$enumtype : values())
            {
                META_LOOKUP[blockbamboo$enumtype.getMetadata()] = blockbamboo$enumtype;
            }
        }
    }

 

This part from https://mcforge.readthedocs.io/en/latest/models/blockstates/forgeBlockstates/

used for block_bamboo_model.json


{
    "forge_marker": 1,
    "defaults": {
      "textures": {
        "texture": "plants:block/block_bamboo"
      },
      "model": "wall",
      "uvlock": true
    },
    "variants": {
      "__comment": "dry is a boolean property.",
      "dry": {
        "true": {
          "__comment": "If true it changes the bamboo from normal to dry.",
          "textures": {
            "texture": "plants:block/block_bamboo_dry"
          }
        },
        "false": {
          "__comment": "Change nothing. The entry has to be here so the Forge blockstate loader knows to generate this variant."
        }
      }
    },
    "north":{
    "when": { "north": "true" },
        "apply": { "model": "wall_n", "uvlock": true }
    },
    "east":{
    "when": { "east": "true" },
        "apply": { "model": "wall_n", "y": 90, "uvlock": true }
    },
    "south":{
    "when": { "south": "true" },
        "apply": { "model": "wall_n", "y": 180, "uvlock": true }
    },
    "west":{
    "when": { "west": "true" },
        "apply": { "model": "wall_n", "y": 270, "uvlock": true }
    }
}

 

Will go through piece by piece once I understand it all.

 


--Taking breather to work on another mod

Edited by Gotlyfe
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

    • I have a screen that sends a packet, that packet then calls a method that simply gives the player a gold ingot. In game the screen works fine and the packet does get sent but the item doesnt show up in my inventory. If I press Q the item will drop on the floor and when i pick it back up it still wont show in the inventory. The item usually shows up after 30-40 seconds or if i put it in a hopper/chest than back into my inventory. ModMessages.sendToServer(new VillagerScreenC2S(1)); //send packet public class VillagerScreenC2S { private int id; public VillagerScreenC2S(int rV) { this.id = rV; } public void encode(FriendlyByteBuf buffer) { buffer.writeInt(this.id); } public static VillagerScreenC2S decode(FriendlyByteBuf buffer) { return new VillagerScreenC2S(buffer.readInt()); } public static void handle(VillagerScreenC2S msg, Supplier<NetworkEvent.Context> ctx) { AtomicBoolean success = new AtomicBoolean(false); ctx.get().enqueueWork(() -> { ServerPlayer p = ctx.get().getSender(); if(msg.id == 1){ DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> success.set(ClientAccess.villagerGetQuest(p))); } }); ctx.get().setPacketHandled(success.get()); } } public class ClientAccess { public static boolean villagerGetQuest(ServerPlayer p){ AtomicBoolean success = new AtomicBoolean(false); p.addItem(new ItemStack(Items.GOLD_INGOT)); return success.get(); } }  
    • I am making a mod for 1.20.6 I want to make a randomly generated structure using jigsaw but want to guarantee that a specific room is generated and not more than once. I cant generate starting from this room as I need to do this for 2 different rooms. I cant find more info on this in the Minecraft wiki or the forums. is it possible to set a min and max count for structure pieces?
    • the problem is I am using java 17, and the is no error log. the latest I have is from 02.04.2024. Its like the server just refuses to start. Here is a screenshot: https://ibb.co/S3kffy0
    • ---- Minecraft Crash Report ---- // There are four lights! Time: 22/05/24 03:33 Description: Initializing game java.lang.InternalError: Should not get here     at sun.nio.fs.WindowsNativeDispatcher.GetFinalPathNameByHandle(Native Method) ~[?:1.8.0_51] {}     at sun.nio.fs.WindowsLinkSupport.getFinalPath(WindowsLinkSupport.java:77) ~[?:1.8.0_51] {}     at sun.nio.fs.WindowsLinkSupport.getRealPath(WindowsLinkSupport.java:242) ~[?:1.8.0_51] {}     at sun.nio.fs.WindowsPath.toRealPath(WindowsPath.java:836) ~[?:1.8.0_51] {}     at sun.nio.fs.WindowsPath.toRealPath(WindowsPath.java:44) ~[?:1.8.0_51] {}     at net.minecraft.world.storage.SaveFormat.<init>(SaveFormat.java:75) ~[?:?] {re:mixin,re:classloading,pl:mixin:APP:modernfix-forge.mixins.json:perf.skip_first_datapack_reload.SaveFormatAccessor,pl:mixin:A}     at net.minecraft.client.Minecraft.<init>(Minecraft.java:445) [?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:feature.measure_time.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.concurrency.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.world_leaks.MinecraftMixin,pl:mixin:APP:modernfix-forge.mixins.json:feature.measure_time.MinecraftMixin_Forge,pl:mixin:APP:modernfix-forge.mixins.json:perf.skip_first_datapack_reload.MinecraftMixin,pl:mixin:APP:modernfix-forge.mixins.json:perf.blast_search_trees.MinecraftMixin,pl:mixin:APP:flywheel.mixins.json:ShaderCloseMixin,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:assets/botania/botania.mixins.json:AccessorMinecraft,pl:mixin:APP:create.mixins.json:WindowResizeMixin,pl:mixin:APP:securitycraft.mixins.json:camera.MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:149) [?:?] {re:classloading,pl:runtimedistcleaner:A}     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51] {}     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51] {}     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51] {}     at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider.lambda$launchService$0(FMLClientLaunchProvider.java:37) [forge-1.16.5-36.2.42.jar:36.2] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider$$Lambda$533/1770125555.call(Unknown Source) [forge-1.16.5-36.2.42.jar:36.2] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.1.3.jar:?] {re:classloading}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.1.3.jar:?] {re:classloading} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace:     at sun.nio.fs.WindowsNativeDispatcher.GetFinalPathNameByHandle(Native Method) ~[?:1.8.0_51] {}     at sun.nio.fs.WindowsLinkSupport.getFinalPath(WindowsLinkSupport.java:77) ~[?:1.8.0_51] {}     at sun.nio.fs.WindowsLinkSupport.getRealPath(WindowsLinkSupport.java:242) ~[?:1.8.0_51] {}     at sun.nio.fs.WindowsPath.toRealPath(WindowsPath.java:836) ~[?:1.8.0_51] {}     at sun.nio.fs.WindowsPath.toRealPath(WindowsPath.java:44) ~[?:1.8.0_51] {}     at net.minecraft.world.storage.SaveFormat.<init>(SaveFormat.java:75) ~[?:?] {re:mixin,re:classloading,pl:mixin:APP:modernfix-forge.mixins.json:perf.skip_first_datapack_reload.SaveFormatAccessor,pl:mixin:A}     at net.minecraft.client.Minecraft.<init>(Minecraft.java:445) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:feature.measure_time.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.concurrency.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.world_leaks.MinecraftMixin,pl:mixin:APP:modernfix-forge.mixins.json:feature.measure_time.MinecraftMixin_Forge,pl:mixin:APP:modernfix-forge.mixins.json:perf.skip_first_datapack_reload.MinecraftMixin,pl:mixin:APP:modernfix-forge.mixins.json:perf.blast_search_trees.MinecraftMixin,pl:mixin:APP:flywheel.mixins.json:ShaderCloseMixin,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:assets/botania/botania.mixins.json:AccessorMinecraft,pl:mixin:APP:create.mixins.json:WindowResizeMixin,pl:mixin:APP:securitycraft.mixins.json:camera.MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A} -- Initialization -- Details: Stacktrace:     at net.minecraft.client.main.Main.main(Main.java:149) [?:?] {re:classloading,pl:runtimedistcleaner:A}     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51] {}     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51] {}     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51] {}     at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider.lambda$launchService$0(FMLClientLaunchProvider.java:37) [forge-1.16.5-36.2.42.jar:36.2] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider$$Lambda$533/1770125555.call(Unknown Source) [forge-1.16.5-36.2.42.jar:36.2] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.1.3.jar:?] {re:classloading}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.1.3.jar:?] {re:classloading} -- System Details -- Details:     Minecraft Version: 1.16.5     Minecraft Version ID: 1.16.5     Operating System: Windows 10 (amd64) version 10.0     Java Version: 1.8.0_51, Oracle Corporation     Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation     Memory: 4067827920 bytes (3879 MB) / 6358564864 bytes (6064 MB) up to 10737418240 bytes (10240 MB)     CPUs: 12     JVM Flags: 9 total; -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=16M -Xmx10240m -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -XX:+IgnoreUnrecognizedVMOptions     ModLauncher: 8.1.3+8.1.3+main-8.1.x.c94d18ec     ModLauncher launch target: fmlclient     ModLauncher naming: srg     ModLauncher services:          /mixin-0.8.4.jar mixin PLUGINSERVICE          /eventbus-4.0.0.jar eventbus PLUGINSERVICE          /forge-1.16.5-36.2.42.jar object_holder_definalize PLUGINSERVICE          /forge-1.16.5-36.2.42.jar runtime_enum_extender PLUGINSERVICE          /accesstransformers-3.0.1.jar accesstransformer PLUGINSERVICE          /forge-1.16.5-36.2.42.jar capability_inject_definalize PLUGINSERVICE          /forge-1.16.5-36.2.42.jar runtimedistcleaner PLUGINSERVICE          /mixin-0.8.4.jar mixin TRANSFORMATIONSERVICE          /forge-1.16.5-36.2.42.jar fml TRANSFORMATIONSERVICE      FML: 36.2     Forge: net.minecraftforge:36.2.42     FML Language Providers:          [email protected]         minecraft@1     Mod List:          SaveMyStronghold-1.16.4-1.0.jar                   |Save My Stronghold!           |savemystronghold              |1.16.4-1.0          |COMMON_SET|Manifest: NOSIGNATURE         create-stuff-additions1.16.5_v1.1.6.jar           |Create Stuff Additions        |create_stuff_additions        |1.1.6               |COMMON_SET|Manifest: NOSIGNATURE         mowziesmobs-1.5.27.jar                            |Mowzie's Mobs                 |mowziesmobs                   |1.5.27              |COMMON_SET|Manifest: NOSIGNATURE         blue_skies-1.16.5-1.1.3.jar                       |Blue Skies                    |blue_skies                    |1.1.3               |COMMON_SET|Manifest: NOSIGNATURE         supermartijn642configlib-1.1.8-forge-mc1.16.jar   |SuperMartijn642's Config Libra|supermartijn642configlib      |1.1.8               |COMMON_SET|Manifest: NOSIGNATURE         TrashSlot_1.16.3-12.2.1.jar                       |TrashSlot                     |trashslot                     |12.2.1              |COMMON_SET|Manifest: NOSIGNATURE         Tinkers Reforged 1.16.5-0.0.6.jar                 |Tinkers Reforged              |tinkers_reforged              |0.0.6               |COMMON_SET|Manifest: NOSIGNATURE         tinkersarchery-1.2.0.jar                          |Tinkers' Archery              |tinkersarchery                |1.2.0               |COMMON_SET|Manifest: NOSIGNATURE         rechiseled-1.1.6-forge-mc1.16.jar                 |Rechiseled                    |rechiseled                    |1.1.6               |COMMON_SET|Manifest: NOSIGNATURE         infernal-expansion-1.16.5-2.5.0.jar               |Infernal Expansion            |infernalexp                   |2.5.0               |COMMON_SET|Manifest: NOSIGNATURE         Bountiful Baubles FORGE-1.16.3-0.0.2.jar          |Bountiful Baubles             |bountifulbaubles              |NONE                |COMMON_SET|Manifest: NOSIGNATURE         TinkersLevellingAddon-1.16.5-1.1.1.jar            |Tinkers' Levelling Addon      |tinkerslevellingaddon         |1.1.1               |COMMON_SET|Manifest: NOSIGNATURE         libraryferret-forge-1.16.5-4.0.0.jar              |Library ferret                |libraryferret                 |4.0.0               |COMMON_SET|Manifest: NOSIGNATURE         stalwart-dungeons-1.16.5-1.1.7.jar                |Stalwart Dungeons             |stalwart_dungeons             |1.1.7               |COMMON_SET|Manifest: NOSIGNATURE         obscure_api-11.jar                                |Obscure API                   |obscure_api                   |11                  |COMMON_SET|Manifest: NOSIGNATURE         InsaneLib-1.4.2-mc1.16.5.jar                      |InsaneLib                     |insanelib                     |1.4.2               |COMMON_SET|Manifest: NOSIGNATURE         Waystones_1.16.5-7.6.4.jar                        |Waystones                     |waystones                     |7.6.4               |COMMON_SET|Manifest: NOSIGNATURE         journeymap-1.16.5-5.8.5p7.jar                     |Journeymap                    |journeymap                    |5.8.5p7             |COMMON_SET|Manifest: NOSIGNATURE         modernfix-forge-5.17.0+mc1.16.5.jar               |ModernFix                     |modernfix                     |5.17.0+mc1.16.5     |COMMON_SET|Manifest: NOSIGNATURE         jei-1.16.5-7.8.0.1011.jar                         |Just Enough Items             |jei                           |7.8.0.1011          |COMMON_SET|Manifest: NOSIGNATURE         citadel-1.8.1-1.16.5.jar                          |Citadel                       |citadel                       |1.8.1               |COMMON_SET|Manifest: NOSIGNATURE         alexsmobs-1.12.1.jar                              |Alex's Mobs                   |alexsmobs                     |1.12.1              |COMMON_SET|Manifest: NOSIGNATURE         Artifacts-1.16.5-2.10.5.jar                       |Artifacts                     |artifacts                     |1.16.5-2.10.5       |COMMON_SET|Manifest: NOSIGNATURE         OPF-1.16.x-v2.jar                                 |Online Picture Frame 2        |opf                           |0                   |COMMON_SET|Manifest: NOSIGNATURE         Obscuria's Tooltips 1.0.0.jar                     |Obscuria's Tooltips           |ob_tooltips                   |1.0.0               |COMMON_SET|Manifest: NOSIGNATURE         create-confectionery1.16.5_v1.0.2.jar             |Create Confectionery          |create_confectionery          |1.0.2               |COMMON_SET|Manifest: NOSIGNATURE         sophisticatedbackpacks-1.16.5-3.15.20.755.jar     |Sophisticated Backpacks       |sophisticatedbackpacks        |1.16.5-3.15.20.755  |COMMON_SET|Manifest: NOSIGNATURE         Desert Upgrade 1.2.7 - 1.16.5.jar                 |Desert Upgrade                |desert_upgrade                |1.2.7               |COMMON_SET|Manifest: NOSIGNATURE         ProgressiveBosses-3.4.3-mc1.16.5.jar              |Progressive Bosses            |progressivebosses             |3.4.3               |COMMON_SET|Manifest: NOSIGNATURE         mahoutsukai-1.16.5-v1.34.62.jar                   |Mahou Tsukai                  |mahoutsukai                   |1.16.5-v1.34.62     |COMMON_SET|Manifest: NOSIGNATURE         iceandfire-2.1.12-1.16.5-patch-1.jar              |Ice and Fire                  |iceandfire                    |2.1.12-1.16.5-patch-|COMMON_SET|Manifest: NOSIGNATURE         fusion-1.1.1-forge-mc1.16.jar                     |Fusion                        |fusion                        |1.1.1               |COMMON_SET|Manifest: NOSIGNATURE         immersive-armors-1.5.1+1.16.5-forge.jar           |Immersive Armors              |immersive_armors              |1.5.1+1.16.5        |COMMON_SET|Manifest: NOSIGNATURE         carryon-1.16.5-1.15.6.24.jar                      |Carry On                      |carryon                       |1.15.6.24           |COMMON_SET|Manifest: NOSIGNATURE         mysticalworld-1.16.5-0.3.6.27.jar                 |Mystical World                |mysticalworld                 |0.3.6.27            |COMMON_SET|Manifest: NOSIGNATURE         forge-1.16.5-36.2.42-universal.jar                |Forge                         |forge                         |36.2.42             |COMMON_SET|Manifest: 22:af:21:d8:19:82:7f:93:94:fe:2b:ac:b7:e4:41:57:68:39:87:b1:a7:5c:c6:44:f9:25:74:21:14:f5:0d:90         LostTrinkets-1.16.5-0.1.27.jar                    |Lost Trinkets                 |losttrinkets                  |0.1.27              |COMMON_SET|Manifest: NOSIGNATURE         dmcloot-1.16.5-beta-sept0722.jar                  |DMCLoot                       |dmcloot                       |1.16.5              |COMMON_SET|Manifest: NOSIGNATURE         BloodMagic-1.16.4-3.1.13-39.jar                   |Blood Magic                   |bloodmagic                    |1.16.4-3.1.13-39    |COMMON_SET|Manifest: NOSIGNATURE         chococraft-1.16.5-0.3.9.jar                       |Chococraft 4                  |chococraft                    |0.3.9               |COMMON_SET|Manifest: NOSIGNATURE         structure_gel-1.16.5-1.7.8.jar                    |Structure Gel API             |structure_gel                 |1.7.8               |COMMON_SET|Manifest: NOSIGNATURE         DungeonsArise-1.16.5-2.1.49-beta.jar              |When Dungeons Arise           |dungeons_arise                |2.1.49              |COMMON_SET|Manifest: NOSIGNATURE         CraftingTweaks_1.16.5-12.2.1.jar                  |Crafting Tweaks               |craftingtweaks                |12.2.1              |COMMON_SET|Manifest: NOSIGNATURE         dungeons_1.10.3_mc1.16.5.jar                      |Minecraft Dungeons            |duneons                       |1.10.3              |COMMON_SET|Manifest: NOSIGNATURE         forge-1.16.5-36.2.42-client.jar                   |Minecraft                     |minecraft                     |1.16.5              |COMMON_SET|Manifest: NOSIGNATURE         TConstruct-1.16.5-3.3.4.335.jar                   |Tinkers' Construct            |tconstruct                    |3.3.4.335           |COMMON_SET|Manifest: NOSIGNATURE         FarmersDelight-1.16.5-0.6.0.jar                   |Farmer's Delight              |farmersdelight                |1.16.5-0.6.0        |COMMON_SET|Manifest: NOSIGNATURE         culturaldelights-1.16.5-0.9.2.jar                 |Cultural Delights             |culturaldelights              |0.9.2               |COMMON_SET|Manifest: NOSIGNATURE         ends_delight-1.16.5-1.8.jar                       |End's Delight                 |ends_delight                  |1.16.5-1.8          |COMMON_SET|Manifest: NOSIGNATURE         tinker_rapier-1.1.4-1.16.5.jar                    |Tinkers' Rapier               |tinker_rapier                 |1.1.4-1.16.5        |COMMON_SET|Manifest: NOSIGNATURE         Jade-1.16.4-2.8.3.jar                             |Jade                          |jade                          |2.8.3               |COMMON_SET|Manifest: NOSIGNATURE         Lollipop-1.16.5-3.2.9.jar                         |Lollipop                      |lollipop                      |3.2.9               |COMMON_SET|Manifest: NOSIGNATURE         CreativeCore_v2.2.1_mc1.16.5.jar                  |CreativeCore                  |creativecore                  |2.0.0               |COMMON_SET|Manifest: NOSIGNATURE         supermartijn642corelib-1.1.17a-forge-mc1.16.jar   |SuperMartijn642's Core Lib    |supermartijn642corelib        |1.1.17a             |COMMON_SET|Manifest: NOSIGNATURE         Botania-1.16.5-420.3.jar                          |Botania                       |botania                       |1.16.5-420.3        |COMMON_SET|Manifest: NOSIGNATURE         born_in_chaos_1.16_1.3.jar                        |Born in Chaos                 |born_in_chaos_v1              |1.0.0               |COMMON_SET|Manifest: NOSIGNATURE         jeiintegration_1.16.5-7.1.0.22.jar                |JEI Integration               |jeiintegration                |7.1.0.22            |COMMON_SET|Manifest: NOSIGNATURE         TheForbidden-1.0.2-ByShadowMech.jar               |The Forbidden                 |theforbidden                  |1.0.1               |COMMON_SET|Manifest: NOSIGNATURE         Goblins_Dungeons_1.0.6-1.16.jar                   |Goblins & Dungeons            |goblinsanddungeons            |1.0.6               |COMMON_SET|Manifest: NOSIGNATURE         L_Enders Cataclysm-0.48 Changed Theme -1.16.5.jar |Cataclysm Mod                 |cataclysm                     |1.0                 |COMMON_SET|Manifest: NOSIGNATURE         flywheel-1.16-0.2.5.jar                           |Flywheel                      |flywheel                      |1.16-0.2.5          |COMMON_SET|Manifest: NOSIGNATURE         create-mc1.16.5_v0.3.2g.jar                       |Create                        |create                        |v0.3.2g             |COMMON_SET|Manifest: NOSIGNATURE         createdeco-1.1.2-1.16.5.jar                       |Create Deco                   |createdeco                    |1.1.2-1.16.5        |COMMON_SET|Manifest: NOSIGNATURE         curios-forge-1.16.5-4.1.0.0.jar                   |Curios API                    |curios                        |1.16.5-4.1.0.0      |COMMON_SET|Manifest: NOSIGNATURE         Atum-1.16.5-2.2.12.jar                            |Atum 2                        |atum                          |1.16.5-2.2.12       |COMMON_SET|Manifest: NOSIGNATURE         SpartanShields-1.16.5-2.1.2.jar                   |Spartan Shields               |spartanshields                |2.1.2               |COMMON_SET|Manifest: NOSIGNATURE         Patchouli-1.16.4-53.3.jar                         |Patchouli                     |patchouli                     |1.16.4-53.3         |VALIDATE  |Manifest: NOSIGNATURE         Mantle-1.16.5-1.6.157.jar                         |Mantle                        |mantle                        |1.6.157             |COMMON_SET|Manifest: NOSIGNATURE         arsomega-1.5.jar                                  |Ars Omega                     |arsomega                      |1.16.5-1.5          |COMMON_SET|Manifest: NOSIGNATURE         AutoRegLib-1.6-49.jar                             |AutoRegLib                    |autoreglib                    |1.6-49              |COMMON_SET|Manifest: NOSIGNATURE         Quark-r2.4-322.jar                                |Quark                         |quark                         |r2.4-322            |COMMON_SET|Manifest: NOSIGNATURE         [1.16.5] SecurityCraft v1.9.9.jar                 |SecurityCraft                 |securitycraft                 |v1.9.9              |COMMON_SET|Manifest: NOSIGNATURE         elevatorid-1.16.5-1.7.13.jar                      |Elevator Mod                  |elevatorid                    |1.16.5-1.7.13       |COMMON_SET|Manifest: NOSIGNATURE         tombstone-1.16.5-6.8.16.jar                       |Corail Tombstone              |tombstone                     |6.8.16              |COMMON_SET|Manifest: NOSIGNATURE         Argentina's delight 1.16.5 (3.0 beta).jar         |Argentina's Delight           |argentinas_delight            |1.3                 |COMMON_SET|Manifest: NOSIGNATURE         swiaf-1.16.5-1.1.2.jar                            |Spartan Weaponry: Ice and Fire|swiaf                         |1.16.5-1.1.2        |COMMON_SET|Manifest: NOSIGNATURE         TheAbyss2 2.2.3-4 1.16.5.jar                      |TheAbyss                      |theabyss                      |2.2.3-4             |COMMON_SET|Manifest: NOSIGNATURE         SpartanWeaponry-1.16.5-2.2.2.jar                  |Spartan Weaponry              |spartanweaponry               |2.2.2               |COMMON_SET|Manifest: NOSIGNATURE         architectury-1.32.68.jar                          |Architectury                  |architectury                  |1.32.68             |COMMON_SET|Manifest: NOSIGNATURE         lootr-1.16.5-0.2.19.51.jar                        |Lootr                         |lootr                         |0.2.19.51           |COMMON_SET|Manifest: NOSIGNATURE         ferritecore-2.1.1-forge.jar                       |Ferrite Core                  |ferritecore                   |2.1.1               |COMMON_SET|Manifest: 41:ce:50:66:d1:a0:05:ce:a1:0e:02:85:9b:46:64:e0:bf:2e:cf:60:30:9a:fe:0c:27:e0:63:66:9a:84:ce:8a         moredragoneggs-2.5.jar                            |More Dragon Eggs              |moredragoneggs                |2.5                 |COMMON_SET|Manifest: NOSIGNATURE         cloth-config-4.17.101-forge.jar                   |Cloth Config v4 API           |cloth-config                  |4.17.101            |COMMON_SET|Manifest: NOSIGNATURE         PuzzlesLib-v1.0.15-1.16.5-Forge.jar               |Puzzles Lib                   |puzzleslib                    |1.0.15              |COMMON_SET|Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         the_bumblezone_forge-3.2.1+1.16.5.jar             |The Bumblezone                |the_bumblezone                |3.2.1+1.16.5        |COMMON_SET|Manifest: NOSIGNATURE         Obscuria's Essentials 3.0.0.jar                   |Obscuria's Essentials         |ob_core                       |3.0.0               |COMMON_SET|Manifest: NOSIGNATURE         Blood-Smeltery-1.16.5-1.1.5a.jar                  |Blood Smeltery                |bloodsmeltery                 |1.1.5a              |COMMON_SET|Manifest: NOSIGNATURE         expandability-2.0.1-forge.jar                     |ExpandAbility                 |expandability                 |2.0.1               |COMMON_SET|Manifest: NOSIGNATURE         JustEnoughGolems - Magma Release (v2.2.1-HF) 1.16.|JustEnoughGolems              |justenoughgolems              |Magma Release (v2.2.|COMMON_SET|Manifest: NOSIGNATURE         PlayerRevive_v2.0.0-pre04_mc1.16.5.jar            |PlayerRevive                  |playerrevive                  |2.0.0               |COMMON_SET|Manifest: NOSIGNATURE         geckolib-forge-1.16.5-3.0.106.jar                 |GeckoLib                      |geckolib3                     |3.0.106             |COMMON_SET|Manifest: NOSIGNATURE         ars_nouveau-1.16.5-1.25.10.jar                    |Ars Nouveau                   |ars_nouveau                   |1.25.10             |COMMON_SET|Manifest: NOSIGNATURE         EnchantingInfuser-v1.0.2-1.16.5-Forge.jar         |Enchanting Infuser            |enchantinginfuser             |1.0.2               |COMMON_SET|Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         aquamirae-5.4.API11.jar                           |Aquamirae                     |aquamirae                     |5.4.API11           |COMMON_SET|Manifest: NOSIGNATURE         createaddition-1.16.5-20220129a.jar               |Create Crafts & Additions     |createaddition                |1.16.5-20220129a    |COMMON_SET|Manifest: NOSIGNATURE         xptome-1.16.5-v2.1.5.jar                          |XP Tome                       |xpbook                        |v2.1.5              |COMMON_SET|Manifest: NOSIGNATURE     Crash Report UUID: 57fb9766-0046-4b87-ace9-446de1e70ad0     Launched Version: 1.16.5-forge-36.2.42     Backend library: LWJGL version 3.2.2 build 10     Backend API: NVIDIA GeForce RTX 2060 SUPER/PCIe/SSE2 GL version 4.6.0 NVIDIA 555.85, NVIDIA Corporation     GL Caps: Using framebuffer using OpenGL 3.0     Using VBOs: Yes     Is Modded: Definitely; Client brand changed to 'forge'     Type: Client (map_client.txt)     CPU: 12x AMD Ryzen 5 5600G with Radeon Graphics 
    • Im having this problem where i open the run.bat file with the following code: "C:\Program Files\Java\jre-1.8\bin\javaw.exe" -Xmx6000M -Xms6000M -jar forge-1.12.2-14.23.5.2860.jar nogui PAUSE This creates all the folders and files that it would normally create (eula.txt, mods, server.properties, etc) but it wont generate a world, the eula has been accepted, but it still does nothing, and it wont say anything on the cmd besides leaving a blank paragraph and the PAUSE code. I dont know what to do, i updated the last version of java 8, i tried many forge versions, including the latest, the recomended and a few others, i restarted my pc various times, nothing. Normal vanilla servers work just fine, its the forge one that doesnt do the thing. Im desperate, i've been trying to create a 1.20.2 server and for some reason every tweak i made for ram usage never worked, it still used 1gb to 3gb max, world not loading correctly, countless ticks behind. try a 1.12.2 server, got nowhere, and the weirdest thing is that i already made some 1.12.2 forge servers on this same pc a few years ago and had no trouble at all. if anybody knows what is happening please leave a comment, i will thank you with all my heart.
  • Topics

×
×
  • Create New...

Important Information

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