This commit is contained in:
YuTian 2024-08-18 20:20:51 +08:00
parent 23c490e26f
commit fcfb6ae03e
21 changed files with 102 additions and 47 deletions

View File

@ -75,7 +75,7 @@
<dependency> <dependency>
<groupId>com.io.yutian</groupId> <groupId>com.io.yutian</groupId>
<artifactId>PixelLiveAPI</artifactId> <artifactId>PixelLiveAPI</artifactId>
<version>1.0.2</version> <version>1.0.4</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>

View File

@ -15,12 +15,12 @@ import org.bukkit.plugin.java.JavaPlugin;
public class EnderDragonWar extends JavaPlugin { public class EnderDragonWar extends JavaPlugin {
public static EnderDragonWar plugin; private static EnderDragonWar instance;
public static Game game; private static Game game;
@Override @Override
public void onEnable() { public void onEnable() {
plugin = this; instance = this;
if (!PixelLiveAPI.isInitialized()) { if (!PixelLiveAPI.isInitialized()) {
Bukkit.getPluginManager().disablePlugin(this); Bukkit.getPluginManager().disablePlugin(this);
@ -29,6 +29,7 @@ public class EnderDragonWar extends JavaPlugin {
GiftEffectManager.registerAll(); GiftEffectManager.registerAll();
GameSetting.load(); GameSetting.load();
game = new Game(); game = new Game();
Bukkit.getPluginManager().registerEvents(new PlayerListener(), this); Bukkit.getPluginManager().registerEvents(new PlayerListener(), this);
@ -46,4 +47,12 @@ public class EnderDragonWar extends JavaPlugin {
return true; return true;
} }
public static EnderDragonWar inst() {
return instance;
}
public static Game getGame() {
return game;
}
} }

View File

@ -14,7 +14,7 @@ public abstract class GameGiftEffect extends GiftEffect {
@Override @Override
public void apply() { public void apply() {
apply(EnderDragonWar.game); apply(EnderDragonWar.getGame());
} }
} }

View File

@ -37,7 +37,7 @@ public class AddMaxHealthEffect extends GameGiftEffect {
} }
count++; count++;
} }
}.runTaskTimer(EnderDragonWar.plugin, 0L, 1L); }.runTaskTimer(EnderDragonWar.inst(), 0L, 1L);
} }
@Override @Override

View File

@ -55,7 +55,7 @@ public class BlackHoleEffect extends GameGiftEffect {
} }
i++; i++;
} }
}.runTaskTimer(EnderDragonWar.plugin, 0L, 10L); }.runTaskTimer(EnderDragonWar.inst(), 0L, 10L);
new BukkitRunnable() { new BukkitRunnable() {
private Set<UUID> uuids = new HashSet<>(); private Set<UUID> uuids = new HashSet<>();
@ -101,7 +101,7 @@ public class BlackHoleEffect extends GameGiftEffect {
} }
} }
} }
}.runTaskTimer(EnderDragonWar.plugin, 0L, 5L); }.runTaskTimer(EnderDragonWar.inst(), 0L, 5L);
new BukkitRunnable() { new BukkitRunnable() {
private Set<UUID> uuids = new HashSet<>(); private Set<UUID> uuids = new HashSet<>();
@ -134,7 +134,7 @@ public class BlackHoleEffect extends GameGiftEffect {
} }
} }
} }
}.runTaskTimer(EnderDragonWar.plugin, 0L, 1L); }.runTaskTimer(EnderDragonWar.inst(), 0L, 1L);
} }
@Override @Override

View File

