测试版
This commit is contained in:
commit
20e8a71a3e
|
@ -0,0 +1,21 @@
|
|||
package com.yaohun.enderdragonWars.effect;
|
||||
|
||||
import com.yaohun.enderdragonWars.game.Game;
|
||||
|
||||
public abstract class GiftEffect {
|
||||
private String audience;
|
||||
|
||||
public GiftEffect(String audience) {
|
||||
this.audience = audience;
|
||||
}
|
||||
|
||||
public String getAudience() {
|
||||
return audience;
|
||||
}
|
||||
|
||||
public abstract void apply(Game game);
|
||||
|
||||
public int getQueueTime() {
|
||||
return 20;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
package com.yaohun.enderdragonWars.effect;
|
||||
|
||||
import com.yaohun.enderdragonWars.Main;
|
||||
import com.yaohun.enderdragonWars.game.Game;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.Queue;
|
||||
|
||||
public class GiftQueue {
|
||||
|
||||
private Queue<GiftEffect> effectQueue = new LinkedList<>();
|
||||
|
||||
private BukkitTask task;
|
||||
|
||||
public GiftQueue(int waitTime) {
|
||||
task = Bukkit.getScheduler().runTaskTimer(Main.plugin, new Runnable() {
|
||||
private int timer = 0;
|
||||
private boolean running = false;
|
||||
@Override
|
||||
public void run() {
|
||||
timer++;
|
||||
if (!running) {
|
||||
timer = waitTime;
|
||||
running = true;
|
||||
}
|
||||
if (timer >= waitTime) {
|
||||
timer = 0;
|
||||
if (effectQueue.isEmpty()) {
|
||||
running = false;
|
||||
return;
|
||||
}
|
||||
Game game = Main.game;
|
||||
GiftEffect effect = effectQueue.poll();
|
||||
effect.apply(game);
|
||||
}
|
||||
}
|
||||
}, 0L, 1L);
|
||||
}
|
||||
|
||||
public void addEffect(GiftEffect effect) {
|
||||
effectQueue.add(effect);
|
||||
}
|
||||
|
||||
public Queue<GiftEffect> getEffectQueue() {
|
||||
return effectQueue;
|
||||
}
|
||||
|
||||
public BukkitTask getTask() {
|
||||
return task;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package com.yaohun.enderdragonWars.effectevent;
|
||||
|
||||
import com.yaohun.enderdragonWars.effect.GiftEffect;
|
||||
import com.yaohun.enderdragonWars.game.Game;
|
||||
|
||||
public class ClearInvEffect extends GiftEffect {
|
||||
|
||||
public ClearInvEffect(String audience) {
|
||||
super(audience);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(Game game) {
|
||||
/*
|
||||
* 获取玩家背包中所有物品然后从头上像喷泉一样到处散落
|
||||
* 给这些掉落的物品添加一个nbt antipick: true
|
||||
* */
|
||||
|
||||
}
|
||||
}
|
20
src/main/java/com/yaohun/enderdragonWars/game/Game.java
Normal file
20
src/main/java/com/yaohun/enderdragonWars/game/Game.java
Normal file
|
@ -0,0 +1,20 @@
|
|||
package com.yaohun.enderdragonWars.game;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class Game {
|
||||
|
||||
private Player player;
|
||||
private World world;
|
||||
private boolean startd;
|
||||
public Game(){
|
||||
|
||||
}
|
||||
|
||||
public void startGame(Player player){
|
||||
if(startd){return;}
|
||||
this.player = player;
|
||||
this.startd = true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
package com.yaohun.enderdragonWars.liveevent;
|
||||
|
||||
import com.yaohun.enderdragonWars.manage.GiftEffectManager;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class GiftEventHandler {
|
||||
|
||||
public static void SendHandLer(Player zhubo, String hideName, String eventName){
|
||||
if(eventName.equalsIgnoreCase("清空背包")){
|
||||
GiftEffectManager.addGiftEffect(hideName,eventName);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
package com.yaohun.enderdragonWars.manage;
|
||||
|
||||
import com.yaohun.enderdragonWars.effectevent.ClearInvEffect;
|
||||
import com.yaohun.enderdragonWars.effect.GiftEffect;
|
||||
import com.yaohun.enderdragonWars.effect.GiftQueue;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class GiftEffectManager {
|
||||
|
||||
private static Map<String, Function<String, GiftEffect>> giftEffectMap = new HashMap<>();
|
||||
|
||||
private static Map<String, GiftQueue> giftQueues = new HashMap<>();
|
||||
|
||||
public static void addGiftEffect(String audience, String effectId) {
|
||||
GiftEffect giftEffect = giftEffectMap.get(effectId).apply(audience);
|
||||
GiftQueue giftQueue = giftQueues.getOrDefault(effectId, new GiftQueue(giftEffect.getQueueTime()));
|
||||
giftQueue.addEffect(giftEffect);
|
||||
giftQueues.put(effectId, giftQueue);
|
||||
}
|
||||
|
||||
public static void stopQueue() {
|
||||
giftQueues.values().forEach(giftQueue -> {
|
||||
BukkitTask task = giftQueue.getTask();
|
||||
if (task != null && !task.isCancelled()) {
|
||||
task.cancel();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static GiftQueue getGiftQueue(String effectId) {
|
||||
return giftQueues.get(effectId);
|
||||
}
|
||||
|
||||
public static Map<String, GiftQueue> getGiftQueues() {
|
||||
return giftQueues;
|
||||
}
|
||||
|
||||
public static void registerAll() {
|
||||
registerGiftEffect("清理背包", ClearInvEffect::new);
|
||||
}
|
||||
|
||||
private static void registerGiftEffect(String id, Function<String, GiftEffect> giftEffectGetter) {
|
||||
giftEffectMap.put(id, giftEffectGetter);
|
||||
}
|
||||
|
||||
}
|
38
src/main/java/com/yaohun/enderdragonWars/util/GiftUtil.java
Normal file
38
src/main/java/com/yaohun/enderdragonWars/util/GiftUtil.java
Normal file
|
@ -0,0 +1,38 @@
|
|||
package com.yaohun.enderdragonWars.util;
|
||||
|
||||
import com.yaohun.enderdragonWars.Main;
|
||||
import com.yaohun.enderdragonWars.data.GiftData;
|
||||
import com.yaohun.enderdragonWars.liveevent.GiftEventHandler;
|
||||
import com.yaohun.enderdragonWars.manage.GameManage;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class GiftUtil {
|
||||
|
||||
// 执行礼物效果
|
||||
public static void executeGiftEffect(Player zhubo,String userName,String giftName,int giftAmount){
|
||||
GameManage gameManage = Main.gameManage;
|
||||
if(gameManage.getGiftData(giftName) == null){
|
||||
zhubo.sendMessage("§c[系统]§a礼物 "+giftName+" 的未设置任何礼物效果.");
|
||||
return;
|
||||
}
|
||||
// 获取礼物数据
|
||||
GiftData giftData = gameManage.getGiftData(giftName);
|
||||
// 获取隐藏名字后的观众名
|
||||
String hide_name = GameUtil.HideName(userName);
|
||||
// 获取效果名
|
||||
String eventName = giftData.getEvent();
|
||||
if(giftAmount <= 1){
|
||||
giftData.OutPlaySoundsEvent();
|
||||
GiftEventHandler.SendHandLer(zhubo, userName, eventName);
|
||||
}else{
|
||||
long dadey = 5L;
|
||||
for (int i = 0; i < giftAmount; i++) {
|
||||
Bukkit.getScheduler().runTaskLater(Main.plugin, () -> {
|
||||
giftData.OutPlaySoundsEvent();
|
||||
GiftEventHandler.SendHandLer(zhubo, userName, eventName);
|
||||
}, (long) i * dadey);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package com.yaohun.enderdragonWars.util;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
|
||||
import javax.swing.plaf.synth.Region;
|
||||
import java.awt.*;
|
||||
import java.util.Random;
|
||||
|
||||
public class RandomUtil {
|
||||
|
||||
public static boolean random(double d) {
|
||||
return d >= new Random().nextFloat();
|
||||
}
|
||||
|
||||
public static int getRandomInt(int min, int max) {
|
||||
if (min == max) {
|
||||
return max;
|
||||
}
|
||||
Random r = new Random();
|
||||
int i = min < max ? min : max;
|
||||
int a = min < max ? max : min;
|
||||
return r.nextInt(a - i + 1) + i;
|
||||
}
|
||||
|
||||
public static double getRandomDouble(double min, double max, int scl) {
|
||||
int pow = (int) Math.pow(10, scl);
|
||||
return Math.floor((Math.random() * (max - min) + min) * pow) / pow;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user