mirror of
https://github.com/DRE2N/DungeonsXL.git
synced 2025-02-17 21:02:12 +01:00
Implemented DGroup events
This commit is contained in:
parent
418e2cb075
commit
6ec3808a25
@ -4,6 +4,7 @@ import io.github.dre2n.dungeonsxl.dungeon.Dungeon;
|
|||||||
import io.github.dre2n.dungeonsxl.dungeon.WorldConfig;
|
import io.github.dre2n.dungeonsxl.dungeon.WorldConfig;
|
||||||
import io.github.dre2n.dungeonsxl.dungeon.EditWorld;
|
import io.github.dre2n.dungeonsxl.dungeon.EditWorld;
|
||||||
import io.github.dre2n.dungeonsxl.dungeon.game.GameWorld;
|
import io.github.dre2n.dungeonsxl.dungeon.game.GameWorld;
|
||||||
|
import io.github.dre2n.dungeonsxl.event.dgroup.DGroupCreateEvent;
|
||||||
import io.github.dre2n.dungeonsxl.file.DMessages.Messages;
|
import io.github.dre2n.dungeonsxl.file.DMessages.Messages;
|
||||||
import io.github.dre2n.dungeonsxl.player.DGroup;
|
import io.github.dre2n.dungeonsxl.player.DGroup;
|
||||||
import io.github.dre2n.dungeonsxl.player.DPlayer;
|
import io.github.dre2n.dungeonsxl.player.DPlayer;
|
||||||
@ -92,6 +93,16 @@ public class PlayCommand extends DCommand {
|
|||||||
|
|
||||||
DGroup dGroup = new DGroup(player, identifier, multiFloor);
|
DGroup dGroup = new DGroup(player, identifier, multiFloor);
|
||||||
|
|
||||||
|
DGroupCreateEvent event = new DGroupCreateEvent(dGroup, player, DGroupCreateEvent.Cause.COMMAND);
|
||||||
|
|
||||||
|
if (event.isCancelled()) {
|
||||||
|
dGroup = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dGroup == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (dGroup.getGameWorld() == null) {
|
if (dGroup.getGameWorld() == null) {
|
||||||
dGroup.setGameWorld(GameWorld.load(DGroup.getByPlayer(player).getMapName()));
|
dGroup.setGameWorld(GameWorld.load(DGroup.getByPlayer(player).getMapName()));
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package io.github.dre2n.dungeonsxl.command;
|
|||||||
import io.github.dre2n.dungeonsxl.dungeon.Dungeon;
|
import io.github.dre2n.dungeonsxl.dungeon.Dungeon;
|
||||||
import io.github.dre2n.dungeonsxl.dungeon.EditWorld;
|
import io.github.dre2n.dungeonsxl.dungeon.EditWorld;
|
||||||
import io.github.dre2n.dungeonsxl.dungeon.game.GameWorld;
|
import io.github.dre2n.dungeonsxl.dungeon.game.GameWorld;
|
||||||
|
import io.github.dre2n.dungeonsxl.event.dgroup.DGroupCreateEvent;
|
||||||
import io.github.dre2n.dungeonsxl.file.DMessages.Messages;
|
import io.github.dre2n.dungeonsxl.file.DMessages.Messages;
|
||||||
import io.github.dre2n.dungeonsxl.player.DGroup;
|
import io.github.dre2n.dungeonsxl.player.DGroup;
|
||||||
import io.github.dre2n.dungeonsxl.player.DPlayer;
|
import io.github.dre2n.dungeonsxl.player.DPlayer;
|
||||||
@ -68,6 +69,16 @@ public class TestCommand extends DCommand {
|
|||||||
|
|
||||||
DGroup dGroup = new DGroup(player, identifier, multiFloor);
|
DGroup dGroup = new DGroup(player, identifier, multiFloor);
|
||||||
|
|
||||||
|
DGroupCreateEvent event = new DGroupCreateEvent(dGroup, player, DGroupCreateEvent.Cause.COMMAND);
|
||||||
|
|
||||||
|
if (event.isCancelled()) {
|
||||||
|
dGroup = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dGroup == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (dGroup.getGameWorld() == null) {
|
if (dGroup.getGameWorld() == null) {
|
||||||
dGroup.setGameWorld(GameWorld.load(DGroup.getByPlayer(player).getMapName()));
|
dGroup.setGameWorld(GameWorld.load(DGroup.getByPlayer(player).getMapName()));
|
||||||
}
|
}
|
||||||
|
@ -8,14 +8,25 @@ import org.bukkit.event.HandlerList;
|
|||||||
|
|
||||||
public class DGroupCreateEvent extends DGroupEvent implements Cancellable {
|
public class DGroupCreateEvent extends DGroupEvent implements Cancellable {
|
||||||
|
|
||||||
|
public enum Cause {
|
||||||
|
|
||||||
|
COMMAND,
|
||||||
|
GROUP_SIGN,
|
||||||
|
CUSTOM;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private static final HandlerList handlers = new HandlerList();
|
private static final HandlerList handlers = new HandlerList();
|
||||||
private boolean cancelled;
|
private boolean cancelled;
|
||||||
|
|
||||||
private Player creator;
|
private Player creator;
|
||||||
|
|
||||||
public DGroupCreateEvent(DGroup dGroup, Player creator) {
|
private Cause cause;
|
||||||
|
|
||||||
|
public DGroupCreateEvent(DGroup dGroup, Player creator, Cause cause) {
|
||||||
super(dGroup);
|
super(dGroup);
|
||||||
this.creator = creator;
|
this.creator = creator;
|
||||||
|
this.cause = cause;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -33,6 +44,21 @@ public class DGroupCreateEvent extends DGroupEvent implements Cancellable {
|
|||||||
this.creator = creator;
|
this.creator = creator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the cause
|
||||||
|
*/
|
||||||
|
public Cause getCause() {
|
||||||
|
return cause;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param cause
|
||||||
|
* the cause to set
|
||||||
|
*/
|
||||||
|
public void setCause(Cause cause) {
|
||||||
|
this.cause = cause;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HandlerList getHandlers() {
|
public HandlerList getHandlers() {
|
||||||
return handlers;
|
return handlers;
|
||||||
|
@ -6,14 +6,14 @@ import io.github.dre2n.dungeonsxl.player.DGroup;
|
|||||||
import org.bukkit.event.Cancellable;
|
import org.bukkit.event.Cancellable;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
public class DGroupJoinGameWorldEvent extends DGroupEvent implements Cancellable {
|
public class DGroupStartFloorEvent extends DGroupEvent implements Cancellable {
|
||||||
|
|
||||||
private static final HandlerList handlers = new HandlerList();
|
private static final HandlerList handlers = new HandlerList();
|
||||||
private boolean cancelled;
|
private boolean cancelled;
|
||||||
|
|
||||||
private GameWorld gameWorld;
|
private GameWorld gameWorld;
|
||||||
|
|
||||||
public DGroupJoinGameWorldEvent(DGroup dGroup, GameWorld gameWorld) {
|
public DGroupStartFloorEvent(DGroup dGroup, GameWorld gameWorld) {
|
||||||
super(dGroup);
|
super(dGroup);
|
||||||
this.gameWorld = gameWorld;
|
this.gameWorld = gameWorld;
|
||||||
}
|
}
|
@ -6,6 +6,7 @@ import io.github.dre2n.dungeonsxl.dungeon.DLootInventory;
|
|||||||
import io.github.dre2n.dungeonsxl.dungeon.EditWorld;
|
import io.github.dre2n.dungeonsxl.dungeon.EditWorld;
|
||||||
import io.github.dre2n.dungeonsxl.dungeon.game.GameChest;
|
import io.github.dre2n.dungeonsxl.dungeon.game.GameChest;
|
||||||
import io.github.dre2n.dungeonsxl.dungeon.game.GameWorld;
|
import io.github.dre2n.dungeonsxl.dungeon.game.GameWorld;
|
||||||
|
import io.github.dre2n.dungeonsxl.event.dgroup.DGroupCreateEvent;
|
||||||
import io.github.dre2n.dungeonsxl.file.DMessages;
|
import io.github.dre2n.dungeonsxl.file.DMessages;
|
||||||
import io.github.dre2n.dungeonsxl.file.DMessages.Messages;
|
import io.github.dre2n.dungeonsxl.file.DMessages.Messages;
|
||||||
import io.github.dre2n.dungeonsxl.global.DPortal;
|
import io.github.dre2n.dungeonsxl.global.DPortal;
|
||||||
@ -47,7 +48,7 @@ import org.bukkit.scheduler.BukkitRunnable;
|
|||||||
|
|
||||||
public class PlayerListener implements Listener {
|
public class PlayerListener implements Listener {
|
||||||
|
|
||||||
DungeonsXL plugin = DungeonsXL.getPlugin();
|
static DungeonsXL plugin = DungeonsXL.getPlugin();
|
||||||
DMessages dMessages = plugin.getDMessages();
|
DMessages dMessages = plugin.getDMessages();
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGH)
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
@ -464,6 +465,16 @@ public class PlayerListener implements Listener {
|
|||||||
|
|
||||||
DGroup dGroup = new DGroup(player, plugin.getMainConfig().getTutorialDungeon(), false);
|
DGroup dGroup = new DGroup(player, plugin.getMainConfig().getTutorialDungeon(), false);
|
||||||
|
|
||||||
|
DGroupCreateEvent createEvent = new DGroupCreateEvent(dGroup, player, DGroupCreateEvent.Cause.GROUP_SIGN);
|
||||||
|
|
||||||
|
if (createEvent.isCancelled()) {
|
||||||
|
dGroup = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dGroup == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (dGroup.getGameWorld() == null) {
|
if (dGroup.getGameWorld() == null) {
|
||||||
dGroup.setGameWorld(GameWorld.load(DGroup.getByPlayer(player).getMapName()));
|
dGroup.setGameWorld(GameWorld.load(DGroup.getByPlayer(player).getMapName()));
|
||||||
dGroup.getGameWorld().setTutorial(true);
|
dGroup.getGameWorld().setTutorial(true);
|
||||||
|
@ -3,6 +3,7 @@ package io.github.dre2n.dungeonsxl.player;
|
|||||||
import io.github.dre2n.dungeonsxl.DungeonsXL;
|
import io.github.dre2n.dungeonsxl.DungeonsXL;
|
||||||
import io.github.dre2n.dungeonsxl.dungeon.Dungeon;
|
import io.github.dre2n.dungeonsxl.dungeon.Dungeon;
|
||||||
import io.github.dre2n.dungeonsxl.dungeon.game.GameWorld;
|
import io.github.dre2n.dungeonsxl.dungeon.game.GameWorld;
|
||||||
|
import io.github.dre2n.dungeonsxl.event.dgroup.DGroupStartFloorEvent;
|
||||||
import io.github.dre2n.dungeonsxl.file.DMessages.Messages;
|
import io.github.dre2n.dungeonsxl.file.DMessages.Messages;
|
||||||
import io.github.dre2n.dungeonsxl.global.GroupSign;
|
import io.github.dre2n.dungeonsxl.global.GroupSign;
|
||||||
import io.github.dre2n.dungeonsxl.requirement.Requirement;
|
import io.github.dre2n.dungeonsxl.requirement.Requirement;
|
||||||
@ -239,6 +240,12 @@ public class DGroup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void startGame() {
|
public void startGame() {
|
||||||
|
DGroupStartFloorEvent event = new DGroupStartFloorEvent(this, gameWorld);
|
||||||
|
|
||||||
|
if (event.isCancelled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
playing = true;
|
playing = true;
|
||||||
gameWorld.startGame();
|
gameWorld.startGame();
|
||||||
floorCount++;
|
floorCount++;
|
||||||
|
@ -6,6 +6,8 @@ import io.github.dre2n.dungeonsxl.dungeon.WorldConfig;
|
|||||||
import io.github.dre2n.dungeonsxl.dungeon.DLootInventory;
|
import io.github.dre2n.dungeonsxl.dungeon.DLootInventory;
|
||||||
import io.github.dre2n.dungeonsxl.dungeon.EditWorld;
|
import io.github.dre2n.dungeonsxl.dungeon.EditWorld;
|
||||||
import io.github.dre2n.dungeonsxl.dungeon.game.GameWorld;
|
import io.github.dre2n.dungeonsxl.dungeon.game.GameWorld;
|
||||||
|
import io.github.dre2n.dungeonsxl.event.dgroup.DGroupFinishDungeonEvent;
|
||||||
|
import io.github.dre2n.dungeonsxl.event.dgroup.DGroupFinishFloorEvent;
|
||||||
import io.github.dre2n.dungeonsxl.file.DMessages;
|
import io.github.dre2n.dungeonsxl.file.DMessages;
|
||||||
import io.github.dre2n.dungeonsxl.file.DMessages.Messages;
|
import io.github.dre2n.dungeonsxl.file.DMessages.Messages;
|
||||||
import io.github.dre2n.dungeonsxl.reward.Reward;
|
import io.github.dre2n.dungeonsxl.reward.Reward;
|
||||||
@ -306,6 +308,13 @@ public class DPlayer {
|
|||||||
} else if (specifiedFloor != null) {
|
} else if (specifiedFloor != null) {
|
||||||
newFloor = specifiedFloor;
|
newFloor = specifiedFloor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DGroupFinishFloorEvent event = new DGroupFinishFloorEvent(dGroup, dGroup.getGameWorld(), newFloor);
|
||||||
|
|
||||||
|
if (event.isCancelled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
dGroup.removeUnplayedFloor(dGroup.getMapName());
|
dGroup.removeUnplayedFloor(dGroup.getMapName());
|
||||||
dGroup.setMapName(newFloor);
|
dGroup.setMapName(newFloor);
|
||||||
GameWorld gameWorld = GameWorld.load(newFloor);
|
GameWorld gameWorld = GameWorld.load(newFloor);
|
||||||
@ -342,6 +351,12 @@ public class DPlayer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DGroupFinishDungeonEvent event = new DGroupFinishDungeonEvent(dGroup);
|
||||||
|
|
||||||
|
if (event.isCancelled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (Player player : dGroup.getPlayers()) {
|
for (Player player : dGroup.getPlayers()) {
|
||||||
DPlayer dPlayer = getByPlayer(player);
|
DPlayer dPlayer = getByPlayer(player);
|
||||||
dPlayer.leave();
|
dPlayer.leave();
|
||||||
|
Loading…
Reference in New Issue
Block a user