@ -153,7 +153,7 @@ public class BomBomEffect extends GameGiftEffect {
} }
count++; count++;
} }
}.runTaskTimer(EnderDragonWar.plugin, 0L, 15L); }.runTaskTimer(EnderDragonWar.inst(), 0L, 15L);
new BukkitRunnable() { new BukkitRunnable() {
private int count = 0; private int count = 0;
@ -171,7 +171,7 @@ public class BomBomEffect extends GameGiftEffect {
bossBar.setTitle(flag ? "§4§l毁天灭地" : "§c§l毁天灭地"); bossBar.setTitle(flag ? "§4§l毁天灭地" : "§c§l毁天灭地");
count++; count++;
} }
}.runTaskTimer(EnderDragonWar.plugin, 0L, 5L); }.runTaskTimer(EnderDragonWar.inst(), 0L, 5L);
new BukkitRunnable() { new BukkitRunnable() {
private int count = 0; private int count = 0;
@ -188,7 +188,7 @@ public class BomBomEffect extends GameGiftEffect {
armorStand.getWorld().spawnParticle(Particle.FLAME, location1, 5, 0.2, 1, 0.2, 0.01); armorStand.getWorld().spawnParticle(Particle.FLAME, location1, 5, 0.2, 1, 0.2, 0.01);
count++; count++;
} }
}.runTaskTimer(EnderDragonWar.plugin, 0L, 2L); }.runTaskTimer(EnderDragonWar.inst(), 0L, 2L);
new BukkitRunnable() { new BukkitRunnable() {
@Override @Override
public void run() { public void run() {
@ -211,7 +211,7 @@ public class BomBomEffect extends GameGiftEffect {
} }
} }
} }
}.runTaskTimer(EnderDragonWar.plugin, 0L, 1L); }.runTaskTimer(EnderDragonWar.inst(), 0L, 1L);
} }
} }

View File

@ -64,7 +64,7 @@ public class ClearInventoryEffect extends GameGiftEffect {
allays.add(allay); allays.add(allay);
count++; count++;
} }
}.runTaskTimer(EnderDragonWar.plugin, 10L, 4L); }.runTaskTimer(EnderDragonWar.inst(), 10L, 4L);
} }
@Override @Override

View File

@ -27,7 +27,7 @@ public class FiveLightningEffect extends GameGiftEffect {
player.getWorld().strikeLightning(player.getLocation()); player.getWorld().strikeLightning(player.getLocation());
count++; count++;
} }
}.runTaskTimer(EnderDragonWar.plugin, 0, 10L); }.runTaskTimer(EnderDragonWar.inst(), 0, 10L);
} }
} }

View File

@ -44,8 +44,8 @@ public class RandomBoxEffect extends GameGiftEffect {
player.playSound(player.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 1); player.playSound(player.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 1);
i++; i++;
} }
}.runTaskTimer(EnderDragonWar.plugin, 0L, 5L); }.runTaskTimer(EnderDragonWar.inst(), 0L, 5L);
EnderDragonWar.game.addTasks(task); EnderDragonWar.getGame().addTasks(task);
} }
private List<String> getEffects() { private List<String> getEffects() {

View File

@ -59,7 +59,7 @@ public class SpawnEnderPortalEffect extends GameGiftEffect {
int platformWidth = 3; int platformWidth = 3;
int platformLength = 7; int platformLength = 7;
int levelAmount = 15; int levelAmount = 15;
EnderDragonWar.game.takeLiveTime(60 * 6); EnderDragonWar.getGame().takeLiveTime(60 * 6);
World world = game.getWorld(); World world = game.getWorld();
Player player = game.getPlayer(); Player player = game.getPlayer();
Location location = player.getLocation(); Location location = player.getLocation();

View File

@ -17,7 +17,7 @@ public class ToHeavenEffect extends GameGiftEffect {
public void apply(Game game) { public void apply(Game game) {
Player player = game.getPlayer(); Player player = game.getPlayer();
double radius = 1.5D; double radius = 1.5D;
EnderDragonWar.game.takeLiveTime(60); EnderDragonWar.getGame().takeLiveTime(60);
new BukkitRunnable() { new BukkitRunnable() {
private int count = 0; private int count = 0;
private double angle = 0; private double angle = 0;
@ -41,7 +41,7 @@ public class ToHeavenEffect extends GameGiftEffect {
} }
count++; count++;
} }
}.runTaskTimer(EnderDragonWar.plugin, 0L, 1L); }.runTaskTimer(EnderDragonWar.inst(), 0L, 1L);
} }
@Override @Override

View File

@ -39,7 +39,7 @@ public class WuHuJumpEffect extends GameGiftEffect {
location.getWorld().playSound(location, Sound.ENTITY_CREEPER_PRIMED, 1.0f, 1.0f); location.getWorld().playSound(location, Sound.ENTITY_CREEPER_PRIMED, 1.0f, 1.0f);
i++; i++;
} }
}.runTaskTimer(EnderDragonWar.plugin, 2L, 1L); }.runTaskTimer(EnderDragonWar.inst(), 2L, 1L);
game.addTasks(task); game.addTasks(task);
} }

