Compare commits
3 Commits
develop
...
develop-up
Author | SHA1 | Date | |
---|---|---|---|
8756cf2f17 | |||
cfdf469c39 | |||
67d0fad071 |
2
.idea/codeStyles/codeStyleConfig.xml
generated
2
.idea/codeStyles/codeStyleConfig.xml
generated
@@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectCodeStyleConfiguration">
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
<state>
|
<state>
|
||||||
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
|
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Minigames" />
|
||||||
</state>
|
</state>
|
||||||
</component>
|
</component>
|
2
.idea/compiler.xml
generated
2
.idea/compiler.xml
generated
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="CompilerConfiguration">
|
<component name="CompilerConfiguration">
|
||||||
<bytecodeTargetLevel target="21" />
|
<bytecodeTargetLevel target="25" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="21" project-jdk-type="JavaSDK" />
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_25" default="true" project-jdk-name="openjdk-25" project-jdk-type="JavaSDK" />
|
||||||
</project>
|
</project>
|
1
.idea/modules.xml
generated
1
.idea/modules.xml
generated
@@ -4,7 +4,6 @@
|
|||||||
<modules>
|
<modules>
|
||||||
<module fileurl="file://$PROJECT_DIR$/.idea/modules/Minigames.main.iml" filepath="$PROJECT_DIR$/.idea/modules/Minigames.main.iml" />
|
<module fileurl="file://$PROJECT_DIR$/.idea/modules/Minigames.main.iml" filepath="$PROJECT_DIR$/.idea/modules/Minigames.main.iml" />
|
||||||
<module fileurl="file://$PROJECT_DIR$/.idea/modules/Minigames.test.iml" filepath="$PROJECT_DIR$/.idea/modules/Minigames.test.iml" />
|
<module fileurl="file://$PROJECT_DIR$/.idea/modules/Minigames.test.iml" filepath="$PROJECT_DIR$/.idea/modules/Minigames.test.iml" />
|
||||||
<module fileurl="file://$PROJECT_DIR$/.idea/modules/eu.mhsl.minenet.Minigames.main.iml" filepath="$PROJECT_DIR$/.idea/modules/eu.mhsl.minenet.Minigames.main.iml" />
|
|
||||||
</modules>
|
</modules>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
4
.idea/modules/Minigames.main.iml
generated
4
.idea/modules/Minigames.main.iml
generated
@@ -10,8 +10,4 @@
|
|||||||
</configuration>
|
</configuration>
|
||||||
</facet>
|
</facet>
|
||||||
</component>
|
</component>
|
||||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
|
||||||
<exclude-output />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
</component>
|
|
||||||
</module>
|
</module>
|
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id 'java'
|
id 'java'
|
||||||
id "com.github.johnrengelman.shadow" version "7.1.0"
|
id "com.github.johnrengelman.shadow" version "8.1.1"
|
||||||
}
|
}
|
||||||
|
|
||||||
group 'eu.mhsl.minenet'
|
group 'eu.mhsl.minenet'
|
||||||
@@ -35,7 +35,7 @@ allprojects {
|
|||||||
|
|
||||||
java {
|
java {
|
||||||
toolchain {
|
toolchain {
|
||||||
languageVersion = JavaLanguageVersion.of(21)
|
languageVersion = JavaLanguageVersion.of(25)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ dependencies {
|
|||||||
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0'
|
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0'
|
||||||
|
|
||||||
//https://jitpack.io/#Minestom/Minestom
|
//https://jitpack.io/#Minestom/Minestom
|
||||||
implementation 'net.minestom:minestom-snapshots:fd51c8d17a'
|
implementation 'net.minestom:minestom:2025.10.11-1.21.10'
|
||||||
|
|
||||||
//Tools
|
//Tools
|
||||||
implementation 'de.articdive:jnoise:3.0.2'
|
implementation 'de.articdive:jnoise:3.0.2'
|
||||||
@@ -57,7 +57,7 @@ dependencies {
|
|||||||
|
|
||||||
|
|
||||||
//PvP
|
//PvP
|
||||||
implementation 'io.github.TogAr2:MinestomPvP:PR62-SNAPSHOT'
|
implementation 'io.github.TogAr2:MinestomPvP:56a831b41cb2ec6db8da681ad5d212ed7c71e3ee'
|
||||||
|
|
||||||
// Hephaestus engine
|
// Hephaestus engine
|
||||||
implementation("team.unnamed:hephaestus-api:0.2.1-SNAPSHOT")
|
implementation("team.unnamed:hephaestus-api:0.2.1-SNAPSHOT")
|
||||||
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,6 +1,6 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
|
||||||
networkTimeout=10000
|
networkTimeout=10000
|
||||||
validateDistributionUrl=true
|
validateDistributionUrl=true
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
@@ -3,12 +3,13 @@ package eu.mhsl.minenet.minigames;
|
|||||||
import eu.mhsl.minenet.minigames.api.HttpServer;
|
import eu.mhsl.minenet.minigames.api.HttpServer;
|
||||||
import eu.mhsl.minenet.minigames.command.Commands;
|
import eu.mhsl.minenet.minigames.command.Commands;
|
||||||
import eu.mhsl.minenet.minigames.handler.Listeners;
|
import eu.mhsl.minenet.minigames.handler.Listeners;
|
||||||
|
import eu.mhsl.minenet.minigames.instance.Dimension;
|
||||||
import eu.mhsl.minenet.minigames.lang.Languages;
|
import eu.mhsl.minenet.minigames.lang.Languages;
|
||||||
import eu.mhsl.minenet.minigames.server.tasks.TablistUpdateTask;
|
import eu.mhsl.minenet.minigames.server.tasks.TablistUpdateTask;
|
||||||
|
import io.github.togar2.pvp.MinestomPvP;
|
||||||
|
import net.minestom.server.Auth;
|
||||||
import net.minestom.server.MinecraftServer;
|
import net.minestom.server.MinecraftServer;
|
||||||
import net.minestom.server.extras.bungee.BungeeCordProxy;
|
|
||||||
import net.minestom.server.extras.lan.OpenToLAN;
|
import net.minestom.server.extras.lan.OpenToLAN;
|
||||||
import net.minestom.server.extras.velocity.VelocityProxy;
|
|
||||||
import net.minestom.server.timer.TaskSchedule;
|
import net.minestom.server.timer.TaskSchedule;
|
||||||
import org.spongepowered.configurate.ConfigurateException;
|
import org.spongepowered.configurate.ConfigurateException;
|
||||||
import org.spongepowered.configurate.ConfigurationNode;
|
import org.spongepowered.configurate.ConfigurationNode;
|
||||||
@@ -25,7 +26,7 @@ public class Main {
|
|||||||
public static ConfigurationNode globalConfig;
|
public static ConfigurationNode globalConfig;
|
||||||
|
|
||||||
@SuppressWarnings("ResultOfMethodCallIgnored")
|
@SuppressWarnings("ResultOfMethodCallIgnored")
|
||||||
public static void main(String[] args) throws ConfigurateException {
|
static void main() throws ConfigurateException {
|
||||||
//noinspection ResultOfMethodCallIgnored
|
//noinspection ResultOfMethodCallIgnored
|
||||||
Resource.values(); // This initializes and preloads the enum and extracts the resources
|
Resource.values(); // This initializes and preloads the enum and extracts the resources
|
||||||
Languages.getInstance(); //Preload languages into the jvm
|
Languages.getInstance(); //Preload languages into the jvm
|
||||||
@@ -40,29 +41,35 @@ public class Main {
|
|||||||
|
|
||||||
logger.info("Initialize Minecraft server...");
|
logger.info("Initialize Minecraft server...");
|
||||||
|
|
||||||
MinecraftServer server = MinecraftServer.init();
|
MinecraftServer server = null;
|
||||||
// MinestomPvP.init();
|
if(serverConfig.node("open-to-lan").getBoolean()) OpenToLAN.open();
|
||||||
|
|
||||||
|
if(globalConfig.node("bungeecord", "enabled").getBoolean()) {
|
||||||
|
server = MinecraftServer.init(new Auth.Bungee());
|
||||||
|
}
|
||||||
|
|
||||||
|
if(globalConfig.node("velocity", "enabled").getBoolean()) {
|
||||||
|
server = MinecraftServer.init(new Auth.Velocity(Objects.requireNonNull(globalConfig.node("velocity", "secret").getString())));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(server == null) server = MinecraftServer.init();
|
||||||
|
|
||||||
|
MinestomPvP.init();
|
||||||
|
|
||||||
MinecraftServer.setBrandName("mhsl.eu - minenet - credits to minestom");
|
MinecraftServer.setBrandName("mhsl.eu - minenet - credits to minestom");
|
||||||
MinecraftServer.setCompressionThreshold(serverConfig.node("compression-threshold").getInt(0));
|
MinecraftServer.setCompressionThreshold(serverConfig.node("compression-threshold").getInt(0));
|
||||||
System.setProperty("minestom.chunk-view-distance", String.valueOf(serverConfig.node("view-distance").getInt()));
|
System.setProperty("minestom.chunk-view-distance", String.valueOf(serverConfig.node("view-distance").getInt()));
|
||||||
|
System.setProperty("minestom.registry.unsafe-ops", "true");
|
||||||
|
|
||||||
Commands.values();
|
Commands.values();
|
||||||
Listeners.values();
|
Listeners.values();
|
||||||
|
Dimension.values();
|
||||||
new HttpServer();
|
new HttpServer();
|
||||||
|
|
||||||
MinecraftServer.getSchedulerManager().scheduleTask(new TablistUpdateTask(), TaskSchedule.tick(20), TaskSchedule.tick(20));
|
MinecraftServer.getSchedulerManager().scheduleTask(new TablistUpdateTask(), TaskSchedule.tick(20), TaskSchedule.tick(20));
|
||||||
|
|
||||||
logger.info("Starting Minecraft server ... ");
|
logger.info("Starting Minecraft server ... ");
|
||||||
|
|
||||||
if(serverConfig.node("open-to-lan").getBoolean()) OpenToLAN.open();
|
|
||||||
|
|
||||||
if(globalConfig.node("bungeecord", "enabled").getBoolean()) BungeeCordProxy.enable();
|
|
||||||
|
|
||||||
if(globalConfig.node("velocity", "enabled").getBoolean()) {
|
|
||||||
VelocityProxy.enable(Objects.requireNonNull(globalConfig.node("velocity", "secret").getString()));
|
|
||||||
}
|
|
||||||
|
|
||||||
server.start("0.0.0.0", serverConfig.node("port").getInt(25565));
|
server.start("0.0.0.0", serverConfig.node("port").getInt(25565));
|
||||||
System.gc();
|
System.gc();
|
||||||
|
|
||||||
|
@@ -21,7 +21,7 @@ public class SetMemorialCommand extends PrivilegedCommand {
|
|||||||
ArgumentString loreArgument = ArgumentType.String("lore");
|
ArgumentString loreArgument = ArgumentType.String("lore");
|
||||||
|
|
||||||
materialArgument.setSuggestionCallback(
|
materialArgument.setSuggestionCallback(
|
||||||
(sender, context, suggestion) -> Material
|
(_, _, suggestion) -> Material
|
||||||
.values()
|
.values()
|
||||||
.stream()
|
.stream()
|
||||||
.map(material -> new SuggestionEntry(material.name(), Component.text(material.name())))
|
.map(material -> new SuggestionEntry(material.name(), Component.text(material.name())))
|
||||||
@@ -35,7 +35,7 @@ public class SetMemorialCommand extends PrivilegedCommand {
|
|||||||
.getTournament()
|
.getTournament()
|
||||||
.setMemorialConfiguration(
|
.setMemorialConfiguration(
|
||||||
new MemorialConfiguration(
|
new MemorialConfiguration(
|
||||||
Material.fromNamespaceId(context.get(materialArgument)),
|
Material.fromKey(context.get(materialArgument)),
|
||||||
context.get(titleArgument),
|
context.get(titleArgument),
|
||||||
context.get(loreArgument)
|
context.get(loreArgument)
|
||||||
)
|
)
|
||||||
|
@@ -23,7 +23,7 @@ public class SetRewardCommand extends PrivilegedCommand {
|
|||||||
ArgumentStringArray amountsArgument = ArgumentType.StringArray("amount");
|
ArgumentStringArray amountsArgument = ArgumentType.StringArray("amount");
|
||||||
|
|
||||||
materialArgument.setSuggestionCallback(
|
materialArgument.setSuggestionCallback(
|
||||||
(sender, context, suggestion) -> Material
|
(_, _, suggestion) -> Material
|
||||||
.values()
|
.values()
|
||||||
.stream()
|
.stream()
|
||||||
.map(material -> new SuggestionEntry(material.name(), Component.text(material.name())))
|
.map(material -> new SuggestionEntry(material.name(), Component.text(material.name())))
|
||||||
@@ -37,7 +37,7 @@ public class SetRewardCommand extends PrivilegedCommand {
|
|||||||
.getTournament()
|
.getTournament()
|
||||||
.setRewardConfiguration(
|
.setRewardConfiguration(
|
||||||
new RewardConfiguration(
|
new RewardConfiguration(
|
||||||
Material.fromNamespaceId(context.get(materialArgument)),
|
Material.fromKey(context.get(materialArgument)),
|
||||||
Arrays.stream(context.get(amountsArgument)).map(Integer::valueOf).collect(Collectors.toList())
|
Arrays.stream(context.get(amountsArgument)).map(Integer::valueOf).collect(Collectors.toList())
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
@@ -25,7 +25,6 @@ public class SetRoomOwnerCommand extends PrivilegedCommand {
|
|||||||
});
|
});
|
||||||
|
|
||||||
this.addSyntax((sender, context) -> {
|
this.addSyntax((sender, context) -> {
|
||||||
System.out.println("Test");
|
|
||||||
if(sender instanceof Player p) {
|
if(sender instanceof Player p) {
|
||||||
Player newOwner = MinecraftServer.getConnectionManager().getOnlinePlayerByUsername(context.getRaw("player"));
|
Player newOwner = MinecraftServer.getConnectionManager().getOnlinePlayerByUsername(context.getRaw("player"));
|
||||||
Room.getRoom(p).orElseThrow().setOwner(Objects.requireNonNull(newOwner));
|
Room.getRoom(p).orElseThrow().setOwner(Objects.requireNonNull(newOwner));
|
||||||
|
@@ -1,49 +1,50 @@
|
|||||||
package eu.mhsl.minenet.minigames.instance;
|
package eu.mhsl.minenet.minigames.instance;
|
||||||
|
|
||||||
|
import net.kyori.adventure.key.Key;
|
||||||
import net.minestom.server.MinecraftServer;
|
import net.minestom.server.MinecraftServer;
|
||||||
import net.minestom.server.registry.DynamicRegistry;
|
import net.minestom.server.registry.RegistryKey;
|
||||||
import net.minestom.server.utils.NamespaceID;
|
|
||||||
import net.minestom.server.world.DimensionType;
|
import net.minestom.server.world.DimensionType;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prebuilt dimensions
|
* Prebuilt dimensions
|
||||||
*/
|
*/
|
||||||
public enum Dimension {
|
public enum Dimension {
|
||||||
OVERWORLD(
|
OVERWORLD(
|
||||||
NamespaceID.from("minenet:fullbright_overworld"),
|
Key.key("minenet:fullbright_overworld"),
|
||||||
DimensionType
|
DimensionType
|
||||||
.builder()
|
.builder()
|
||||||
.ambientLight(2.0f)
|
.ambientLight(1.0f)
|
||||||
.build()
|
.build()
|
||||||
),
|
),
|
||||||
|
|
||||||
NETHER(
|
NETHER(
|
||||||
NamespaceID.from("minenet:fullbright_nether"),
|
Key.key("minenet:fullbright_nether"),
|
||||||
DimensionType
|
DimensionType
|
||||||
.builder()
|
.builder()
|
||||||
.ambientLight(2.0f)
|
.ambientLight(1.0f)
|
||||||
.effects("minecraft:the_nether")
|
.effects("minecraft:the_nether")
|
||||||
.build()
|
.build()
|
||||||
),
|
),
|
||||||
|
|
||||||
THE_END(
|
THE_END(
|
||||||
NamespaceID.from("minenet:fullbright_end"),
|
Key.key("minenet:fullbright_end"),
|
||||||
DimensionType
|
DimensionType
|
||||||
.builder()
|
.builder()
|
||||||
.ambientLight(2.0f)
|
.ambientLight(1.0f)
|
||||||
.effects("minecraft:the_end")
|
.effects("minecraft:the_end")
|
||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
|
|
||||||
public final DimensionType DIMENSION;
|
public final DimensionType DIMENSION;
|
||||||
public final NamespaceID namespaceID;
|
public final Key namespaceID;
|
||||||
public final DynamicRegistry.Key<DimensionType> key;
|
public final RegistryKey<@NotNull DimensionType> key;
|
||||||
|
|
||||||
Dimension(NamespaceID namespaceID, DimensionType dimType) {
|
Dimension(Key namespaceID, DimensionType dimType) {
|
||||||
this.DIMENSION = dimType;
|
this.DIMENSION = dimType;
|
||||||
this.namespaceID = namespaceID;
|
this.namespaceID = namespaceID;
|
||||||
|
|
||||||
this.key = MinecraftServer.getDimensionTypeRegistry().register(namespaceID, this.DIMENSION);
|
this.key = MinecraftServer.getDimensionTypeRegistry().register(this.namespaceID, this.DIMENSION);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -7,14 +7,15 @@ import net.minestom.server.event.instance.AddEntityToInstanceEvent;
|
|||||||
import net.minestom.server.event.instance.RemoveEntityFromInstanceEvent;
|
import net.minestom.server.event.instance.RemoveEntityFromInstanceEvent;
|
||||||
import net.minestom.server.instance.Instance;
|
import net.minestom.server.instance.Instance;
|
||||||
import net.minestom.server.instance.InstanceContainer;
|
import net.minestom.server.instance.InstanceContainer;
|
||||||
import net.minestom.server.registry.DynamicRegistry;
|
import net.minestom.server.registry.RegistryKey;
|
||||||
import net.minestom.server.timer.TaskSchedule;
|
import net.minestom.server.timer.TaskSchedule;
|
||||||
import net.minestom.server.world.DimensionType;
|
import net.minestom.server.world.DimensionType;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class MineNetInstance extends InstanceContainer {
|
public class MineNetInstance extends InstanceContainer {
|
||||||
public MineNetInstance(DynamicRegistry.Key<DimensionType> type) {
|
public MineNetInstance(RegistryKey<@NotNull DimensionType> type) {
|
||||||
super(UUID.randomUUID(), type);
|
super(UUID.randomUUID(), type);
|
||||||
MinecraftServer.getInstanceManager().registerInstance(this);
|
MinecraftServer.getInstanceManager().registerInstance(this);
|
||||||
|
|
||||||
|
@@ -16,7 +16,7 @@ import net.minestom.server.event.item.ItemDropEvent;
|
|||||||
import net.minestom.server.event.player.PlayerBlockBreakEvent;
|
import net.minestom.server.event.player.PlayerBlockBreakEvent;
|
||||||
import net.minestom.server.event.player.PlayerBlockPlaceEvent;
|
import net.minestom.server.event.player.PlayerBlockPlaceEvent;
|
||||||
import net.minestom.server.event.player.PlayerMoveEvent;
|
import net.minestom.server.event.player.PlayerMoveEvent;
|
||||||
import net.minestom.server.registry.DynamicRegistry;
|
import net.minestom.server.registry.RegistryKey;
|
||||||
import net.minestom.server.timer.ExecutionType;
|
import net.minestom.server.timer.ExecutionType;
|
||||||
import net.minestom.server.timer.TaskSchedule;
|
import net.minestom.server.timer.TaskSchedule;
|
||||||
import net.minestom.server.world.DimensionType;
|
import net.minestom.server.world.DimensionType;
|
||||||
@@ -34,7 +34,7 @@ public abstract class Game extends MineNetInstance implements Spawnable {
|
|||||||
protected boolean isRunning = false;
|
protected boolean isRunning = false;
|
||||||
protected boolean isBeforeBeginning = true;
|
protected boolean isBeforeBeginning = true;
|
||||||
|
|
||||||
public Game(DynamicRegistry.Key<DimensionType> dimensionType) {
|
public Game(RegistryKey<@NotNull DimensionType> dimensionType) {
|
||||||
super(dimensionType);
|
super(dimensionType);
|
||||||
|
|
||||||
MinecraftServer.getInstanceManager().registerInstance(this);
|
MinecraftServer.getInstanceManager().registerInstance(this);
|
||||||
|
@@ -9,11 +9,12 @@ import eu.mhsl.minenet.minigames.score.Score;
|
|||||||
import net.kyori.adventure.audience.Audience;
|
import net.kyori.adventure.audience.Audience;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.format.NamedTextColor;
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
import net.minestom.server.registry.DynamicRegistry;
|
import net.minestom.server.registry.RegistryKey;
|
||||||
import net.minestom.server.timer.ExecutionType;
|
import net.minestom.server.timer.ExecutionType;
|
||||||
import net.minestom.server.timer.Task;
|
import net.minestom.server.timer.Task;
|
||||||
import net.minestom.server.timer.TaskSchedule;
|
import net.minestom.server.timer.TaskSchedule;
|
||||||
import net.minestom.server.world.DimensionType;
|
import net.minestom.server.world.DimensionType;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
@@ -26,7 +27,7 @@ public class StatelessGame extends Game {
|
|||||||
private int timeLimit = 0;
|
private int timeLimit = 0;
|
||||||
private int timePlayed = 0;
|
private int timePlayed = 0;
|
||||||
|
|
||||||
public StatelessGame(DynamicRegistry.Key<DimensionType> dimensionType, String gameName, Score score) {
|
public StatelessGame(RegistryKey<@NotNull DimensionType> dimensionType, String gameName, Score score) {
|
||||||
super(dimensionType);
|
super(dimensionType);
|
||||||
this.score = score;
|
this.score = score;
|
||||||
this.name = gameName;
|
this.name = gameName;
|
||||||
|
@@ -15,8 +15,7 @@ import net.minestom.server.entity.Player;
|
|||||||
import net.minestom.server.event.instance.AddEntityToInstanceEvent;
|
import net.minestom.server.event.instance.AddEntityToInstanceEvent;
|
||||||
import net.minestom.server.event.instance.RemoveEntityFromInstanceEvent;
|
import net.minestom.server.event.instance.RemoveEntityFromInstanceEvent;
|
||||||
import net.minestom.server.inventory.InventoryType;
|
import net.minestom.server.inventory.InventoryType;
|
||||||
import net.minestom.server.inventory.click.ClickType;
|
import net.minestom.server.inventory.click.Click;
|
||||||
import net.minestom.server.inventory.condition.InventoryConditionResult;
|
|
||||||
import net.minestom.server.item.ItemStack;
|
import net.minestom.server.item.ItemStack;
|
||||||
import net.minestom.server.item.Material;
|
import net.minestom.server.item.Material;
|
||||||
import net.minestom.server.sound.SoundEvent;
|
import net.minestom.server.sound.SoundEvent;
|
||||||
@@ -39,8 +38,8 @@ public class GameConfigurationInventory extends InteractableInventory {
|
|||||||
this.factory = factory;
|
this.factory = factory;
|
||||||
|
|
||||||
room.eventNode()
|
room.eventNode()
|
||||||
.addListener(AddEntityToInstanceEvent.class, addEntityToInstanceEvent -> MinecraftServer.getSchedulerManager().scheduleNextTick(this::updatePlayButton))
|
.addListener(AddEntityToInstanceEvent.class, _ -> MinecraftServer.getSchedulerManager().scheduleNextTick(this::updatePlayButton))
|
||||||
.addListener(RemoveEntityFromInstanceEvent.class, removeEntityFromInstanceEvent -> MinecraftServer.getSchedulerManager().scheduleNextTick(this::updatePlayButton));
|
.addListener(RemoveEntityFromInstanceEvent.class, _ -> MinecraftServer.getSchedulerManager().scheduleNextTick(this::updatePlayButton));
|
||||||
|
|
||||||
ConfigManager config = factory.configuration();
|
ConfigManager config = factory.configuration();
|
||||||
|
|
||||||
@@ -53,7 +52,7 @@ public class GameConfigurationInventory extends InteractableInventory {
|
|||||||
)
|
)
|
||||||
.build(),
|
.build(),
|
||||||
0,
|
0,
|
||||||
itemClick -> itemClick.getPlayer().closeInventory(),
|
itemClick -> itemClick.player().closeInventory(),
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -106,8 +105,7 @@ public class GameConfigurationInventory extends InteractableInventory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onClick(Player player, int slot, ClickType clickType, InventoryConditionResult inventoryConditionResult) {
|
protected void onClick(Player player, int slot, Click clickType) {
|
||||||
inventoryConditionResult.setCancel(true);
|
|
||||||
|
|
||||||
if(!this.map.containsKey(slot)) return;
|
if(!this.map.containsKey(slot)) return;
|
||||||
|
|
||||||
@@ -133,7 +131,7 @@ public class GameConfigurationInventory extends InteractableInventory {
|
|||||||
.lore(restrictionHandler.getWarnings(restrictionData).stream().map(translatedComponent -> translatedComponent.getAssembled(this.p)).collect(Collectors.toList()))
|
.lore(restrictionHandler.getWarnings(restrictionData).stream().map(translatedComponent -> translatedComponent.getAssembled(this.p)).collect(Collectors.toList()))
|
||||||
.build(),
|
.build(),
|
||||||
8,
|
8,
|
||||||
itemClick -> Game.initialize(this.factory, this.map.values().stream().toList(), itemClick.getPlayer()),
|
itemClick -> Game.initialize(this.factory, this.map.values().stream().toList(), itemClick.player()),
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -155,7 +153,7 @@ public class GameConfigurationInventory extends InteractableInventory {
|
|||||||
this.updatePlayButton();
|
this.updatePlayButton();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
itemClick.getPlayer().playSound(Sound.sound(SoundEvent.ENTITY_SILVERFISH_DEATH, Sound.Source.AMBIENT, 1f, 1f));
|
itemClick.player().playSound(Sound.sound(SoundEvent.ENTITY_SILVERFISH_DEATH, Sound.Source.AMBIENT, 1f, 1f));
|
||||||
},
|
},
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
@@ -35,7 +35,6 @@ class Deathcube extends StatelessGame {
|
|||||||
.add(CombatFeatures.VANILLA_KNOCKBACK)
|
.add(CombatFeatures.VANILLA_KNOCKBACK)
|
||||||
.build().createNode()
|
.build().createNode()
|
||||||
);
|
);
|
||||||
System.out.println(radius);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -8,6 +8,7 @@ import io.github.togar2.pvp.events.EntityKnockbackEvent;
|
|||||||
import io.github.togar2.pvp.events.FinalAttackEvent;
|
import io.github.togar2.pvp.events.FinalAttackEvent;
|
||||||
import io.github.togar2.pvp.events.PrepareAttackEvent;
|
import io.github.togar2.pvp.events.PrepareAttackEvent;
|
||||||
import io.github.togar2.pvp.feature.CombatFeatures;
|
import io.github.togar2.pvp.feature.CombatFeatures;
|
||||||
|
import io.github.togar2.pvp.feature.knockback.KnockbackSettings;
|
||||||
import net.minestom.server.coordinate.Pos;
|
import net.minestom.server.coordinate.Pos;
|
||||||
import net.minestom.server.entity.Player;
|
import net.minestom.server.entity.Player;
|
||||||
import net.minestom.server.event.instance.InstanceTickEvent;
|
import net.minestom.server.event.instance.InstanceTickEvent;
|
||||||
@@ -50,7 +51,7 @@ class HighGround extends StatelessGame {
|
|||||||
|
|
||||||
this.eventNode().addListener(
|
this.eventNode().addListener(
|
||||||
EntityKnockbackEvent.class,
|
EntityKnockbackEvent.class,
|
||||||
entityKnockbackEvent -> entityKnockbackEvent.setStrength(1.1f)
|
entityKnockbackEvent -> entityKnockbackEvent.setSettings(new KnockbackSettings(1.1, 1.1, 2, 0, 0))
|
||||||
);
|
);
|
||||||
|
|
||||||
this.eventNode().addListener(InstanceTickEvent.class, instanceTickEvent -> {
|
this.eventNode().addListener(InstanceTickEvent.class, instanceTickEvent -> {
|
||||||
|
@@ -19,7 +19,7 @@ public class HubInventory extends InteractableInventory {
|
|||||||
.lore(TranslatedComponent.assemble("hub#create_description", p))
|
.lore(TranslatedComponent.assemble("hub#create_description", p))
|
||||||
.build(),
|
.build(),
|
||||||
12,
|
12,
|
||||||
itemClick -> Room.createRoom(itemClick.getPlayer()),
|
itemClick -> Room.createRoom(itemClick.player()),
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ public class HubInventory extends InteractableInventory {
|
|||||||
.lore(TranslatedComponent.assemble("hub#join_description", p))
|
.lore(TranslatedComponent.assemble("hub#join_description", p))
|
||||||
.build(),
|
.build(),
|
||||||
14,
|
14,
|
||||||
itemClick -> itemClick.getPlayer().openInventory(new JoinInventory(itemClick.getPlayer()))
|
itemClick -> itemClick.player().openInventory(new JoinInventory(itemClick.player()))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -11,8 +11,7 @@ import net.minestom.server.MinecraftServer;
|
|||||||
import net.minestom.server.entity.Player;
|
import net.minestom.server.entity.Player;
|
||||||
import net.minestom.server.event.player.PlayerPacketEvent;
|
import net.minestom.server.event.player.PlayerPacketEvent;
|
||||||
import net.minestom.server.inventory.InventoryType;
|
import net.minestom.server.inventory.InventoryType;
|
||||||
import net.minestom.server.inventory.click.ClickType;
|
import net.minestom.server.inventory.click.Click;
|
||||||
import net.minestom.server.inventory.condition.InventoryConditionResult;
|
|
||||||
import net.minestom.server.item.ItemStack;
|
import net.minestom.server.item.ItemStack;
|
||||||
import net.minestom.server.item.Material;
|
import net.minestom.server.item.Material;
|
||||||
import net.minestom.server.network.packet.client.play.ClientNameItemPacket;
|
import net.minestom.server.network.packet.client.play.ClientNameItemPacket;
|
||||||
@@ -32,7 +31,7 @@ public class JoinInventory extends InteractableInventory {
|
|||||||
.customName(Component.text(this.prefix))
|
.customName(Component.text(this.prefix))
|
||||||
.build(),
|
.build(),
|
||||||
0,
|
0,
|
||||||
itemClick -> {
|
_ -> {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -45,9 +44,8 @@ public class JoinInventory extends InteractableInventory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onClick(Player player, int slot, ClickType clickType, InventoryConditionResult inventoryConditionResult) {
|
protected void onClick(Player player, int slot, Click clickType) {
|
||||||
if(slot != 2) return;
|
if(slot != 2) return;
|
||||||
inventoryConditionResult.setCancel(true);
|
|
||||||
player.closeInventory();
|
player.closeInventory();
|
||||||
|
|
||||||
this.typedText = this.formatInput(this.typedText);
|
this.typedText = this.formatInput(this.typedText);
|
||||||
|
@@ -33,7 +33,7 @@ public class MinigameSelectInventory extends InteractableInventory {
|
|||||||
.lore(type.getDescription().addWrap().getWrappedAssembled(p))
|
.lore(type.getDescription().addWrap().getWrappedAssembled(p))
|
||||||
.build(),
|
.build(),
|
||||||
itemAlignment.next().get(),
|
itemAlignment.next().get(),
|
||||||
itemClick -> this.drawGames(type)
|
_ -> this.drawGames(type)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,7 +62,8 @@ public class MinigameSelectInventory extends InteractableInventory {
|
|||||||
.lore(gameFactory.description().addWrap().getWrappedAssembled(this.p))
|
.lore(gameFactory.description().addWrap().getWrappedAssembled(this.p))
|
||||||
.build(),
|
.build(),
|
||||||
offset + itemAlignment.next().get(),
|
offset + itemAlignment.next().get(),
|
||||||
itemClick -> itemClick.getPlayer().openInventory(new GameConfigurationInventory(this.room, itemClick.getPlayer(), gameFactory))
|
itemClick -> itemClick.player().openInventory(new GameConfigurationInventory(this.room, itemClick.player(), gameFactory)),
|
||||||
|
true
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -24,8 +24,8 @@ public class Tournament {
|
|||||||
for(Player player : players) {
|
for(Player player : players) {
|
||||||
int points = (game.getScores().size() - count) + this.boost(count, game.getScores().size());
|
int points = (game.getScores().size() - count) + this.boost(count, game.getScores().size());
|
||||||
|
|
||||||
data.computeIfPresent(player, (existingPlayer, existingPoints) -> existingPoints + points);
|
data.computeIfPresent(player, (_, existingPoints) -> existingPoints + points);
|
||||||
data.computeIfAbsent(player, newPlayer -> points);
|
data.computeIfAbsent(player, _ -> points);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -44,11 +44,11 @@ public class Tournament {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return new Rewards(
|
return new Rewards(
|
||||||
this.memorialConfiguration.memorialMaterial().namespace().value(),
|
this.memorialConfiguration.memorialMaterial().key().value(),
|
||||||
this.memorialConfiguration.memorialTitle(),
|
this.memorialConfiguration.memorialTitle(),
|
||||||
this.memorialConfiguration.memorialLore(),
|
this.memorialConfiguration.memorialLore(),
|
||||||
this.getGameScores().keySet().stream().map(Player::getUuid).toList(),
|
this.getGameScores().keySet().stream().map(Player::getUuid).toList(),
|
||||||
this.rewardConfiguration.item().namespace().value(),
|
this.rewardConfiguration.item().key().value(),
|
||||||
itemCount
|
itemCount
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@@ -2,38 +2,64 @@ package eu.mhsl.minenet.minigames.shared.inventory;
|
|||||||
|
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.minestom.server.entity.Player;
|
import net.minestom.server.entity.Player;
|
||||||
|
import net.minestom.server.event.inventory.InventoryPreClickEvent;
|
||||||
import net.minestom.server.inventory.Inventory;
|
import net.minestom.server.inventory.Inventory;
|
||||||
import net.minestom.server.inventory.InventoryType;
|
import net.minestom.server.inventory.InventoryType;
|
||||||
import net.minestom.server.inventory.click.ClickType;
|
import net.minestom.server.inventory.click.Click;
|
||||||
import net.minestom.server.inventory.condition.InventoryConditionResult;
|
|
||||||
import net.minestom.server.item.ItemStack;
|
import net.minestom.server.item.ItemStack;
|
||||||
import net.minestom.server.item.Material;
|
import net.minestom.server.item.Material;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
public class InteractableInventory extends Inventory {
|
public class InteractableInventory extends Inventory {
|
||||||
|
private final Map<Integer, ClickableItem> clickableItems = new HashMap<>();
|
||||||
|
|
||||||
|
public record ItemClick(Player player, InteractableInventory inventory, int clickedSlot, ItemStack item, Click clickType) { }
|
||||||
|
public record ClickableItem(ItemStack item, int slot, Consumer<ItemClick> callback, boolean closeAfterClick) { }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines an Inventory with direct callbacks for ItemSlots
|
* Defines an Inventory with direct callbacks for ItemSlots
|
||||||
*/
|
*/
|
||||||
protected InteractableInventory(@NotNull InventoryType inventoryType, @NotNull Component title) {
|
protected InteractableInventory(@NotNull InventoryType inventoryType, @NotNull Component title) {
|
||||||
super(inventoryType, title);
|
super(inventoryType, title);
|
||||||
|
|
||||||
this.addInventoryCondition(this::onClick);
|
this.eventNode().addListener(
|
||||||
|
InventoryPreClickEvent.class,
|
||||||
|
inventoryPreClickEvent -> this.onClick(
|
||||||
|
inventoryPreClickEvent.getPlayer(),
|
||||||
|
inventoryPreClickEvent.getSlot(),
|
||||||
|
inventoryPreClickEvent.getClick()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
this.eventNode().addListener(InventoryPreClickEvent.class, inventoryPreClickEvent -> {
|
||||||
|
@Nullable ClickableItem selectedItem = this.clickableItems.values().stream()
|
||||||
|
.filter(clickableItem -> clickableItem.slot() == inventoryPreClickEvent.getSlot())
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null);
|
||||||
|
if(selectedItem == null) {
|
||||||
|
inventoryPreClickEvent.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(selectedItem.closeAfterClick()) inventoryPreClickEvent.getPlayer().closeInventory();
|
||||||
|
selectedItem.callback().accept(
|
||||||
|
new ItemClick(inventoryPreClickEvent.getPlayer(), this, inventoryPreClickEvent.getSlot(), selectedItem.item(), inventoryPreClickEvent.getClick())
|
||||||
|
);
|
||||||
|
inventoryPreClickEvent.setCancelled(true);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set Item with Callback
|
* Set Item with Callback
|
||||||
*/
|
*/
|
||||||
protected void setClickableItem(ItemStack item, int slot, Consumer<ItemClick> callback, boolean closeAfter) {
|
protected void setClickableItem(ItemStack item, int slot, Consumer<ItemClick> callback, boolean closeAfter) {
|
||||||
this.setItemStack(slot, item);
|
ClickableItem clickableItem = new ClickableItem(item, slot, callback, closeAfter);
|
||||||
this.addInventoryCondition((player, clickedSlot, clickType, inventoryConditionResult) -> {
|
this.setItemStack(clickableItem.slot(), clickableItem.item());
|
||||||
if(clickedSlot == slot) {
|
this.clickableItems.put(clickableItem.slot(), clickableItem);
|
||||||
if(closeAfter) player.closeInventory();
|
|
||||||
callback.accept(new ItemClick(player, this, clickedSlot, item, clickType));
|
|
||||||
}
|
|
||||||
inventoryConditionResult.setCancel(true);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setClickableItem(ItemStack item, int slot, Consumer<ItemClick> callback) {
|
protected void setClickableItem(ItemStack item, int slot, Consumer<ItemClick> callback) {
|
||||||
@@ -47,7 +73,7 @@ public class InteractableInventory extends Inventory {
|
|||||||
this.setClickableItem(
|
this.setClickableItem(
|
||||||
item,
|
item,
|
||||||
slot,
|
slot,
|
||||||
itemClick -> {
|
_ -> {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -62,7 +88,7 @@ public class InteractableInventory extends Inventory {
|
|||||||
/**
|
/**
|
||||||
* You may want to Override this method to get more generic click events
|
* You may want to Override this method to get more generic click events
|
||||||
*/
|
*/
|
||||||
protected void onClick(Player player, int slot, ClickType clickType, InventoryConditionResult inventoryConditionResult) {
|
protected void onClick(Player player, int slot, Click clickType) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,45 +0,0 @@
|
|||||||
package eu.mhsl.minenet.minigames.shared.inventory;
|
|
||||||
|
|
||||||
import net.minestom.server.entity.Player;
|
|
||||||
import net.minestom.server.inventory.Inventory;
|
|
||||||
import net.minestom.server.inventory.click.ClickType;
|
|
||||||
import net.minestom.server.item.ItemStack;
|
|
||||||
|
|
||||||
public class ItemClick {
|
|
||||||
private final Player player;
|
|
||||||
private final InteractableInventory inventory;
|
|
||||||
private final int clickedSlot;
|
|
||||||
private final ItemStack item;
|
|
||||||
private final ClickType clickType;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Describes a click on an Item from an IntractableInventory
|
|
||||||
*/
|
|
||||||
public ItemClick(Player player, InteractableInventory inventory, int clickedSlot, ItemStack item, ClickType clickType) {
|
|
||||||
this.player = player;
|
|
||||||
this.inventory = inventory;
|
|
||||||
this.clickedSlot = clickedSlot;
|
|
||||||
this.item = item;
|
|
||||||
this.clickType = clickType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Player getPlayer() {
|
|
||||||
return this.player;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Inventory getInventory() {
|
|
||||||
return this.inventory;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getClickedSlot() {
|
|
||||||
return this.clickedSlot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemStack getItem() {
|
|
||||||
return this.item;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClickType getClickType() {
|
|
||||||
return this.clickType;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,12 +1,12 @@
|
|||||||
package eu.mhsl.minenet.minigames.util;
|
package eu.mhsl.minenet.minigames.util;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
|
|
||||||
import net.minestom.server.instance.InstanceContainer;
|
import net.minestom.server.instance.InstanceContainer;
|
||||||
import net.minestom.server.instance.batch.Batch;
|
import net.minestom.server.instance.batch.Batch;
|
||||||
import net.minestom.server.instance.batch.ChunkBatch;
|
import net.minestom.server.instance.batch.ChunkBatch;
|
||||||
import net.minestom.server.utils.chunk.ChunkUtils;
|
import net.minestom.server.utils.chunk.ChunkUtils;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
public class BatchUtil {
|
public class BatchUtil {
|
||||||
@@ -16,10 +16,13 @@ public class BatchUtil {
|
|||||||
field.setAccessible(true);
|
field.setAccessible(true);
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
Long2ObjectMap<ChunkBatch> chunkBatchesMap = (Long2ObjectMap<ChunkBatch>) field.get(batch);
|
Map<Long, ChunkBatch> chunkBatchesMap = (Map<Long, ChunkBatch>) field.get(batch);
|
||||||
|
|
||||||
return chunkBatchesMap.keySet().toLongArray();
|
long[] out = new long[chunkBatchesMap.size()];
|
||||||
} catch(NoSuchFieldException | IllegalAccessException e) {
|
int i = 0;
|
||||||
|
for (Long k : chunkBatchesMap.keySet()) out[i++] = k;
|
||||||
|
return out;
|
||||||
|
} catch (NoSuchFieldException | IllegalAccessException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -36,15 +39,9 @@ public class BatchUtil {
|
|||||||
long[] affectedChunks = BatchUtil.getAffectedChunks(batch);
|
long[] affectedChunks = BatchUtil.getAffectedChunks(batch);
|
||||||
CompletableFuture<Void> loadChunksTask = ChunkUtils.optionalLoadAll(instance, affectedChunks, null);
|
CompletableFuture<Void> loadChunksTask = ChunkUtils.optionalLoadAll(instance, affectedChunks, null);
|
||||||
|
|
||||||
Runnable completerTask = () -> {
|
Runnable completerTask = () -> future.complete(null);
|
||||||
System.out.println("COMPLETE");
|
|
||||||
future.complete(null);
|
|
||||||
};
|
|
||||||
|
|
||||||
loadChunksTask.thenRun(() -> {
|
loadChunksTask.thenRun(() -> batch.apply(instance, completerTask));
|
||||||
System.out.println("BEGIN");
|
|
||||||
batch.apply(instance, completerTask);
|
|
||||||
});
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
future.get();
|
future.get();
|
||||||
|
@@ -19,7 +19,6 @@ public class WeatherUtils {
|
|||||||
MinecraftServer.getSchedulerManager().submitTask(() -> {
|
MinecraftServer.getSchedulerManager().submitTask(() -> {
|
||||||
this.intensity += 0.1f;
|
this.intensity += 0.1f;
|
||||||
players.forEach(p -> p.sendPacket(new ChangeGameStatePacket(ChangeGameStatePacket.Reason.RAIN_LEVEL_CHANGE, this.intensity)));
|
players.forEach(p -> p.sendPacket(new ChangeGameStatePacket(ChangeGameStatePacket.Reason.RAIN_LEVEL_CHANGE, this.intensity)));
|
||||||
System.out.println(this.intensity);
|
|
||||||
if(this.intensity < 1) {
|
if(this.intensity < 1) {
|
||||||
return TaskSchedule.millis(500);
|
return TaskSchedule.millis(500);
|
||||||
} else {
|
} else {
|
||||||
|
@@ -38,8 +38,6 @@ public class CircularPlateGenerator extends HeightTerrainGenerator {
|
|||||||
@Override
|
@Override
|
||||||
public void generate(@NotNull GenerationUnit unit) {
|
public void generate(@NotNull GenerationUnit unit) {
|
||||||
this.execution.singleRun(() -> unit.fork(setter -> {
|
this.execution.singleRun(() -> unit.fork(setter -> {
|
||||||
System.out.println(new Pos(-(this.radius + this.centerX), unit.absoluteStart().y(), -(this.radius + this.centerZ)));
|
|
||||||
System.out.println(new Pos(this.radius + this.centerX, this.height, this.radius + this.centerZ));
|
|
||||||
GeneratorUtils.foreachXZ(
|
GeneratorUtils.foreachXZ(
|
||||||
new Pos(-(this.radius + this.centerX), unit.absoluteStart().y(), -(this.radius + this.centerZ)),
|
new Pos(-(this.radius + this.centerX), unit.absoluteStart().y(), -(this.radius + this.centerZ)),
|
||||||
new Pos(this.radius + this.centerX, this.height, this.radius + this.centerZ),
|
new Pos(this.radius + this.centerX, this.height, this.radius + this.centerZ),
|
||||||
|
@@ -46,7 +46,6 @@ public class HeightTerrainGenerator extends BaseGenerator {
|
|||||||
double heightNoise = this.base.getNoise(bottomPoint.x(), bottomPoint.z());
|
double heightNoise = this.base.getNoise(bottomPoint.x(), bottomPoint.z());
|
||||||
double noiseModifier = heightNoise * this.heightNoiseMultiplier.apply(bottomPoint);
|
double noiseModifier = heightNoise * this.heightNoiseMultiplier.apply(bottomPoint);
|
||||||
double heightModifier = NumberUtil.clamp(this.calculateHeight.apply(bottomPoint) + noiseModifier, 1d, unit.size().y());
|
double heightModifier = NumberUtil.clamp(this.calculateHeight.apply(bottomPoint) + noiseModifier, 1d, unit.size().y());
|
||||||
if(heightModifier < 1) System.out.println("HEIGHT MODIFIER ILLEGAL");
|
|
||||||
|
|
||||||
synchronized(this.batches) {
|
synchronized(this.batches) {
|
||||||
double batchNoise = this.batches.getNoise(bottomPoint.x(), bottomPoint.z());
|
double batchNoise = this.batches.getNoise(bottomPoint.x(), bottomPoint.z());
|
||||||
@@ -69,8 +68,6 @@ public class HeightTerrainGenerator extends BaseGenerator {
|
|||||||
Point absoluteHeight = bottomPoint.add(0, heightModifier, 0);
|
Point absoluteHeight = bottomPoint.add(0, heightModifier, 0);
|
||||||
int seaLevel = this.calculateSeaLevel.apply(bottomPoint);
|
int seaLevel = this.calculateSeaLevel.apply(bottomPoint);
|
||||||
if(absoluteHeight.y() < seaLevel) {
|
if(absoluteHeight.y() < seaLevel) {
|
||||||
// System.out.println("HM:" + absoluteHeight.y() + " SL:" + seaLevel);
|
|
||||||
// System.out.println("Filling from " + bottomPoint.y() + " to " + absoluteHeight.withY(seaLevel).y());
|
|
||||||
unit.modifier().fill(bottomPoint.withY(v -> v + heightModifier), absoluteHeight.add(1, 0, 1).withY(seaLevel), Block.WATER);
|
unit.modifier().fill(bottomPoint.withY(v -> v + heightModifier), absoluteHeight.add(1, 0, 1).withY(seaLevel), Block.WATER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user