abc
This commit is contained in:
parent
19666020ed
commit
63310d6cb3
|
@ -48,4 +48,5 @@ gradle-app.setting
|
||||||
|
|
||||||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||||
hs_err_pid*
|
hs_err_pid*
|
||||||
replay_pid*
|
replay_pid*
|
||||||
|
/build/
|
||||||
|
|
|
@ -4,6 +4,9 @@ import cloud.commandframework.CommandManager;
|
||||||
import cloud.commandframework.execution.CommandExecutionCoordinator;
|
import cloud.commandframework.execution.CommandExecutionCoordinator;
|
||||||
import cloud.commandframework.paper.PaperCommandManager;
|
import cloud.commandframework.paper.PaperCommandManager;
|
||||||
|
|
||||||
|
import io.p2vman.pilers.events.Event;
|
||||||
|
import io.p2vman.pilers.events.TestEvent;
|
||||||
|
import it.unimi.dsi.fastutil.Pair;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
|
@ -23,6 +26,7 @@ import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
@ -37,7 +41,16 @@ public final class Pilers extends JavaPlugin implements Listener {
|
||||||
Builder builder;
|
Builder builder;
|
||||||
String id;
|
String id;
|
||||||
boolean start;
|
boolean start;
|
||||||
int give_time;
|
RandomConfig rc;
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public static class RandomConfig {
|
||||||
|
int second_toitem;
|
||||||
|
int min_items;
|
||||||
|
int max_items;
|
||||||
|
}
|
||||||
|
List<Event> events;
|
||||||
|
Event curent;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.MONITOR)
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
|
@ -111,7 +124,7 @@ public final class Pilers extends JavaPlugin implements Listener {
|
||||||
|
|
||||||
public void stop(Optional<Player> win) {
|
public void stop(Optional<Player> win) {
|
||||||
LOGGER.info("stop");
|
LOGGER.info("stop");
|
||||||
taskMannager.cancel("second");
|
taskMannager.cancel("item", "event", "border");
|
||||||
state.start = false;
|
state.start = false;
|
||||||
Collection<? extends Player> players = Bukkit.getOnlinePlayers();
|
Collection<? extends Player> players = Bukkit.getOnlinePlayers();
|
||||||
Bukkit.getWorlds().get(0).setType(0,-1,0, Material.STONE);
|
Bukkit.getWorlds().get(0).setType(0,-1,0, Material.STONE);
|
||||||
|
@ -129,7 +142,7 @@ public final class Pilers extends JavaPlugin implements Listener {
|
||||||
}
|
}
|
||||||
|
|
||||||
win.ifPresentOrElse((w) -> {
|
win.ifPresentOrElse((w) -> {
|
||||||
w.setLevel(1);
|
|
||||||
}, () -> {
|
}, () -> {
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -149,16 +162,19 @@ public final class Pilers extends JavaPlugin implements Listener {
|
||||||
.handler((ctx) -> {
|
.handler((ctx) -> {
|
||||||
Builder builder = new Builder();
|
Builder builder = new Builder();
|
||||||
ItemRandom random = new ItemRandom();
|
ItemRandom random = new ItemRandom();
|
||||||
taskMannager.cancel("second");
|
Server server = getServer();
|
||||||
|
World world = Bukkit.getWorlds().get(0);
|
||||||
|
taskMannager.cancel("item", "event", "border");
|
||||||
|
|
||||||
|
|
||||||
byte[] buff = new byte[12];
|
byte[] buff = new byte[12];
|
||||||
random.nextBytes(buff);
|
random.nextBytes(buff);
|
||||||
|
|
||||||
Collection<? extends Player> players = Bukkit.getOnlinePlayers();
|
Collection<? extends Player> players = Bukkit.getOnlinePlayers();
|
||||||
state = new GameState(random, builder, Base64.getEncoder().encodeToString(buff), false, 10);
|
state = new GameState(random, builder, Base64.getEncoder().encodeToString(buff), false, new GameState.RandomConfig(10, 2, 4), new ArrayList<>(), null);
|
||||||
|
state.events.add(new TestEvent());
|
||||||
|
|
||||||
builder.build(players.size(), (p) -> {
|
builder.build(players.size(), (p) -> {
|
||||||
World world = Bukkit.getWorlds().get(0);
|
|
||||||
ctx.getSender().sendMessage("End");
|
ctx.getSender().sendMessage("End");
|
||||||
List<Player> players_ = new ArrayList<>(Bukkit.getOnlinePlayers());
|
List<Player> players_ = new ArrayList<>(Bukkit.getOnlinePlayers());
|
||||||
|
|
||||||
|
@ -181,17 +197,32 @@ public final class Pilers extends JavaPlugin implements Listener {
|
||||||
|
|
||||||
state.start = true;
|
state.start = true;
|
||||||
|
|
||||||
taskMannager.runRepeating("second", () -> {
|
taskMannager.runRepeating("item", () -> {
|
||||||
Collection<? extends Player> _players = Bukkit.getOnlinePlayers();
|
Collection<? extends Player> _players = Bukkit.getOnlinePlayers();
|
||||||
Stream<ItemStack> stackStream = random.itemStackStream(0, 0, ItemRandom.ITEM);
|
Stream<ItemStack> stackStream = random.itemStackStream(0, 0, ItemRandom.ITEM);
|
||||||
|
|
||||||
_players.forEach((p_) -> {
|
_players.forEach((p_) -> {
|
||||||
if (p_.getGameMode() == GameMode.SURVIVAL) {
|
if (p_.getGameMode() == GameMode.SURVIVAL) {
|
||||||
stackStream.limit(random.nextInt(2)+1).forEach(p_.getInventory()::addItem);
|
stackStream
|
||||||
|
.limit(random.nextInt(state.rc.min_items, state.rc.max_items))
|
||||||
|
.forEach(p_.getInventory()::addItem);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, 0, 20L * state.give_time);
|
}, 0, 20L * state.rc.second_toitem);
|
||||||
|
|
||||||
|
taskMannager.runRepeating("event", () -> {
|
||||||
|
taskMannager.cancel("event_run");
|
||||||
|
state.curent = state.events.get(random.nextInt(state.events.size()));
|
||||||
|
LOGGER.info("Event start");
|
||||||
|
taskMannager.runAsync("event_run", state.curent)
|
||||||
|
.thenRun(() -> {
|
||||||
|
LOGGER.info("Event end");
|
||||||
|
});
|
||||||
|
}, 20L * 60, 20L * 60);
|
||||||
|
|
||||||
|
taskMannager.runRepeating("border", () -> {
|
||||||
|
|
||||||
|
}, 20L * 60, 20L * 10);
|
||||||
}, (c) -> {
|
}, (c) -> {
|
||||||
ctx.getSender().sendMessage(c);
|
ctx.getSender().sendMessage(c);
|
||||||
});
|
});
|
||||||
|
|
|
@ -7,6 +7,7 @@ import org.bukkit.scheduler.BukkitScheduler;
|
||||||
import org.bukkit.scheduler.BukkitTask;
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
public class TaskMannager implements BukkitScheduler {
|
public class TaskMannager implements BukkitScheduler {
|
||||||
@Delegate
|
@Delegate
|
||||||
|
@ -27,6 +28,13 @@ public class TaskMannager implements BukkitScheduler {
|
||||||
if (task != null) task.cancel();
|
if (task != null) task.cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void cancel(String... ids) {
|
||||||
|
for (String id : ids) {
|
||||||
|
BukkitTask task = tasks.remove(id);
|
||||||
|
if (task != null) task.cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void cancelAll() {
|
public void cancelAll() {
|
||||||
for (BukkitTask task : tasks.values()) {
|
for (BukkitTask task : tasks.values()) {
|
||||||
task.cancel();
|
task.cancel();
|
||||||
|
@ -46,10 +54,19 @@ public class TaskMannager implements BukkitScheduler {
|
||||||
tasks.put(id, task);
|
tasks.put(id, task);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void runAsync(String id, Runnable runnable) {
|
public CompletableFuture<Void> runAsync(String id, Runnable runnable) {
|
||||||
cancel(id);
|
cancel(id);
|
||||||
BukkitTask task = runTaskAsynchronously(plugin, runnable);
|
CompletableFuture<Void> future = new CompletableFuture<>();
|
||||||
|
BukkitTask task = runTaskAsynchronously(plugin, () -> {
|
||||||
|
try {
|
||||||
|
runnable.run();
|
||||||
|
future.complete(null);
|
||||||
|
} catch (Exception e) {
|
||||||
|
future.completeExceptionally(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
tasks.put(id, task);
|
tasks.put(id, task);
|
||||||
|
return future;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void runAsyncRepeating(String id, Runnable runnable, long delayTicks, long periodTicks) {
|
public void runAsyncRepeating(String id, Runnable runnable, long delayTicks, long periodTicks) {
|
||||||
|
|
|
@ -11,4 +11,8 @@ public abstract class Event implements Runnable {
|
||||||
public Component displayname() {
|
public Component displayname() {
|
||||||
return Component.text(name);
|
return Component.text(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void broadcast() {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
package io.p2vman.pilers.events;
|
||||||
|
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.title.TitlePart;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class TestEvent extends Event {
|
||||||
|
public TestEvent() {
|
||||||
|
super("test");
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Component title = displayname();
|
||||||
|
Component subtitle = Component.text("Event");
|
||||||
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||||
|
player.sendTitlePart(TitlePart.TITLE, title);
|
||||||
|
player.sendTitlePart(TitlePart.SUBTITLE, subtitle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue