Update project configuration and refactor codebase

- Migrated Minestom dependency to new groupId.
- Added Maven Shade plugin for packaging.
- Switched Java version to 21 and corrected JDK settings.
- Refactored terrain generation logic to use the updated Minestom API.
- Replaced deprecated particle creation methods.
- Enabled Velocity proxy support.
- Updated various configuration files to align with the new build setup.
This commit is contained in:
2025-12-19 21:45:07 +01:00
parent 7561d42f41
commit d6b396758b
20 changed files with 139 additions and 69 deletions

13
.idea/EndlessJumper.iml generated Normal file
View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="FacetManager">
<facet type="minecraft" name="Minecraft">
<configuration>
<autoDetectTypes>
<platformType>ADVENTURE</platformType>
</autoDetectTypes>
<projectReimportVersion>1</projectReimportVersion>
</configuration>
</facet>
</component>
</module>

View File

@@ -11,16 +11,16 @@
<option name="name" value="spongepowered" /> <option name="name" value="spongepowered" />
<option name="url" value="https://repo.spongepowered.org/maven" /> <option name="url" value="https://repo.spongepowered.org/maven" />
</remote-repository> </remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository> <remote-repository>
<option name="id" value="jitpack" /> <option name="id" value="jitpack" />
<option name="name" value="jitpack" /> <option name="name" value="jitpack" />
<option name="url" value="https://jitpack.io" /> <option name="url" value="https://jitpack.io" />
</remote-repository> </remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository> <remote-repository>
<option name="id" value="jboss.community" /> <option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" /> <option name="name" value="JBoss Community repository" />

2
.idea/misc.xml generated
View File

@@ -8,7 +8,7 @@
</list> </list>
</option> </option>
</component> </component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="openjdk-17" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="corretto-21" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" /> <output url="file://$PROJECT_DIR$/out" />
</component> </component>
</project> </project>

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

2
build.sh Executable file
View File

@@ -0,0 +1,2 @@
mvn -f pom.xml clean package

View File

@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>EndlessJumper</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<version>3.5.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer>
<mainClass>eu.mhsl.minecraft.endlessjumper.EndlessJumper</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spongepowered</id>
<url>https://repo.spongepowered.org/maven</url>
</repository>
<repository>
<id>jitpack</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<properties>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.source>17</maven.compiler.source>
</properties>
</project>

37
pom.xml
View File

@@ -26,15 +26,34 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.github.Minestom</groupId> <groupId>net.minestom</groupId>
<artifactId>Minestom</artifactId> <artifactId>minestom-snapshots</artifactId>
<version>484727d02a</version> <version>d707b0674f</version>
<exclusions>
<exclusion>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-depchain</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
</dependencies> </dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.5.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>eu.mhsl.minecraft.endlessjumper.EndlessJumper</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project> </project>

View File