View File

@ -103,7 +103,7 @@ public class Game {
liveTime = liveTime - 500; liveTime = liveTime - 500;
updateBossBar(); updateBossBar();
} }
}.runTaskTimer(EnderDragonWar.plugin, 0L, 10L)); }.runTaskTimer(EnderDragonWar.inst(), 0L, 10L));
} }
public void rejoinGame(Player player) { public void rejoinGame(Player player) {
@ -161,11 +161,11 @@ public class Game {
this.dianzan += count; this.dianzan += count;
} }
public int getDianzan() { public int getDianZan() {
return dianzan; return dianzan;
} }
public void setDianzan(int dianzan) { public void setDianZan(int dianzan) {
this.dianzan = dianzan; this.dianzan = dianzan;
} }

View File

@ -6,10 +6,15 @@ public class GameSetting {
private static int dianzanAmount; private static int dianzanAmount;
private static String dianzanEffect; private static String dianzanEffect;
private static int deathAddTime;
public static void load() { public static void load() {
dianzanAmount = Integer.parseInt(PixelLiveAPI.getExtraDataManager().getConfigValue("点赞数量", "50")); PixelLiveAPI.getExtraDataManager().addDefault("点赞数量", "50");
PixelLiveAPI.getExtraDataManager().addDefault("点赞效果", "幸运方块");
PixelLiveAPI.getExtraDataManager().addDefault("死亡增加时间", "5");
dianzanAmount = PixelLiveAPI.getExtraDataManager().getConfigValueInt("点赞数量", 50);
dianzanEffect = PixelLiveAPI.getExtraDataManager().getConfigValue("点赞效果", "幸运方块"); dianzanEffect = PixelLiveAPI.getExtraDataManager().getConfigValue("点赞效果", "幸运方块");
deathAddTime = PixelLiveAPI.getExtraDataManager().getConfigValueInt("死亡增加时间", 5);
} }
public static int getDianzanAmount() { public static int getDianzanAmount() {
@ -20,4 +25,8 @@ public class GameSetting {
return dianzanEffect; return dianzanEffect;
} }
public static int getDeathAddTime() {
return deathAddTime;
}
} }

View File

@ -1,6 +1,7 @@
package com.yaohun.enderdragonwar.listener; package com.yaohun.enderdragonwar.listener;
import com.yaohun.enderdragonwar.EnderDragonWar; import com.yaohun.enderdragonwar.EnderDragonWar;
import com.yaohun.enderdragonwar.game.GameSetting;
import org.bukkit.entity.Creeper; import org.bukkit.entity.Creeper;
import org.bukkit.entity.EnderDragon; import org.bukkit.entity.EnderDragon;
import org.bukkit.entity.LightningStrike; import org.bukkit.entity.LightningStrike;
@ -25,12 +26,12 @@ public class GameListener implements Listener {
@EventHandler @EventHandler
public void onPlayerJoin(PlayerJoinEvent event) { public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
EnderDragonWar.game.startGame(player); EnderDragonWar.getGame().startGame(player);
} }
@EventHandler @EventHandler
public void onPlayerQuit(PlayerQuitEvent event) { public void onPlayerQuit(PlayerQuitEvent event) {
EnderDragonWar.game.quitGame(event.getPlayer()); EnderDragonWar.getGame().quitGame(event.getPlayer());
} }
@EventHandler @EventHandler
@ -64,19 +65,20 @@ public class GameListener implements Listener {
player.spigot().respawn(); player.spigot().respawn();
} }
if (i == 3) { if (i == 3) {
EnderDragonWar.game.addLiveTime(5); int t = GameSetting.getDeathAddTime();
player.sendTitle("§4你嘎了", "§e加播5分钟"); EnderDragonWar.getGame().addLiveTime(t);
player.sendTitle("§4你嘎了", "§e加播"+t+"分钟!");
cancel(); cancel();
} }
i++; i++;
} }
}.runTaskTimer(EnderDragonWar.plugin, 0L, 2L); }.runTaskTimer(EnderDragonWar.inst(), 0L, 2L);
} }
@EventHandler @EventHandler
public void onEntityDeath(EntityDeathEvent event) { public void onEntityDeath(EntityDeathEvent event) {
if (event.getEntity() instanceof EnderDragon) { if (event.getEntity() instanceof EnderDragon) {
EnderDragonWar.game.takeLiveTime(60); EnderDragonWar.getGame().takeLiveTime(60);
} }
} }

