Added void-world for selection

Added loading indicators
Added speed modifiers
Code cleanup
This commit is contained in:
2023-10-22 22:22:39 +02:00
parent ebf9f36635
commit bb363dc06f
25 changed files with 399 additions and 253 deletions

View File

@@ -1,70 +1,66 @@
package eu.mhsl.craftattack.worldmuseum.util;
import eu.mhsl.craftattack.worldmuseum.worlds.World;
import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextDecoration;
import net.kyori.adventure.title.Title;
import net.minestom.server.MinecraftServer;
import net.minestom.server.entity.Player;
import net.minestom.server.inventory.Inventory;
import net.minestom.server.inventory.InventoryType;
import net.minestom.server.item.Enchantment;
import net.minestom.server.item.ItemHideFlag;
import net.minestom.server.item.ItemStack;
import net.minestom.server.event.player.PlayerMoveEvent;
import net.minestom.server.network.player.PlayerConnection;
import net.minestom.server.potion.Potion;
import net.minestom.server.potion.PotionEffect;
import net.minestom.server.timer.ExecutionType;
import net.minestom.server.timer.TaskSchedule;
import net.minestom.server.utils.MathUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.time.Duration;
import java.util.UUID;
public class MuseumPlayer extends Player {
private boolean allowMovement = true;
private long lastCompassUsage = 0;
private boolean allowCompassUsage = true;
private boolean isLoading = false;
public MuseumPlayer(@NotNull UUID uuid, @NotNull String username, @NotNull PlayerConnection playerConnection) {
super(uuid, username, playerConnection);
}
public void setSyncCooldown(@Nullable Duration cooldown) {
this.setCustomSynchronizationCooldown(cooldown);
eventNode().addListener(PlayerMoveEvent.class, playerMoveEvent -> playerMoveEvent.setCancelled(isLoading));
}
public boolean isAllowMovement() {
return allowMovement;
}
public void update_lastCompassUsage() {
lastCompassUsage = System.currentTimeMillis();
}
public boolean isAllowCompassUsage() {
long UsageDifference = System.currentTimeMillis() - lastCompassUsage;
long difference = 15000; //in Milisec
return UsageDifference >= difference && allowCompassUsage;
}
public void setAllowMovement(boolean allowMovement) {
this.allowMovement = allowMovement;
}
public void setAllowCompassUsage(boolean allowCompassUsage) {
this.allowCompassUsage = allowCompassUsage;
}
public long getLastCompassUsage() {
return lastCompassUsage;
}
public Inventory getCompassInventory() {
Inventory inventory = new Inventory(InventoryType.CHEST_1_ROW, Component.text("World-changer"));
for (World w : WorldManager.getInstance().getWorlds()) {
if (!w.equals(this.getInstance())) {
inventory.addItemStack(w.getItem());
continue;
public void startLoading() {
isLoading = true;
MinecraftServer.getSchedulerManager().submitTask(() -> {
sendMessage("" + System.currentTimeMillis());
addEffect(new Potion(PotionEffect.BLINDNESS, (byte) 3, 600));
showTitle(Title.title(
Component.text("Loading").decorate(TextDecoration.BOLD).color(NamedTextColor.GOLD),
Component.text("...").color(NamedTextColor.YELLOW),
Title.Times.times(Duration.ZERO, Duration.ofSeconds(30), Duration.ZERO)
));
if(!isLoading) {
clearEffects();
clearTitle();
return TaskSchedule.stop();
}
ItemStack itemStack = ItemStack.builder(w.getItem().material())
.displayName(w.getItem().getDisplayName())
.meta(metaBuilder ->
metaBuilder
.enchantment(Enchantment.MENDING, (short) 10)
.hideFlag(ItemHideFlag.HIDE_ENCHANTS))
.build();
inventory.addItemStack(itemStack);
}
return inventory;
return TaskSchedule.millis(100);
}, ExecutionType.ASYNC);
}
public void stopLoading() {
isLoading = false;
}
public void updateFlyingSpeed(float speed) {
speed = MathUtils.clamp(getFlyingSpeed() + speed, 0.01f, 0.2f);
setFlyingSpeed(speed);
sendActionBar(
Component
.text("Geschwindigkeit: ")
.color(NamedTextColor.GOLD)
.append(Component.text(Math.round(speed * 1000) + "%").color(NamedTextColor.WHITE))
);
}
}