@@ -6,12 +6,14 @@ import net.minestom.server.coordinate.Pos;
import net.minestom.server.entity.Player; import net.minestom.server.entity.Player;
import net.minestom.server.entity.PlayerSkin; import net.minestom.server.entity.PlayerSkin;
import net.minestom.server.event.GlobalEventHandler; import net.minestom.server.event.GlobalEventHandler;
import net.minestom.server.event.player.AsyncPlayerConfigurationEvent;
import net.minestom.server.event.player.PlayerDisconnectEvent; import net.minestom.server.event.player.PlayerDisconnectEvent;
import net.minestom.server.event.player.PlayerLoginEvent;
import net.minestom.server.event.player.PlayerMoveEvent; import net.minestom.server.event.player.PlayerMoveEvent;
import net.minestom.server.extras.velocity.VelocityProxy;
import net.minestom.server.instance.InstanceContainer; import net.minestom.server.instance.InstanceContainer;
import net.minestom.server.instance.InstanceManager; import net.minestom.server.instance.InstanceManager;
import net.minestom.server.instance.block.Block; import net.minestom.server.instance.block.Block;
import net.minestom.server.timer.TaskSchedule;
import java.util.HashMap; import java.util.HashMap;
@@ -24,12 +26,12 @@ public class EndlessJumper {
HashMap<Player, JumpGenerator> games = new HashMap<>(); HashMap<Player, JumpGenerator> games = new HashMap<>();
eventHandler.addListener(PlayerLoginEvent.class, event -> { eventHandler.addListener(AsyncPlayerConfigurationEvent.class, event -> {
final Player p = event.getPlayer(); final Player p = event.getPlayer();
p.setRespawnPoint(new Pos(0.5,101.5,0.5)); p.setRespawnPoint(new Pos(0.5,101.5,0.5));
final InstanceContainer world = instanceManager.createInstanceContainer(); final InstanceContainer world = instanceManager.createInstanceContainer();
world.setChunkGenerator(new TerrainGenerator()); world.setGenerator(new TerrainGenerator());
Pos startingAt = new Pos(0,100,0); Pos startingAt = new Pos(0,100,0);
world.setBlock(startingAt, Block.DIAMOND_BLOCK); world.setBlock(startingAt, Block.DIAMOND_BLOCK);
@@ -41,7 +43,11 @@ public class EndlessJumper {
event.setSpawningInstance(world); event.setSpawningInstance(world);
games.put(p, new JumpGenerator(startingAt, p, world)); MinecraftServer.getSchedulerManager().scheduleTask(
() -> games.put(p, new JumpGenerator(startingAt, p, world)),
TaskSchedule.seconds(3),
TaskSchedule.stop()
);
}); });
eventHandler.addListener(PlayerMoveEvent.class, event -> { eventHandler.addListener(PlayerMoveEvent.class, event -> {
@@ -70,11 +76,10 @@ public class EndlessJumper {
//if(p.getPosition().z() > target.z()+2) generator.highlight(); //if(p.getPosition().z() > target.z()+2) generator.highlight();
}); });
eventHandler.addListener(PlayerDisconnectEvent.class, event -> { eventHandler.addListener(PlayerDisconnectEvent.class, event -> games.remove(event.getPlayer()));
games.remove(event.getPlayer());
});
server.start("0.0.0.0", 25565); VelocityProxy.enable("iph0YHK9jNWZ");
server.start("0.0.0.0", 25501);
} }
} }

View File

@@ -1,36 +1,12 @@
package eu.mhsl.minecraft.endlessjumper; package eu.mhsl.minecraft.endlessjumper;
import net.minestom.server.instance.Chunk; import net.minestom.server.instance.generator.GenerationUnit;
import net.minestom.server.instance.ChunkGenerator; import net.minestom.server.instance.generator.Generator;
import net.minestom.server.instance.ChunkPopulator;
import net.minestom.server.instance.batch.ChunkBatch;
import net.minestom.server.instance.block.Block;
import net.minestom.server.world.biomes.Biome;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Arrays; public class TerrainGenerator implements Generator {
import java.util.List;
public class TerrainGenerator implements ChunkGenerator {
@Override @Override
public void generateChunkData(@NotNull ChunkBatch batch, int chunkX, int chunkZ) { public void generate(@NotNull GenerationUnit unit) {
for(byte x = 0; x < Chunk.CHUNK_SIZE_X; x++) {
for(byte z = 0; z < Chunk.CHUNK_SIZE_Z; z++) {
for(byte y = 0; y < 1; y++) {
batch.setBlock(x, y, z, Block.AIR);
}
}
}
}
@Override
public void fillBiomes(@NotNull Biome[] biomes, int chunkX, int chunkZ) {
Arrays.fill(biomes, Biome.PLAINS);
}
@Override
public @Nullable List<ChunkPopulator> getPopulators() {
return null;
} }
} }

View File

@@ -17,8 +17,6 @@ public class BlockPalette {
blocks.add(Block.OXIDIZED_COPPER); blocks.add(Block.OXIDIZED_COPPER);
blocks.add(Block.OXIDIZED_CUT_COPPER); blocks.add(Block.OXIDIZED_CUT_COPPER);
return blocks.get(r.nextInt(0, blocks.size())); return blocks.get(r.nextInt(0, blocks.size()));
} }
} }

View File