View File

@ -26,7 +26,7 @@ public class LiveListener implements Listener {
} }
@EventHandler @EventHandler
public void onDianZan(LiveLikeEvent event) { public void onLiveLike(LiveLikeEvent event) {
Player zhubo = event.getPlayer(); Player zhubo = event.getPlayer();
String userName = "" + RandomUtil.getRandomInt(999, 10000); String userName = "" + RandomUtil.getRandomInt(999, 10000);
Audience audience = event.getAudience(); Audience audience = event.getAudience();
@ -34,23 +34,22 @@ public class LiveListener implements Listener {
userName = audience.getNickName(); userName = audience.getNickName();
} }
int count = event.getClickCount(); int count = event.getClickCount();
EnderDragonWar.game.addDianZan(count); EnderDragonWar.getGame().addDianZan(count);
if (EnderDragonWar.game.getDianzan() >= GameSetting.getDianzanAmount()) { if (EnderDragonWar.getGame().getDianZan() >= GameSetting.getDianzanAmount()) {
String event1 = GameSetting.getDianzanEffect(); String event1 = GameSetting.getDianzanEffect();
String title = "§c" + event1; String title = "§c" + event1;
String subtitle = "§9双击屏幕x" + GameSetting.getDianzanAmount(); String subtitle = "§9双击屏幕x" + GameSetting.getDianzanAmount();
zhubo.sendTitle(title, subtitle, 10, 30, 10); zhubo.sendTitle(title, subtitle, 10, 30, 10);
PixelLiveAPI.getEffectQueueManager().addEffect(userName, event1, 1); PixelLiveAPI.getEffectQueueManager().addEffect(userName, event1, 1);
EnderDragonWar.game.setDianzan(0); EnderDragonWar.getGame().setDianZan(0);
} }
} }
@EventHandler @EventHandler
public void onLive(LiveGiftEvent event) { public void onLiveGift(LiveGiftEvent event) {
Player zhubo = event.getPlayer(); Player zhubo = event.getPlayer();
Audience audience = event.getAudience(); Audience audience = event.getAudience();
String userName = audience.getNickName(); String userName = audience.getNickName();
boolean butt = userName != null;
Gift gift = event.getGift(); Gift gift = event.getGift();
String giftName = gift.getName(); String giftName = gift.getName();
int giftAmount = event.getCount(); int giftAmount = event.getCount();
@ -65,9 +64,6 @@ public class LiveListener implements Listener {
title = "§c" + effect + " x" + giftAmount; title = "§c" + effect + " x" + giftAmount;
} }
String subtitle = "§9" + giftName; String subtitle = "§9" + giftName;
if (butt) {
subtitle = "§9" + hideUserName;
}
zhubo.sendTitle(title, subtitle, 0, 30, 10); zhubo.sendTitle(title, subtitle, 0, 30, 10);
for (Player player : Bukkit.getOnlinePlayers()) { for (Player player : Bukkit.getOnlinePlayers()) {
player.sendMessage("§a礼物: §e" + hideUserName + " §d送来了 §e" + giftName + "x" + giftAmount); player.sendMessage("§a礼物: §e" + hideUserName + " §d送来了 §e" + giftName + "x" + giftAmount);

View File

@ -76,10 +76,12 @@ public class PlayerListener implements Listener {
for (int j = 0; j <= 3; j++) { for (int j = 0; j <= 3; j++) {
for (int z = -3; z <= 3; z++) { for (int z = -3; z <= 3; z++) {
Block block = location.clone().add(i, j, z).getBlock(); Block block = location.clone().add(i, j, z).getBlock();
if (block.getType() == Material.LAVA) {
block.setType(Material.AIR); block.setType(Material.AIR);
} }
} }
} }
}
for (int i = -2; i <= 2; i++) { for (int i = -2; i <= 2; i++) {
for (int j = -2; j <= 2; j++) { for (int j = -2; j <= 2; j++) {
Block block = location.clone().add(i, -1, j).getBlock(); Block block = location.clone().add(i, -1, j).getBlock();

View File

@ -274,7 +274,7 @@ public class BuildSpawner {
transformDirection(); transformDirection();
count++; count++;
} }
}.runTaskTimer(EnderDragonWar.plugin, 0L, 3L); }.runTaskTimer(EnderDragonWar.inst(), 0L, 3L);
} }
@Override @Override
@ -380,7 +380,7 @@ public class BuildSpawner {
transformDirection(); transformDirection();
count++; count++;
} }
}.runTaskTimer(EnderDragonWar.plugin, 0L, 3L); }.runTaskTimer(EnderDragonWar.inst(), 0L, 3L);
} }
@Override @Override

