Fix testing / rewards & access for invited players
This commit is contained in:
parent
475abcc304
commit
5df7c41720
|
@ -29,7 +29,7 @@ import de.erethon.dungeonsxl.player.DGroup;
|
|||
import de.erethon.dungeonsxl.player.DInstancePlayer;
|
||||
import de.erethon.dungeonsxl.player.DPermission;
|
||||
import de.erethon.dungeonsxl.util.commons.chat.MessageUtil;
|
||||
import org.bukkit.Bukkit;
|
||||
import de.erethon.dungeonsxl.util.commons.config.CommonMessage;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
|
@ -44,7 +44,6 @@ public class TestCommand extends DCommand {
|
|||
setMinArgs(1);
|
||||
setMaxArgs(1);
|
||||
setHelp(DMessage.CMD_TEST_HELP.getMessage());
|
||||
setPermission(DPermission.TEST.getNode());
|
||||
setPlayerCommand(true);
|
||||
setConsoleCommand(false);
|
||||
}
|
||||
|
@ -64,6 +63,11 @@ public class TestCommand extends DCommand {
|
|||
return;
|
||||
}
|
||||
|
||||
if (!dungeon.getMap().isInvitedPlayer(player) && !DPermission.hasPermission(player, DPermission.TEST)) {
|
||||
MessageUtil.sendMessage(player, CommonMessage.CMD_NO_PERMISSION.getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
DGroup group = (DGroup) dPlayer.getGroup();
|
||||
if (group != null && group.isPlaying()) {
|
||||
MessageUtil.sendMessage(player, DMessage.ERROR_LEAVE_GROUP.getMessage());
|
||||
|
|
|
@ -54,7 +54,7 @@ public class DGame implements Game {
|
|||
private int floorCount;
|
||||
private List<PlayerGroup> groups = new ArrayList<>();
|
||||
private boolean tutorial;
|
||||
private boolean test;
|
||||
private boolean rewards = true;
|
||||
private boolean started;
|
||||
private int waveCount;
|
||||
private Map<String, Integer> gameKills = new HashMap<>();
|
||||
|
@ -70,7 +70,6 @@ public class DGame implements Game {
|
|||
}
|
||||
tutorial = false;
|
||||
started = false;
|
||||
|
||||
}
|
||||
|
||||
public DGame(DungeonsXL plugin, Dungeon dungeon, PlayerGroup group) {
|
||||
|
@ -211,12 +210,12 @@ public class DGame implements Game {
|
|||
|
||||
@Override
|
||||
public boolean hasRewards() {
|
||||
return test;
|
||||
return rewards;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRewards(boolean enabled) {
|
||||
test = enabled;
|
||||
rewards = enabled;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -397,31 +397,8 @@ public class DGamePlayer extends DInstancePlayer implements GamePlayer {
|
|||
}
|
||||
|
||||
if (getGame() != null && finished && getGame().hasRewards()) {
|
||||
List<Reward> rewards = new ArrayList<>(dGroup.getRewards());
|
||||
rewards.addAll(rules.getState(GameRule.REWARDS));
|
||||
GlobalPlayerRewardPayOutEvent globalPlayerPayOutRewardEvent = new GlobalPlayerRewardPayOutEvent(this, rewards);
|
||||
Bukkit.getPluginManager().callEvent(globalPlayerPayOutRewardEvent);
|
||||
if (!globalPlayerPayOutRewardEvent.isCancelled()) {
|
||||
giveLoot(getGroup().getDungeon(), globalPlayerPayOutRewardEvent.getRewards());
|
||||
}
|
||||
|
||||
getData().logTimeLastFinished(getGroup().getDungeonName());
|
||||
|
||||
// Tutorial Permissions
|
||||
if (getGame().isTutorial()) {
|
||||
getData().setFinishedTutorial(true);
|
||||
if (plugin.getPermissionProvider() != null && plugin.getPermissionProvider().hasGroupSupport()) {
|
||||
String endGroup = plugin.getMainConfig().getTutorialEndGroup();
|
||||
if (plugin.isGroupEnabled(endGroup)) {
|
||||
plugin.getPermissionProvider().playerAddGroup(getPlayer(), endGroup);
|
||||
}
|
||||
|
||||
String startGroup = plugin.getMainConfig().getTutorialStartGroup();
|
||||
if (plugin.isGroupEnabled(startGroup)) {
|
||||
plugin.getPermissionProvider().playerRemoveGroup(getPlayer(), startGroup);
|
||||
}
|
||||
}
|
||||
}
|
||||
plugin.log("Rewarding " + this);
|
||||
reward();
|
||||
}
|
||||
|
||||
if (getGroup() != null) {
|
||||
|
@ -471,6 +448,35 @@ public class DGamePlayer extends DInstancePlayer implements GamePlayer {
|
|||
}
|
||||
}
|
||||
|
||||
public void reward() {
|
||||
List<Reward> rewards = new ArrayList<>(dGroup.getRewards());
|
||||
rewards.addAll(getGame().getRules().getState(GameRule.REWARDS));
|
||||
GlobalPlayerRewardPayOutEvent globalPlayerPayOutRewardEvent = new GlobalPlayerRewardPayOutEvent(this, rewards);
|
||||
Bukkit.getPluginManager().callEvent(globalPlayerPayOutRewardEvent);
|
||||
if (!globalPlayerPayOutRewardEvent.isCancelled()) {
|
||||
giveLoot(getGroup().getDungeon(), globalPlayerPayOutRewardEvent.getRewards());
|
||||
}
|
||||
|
||||
getData().logTimeLastFinished(getGroup().getDungeonName());
|
||||
|
||||
// Tutorial Permissions
|
||||
if (!getGame().isTutorial()) {
|
||||
return;
|
||||
}
|
||||
getData().setFinishedTutorial(true);
|
||||
if (plugin.getPermissionProvider() != null && plugin.getPermissionProvider().hasGroupSupport()) {
|
||||
String endGroup = plugin.getMainConfig().getTutorialEndGroup();
|
||||
if (plugin.isGroupEnabled(endGroup)) {
|
||||
plugin.getPermissionProvider().playerAddGroup(getPlayer(), endGroup);
|
||||
}
|
||||
|
||||
String startGroup = plugin.getMainConfig().getTutorialStartGroup();
|
||||
if (plugin.isGroupEnabled(startGroup)) {
|
||||
plugin.getPermissionProvider().playerRemoveGroup(getPlayer(), startGroup);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void kill() {
|
||||
GroupPlayerKickEvent dPlayerKickEvent = new GroupPlayerKickEvent(getGroup(), this, GroupPlayerKickEvent.Cause.DEATH);
|
||||
|
@ -490,10 +496,6 @@ public class DGamePlayer extends DInstancePlayer implements GamePlayer {
|
|||
|
||||
@Override
|
||||
public boolean ready() {
|
||||
return ready(true);
|
||||
}
|
||||
|
||||
public boolean ready(boolean rewards) {
|
||||
if (dGroup == null) {
|
||||
return false;
|
||||
}
|
||||
|
@ -502,9 +504,8 @@ public class DGamePlayer extends DInstancePlayer implements GamePlayer {
|
|||
if (game == null) {
|
||||
game = new DGame(plugin, dGroup.getDungeon(), dGroup);
|
||||
}
|
||||
game.setRewards(rewards);
|
||||
|
||||
if (rewards && !checkRequirements(game.getDungeon())) {
|
||||
if (game.hasRewards() && !checkRequirements(game.getDungeon())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -387,8 +387,8 @@ public class DGlobalPlayer implements GlobalPlayer {
|
|||
return;
|
||||
}
|
||||
rewards.forEach(r -> r.giveTo(player.getPlayer()));
|
||||
if (getGroup() != null && getGroup().getDungeon() != null) {
|
||||
getData().logTimeLastLoot(getGroup().getDungeon().getName());
|
||||
if (dungeon != null) {
|
||||
getData().logTimeLastLoot(dungeon.getName());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue