Skip to content

Commit

Permalink
Merge branch 'master' into PM1E
Browse files Browse the repository at this point in the history
  • Loading branch information
lt-name committed Aug 9, 2020
2 parents 0d07571 + 13d5f5a commit 8843292
Show file tree
Hide file tree
Showing 10 changed files with 72 additions and 58 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>cn.lanink.cn</groupId>
<artifactId>BlockHunt</artifactId>
<version>0.0.3</version>
<version>0.0.4</version>

<licenses>
<license>
Expand Down
35 changes: 29 additions & 6 deletions src/main/java/cn/lanink/blockhunt/BlockHunt.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ public class BlockHunt extends PluginBase {
private MetricsLite metricsLite;
private List<String> victoryCmd;
private List<String> defeatCmd;
private boolean hasTips = false;

public static BlockHunt getInstance() {
return BLOCK_HUNT;
Expand Down Expand Up @@ -78,7 +79,9 @@ public void onLoad() {
}
//默认皮肤
this.defaultSkin.setTrusted(true);
this.defaultSkin.setSkinResourcePatch(Skin.GEOMETRY_CUSTOM);
if ("".equals(this.defaultSkin.getSkinResourcePatch().trim())) {
this.defaultSkin.setSkinResourcePatch(Skin.GEOMETRY_CUSTOM);
}
BufferedImage skinData = null;
try {
skinData = ImageIO.read(this.getResource("skin.png"));
Expand All @@ -104,23 +107,39 @@ public void onEnable() {
//加载计分板
try {
Class.forName("de.theamychan.scoreboard.ScoreboardPlugin");
if (getServer().getPluginManager().getPlugin("ScoreboardPlugin").isDisabled()) {
throw new Exception("Not Loaded");
}
this.scoreboard = new ScoreboardDe();
} catch (ClassNotFoundException e1) {
} catch (Exception e1) {
try {
Class.forName("gt.creeperface.nukkit.scoreboardapi.ScoreboardAPI");
if (getServer().getPluginManager().getPlugin("ScoreboardAPI").isDisabled()) {
throw new Exception("Not Loaded");
}
this.scoreboard = new ScoreboardGt();
} catch (ClassNotFoundException e) {
} catch (Exception e) {
getLogger().error(this.getLanguage(null).scoreboardAPINotFound);
getServer().getPluginManager().disablePlugin(this);
return;
}
}
//检查Tips
try {
Class.forName("tip.Main");
if (getServer().getPluginManager().getPlugin("Tips").isDisabled()) {
throw new Exception("Not Loaded");
}
this.hasTips = true;
} catch (Exception ignored) {

}
this.cmdUser = this.config.getString("cmdUser", "blockhunt");
this.cmdAdmin = this.config.getString("cmdAdmin", "blockhuntadmin");
getServer().getCommandMap().register("", new UserCommand(this.cmdUser));
getServer().getCommandMap().register("", new AdminCommand(this.cmdAdmin));
getServer().getPluginManager().registerEvents(new PlayerGameListener(this), this);
getServer().getPluginManager().registerEvents(new PlayerJoinAndQuit(), this);
getServer().getPluginManager().registerEvents(new PlayerJoinAndQuit(this), this);
getServer().getPluginManager().registerEvents(new RoomLevelProtection(), this);
getServer().getPluginManager().registerEvents(new GuiListener(this), this);
this.loadRooms();
Expand All @@ -137,6 +156,10 @@ public Config getConfig() {
return this.config;
}

public boolean isHasTips() {
return this.hasTips;
}

public List<String> getVictoryCmd() {
return this.victoryCmd;
}
Expand Down Expand Up @@ -229,10 +252,10 @@ private void loadRooms() {
Config config = getRoomConfig(fileName[0]);
if (config.getInt("waitTime", 0) == 0 ||
config.getInt("gameTime", 0) == 0 ||
config.getString("waitSpawn", "").trim().equals("") ||
"".equals(config.getString("waitSpawn", "").trim()) ||
config.getStringList("randomSpawn").size() == 0 ||
config.getStringList("blocks").size() == 0 ||
config.getString("world", "").trim().equals("")) {
"".equals(config.getString("world", "").trim())) {
getLogger().warning(this.getLanguage(null).roomLoadedFailureByConfig.replace("%name%", fileName[0]));
continue;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public boolean execute(CommandSender sender, String label, String[] args) {
Player player = (Player) sender;
for (RoomBase room : this.blockHunt.getRooms().values()) {
if (room.isPlaying(player)) {
room.quitRoom(player, true);
room.quitRoom(player);
sender.sendMessage(this.blockHunt.getLanguage(sender).quitRoom);
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ public void onPlayerInteract(PlayerInteractEvent event) {
if (room.getStatus() == 1) {
CompoundTag tag = event.getItem() != null ? event.getItem().getNamedTag() : null;
if (tag != null && tag.getBoolean("isBlockHuntItem") && tag.getInt("BlockHuntType") == 10) {
room.quitRoom(player, true);
room.quitRoom(player);
event.setCancelled(true);
}
}
Expand Down
25 changes: 16 additions & 9 deletions src/main/java/cn/lanink/blockhunt/listener/PlayerJoinAndQuit.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,12 @@
*/
public class PlayerJoinAndQuit implements Listener {

private final BlockHunt blockHunt;

public PlayerJoinAndQuit(BlockHunt blockHunt) {
this.blockHunt = blockHunt;
}

@EventHandler
public void onPlayerLogin(PlayerPreLoginEvent e) {
String lang = e.getPlayer().getLoginChainData().getLanguageCode();
Expand All @@ -34,20 +40,20 @@ public void onPlayerLogin(PlayerPreLoginEvent e) {
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
if (player != null && BlockHunt.getInstance().getRooms().containsKey(player.getLevel().getName())) {
BlockHunt.getInstance().getServer().getScheduler().scheduleDelayedTask(BlockHunt.getInstance(), new Task() {
if (player != null && this.blockHunt.getRooms().containsKey(player.getLevel().getName())) {
Server.getInstance().getScheduler().scheduleDelayedTask(this.blockHunt, new Task() {
@Override
public void onRun(int i) {
if (player.isOnline()) {
Tools.rePlayerState(player ,false);
if (Server.getInstance().getPluginManager().getPlugin("Tips") != null) {
if (blockHunt.isHasTips()) {
Tips.removeTipsConfig(player.getLevel().getName(), player);
}
SavePlayerInventory.restore(player);
player.teleport(Server.getInstance().getDefaultLevel().getSafeSpawn());
}
}
}, 10);
}, 1);
}
}

Expand All @@ -59,10 +65,11 @@ public void onPlayerQuit(PlayerQuitEvent event) {
}
for (RoomBase room : BlockHunt.getInstance().getRooms().values()) {
if (room.isPlaying(player)) {
room.quitRoom(player, false);
room.quitRoom(player);
break;
}
}
BlockHunt.getInstance().getPlayerLanguageHashMap().remove(player);
this.blockHunt.getPlayerLanguageHashMap().remove(player);
GuiCreate.UI_CACHE.remove(player);
}

Expand All @@ -73,14 +80,14 @@ public void onPlayerTp(PlayerTeleportEvent event) {
String toLevel = event.getTo().getLevel()== null ? null : event.getTo().getLevel().getName();
if (player == null || fromLevel == null || toLevel == null) return;
if (!fromLevel.equals(toLevel)) {
LinkedHashMap<String, RoomBase> room = BlockHunt.getInstance().getRooms();
LinkedHashMap<String, RoomBase> room = this.blockHunt.getRooms();
if (room.containsKey(fromLevel) && room.get(fromLevel).isPlaying(player)) {
event.setCancelled(true);
player.sendMessage(BlockHunt.getInstance().getLanguage(player).tpQuitRoomLevel);
player.sendMessage(this.blockHunt.getLanguage(player).tpQuitRoomLevel);
}else if (!player.isOp() && room.containsKey(toLevel) &&
!room.get(toLevel).isPlaying(player)) {
event.setCancelled(true);
player.sendMessage(BlockHunt.getInstance().getLanguage(player).tpJoinRoomLevel);
player.sendMessage(this.blockHunt.getLanguage(player).tpJoinRoomLevel);
}
}
}
Expand Down
12 changes: 1 addition & 11 deletions src/main/java/cn/lanink/blockhunt/room/RoomBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -128,17 +128,7 @@ public int getStatus() {
*
* @param player 玩家
*/
public void quitRoom(Player player) {
this.quitRoom(player, true);
}

/**
* 退出房间
*
* @param player 玩家
* @param online 是否在线
*/
public abstract void quitRoom(Player player, boolean online);
public abstract void quitRoom(Player player);

/**
* 记录在游戏内的玩家
Expand Down
37 changes: 13 additions & 24 deletions src/main/java/cn/lanink/blockhunt/room/RoomClassicMode.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,13 @@ public synchronized void joinRoom(Player player) {
SavePlayerInventory.save(player);
player.getInventory().setItem(8, Tools.getBlockHuntItem(10, player));
if (player.teleport(this.getWaitSpawn())) {
if (Server.getInstance().getPluginManager().getPlugins().containsKey("Tips")) {
if (this.blockHunt.isHasTips()) {
Tips.closeTipsShow(this.level.getName(), player);
}
player.sendMessage(this.blockHunt.getLanguage(player).joinRoom
.replace("%name%", this.level.getName()));
}else {
this.quitRoom(player, true);
this.quitRoom(player);
}
}
}
Expand All @@ -78,30 +78,18 @@ public synchronized void joinRoom(Player player) {
*/
@Override
public synchronized void quitRoom(Player player) {
this.quitRoom(player, true);
}

/**
* 退出房间
*
* @param player 玩家
* @param online 是否在线
*/
@Override
public synchronized void quitRoom(Player player, boolean online) {
if (this.isPlaying(player)) {
this.players.remove(player);
}
if (Server.getInstance().getPluginManager().getPlugins().containsKey("Tips")) {
if (this.blockHunt.isHasTips()) {
Tips.removeTipsConfig(this.level.getName(), player);
}
if (online) {
this.players.keySet().forEach(player::showPlayer);
this.blockHunt.getScoreboard().closeScoreboard(player);
player.teleport(Server.getInstance().getDefaultLevel().getSafeSpawn());
Tools.rePlayerState(player, false);
SavePlayerInventory.restore(player);
}
this.players.keySet().forEach(player::showPlayer);
this.players.keySet().forEach(p -> p.showPlayer(player));
this.blockHunt.getScoreboard().closeScoreboard(player);
player.teleport(Server.getInstance().getDefaultLevel().getSafeSpawn());
Tools.rePlayerState(player, false);
SavePlayerInventory.restore(player);
this.players.keySet().forEach(p -> p.showPlayer(player));
}

Expand All @@ -114,14 +102,14 @@ public synchronized void gameStart() {
this.setStatus(2);
Tools.cleanEntity(this.getLevel(), true);
this.assignIdentity();
int x=0;
int x = 0;
for (Player player : this.getPlayers().keySet()) {
if (this.getPlayers(player) == 2) continue;
if (x >= this.getRandomSpawn().size()) {
x = 0;
}
x++;
player.teleport(this.getRandomSpawn().get(x));
x++;
player.setScale(0.5F);
String[] s = this.camouflageBlocks.get(new Random().nextInt(this.camouflageBlocks.size())).split(":");
Integer[] integers = new Integer[2];
Expand Down Expand Up @@ -259,6 +247,7 @@ public void onRun(int i) {
x++;
break;
case 2:
case 12:
hunters = true;
break;
}
Expand Down Expand Up @@ -423,7 +412,7 @@ protected void playerCorpseSpawn(Player player) {
default:
skin = this.blockHunt.getDefaultSkin();
}
if (skin.getSkinResourcePatch().trim().equals("")) {
if ("".equals(skin.getSkinResourcePatch().trim())) {
skin.setSkinResourcePatch(Skin.GEOMETRY_CUSTOM);
}
CompoundTag nbt = EntityPlayerCorpse.getDefaultNBT(player);
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/cn/lanink/blockhunt/tasks/VictoryTask.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,10 @@ public void onRun(int i) {
this.victoryTime--;
for (Map.Entry<Player, Integer> entry : room.getPlayers().entrySet()) {
if (entry.getValue() != 0) {
if (this.victory == 1 && entry.getValue() == 3) {
continue;
if (this.victory == 1 && entry.getValue() == 1 ||
this.victory == 2 && (entry.getValue() == 2 || entry.getValue() == 12)) {
Tools.spawnFirework(entry.getKey());
}
Tools.spawnFirework(entry.getKey());
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ languageMap:
zh_TW: "zh_CN"
zh_SG: "zh_CN"
en: "en_US"
en-GB: "en_US"
en_GB: "en_US"
cmdUser: "blockhunt"
cmdAdmin: "blockhuntadmin"
victoryCmd:
Expand Down
7 changes: 6 additions & 1 deletion src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
name: BlockHunt
main: cn.lanink.blockhunt.BlockHunt
version: "0.0.3"
version: "0.0.4"
api: ["1.0.9"]
load: POSTWORLD
author: "LT_Name"
softdepend:
- "ScoreboardPlugin"
- "ScoreboardAPI"
- "Tips"
loadbefore:
- "ScoreboardPlugin"
- "ScoreboardAPI"
- "Tips"

permissions:
blockhunt.command.user:
Expand Down

0 comments on commit 8843292

Please sign in to comment.