Jump to content

Forge server with Docker


Sunser

Recommended Posts

Hi everyone, I'm trying to run a forge server using docker, but it doesn't work.

- I've used the forge installer on the path of the directory I'm working in.

- "java -jar forge.jar" is working in the console.

- I get this error message when I'm trying to run it with docker :

Quote

We appear to be missing one or more essential library files.
You will need to add them to your server before FML and Forge will run successfully.java.lang.ClassNotFoundException: net.minecraft.launchwrapper.Launch
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at net.minecraftforge.fml.relauncher.ServerLaunchWrapper.run(ServerLaunchWrapper.java:44)
    at net.minecraftforge.fml.relauncher.ServerLaunchWrapper.main(ServerLaunchWrapper.java:31)

 

- I think I've added all useful files in my Docker image, but it seems I'm wrong. This is my Dockerfile :

FROM openjdk:8u131-jre-alpine
MAINTAINER Baptiste Chocot

USER root

RUN mkdir /minecraft
ADD forge-1.10.2-12.18.3.2185-universal.jar /minecraft
RUN mkdir /minecraft/libraries
ADD libraries/* /minecraft/libraries/
RUN mkdir /minecraft/mods
ADD mods/* /minecraft/mods/
RUN mkdir /minecraft/resourcepacks
ADD VERSION /minecraft
RUN mkdir /minecraft/versions
ADD versions/* /minecraft/versions/
RUN mkdir /minecraft/logs
ADD logs/* /minecraft/logs/
ADD minecraft_server.1.10.2.jar /minecraft
ADD installer.log /minecraft
ADD init.sh /minecraft
RUN ls -la minecraft/libraries
RUN chmod +x /minecraft/init.sh

EXPOSE 25565
CMD java -jar forge-1.10.2-12.18.3.2185-universal.jar

- The ls -la libraries shows this, so I guess libraries are not the problem :

Step 19/22 : RUN ls -la minecraft/libraries
 ---> Running in c51cf9f66828
total 100
drwxr-xr-x   25 root     root          4096 Feb 25 15:49 .
drwxr-xr-x   11 root     root          4096 Feb 25 15:50 ..
drwxr--r--    3 root     root          4096 Feb 18 19:40 OptiFine
drwxr--r--    5 root     root          4096 Feb 18 19:38 apache
drwxr--r--    4 root     root          4096 Feb 18 19:40 commons-codec
drwxr--r--    4 root     root          4096 Feb 18 19:40 commons-io
drwxr--r--    3 root     root          4096 Feb 18 19:40 commons-logging
drwxr--r--    4 root     root          4096 Feb 18 19:38 google
drwxr--r--    3 root     root          4096 Feb 18 19:38 ibm
drwxr--r--    5 root     root          4096 Feb 18 19:38 java
drwxr--r--    3 root     root          4096 Feb 18 19:40 jline
drwxr--r--    3 root     root          4096 Feb 18 19:38 lwjgl
drwxr--r--    3 root     root          4096 Feb 18 19:40 lzma
drwxr--r--    3 root     root          4096 Feb 18 19:39 minecraft
drwxr--r--    5 root     root          4096 Feb 18 19:39 minecraftforge
drwxr--r--    7 root     root          4096 Feb 18 19:39 mojang
drwxr--r--    3 root     root          4096 Feb 18 19:39 netty
drwxr--r--    3 root     root          4096 Feb 18 19:40 oshi-core
drwxr--r--    3 root     root          4096 Feb 18 19:38 ow2
drwxr--r--    7 root     root          4096 Feb 18 19:39 paulscode
drwxr--r--   10 root     root          4096 Feb 18 19:38 scala-lang
drwxr--r--    4 root     root          4096 Feb 18 19:38 sf
drwxr--r--    4 root     root          4096 Feb 18 19:38 typesafe
drwxr--r--    3 root     root          4096 Feb 18 19:38 unimi
drwxr--r--    3 root     root          4096 Feb 18 19:40 vecmath

If anyone know what I missed or did wrong, please help me.

Edited by Sunser
Dockerfile has been edited
Link to comment
Share on other sites

Rather than add the files from your .minecraft folder it would be best to do it from a separate contained server instance created using the forge installer.

 

Also, I'm not that familiar with Docker so I'm not sure if I'm missing anything but I don't see you changing to the minecraft dir before running the forge jar.

 

Is there a chance that the forge jar is in the root of the image and not in the sub folder, hence not being able to find the library folder? 

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

    • Hello everyone, I'm making this post to seek help for my modded block, It's a special block called FrozenBlock supposed to take the place of an old block, then after a set amount of ticks, it's supposed to revert its Block State, Entity, data... to the old block like this :  The problem I have is that the system breaks when handling multi blocks (I tried some fix but none of them worked) :  The bug I have identified is that the function "setOldBlockFields" in the item's "setFrozenBlock" function gets called once for the 1st block of multiblock getting frozen (as it should), but gets called a second time BEFORE creating the first FrozenBlock with the data of the 1st block, hence giving the same data to the two FrozenBlock :   Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=head] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@73681674 BlockEntityData : id:"minecraft:bed",x:3,y:-60,z:-6} Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=3, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=2, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} here is the code inside my custom "freeze" item :    @Override     public @NotNull InteractionResult useOn(@NotNull UseOnContext pContext) {         if (!pContext.getLevel().isClientSide() && pContext.getHand() == InteractionHand.MAIN_HAND) {             BlockPos blockPos = pContext.getClickedPos();             BlockPos secondBlockPos = getMultiblockPos(blockPos, pContext.getLevel().getBlockState(blockPos));             if (secondBlockPos != null) {                 createFrozenBlock(pContext, secondBlockPos);             }             createFrozenBlock(pContext, blockPos);             return InteractionResult.SUCCESS;         }         return super.useOn(pContext);     }     public static void createFrozenBlock(UseOnContext pContext, BlockPos blockPos) {         BlockState oldState = pContext.getLevel().getBlockState(blockPos);         BlockEntity oldBlockEntity = oldState.hasBlockEntity() ? pContext.getLevel().getBlockEntity(blockPos) : null;         CompoundTag oldBlockEntityData = oldState.hasBlockEntity() ? oldBlockEntity.serializeNBT() : null;         if (oldBlockEntity != null) {             pContext.getLevel().removeBlockEntity(blockPos);         }         BlockState FrozenBlock = setFrozenBlock(oldState, oldBlockEntity, oldBlockEntityData);         pContext.getLevel().setBlockAndUpdate(blockPos, FrozenBlock);     }     public static BlockState setFrozenBlock(BlockState blockState, @Nullable BlockEntity blockEntity, @Nullable CompoundTag blockEntityData) {         BlockState FrozenBlock = BlockRegister.FROZEN_BLOCK.get().defaultBlockState();         ((FrozenBlock) FrozenBlock.getBlock()).setOldBlockFields(blockState, blockEntity, blockEntityData);         return FrozenBlock;     }  
    • It is an issue with quark - update it to this build: https://www.curseforge.com/minecraft/mc-mods/quark/files/3642325
    • Remove Instant Massive Structures Mod from your server     Add new crash-reports with sites like https://paste.ee/  
    • Update your drivers: https://www.amd.com/en/support/graphics/amd-radeon-r9-series/amd-radeon-r9-200-series/amd-radeon-r9-280x
  • Topics

×
×
  • Create New...

Important Information

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