Jump to content

Hi, I am trying to install MineForge on Ubuntu Server 13.04. I got a lot of Prob


Recommended Posts

Posted

Hi The title says itself. I am new to Forge, I want to try some minecraft mods with my friend. And I absolutely want to run MinecraftForge on my linux.

What cause problems is that I have no GUI. And there is no really tutorials about Ubuntu server.

 

I tried that tutorial. I'm not a Linux guru­. But I will try my best to install that dedicated server...

 

Thanks.

Mike

Posted

Run the installer on your computer.

Select 'install server'.

Upload the files it spits out to your server.

Then run command java -jar minecraftforge.jar -nogui

Read the EAQ before posting! OR ELSE!

 

This isn't building better software, its trying to grab a place in the commit list of a highly visible github project.

 

www.forgeessentials.com

 

Don't PM me, I don't check this account unless I have to.

Posted

I actually just got done setting up a Linux based forge server using Ubuntu. I was running my server out of a virtual machine but that should not make any difference.

 

Introduction

 

 

 

So you say you are using the Ubuntu Server edition? That is no problem.

 

First if you have not I would recommend installing openssh-server to allow for remote console and file managment.

 

sudo apt-get install openssh-server

 

Second I would recommend you install a few managment tools to ease the managment of the server.

 

PuTTY (SSH client for Windows)

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

 

WinSCP (SCP/SFTP client for Windows)

http://winscp.net/eng/download.php

 

 

 

Installing Java

 

 

 

You need to install Java. I am going over all of the step I went through as to avoid any problems. Minecraft (Mojang) recommends using Oracle Java (It says somewhere on their site). Sadly this has to be done manually since the Java binaries don't come distributed with Ubuntu (all versions).

 

Start by going to:

http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html

.

 

You want to download the RPM version of Java, Ubuntu uses DEB packages to install software but Oracle does not distribute a DEB package so we will have to create one from the RPM package.

 

Now use WinSCP to upload the Java package to the server. By default the directory you are presented with on the remote side is the user's home directory. This is where all do the user's profile data and file are stored. It is also the only place an unprivileged (not root) user is allowed to write to by default.

 

For the next steps you can either open up putty and connect to the server or just use the console.

 

Now we need to create a DEB package for Java and install it.

 

We need to install the required tools**:

sudo apt-get install alien fakeroot 

 

Alien is the program that will do the conversion for us, fakeroot is a program that does exactly that... it fakes root. Root (or fakeroot) is required for creating DEB packages.

 

Now we can convert Java (finally). Start by navigating to the home directory of the users if you are not there. Now find the name of the Java RPM package and run alien like so.

 

fakeroot alien --scripts changeme.rpm

 

Give it a minute to convert the package for you, when its done you get a file with a name like so;

 

jre_1.7.0xx.deb

 

Now install the package using dpkg (the Debian Package Manager).

 

sudo dpkg -i jre_1.7.0xx.deb

 

After the installation is done verify that java is installed right.

 

java -version

 

 

 

Installing Minecraft Forge

 

First create a directory on your desktop called minecraft which will be the location for installing the server files.

 

You will need to download a copy of the Minecraft Forge Installer.

 

Run the installer and select install server and select the location where you want it to download the server and required dependencies.

 

Now upload the directory to the user's home directory on the server.

 

Once that has been uploaded you are done and the base server is ready to go.

 

Start Script

 

 

 

Some people like to make a little script to make starting the minecraft server easier.

 

Here is a little script I use;

#!/bin/bash
java -Xms512M -Xmx1024M -XX:MaxPermSize=128m -XX:+UseParallelGC -XX:ParallelGCThreads=2 -XX:+UseNUMA -jar minecraftforge-universal-1.6.2-9.10.1.859.jar nogui

 

Just copy this and save it to a file (generally ends in .sh) and upload it to the server. You will need to give the script execute permission on the server by running;

 

chmod +x changeme.sh

 

Then run the script by typing;

 

./changeme.sh

 

or

 

/home/user/minecraft/changeme.sh

 

You will need to adjust the amount of memory allocated to the Minecraft server.

-Xms### is the minimum amount of memory that Java will use while running
-Xmx### is the maximum amount of memory that Java will use while running

 

After the number don't forget either an K(kilobyte), M(megabyte) or G(gigabyte) to specify the amount of memory to take if you don't Java won't understand the option.

 

Be sure the file names in the script match the version of forge you have.

 

The rest of the options in the file are for Java garbage collector. I searched around on various blogs and forums to understand the very tip of the iceberg on that subject and found these options work best for my server but this may not be true for you.

 

 

 

Sidenotes

 

**If you have not, you should refresh your APT cache to ensure you get the latest version of packages.

 

Update the cache by running:

sudo apt-get update

 

 

Hopefully this will help you out, you can PM me if you need any additional help and I will do what I can.

“Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.” - Linus Torvalds

Posted

STAHP using Ubuntu!

 

for the love of everything holy. Get CentOS, or any other Red Hat based Distro.

 

That being said...

 

download the universal of MinecraftForge that you want to run. SFTP it to your Linux Box. (that way you use the ad.fly links) OR use your GUI Browser in linux.

#set up your system
[user@server]$ su -
# enter password 
# Note on Ubuntu systems you may have to set roots password by saying: sudo passwd root
[root@server]# useradd -m minecraft
[root@server]# cp /path/to/universal.jar /home/minecraft/Minecraft-Forge-Universal.jar
[root@server]# chown minecraft:minecraft /home/minecraft/Minecraft-Forge-Universal.jar
[root@server]# exit
[user@server]$ screen -S minecraft
#a screen session opens
[user@server]$ su -
[root@server]# su - minecraft
[minecraft@server]$ java -Xms512M -Xmx4096M -jar "Minecraft-Forge-Universal.jar"
# Press CONTROL + A
# Let go of control and A, and press "d"
# this will detach the screen session allowing the server console to run in a private session.
# if you need access to the terminal, type
# [user@server]$ screen -r minecraft
# and it will open for you to view / input commands
# This is still better to do on CentOS Box's....

 

I've been running MC servers since Beta 1.7.3.

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

    • So me and a couple of friends are playing with a shitpost mod pack and one of the mods in the pack is corail tombstone and for some reason there is a problem with it, where on death to fire the player will get kicked out of the server and the tombstone will not spawn basically deleting an entire inventory, it doesn't matter what type of fire it is, whether it's from vanilla fire/lava, or from modded fire like ice&fire/lycanites and it's common enough to where everyone on the server has experienced at least once or twice and it doesn't give any crash log. a solution to this would be much appreciated thank you!
    • It is 1.12.2 - I have no idea if there is a 1.12 pack
    • Okay, but does the modpack works with 1.12 or just with 1.12.2, because I need the Forge client specifically for Minecraft 1.12, not 1.12.2
    • Version 1.19 - Forge 41.0.63 I want to create a wolf entity that I can ride, so far it seems to be working, but the problem is that when I get on the wolf, I can’t control it. I then discovered that the issue is that the server doesn’t detect that I’m riding the wolf, so I’m struggling with synchronization. However, it seems to not be working properly. As I understand it, the server receives the packet but doesn’t register it correctly. I’m a bit new to Java, and I’ll try to provide all the relevant code and prints *The comments and prints are translated by chatgpt since they were originally in Spanish* Thank you very much in advance No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. MountableWolfEntity package com.vals.valscraft.entity; import com.vals.valscraft.network.MountSyncPacket; import com.vals.valscraft.network.NetworkHandler; import net.minecraft.client.Minecraft; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.animal.Wolf; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.Entity; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.network.PacketDistributor; public class MountableWolfEntity extends Wolf { private boolean hasSaddle; private static final EntityDataAccessor<Byte> DATA_ID_FLAGS = SynchedEntityData.defineId(MountableWolfEntity.class, EntityDataSerializers.BYTE); public MountableWolfEntity(EntityType<? extends Wolf> type, Level level) { super(type, level); this.hasSaddle = false; } @Override protected void defineSynchedData() { super.defineSynchedData(); this.entityData.define(DATA_ID_FLAGS, (byte)0); } public static AttributeSupplier.Builder createAttributes() { return Wolf.createAttributes() .add(Attributes.MAX_HEALTH, 20.0) .add(Attributes.MOVEMENT_SPEED, 0.3); } @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { ItemStack itemstack = player.getItemInHand(hand); if (itemstack.getItem() == Items.SADDLE && !this.hasSaddle()) { if (!player.isCreative()) { itemstack.shrink(1); } this.setSaddle(true); return InteractionResult.SUCCESS; } else if (!level.isClientSide && this.hasSaddle()) { player.startRiding(this); MountSyncPacket packet = new MountSyncPacket(true); // 'true' means the player is mounted NetworkHandler.CHANNEL.sendToServer(packet); // Ensure the server handles the packet return InteractionResult.SUCCESS; } return InteractionResult.PASS; } @Override public void travel(Vec3 travelVector) { if (this.isVehicle() && this.getControllingPassenger() instanceof Player) { System.out.println("The wolf has a passenger."); System.out.println("The passenger is a player."); Player player = (Player) this.getControllingPassenger(); // Ensure the player is the controller this.setYRot(player.getYRot()); this.yRotO = this.getYRot(); this.setXRot(player.getXRot() * 0.5F); this.setRot(this.getYRot(), this.getXRot()); this.yBodyRot = this.getYRot(); this.yHeadRot = this.yBodyRot; float forward = player.zza; float strafe = player.xxa; if (forward <= 0.0F) { forward *= 0.25F; } this.flyingSpeed = this.getSpeed() * 0.1F; this.setSpeed((float) this.getAttributeValue(Attributes.MOVEMENT_SPEED) * 1.5F); this.setDeltaMovement(new Vec3(strafe, travelVector.y, forward).scale(this.getSpeed())); this.calculateEntityAnimation(this, false); } else { // The wolf does not have a passenger or the passenger is not a player System.out.println("No player is mounted, or the passenger is not a player."); super.travel(travelVector); } } public boolean hasSaddle() { return this.hasSaddle; } public void setSaddle(boolean hasSaddle) { this.hasSaddle = hasSaddle; } @Override protected void dropEquipment() { super.dropEquipment(); if (this.hasSaddle()) { this.spawnAtLocation(Items.SADDLE); this.setSaddle(false); } } @SubscribeEvent public static void onServerTick(TickEvent.ServerTickEvent event) { if (event.phase == TickEvent.Phase.START) { MinecraftServer server = net.minecraftforge.server.ServerLifecycleHooks.getCurrentServer(); if (server != null) { for (ServerPlayer player : server.getPlayerList().getPlayers()) { if (player.isPassenger() && player.getVehicle() instanceof MountableWolfEntity) { MountableWolfEntity wolf = (MountableWolfEntity) player.getVehicle(); System.out.println("Tick: " + player.getName().getString() + " is correctly mounted on " + wolf); } } } } } private boolean lastMountedState = false; @Override public void tick() { super.tick(); if (!this.level.isClientSide) { // Only on the server boolean isMounted = this.isVehicle() && this.getControllingPassenger() instanceof Player; // Only print if the state changed if (isMounted != lastMountedState) { if (isMounted) { Player player = (Player) this.getControllingPassenger(); // Verify the passenger is a player System.out.println("Server: Player " + player.getName().getString() + " is now mounted."); } else { System.out.println("Server: The wolf no longer has a passenger."); } lastMountedState = isMounted; } } } @Override public void addPassenger(Entity passenger) { super.addPassenger(passenger); if (passenger instanceof Player) { Player player = (Player) passenger; if (!this.level.isClientSide && player instanceof ServerPlayer) { // Send the packet to the server to indicate the player is mounted NetworkHandler.CHANNEL.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) player), new MountSyncPacket(true)); } } } @Override public void removePassenger(Entity passenger) { super.removePassenger(passenger); if (passenger instanceof Player) { Player player = (Player) passenger; if (!this.level.isClientSide && player instanceof ServerPlayer) { // Send the packet to the server to indicate the player is no longer mounted NetworkHandler.CHANNEL.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) player), new MountSyncPacket(false)); } } } @Override public boolean isControlledByLocalInstance() { Entity entity = this.getControllingPassenger(); return entity instanceof Player; } @Override public void positionRider(Entity passenger) { if (this.hasPassenger(passenger)) { double xOffset = Math.cos(Math.toRadians(this.getYRot() + 90)) * 0.4; double zOffset = Math.sin(Math.toRadians(this.getYRot() + 90)) * 0.4; passenger.setPos(this.getX() + xOffset, this.getY() + this.getPassengersRidingOffset() + passenger.getMyRidingOffset(), this.getZ() + zOffset); } } } MountSyncPacket package com.vals.valscraft.network; import com.vals.valscraft.entity.MountableWolfEntity; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class MountSyncPacket { private final boolean isMounted; public MountSyncPacket(boolean isMounted) { this.isMounted = isMounted; } public void encode(FriendlyByteBuf buffer) { buffer.writeBoolean(isMounted); } public static MountSyncPacket decode(FriendlyByteBuf buffer) { return new MountSyncPacket(buffer.readBoolean()); } public void handle(NetworkEvent.Context context) { context.enqueueWork(() -> { ServerPlayer player = context.getSender(); // Get the player from the context if (player != null) { // Verifies if the player has dismounted if (!isMounted) { Entity vehicle = player.getVehicle(); if (vehicle instanceof MountableWolfEntity wolf) { // Logic to remove the player as a passenger wolf.removePassenger(player); System.out.println("Server: Player " + player.getName().getString() + " is no longer mounted."); } } } }); context.setPacketHandled(true); // Marks the packet as handled } } networkHandler package com.vals.valscraft.network; import com.vals.valscraft.valscraft; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.network.NetworkRegistry; import net.minecraftforge.network.simple.SimpleChannel; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class NetworkHandler { private static final String PROTOCOL_VERSION = "1"; public static final SimpleChannel CHANNEL = NetworkRegistry.newSimpleChannel( new ResourceLocation(valscraft.MODID, "main"), () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals ); public static void init() { int packetId = 0; // Register the mount synchronization packet CHANNEL.registerMessage( packetId++, MountSyncPacket.class, MountSyncPacket::encode, MountSyncPacket::decode, (msg, context) -> msg.handle(context.get()) // Get the context with context.get() ); } }  
  • Topics

×
×
  • Create New...

Important Information

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