Added void-world for selection
Added loading indicators Added speed modifiers Code cleanup
This commit is contained in:
@@ -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))
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user