adding Feedback when player uses compass to often
This commit is contained in:
parent
65e3195128
commit
f02379515d
@ -1,12 +1,14 @@
|
|||||||
package eu.mhsl.craftattack.worldmuseum;
|
package eu.mhsl.craftattack.worldmuseum;
|
||||||
|
|
||||||
import eu.mhsl.craftattack.worldmuseum.commands.GamemodeCommand;
|
import eu.mhsl.craftattack.worldmuseum.commands.GamemodeCommand;
|
||||||
import eu.mhsl.craftattack.worldmuseum.commands.GcCommand;
|
import eu.mhsl.craftattack.worldmuseum.temp.GcCommand;
|
||||||
import eu.mhsl.craftattack.worldmuseum.commands.SpawnCommand;
|
import eu.mhsl.craftattack.worldmuseum.commands.SpawnCommand;
|
||||||
import eu.mhsl.craftattack.worldmuseum.commands.TeleportCommand;
|
import eu.mhsl.craftattack.worldmuseum.commands.TeleportCommand;
|
||||||
import eu.mhsl.craftattack.worldmuseum.listener.*;
|
import eu.mhsl.craftattack.worldmuseum.listener.*;
|
||||||
import eu.mhsl.craftattack.worldmuseum.skins.SkinCache;
|
import eu.mhsl.craftattack.worldmuseum.skins.SkinCache;
|
||||||
|
import eu.mhsl.craftattack.worldmuseum.temp.TablistUpdateTask;
|
||||||
import eu.mhsl.craftattack.worldmuseum.util.Config;
|
import eu.mhsl.craftattack.worldmuseum.util.Config;
|
||||||
|
import eu.mhsl.craftattack.worldmuseum.util.NewPlayer;
|
||||||
import eu.mhsl.craftattack.worldmuseum.util.SignHandler;
|
import eu.mhsl.craftattack.worldmuseum.util.SignHandler;
|
||||||
import eu.mhsl.craftattack.worldmuseum.worlds.World;
|
import eu.mhsl.craftattack.worldmuseum.worlds.World;
|
||||||
import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager;
|
import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager;
|
||||||
@ -28,8 +30,6 @@ public class Main {
|
|||||||
// Initialization
|
// Initialization
|
||||||
System.setProperty("minestom.chunk-view-distance", "8");
|
System.setProperty("minestom.chunk-view-distance", "8");
|
||||||
MinecraftServer minecraftServer = MinecraftServer.init();
|
MinecraftServer minecraftServer = MinecraftServer.init();
|
||||||
// MinecraftServer.setChunkViewDistance(8);
|
|
||||||
|
|
||||||
|
|
||||||
//temp
|
//temp
|
||||||
MinecraftServer.getSchedulerManager().scheduleTask(new TablistUpdateTask(), TaskSchedule.tick(20), TaskSchedule.tick(20));
|
MinecraftServer.getSchedulerManager().scheduleTask(new TablistUpdateTask(), TaskSchedule.tick(20), TaskSchedule.tick(20));
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
package eu.mhsl.craftattack.worldmuseum.listener;
|
package eu.mhsl.craftattack.worldmuseum.listener;
|
||||||
|
|
||||||
import eu.mhsl.craftattack.worldmuseum.NewPlayer;
|
import eu.mhsl.craftattack.worldmuseum.util.NewPlayer;
|
||||||
import eu.mhsl.craftattack.worldmuseum.util.ChangeWorld;
|
import eu.mhsl.craftattack.worldmuseum.util.ChangeWorld;
|
||||||
import eu.mhsl.craftattack.worldmuseum.worlds.World;
|
import eu.mhsl.craftattack.worldmuseum.worlds.World;
|
||||||
import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager;
|
import eu.mhsl.craftattack.worldmuseum.worlds.WorldManager;
|
||||||
import net.minestom.server.entity.Player;
|
|
||||||
import net.minestom.server.event.inventory.InventoryPreClickEvent;
|
import net.minestom.server.event.inventory.InventoryPreClickEvent;
|
||||||
import net.minestom.server.thread.MinestomThread;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
@ -24,12 +22,9 @@ public class InventoryClickListener implements Consumer<InventoryPreClickEvent>
|
|||||||
p.teleport(w.getSpawn());
|
p.teleport(w.getSpawn());
|
||||||
} else {
|
} else {
|
||||||
p.closeInventory();
|
p.closeInventory();
|
||||||
Thread thread = new ChangeWorld(p, w);
|
ChangeWorld.changeWorld(p, w);
|
||||||
thread.run();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
inventoryPreClickEvent.setCancelled(true);
|
inventoryPreClickEvent.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package eu.mhsl.craftattack.worldmuseum.listener;
|
package eu.mhsl.craftattack.worldmuseum.listener;
|
||||||
|
|
||||||
import eu.mhsl.craftattack.worldmuseum.NewPlayer;
|
import eu.mhsl.craftattack.worldmuseum.util.NewPlayer;
|
||||||
import eu.mhsl.craftattack.worldmuseum.items.CompassManager;
|
import eu.mhsl.craftattack.worldmuseum.items.CompassManager;
|
||||||
import net.minestom.server.entity.Player;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.minestom.server.event.player.PlayerUseItemEvent;
|
import net.minestom.server.event.player.PlayerUseItemEvent;
|
||||||
import net.minestom.server.item.ItemStack;
|
import net.minestom.server.item.ItemStack;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
@ -16,7 +16,11 @@ public class ItemUseListener implements Consumer<PlayerUseItemEvent> {
|
|||||||
CompassManager compassManager = CompassManager.getInstance();
|
CompassManager compassManager = CompassManager.getInstance();
|
||||||
|
|
||||||
if (!usedItem.equals(compassManager.getCompass())) return;
|
if (!usedItem.equals(compassManager.getCompass())) return;
|
||||||
if (!p.isAllowCompassUsage()) return;
|
if (!p.isAllowCompassUsage()) {
|
||||||
|
long lastUsed = (System.currentTimeMillis() - p.getLastCompassUsage()) / 1000;
|
||||||
|
p.sendActionBar(Component.text("Du kannst den Kompass erst in " + (10 - lastUsed) + " Sekunden wieder benutzen."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
p.update_lastCompassUsage();
|
p.update_lastCompassUsage();
|
||||||
p.openInventory(compassManager.getInventory());
|
p.openInventory(compassManager.getInventory());
|
||||||
playerUseItemEvent.setCancelled(true);
|
playerUseItemEvent.setCancelled(true);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package eu.mhsl.craftattack.worldmuseum.listener;
|
package eu.mhsl.craftattack.worldmuseum.listener;
|
||||||
|
|
||||||
import eu.mhsl.craftattack.worldmuseum.NewPlayer;
|
import eu.mhsl.craftattack.worldmuseum.util.NewPlayer;
|
||||||
import net.minestom.server.event.player.PlayerMoveEvent;
|
import net.minestom.server.event.player.PlayerMoveEvent;
|
||||||
|
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package eu.mhsl.craftattack.worldmuseum.commands;
|
package eu.mhsl.craftattack.worldmuseum.temp;
|
||||||
|
|
||||||
import net.minestom.server.command.builder.Command;
|
import net.minestom.server.command.builder.Command;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package eu.mhsl.craftattack.worldmuseum;
|
package eu.mhsl.craftattack.worldmuseum.temp;
|
||||||
|
|
||||||
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;
|
@ -1,15 +1,12 @@
|
|||||||
package eu.mhsl.craftattack.worldmuseum.util;
|
package eu.mhsl.craftattack.worldmuseum.util;
|
||||||
|
|
||||||
import eu.mhsl.craftattack.worldmuseum.NewPlayer;
|
|
||||||
import eu.mhsl.craftattack.worldmuseum.worlds.World;
|
import eu.mhsl.craftattack.worldmuseum.worlds.World;
|
||||||
import net.minestom.server.potion.Potion;
|
import net.minestom.server.potion.Potion;
|
||||||
import net.minestom.server.potion.PotionEffect;
|
import net.minestom.server.potion.PotionEffect;
|
||||||
import net.minestom.server.thread.MinestomThread;
|
public class ChangeWorld {
|
||||||
|
public static void changeWorld(NewPlayer player, World targetWorld) {
|
||||||
public class ChangeWorld extends MinestomThread {
|
|
||||||
public ChangeWorld(NewPlayer player, World targetWorld) {
|
|
||||||
super("load_world_for_player");
|
|
||||||
player.setAllowMovement(false);
|
player.setAllowMovement(false);
|
||||||
|
player.setAllowCompassUsage(false);
|
||||||
player.addEffect(new Potion(PotionEffect.BLINDNESS, (byte) 0, 1000000));
|
player.addEffect(new Potion(PotionEffect.BLINDNESS, (byte) 0, 1000000));
|
||||||
|
|
||||||
player.setRespawnPoint(targetWorld.getSpawn());
|
player.setRespawnPoint(targetWorld.getSpawn());
|
||||||
@ -17,6 +14,7 @@ public class ChangeWorld extends MinestomThread {
|
|||||||
player.setAllowMovement(true);
|
player.setAllowMovement(true);
|
||||||
player.clearEffects();
|
player.clearEffects();
|
||||||
player.update_lastCompassUsage();
|
player.update_lastCompassUsage();
|
||||||
|
player.setAllowCompassUsage(true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,24 +0,0 @@
|
|||||||
package eu.mhsl.craftattack.worldmuseum.util;
|
|
||||||
|
|
||||||
import eu.mhsl.craftattack.worldmuseum.worlds.World;
|
|
||||||
import net.minestom.server.MinecraftServer;
|
|
||||||
import net.minestom.server.coordinate.Point;
|
|
||||||
import net.minestom.server.instance.Chunk;
|
|
||||||
import net.minestom.server.utils.chunk.ChunkUtils;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
public class ChunkLoadUtil {
|
|
||||||
|
|
||||||
public static boolean areNearbyChunksLoaded(Point point, World world) {
|
|
||||||
ArrayList<Chunk> chunks = new ArrayList<>();
|
|
||||||
|
|
||||||
ChunkUtils.forChunksInRange(point, MinecraftServer.getChunkViewDistance(), (x , z) -> {
|
|
||||||
chunks.add(world.getChunk(x, z));
|
|
||||||
});
|
|
||||||
// Stream.of(new Conditional(point, world, () -> {world.getChunkAt(point).sendChunk();}))
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,8 +1,5 @@
|
|||||||
package eu.mhsl.craftattack.worldmuseum;
|
package eu.mhsl.craftattack.worldmuseum.util;
|
||||||
|
|
||||||
import eu.mhsl.craftattack.worldmuseum.worlds.World;
|
|
||||||
import net.minestom.server.coordinate.Point;
|
|
||||||
import net.minestom.server.coordinate.Pos;
|
|
||||||
import net.minestom.server.entity.Player;
|
import net.minestom.server.entity.Player;
|
||||||
import net.minestom.server.network.player.PlayerConnection;
|
import net.minestom.server.network.player.PlayerConnection;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@ -10,35 +7,40 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
|
|
||||||
public class NewPlayer extends Player {
|
public class NewPlayer extends Player {
|
||||||
private boolean allowMovemenrt = true;
|
|
||||||
private long lastCompassUsage = System.currentTimeMillis();
|
private boolean allowMovement = true;
|
||||||
|
private long lastCompassUsage = 0;
|
||||||
|
private boolean allowCompassUsage = true;
|
||||||
|
|
||||||
public NewPlayer(@NotNull UUID uuid, @NotNull String username, @NotNull PlayerConnection playerConnection) {
|
public NewPlayer(@NotNull UUID uuid, @NotNull String username, @NotNull PlayerConnection playerConnection) {
|
||||||
super(uuid, username, playerConnection);
|
super(uuid, username, playerConnection);
|
||||||
|
|
||||||
}
|
}
|
||||||
public void setSyncCooldown(@Nullable Duration cooldown) {
|
public void setSyncCooldown(@Nullable Duration cooldown) {
|
||||||
this.setCustomSynchronizationCooldown(cooldown);
|
this.setCustomSynchronizationCooldown(cooldown);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isAllowMovement() {
|
public boolean isAllowMovement() {
|
||||||
return allowMovemenrt;
|
return allowMovement;
|
||||||
}
|
}
|
||||||
public void update_lastCompassUsage() {
|
public void update_lastCompassUsage() {
|
||||||
lastCompassUsage = System.currentTimeMillis();
|
lastCompassUsage = System.currentTimeMillis();
|
||||||
}
|
}
|
||||||
public boolean isAllowCompassUsage() {
|
public boolean isAllowCompassUsage() {
|
||||||
long UsageDifference = System.currentTimeMillis() - lastCompassUsage;
|
long UsageDifference = System.currentTimeMillis() - lastCompassUsage;
|
||||||
System.out.println(UsageDifference);
|
long difference = 10000; //in Milisec
|
||||||
long DIFFERENCE = 10000; //in Milisec
|
return UsageDifference >= difference && allowCompassUsage;
|
||||||
if (UsageDifference >= DIFFERENCE) return true;
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAllowMovement(boolean allowMovement) {
|
public void setAllowMovement(boolean allowMovement) {
|
||||||
this.allowMovemenrt = allowMovement;
|
this.allowMovement = allowMovement;
|
||||||
}
|
}
|
||||||
|
public void setAllowCompassUsage(boolean allowCompassUsage) {
|
||||||
|
this.allowCompassUsage = allowCompassUsage;
|
||||||
|
}
|
||||||
|
public long getLastCompassUsage() {
|
||||||
|
return lastCompassUsage;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Reference in New Issue
Block a user