reuse old project
This commit is contained in:
parent
78e8c35200
commit
1d79abd263
1
.idea/gradle.xml
generated
1
.idea/gradle.xml
generated
@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="GradleMigrationSettings" migrationVersion="1" />
|
||||
<component name="GradleSettings">
|
||||
<option name="linkedExternalProjectsSettings">
|
||||
<GradleProjectSettings>
|
||||
|
2
.idea/vcs.xml
generated
2
.idea/vcs.xml
generated
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
16
build.gradle
16
build.gradle
@ -1,9 +1,11 @@
|
||||
plugins {
|
||||
id 'java'
|
||||
id "com.github.johnrengelman.shadow" version "7.1.0"
|
||||
}
|
||||
|
||||
group = 'eu.mhsl.craftattack.worldmuseum'
|
||||
version = '1.0-SNAPSHOT'
|
||||
group = '' +
|
||||
''
|
||||
version = '1.0'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
@ -11,11 +13,13 @@ repositories {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
testImplementation platform('org.junit:junit-bom:5.9.1')
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter'
|
||||
|
||||
implementation 'com.github.Minestom:Minestom:8ad2c7701f'
|
||||
}
|
||||
|
||||
test {
|
||||
useJUnitPlatform()
|
||||
jar {
|
||||
manifest {
|
||||
attributes 'Main-Class': 'eu.mhsl.craftattack.worldmuseum.Main',
|
||||
"Multi-Release": true
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
import net.minestom.server.MinecraftServer;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
// Initialize the server
|
||||
MinecraftServer minecraftServer = MinecraftServer.init();
|
||||
|
||||
// REGISTER EVENTS (set spawn instance, teleport player at spawn)
|
||||
|
||||
// Start the server
|
||||
minecraftServer.start("0.0.0.0", 25565);
|
||||
}
|
||||
}
|
70
src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java
Executable file
70
src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java
Executable file
@ -0,0 +1,70 @@
|
||||
package eu.mhsl.craftattack.worldmuseum;
|
||||
|
||||
import eu.mhsl.craftattack.worldmuseum.listener.ClickListener;
|
||||
import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager;
|
||||
import net.minestom.server.MinecraftServer;
|
||||
import net.minestom.server.coordinate.Pos;
|
||||
import net.minestom.server.entity.GameMode;
|
||||
import net.minestom.server.entity.Player;
|
||||
import net.minestom.server.event.GlobalEventHandler;
|
||||
import net.minestom.server.event.player.PlayerLoginEvent;
|
||||
import net.minestom.server.event.player.PlayerUseItemEvent;
|
||||
import net.minestom.server.instance.InstanceContainer;
|
||||
import net.minestom.server.instance.InstanceManager;
|
||||
import net.minestom.server.instance.block.Block;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Main {
|
||||
static int PORT = 25565;
|
||||
static String IP = "0.0.0.0";
|
||||
static List<InstanceContainer> worlds = new ArrayList<>();
|
||||
|
||||
public static void main(String[] args) {
|
||||
// Initialization
|
||||
System.setProperty("minestom.chunk-view-distance", "16");
|
||||
MinecraftServer minecraftServer = MinecraftServer.init();
|
||||
InstanceManager instanceManager = MinecraftServer.getInstanceManager();
|
||||
|
||||
//load eu.mhsl.craftattack.worldmuseum.worlds / configExample file
|
||||
WorldManager.getInstance().loadWorlds();
|
||||
|
||||
|
||||
|
||||
// Create starting-instance / world
|
||||
InstanceContainer instanceContainer = instanceManager.createInstanceContainer();
|
||||
instanceContainer.setBlock(0,0,0,Block.STONE);
|
||||
|
||||
|
||||
// Add an event callback to specify the spawning instance (and the spawn position)
|
||||
GlobalEventHandler globalEventHandler = MinecraftServer.getGlobalEventHandler();
|
||||
globalEventHandler.addListener(PlayerLoginEvent.class, event -> {
|
||||
final Player player = event.getPlayer();
|
||||
event.setSpawningInstance(instanceContainer);
|
||||
player.setRespawnPoint(new Pos(0.5,2,0.5));
|
||||
player.setGameMode(GameMode.CREATIVE);
|
||||
|
||||
|
||||
|
||||
|
||||
for (int i = 0; i< WorldManager.getInstance().getWorlds().size(); i++) {
|
||||
if (WorldManager.getInstance().getWorlds().get(i).isEnabled()) {
|
||||
player.getInventory().setItemStack(i, WorldManager.getInstance().getWorlds().get(i).getItem());
|
||||
} else {
|
||||
System.out.println("Es gibt nicht aktivierte Welten!");
|
||||
}
|
||||
}
|
||||
});
|
||||
globalEventHandler.addListener(PlayerUseItemEvent.class, new ClickListener());
|
||||
try {
|
||||
PORT = Integer.parseInt(args[0]);
|
||||
} catch (Exception e) {
|
||||
if (args.length != 0) System.out.println("Given port doesn't work.");
|
||||
}
|
||||
// Start the server on port default port 25565 if none is given
|
||||
System.out.println("Running on " + IP + ":" + PORT);
|
||||
minecraftServer.start(IP, PORT);
|
||||
}
|
||||
}
|
37
src/main/java/eu/mhsl/craftattack/worldmuseum/listener/ClickListener.java
Executable file
37
src/main/java/eu/mhsl/craftattack/worldmuseum/listener/ClickListener.java
Executable file
@ -0,0 +1,37 @@
|
||||
package eu.mhsl.craftattack.worldmuseum.listener;
|
||||
|
||||
import net.minestom.server.entity.Player;
|
||||
import net.minestom.server.event.player.PlayerUseItemEvent;
|
||||
import net.minestom.server.inventory.Inventory;
|
||||
import net.minestom.server.inventory.InventoryType;
|
||||
import net.minestom.server.item.ItemStack;
|
||||
import net.minestom.server.item.Material;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class ClickListener implements Consumer<PlayerUseItemEvent> {
|
||||
|
||||
@Override
|
||||
public void accept(PlayerUseItemEvent playerUseItemEvent) {
|
||||
Player p = playerUseItemEvent.getPlayer();
|
||||
ItemStack usedItem = playerUseItemEvent.getItemStack();
|
||||
|
||||
|
||||
|
||||
|
||||
Inventory inventory = new Inventory(InventoryType.WINDOW_3X3, "asdasd");
|
||||
inventory.setItemStack(0, ItemStack.builder(Material.GRASS_BLOCK).build());
|
||||
p.openInventory(inventory);
|
||||
|
||||
|
||||
// for (int i = 0; i < WorldManager.getInstance().getWorlds().size(); i++) {
|
||||
// World world = WorldManager.getInstance().getWorlds().get(i);
|
||||
//
|
||||
// if (world.getItem().equals(usedItem)) {
|
||||
// if (p.getInstance().equals(world)) return;
|
||||
// p.setInstance(world, world.getSpawn());
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
}
|
83
src/main/java/eu/mhsl/craftattack/worldmuseum/worlds/World.java
Executable file
83
src/main/java/eu/mhsl/craftattack/worldmuseum/worlds/World.java
Executable file
@ -0,0 +1,83 @@
|
||||
package eu.mhsl.craftattack.worldmuseum.worlds;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.minestom.server.MinecraftServer;
|
||||
import net.minestom.server.coordinate.Pos;
|
||||
import net.minestom.server.instance.AnvilLoader;
|
||||
import net.minestom.server.instance.InstanceContainer;
|
||||
import net.minestom.server.item.ItemStack;
|
||||
import net.minestom.server.item.Material;
|
||||
import net.minestom.server.utils.NamespaceID;
|
||||
import net.minestom.server.world.DimensionType;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.UUID;
|
||||
|
||||
public class World extends InstanceContainer {
|
||||
private static DimensionType dimension = DimensionType.builder(NamespaceID.from("mhsl:worldview_by_olischma")).height(400).ambientLight(2.0f).build();
|
||||
private File file;
|
||||
private ItemStack item;
|
||||
private String name = "default";
|
||||
private Pos spawn = new Pos(0,0,0);
|
||||
private Material material = Material.GRASS_BLOCK;
|
||||
private boolean enabled = false;
|
||||
private String defaultConfig = "{\n" +
|
||||
" \"enabled\": false,\n" +
|
||||
" \"name\": \"DEFAULT_NAME\",\n" +
|
||||
" \"material\": \"GRASS_BLOCK\",\n" +
|
||||
" \"spawn\": {\n" +
|
||||
" \"x\": 0,\n" +
|
||||
" \"y\": 0,\n" +
|
||||
" \"z\": 0\n" +
|
||||
" },\n" +
|
||||
" \"tags\": [\n" +
|
||||
" \"RANDOM_TAG\"\n" +
|
||||
" ]\n" +
|
||||
"}";
|
||||
|
||||
static {
|
||||
MinecraftServer.getDimensionTypeManager().addDimension(dimension);
|
||||
}
|
||||
|
||||
public World(File file) {
|
||||
super(UUID.randomUUID(), dimension, new AnvilLoader(file.getPath()));
|
||||
MinecraftServer.getInstanceManager().registerInstance(this);
|
||||
this.file = file;
|
||||
try {
|
||||
File checkFile = new File(file.getPath() + "/config.json");
|
||||
if (checkFile.createNewFile()) {
|
||||
FileWriter fileWriter = new FileWriter(file.getPath() + "/config.json");
|
||||
fileWriter.write(defaultConfig);
|
||||
fileWriter.close();
|
||||
}
|
||||
} catch (IOException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
JsonObject config = (JsonObject) JsonParser.parseReader(new FileReader(file.getPath() + "/config.json"));
|
||||
this.name = config.get("name").getAsString();
|
||||
JsonObject spawn = config.getAsJsonObject("spawn");
|
||||
this.spawn = new Pos(spawn.get("x").getAsDouble(), spawn.get("y").getAsDouble(), spawn.get("z").getAsDouble());
|
||||
this.material = Material.values().stream().filter(m -> m.name().equals(config.get("material").getAsString())).findFirst().orElse(Material.GRASS_BLOCK);
|
||||
this.enabled = config.get("enabled").getAsBoolean();
|
||||
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
item = ItemStack.builder(material).displayName(Component.text(name)).build();
|
||||
}
|
||||
|
||||
public ItemStack getItem() {
|
||||
return item;
|
||||
}
|
||||
public Pos getSpawn() {
|
||||
return spawn;
|
||||
}
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
}
|
38
src/main/java/eu/mhsl/craftattack/worldmuseum/worlds/WorldManager.java
Executable file
38
src/main/java/eu/mhsl/craftattack/worldmuseum/worlds/WorldManager.java
Executable file
@ -0,0 +1,38 @@
|
||||
package eu.mhsl.craftattack.worldmuseum.worlds;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class WorldManager {
|
||||
private static WorldManager instance;
|
||||
private List<World> worlds = new ArrayList<>();
|
||||
|
||||
public static WorldManager getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new WorldManager();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
public void loadWorlds() {
|
||||
File saveDirectory = new File("saves");
|
||||
List<File> worldFolders = getFolderNames(saveDirectory);
|
||||
for (File f: worldFolders
|
||||
) {
|
||||
worlds.add(new World(f));
|
||||
}
|
||||
}
|
||||
|
||||
private List<File> getFolderNames(File curDir) {
|
||||
File[] fileList = curDir.listFiles();
|
||||
List<File> returnFolders = new ArrayList<>();
|
||||
for (File f: fileList) {
|
||||
if (f.isDirectory()) returnFolders.add(f);
|
||||
}
|
||||
return returnFolders;
|
||||
}
|
||||
|
||||
public List<World> getWorlds() {
|
||||
return worlds;
|
||||
}
|
||||
}
|
13
src/main/java/eu/mhsl/craftattack/worldmuseum/worlds/default.json
Executable file
13
src/main/java/eu/mhsl/craftattack/worldmuseum/worlds/default.json
Executable file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "DEFAULT_NAME",
|
||||
"material": "GRASS_BLOCK",
|
||||
"spawn": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"tags": [
|
||||
"RANDOM_TAG"
|
||||
]
|
||||
}
|
Reference in New Issue
Block a user