@@ -8,23 +8,23 @@ import net.minestom.server.coordinate.Pos;
import net.minestom.server.entity.Player; import net.minestom.server.entity.Player;
import net.minestom.server.instance.InstanceContainer; import net.minestom.server.instance.InstanceContainer;
import net.minestom.server.instance.block.Block; import net.minestom.server.instance.block.Block;
import net.minestom.server.network.packet.server.play.ParticlePacket;
import net.minestom.server.particle.Particle; import net.minestom.server.particle.Particle;
import net.minestom.server.particle.ParticleCreator;
import net.minestom.server.sound.SoundEvent; import net.minestom.server.sound.SoundEvent;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Random; import java.util.Random;
public class JumpGenerator { public class JumpGenerator {
private Player player; private final Player player;
private InstanceContainer world; private final InstanceContainer world;
private ArrayList<Pos> blocks = new ArrayList<>(); private final ArrayList<Pos> blocks = new ArrayList<>();
private Pos checkpoint; private Pos checkpoint;
private Pos starting; private Pos starting;
private int combo = 0; private int combo = 0;
private int preview = 2; private final int preview = 2;
public JumpGenerator(Pos starting, Player player, InstanceContainer world) { public JumpGenerator(Pos starting, Player player, InstanceContainer world) {
@@ -53,12 +53,12 @@ public class JumpGenerator {
this.checkpoint = current; this.checkpoint = current;
this.player.playSound(Sound.sound(SoundEvent.ENTITY_PLAYER_LEVELUP, Sound.Source.BLOCK, 0.3f, 1f)); this.player.playSound(Sound.sound(SoundEvent.ENTITY_PLAYER_LEVELUP, Sound.Source.BLOCK, 0.3f, 1f));
this.player.showTitle(Title.title(Component.text(""), Component.text("Checkpoint", TextColor.color(0, 255, 0)))); this.player.showTitle(Title.title(Component.text(""), Component.text("Checkpoint", TextColor.color(0, 255, 0))));
this.player.sendPacket(ParticleCreator.createParticlePacket(Particle.CRIT, current.x()+0.5, current.y()+0.5, current.z()+0.5, 1.5f, 1.5f, 1.5f, 50)); this.player.sendPacket(new ParticlePacket(Particle.CRIT, current, current.add(0.5), 1.5f, 50));
} }
this.world.setBlock(target.add(0, 1 ,0), Block.LIGHT); this.world.setBlock(target.add(0, 1 ,0), Block.LIGHT);
this.blocks.add(target); this.blocks.add(target);
this.player.sendPacket(ParticleCreator.createParticlePacket(Particle.CRIT, target.x()+0.5, target.y()+0.5, target.z()+0.5, 1, 1, 1, 10)); this.player.sendPacket(new ParticlePacket(Particle.CRIT, target, target.add(0.5), 1, 10));
this.player.sendPacket(ParticleCreator.createParticlePacket(Particle.FALLING_NECTAR, target.x()+0.5, target.y()+1.5, target.z()+0.5, 0.3f, 0.1f, 0.3f, 10)); this.player.sendPacket(new ParticlePacket(Particle.FALLING_NECTAR, target, target.add(0.5),0.3f, 10));
this.combo++; this.combo++;
} }
@@ -95,14 +95,6 @@ public class JumpGenerator {
return checkpoint; return checkpoint;
} }
public Player getPlayer() {
return player;
}
public InstanceContainer getWorld() {
return world;
}
public ArrayList<Pos> getBlocks() { public ArrayList<Pos> getBlocks() {
return blocks; return blocks;
} }

Binary file not shown.

View File

@@ -0,0 +1,5 @@
#Generated by Maven
#Fri Dec 19 20:45:21 CET 2025
artifactId=EndlessJumper
groupId=org.example
version=1.0-SNAPSHOT

View File

@@ -0,0 +1,5 @@
eu/mhsl/minecraft/endlessjumper/generator/BlockPalette.class
eu/mhsl/minecraft/endlessjumper/TerrainGenerator.class
eu/mhsl/minecraft/endlessjumper/generator/JumpGenerator.class
eu/mhsl/minecraft/endlessjumper/BlockMath.class
eu/mhsl/minecraft/endlessjumper/EndlessJumper.class

View File

@@ -0,0 +1,5 @@
/home/elias/projects/Minecraft/EndlessJumper/src/main/java/eu/mhsl/minecraft/endlessjumper/EndlessJumper.java
/home/elias/projects/Minecraft/EndlessJumper/src/main/java/eu/mhsl/minecraft/endlessjumper/BlockMath.java
/home/elias/projects/Minecraft/EndlessJumper/src/main/java/eu/mhsl/minecraft/endlessjumper/TerrainGenerator.java
/home/elias/projects/Minecraft/EndlessJumper/src/main/java/eu/mhsl/minecraft/endlessjumper/generator/JumpGenerator.java
/home/elias/projects/Minecraft/EndlessJumper/src/main/java/eu/mhsl/minecraft/endlessjumper/generator/BlockPalette.java

Binary file not shown.