View File

@ -0,0 +1,37 @@
package com.yaohun.enderdragonwar.util;
import org.bukkit.plugin.Plugin;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import java.util.logging.Level;
public class FileUtil {
public static void saveFile(Plugin plugin, String resourcePath) {
resourcePath = resourcePath.replace('\\', '/');
InputStream in = plugin.getResource(resourcePath);
if (in == null) {
throw new IllegalArgumentException("Resource not found: " + resourcePath);
} else {
File outFile = new File(plugin.getDataFolder(), resourcePath);
int lastIndex = resourcePath.lastIndexOf(47);
File outDir = new File(plugin.getDataFolder(), resourcePath.substring(0, lastIndex >= 0 ? lastIndex : 0));
if (!outDir.exists()) {
outDir.mkdirs();
}
try {
Path target = outFile.toPath();
if (!outFile.exists()) {
Files.copy(in, target, StandardCopyOption.REPLACE_EXISTING);
}
} catch (IOException var10) {
IOException ex = var10;
plugin.getLogger().log(Level.SEVERE, "Could not save " + outFile.getName() + " to " + String.valueOf(outFile), ex);
}
}
}
}

View File

@ -16,17 +16,17 @@ import java.io.File;
public class WEUtil { public class WEUtil {
public static void loadSchematics(Location location, String fileName) { public static void loadSchematics(Location location, String fileName) {
File path = new File(EnderDragonWar.plugin.getDataFolder(), "schematics"); File path = new File(EnderDragonWar.inst().getDataFolder(), "schematics");
if (!path.exists()) { if (!path.exists()) {
path.mkdirs(); path.mkdirs();
} }
File schematicFile = new File(path, fileName + ".schem"); File schematicFile = new File(path, fileName + ".schem");
if (!schematicFile.exists()) { if (!schematicFile.exists()) {
EnderDragonWar.plugin.saveResource("schematics/" + fileName + ".schem", false); EnderDragonWar.inst().saveResource("schematics/" + fileName + ".schem", false);
} }
World world = location.getWorld(); World world = location.getWorld();
EditSession editSession = WorldEdit.getInstance().newEditSession(BukkitAdapter.adapt(world)); EditSession editSession = WorldEdit.getInstance().newEditSession(BukkitAdapter.adapt(world));
Bukkit.getScheduler().runTaskAsynchronously(EnderDragonWar.plugin, () -> { Bukkit.getScheduler().runTaskAsynchronously(EnderDragonWar.inst(), () -> {
try { try {
Clipboard clipboard = ClipboardFormats.findByFile(schematicFile).load(schematicFile); Clipboard clipboard = ClipboardFormats.findByFile(schematicFile).load(schematicFile);
clipboard.paste(BukkitAdapter.adapt(world), BlockVector3.at(location.getBlockX(), location.getBlockY(), location.getBlockZ())); clipboard.paste(BukkitAdapter.adapt(world), BlockVector3.at(location.getBlockX(), location.getBlockY(), location.getBlockZ()));

View File

@ -1,5 +1,5 @@
name: EnderDragonWar name: EnderDragonWar
version: 1.0 version: 1.0.2
api-version: 1.20 api-version: 1.20
main: com.yaohun.enderdragonwar.EnderDragonWar main: com.yaohun.enderdragonwar.EnderDragonWar
depend: [PixelLiveAPI] depend: [PixelLiveAPI]