-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
397a30a
commit 701e64f
Showing
36 changed files
with
2,764 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
level: "world" | ||
area.level: 1 | ||
pos: | ||
startX: 0 | ||
startY: 0 | ||
startZ: 0 | ||
endX: 0 | ||
endY: 0 | ||
endZ: 0 | ||
price: 1000.0 | ||
resetTime(s): 300 | ||
transfer: | ||
x: 0 | ||
y: 0 | ||
z: 0 | ||
transfer.money: 100.0 | ||
key: true | ||
message: "§a新手矿区\n\n 一切发家致富的开始?\n\n 主要物资:\n\n>> 石头\n\n>> 木头" | ||
subMessage: "一切的开始..." | ||
buttonImage: "" | ||
spawnBlock: | ||
1: 20 | ||
17: 20 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
# ___ _ | ||
# / _ \ _ __ ___ / \ _ __ ___ __ _ | ||
# | | | | '__/ _ \ / _ \ | '__/ _ \/ _` | | ||
# | |_| | | | __// ___ \| | | __/ (_| | | ||
# \___/|_| \___/_/ \_\_| \___|\__,_| | ||
# 设置后 矿区只在 固定的时间刷新 否则不限制 | ||
刷新矿区时间段: | ||
- "6:00 - 12:00" | ||
|
||
# 玩家进入矿区后 的一个提示 | ||
进入矿区是否提示: true | ||
|
||
# 玩家离开矿区后的提示 | ||
离开矿区是否提示: true | ||
|
||
# 可以设置不同的提示类型 | ||
# title: 大标题 | ||
# tip: 底部显示 (tip类型) | ||
# popup: 底部显示 (popup类型) | ||
# action: 底部显示 (actionbar类型) | ||
# boss boss血条显示 | ||
提示类型: title | ||
|
||
|
||
# 开启后 玩家需要购买才可以传送至矿区 | ||
是否开启玩家购买解锁: true | ||
|
||
# x秒后传送至矿区 (使用矿区GUI传送) | ||
传送时间: 5 | ||
|
||
# 是否显示传送粒子 | ||
是否显示粒子: true | ||
|
||
# 玩家传送矿区提示 | ||
玩家传送到矿区是否提示: true | ||
|
||
玩家传送到矿区提示: title | ||
# false 为只给玩家自身发消息 | ||
玩家传送矿区是否全服公告: false | ||
|
||
# 玩家解锁矿区发送公告 | ||
玩家解锁矿区是否公告: true | ||
|
||
附加: | ||
回城: | ||
传送时间: 5 | ||
是否显示粒子: true | ||
debuff: | ||
18: 5 | ||
15: 5 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
# 如果显示格式为title 则 sub-title 显示在 title下方 | ||
# 不是则显示在内容后方 | ||
area.lock: "关闭" | ||
area.unlock: "开启" | ||
join.area.title: "您已进入矿区: {name}" | ||
join.area.sub.title: "{sub}" | ||
quit.area.title: "您已离开矿区: {name}" | ||
quit.area.sub.title: "{sub}" | ||
kick.area.message: "由于矿区关闭 或 矿区刷新 为了您的安全 已将您传送至主城." | ||
tansfer.area.message: "正在传送至 {name} 矿区" | ||
tansfer.area.sub.message: "请等待 {s} 秒 在此期间请不要移动" | ||
transfer.area.cancel: "传送取消" | ||
transaction.area.scauss: "{player} 传送到了 {name} 矿区" | ||
buy.area.scauss: "{player} 解锁了 级别为 lv.{level} 的 {name}矿区" | ||
gui.area.lock: "未解锁" | ||
gui.area.unlock: "已解锁" | ||
gui.menu.title: "矿区系统" | ||
gui.menu.content: "" | ||
gui.menu.button: "lv.{level} {name} ({lock})\n 点击查看详情" | ||
gui.menu.sub.title: "矿区系统--{name} 矿区" | ||
gui.menu.sub.content: "矿区等级: lv, {level}\n\n矿区价值: {money}\n\n 矿区状态: {key}\n\n矿区简介:\n{message}" | ||
gui.menu.sub.buy: "花费 {money} 解锁" | ||
gui.menu.sub.unbuy: "传送至矿区" | ||
gui.menu.sub.back: "返回上一级" | ||
player.buy.area.error: "抱歉,,您的金钱不足 需要 {money} 当前: {mymoney} 还差 {math}" | ||
player.buy.area.success: "恭喜, 解锁矿区 {name} 成功" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
area: [] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
name: OreArea | ||
main: ore.area.AreaMainClass | ||
version: 1.0.0 | ||
api: | ||
- 1.0.9 | ||
author: 若水 | ||
load: POSTWORLD | ||
|
||
permissions: | ||
ore.area.spawn: | ||
description: "回城" | ||
default: true | ||
ore.area.kq: | ||
description: "矿区主命令" | ||
default: true | ||
ore.area.kq.pos: | ||
description: "选择坐标" | ||
default: op | ||
ore.area.kq.create: | ||
description: "创建矿区" | ||
default: op | ||
ore.area.kq.open: | ||
description: "开启矿区" | ||
default: op | ||
ore.area.kq.close: | ||
description: "关闭矿区" | ||
default: op | ||
ore.area.kq.transfer: | ||
description: "传送矿区" | ||
default: true | ||
ore.area.kq.setprice: | ||
description: "设置传送到一个矿区价格" | ||
default: op | ||
ore.area.kq.settransfer: | ||
description: "设置矿区传送点" | ||
default: op | ||
ore.area.kq.setmoney: | ||
description: "设置矿区解锁价格" | ||
default: op | ||
|
||
|
||
|
||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,243 @@ | ||
package ore.area; | ||
|
||
import cn.nukkit.Player; | ||
import cn.nukkit.Server; | ||
import cn.nukkit.command.Command; | ||
import cn.nukkit.command.CommandSender; | ||
import cn.nukkit.level.Position; | ||
import cn.nukkit.plugin.PluginBase; | ||
import cn.nukkit.utils.Config; | ||
import ore.area.commands.OreCommand; | ||
import ore.area.commands.SpawnCommand; | ||
import ore.area.utils.area.AreaClass; | ||
import ore.area.utils.loadMoney; | ||
import ore.area.utils.task.AreaLoadTask; | ||
import ore.area.windows.ListenerWindow; | ||
|
||
import java.io.File; | ||
import java.util.ArrayList; | ||
import java.util.LinkedHashMap; | ||
import java.util.LinkedList; | ||
import java.util.List; | ||
|
||
/** | ||
* @author 若水 | ||
*/ | ||
public class AreaMainClass extends PluginBase { | ||
|
||
private static final String PLAYER_NAME = "/Player"; | ||
private static final String AREA_NAME = "/Area"; | ||
private static final String LANGUAGE = "/language"; | ||
private static AreaMainClass instance; | ||
|
||
private loadMoney money; | ||
|
||
private LinkedHashMap<String,Config> playerConfig = new LinkedHashMap<>(); | ||
|
||
private static Config language; | ||
|
||
public LinkedHashMap<String, AreaClass> areas = new LinkedHashMap<>(); | ||
|
||
|
||
public LinkedHashMap<Player,AreaClass> clickArea = new LinkedHashMap<>(); | ||
|
||
public LinkedHashMap<String,String> canJoin = new LinkedHashMap<>(); | ||
|
||
|
||
public LinkedList<String> transfer = new LinkedList<>(); | ||
|
||
private LinkedList<String> timeLoad = new LinkedList<>(); | ||
|
||
|
||
|
||
public static LinkedHashMap<String, Integer > timer = new LinkedHashMap<>(); | ||
|
||
public LinkedHashMap<Player,LinkedList< Position>> pos = new LinkedHashMap<>(); | ||
|
||
|
||
|
||
@Override | ||
public void onEnable() { | ||
instance = this; | ||
saveDefaultConfig(); | ||
reloadConfig(); | ||
if(!new File(this.getDataFolder()+AREA_NAME).exists()){ | ||
if(!new File(this.getDataFolder()+AREA_NAME).mkdirs()){ | ||
this.getLogger().info("创建文件夹"+AREA_NAME+"失败...."); | ||
} | ||
} | ||
if(!new File(this.getDataFolder()+PLAYER_NAME).exists()){ | ||
if(!new File(this.getDataFolder()+PLAYER_NAME).mkdir()){ | ||
this.getLogger().info("创建文件夹"+PLAYER_NAME+"失败"); | ||
} | ||
} | ||
if(!new File(this.getDataFolder()+LANGUAGE).exists()){ | ||
this.saveResource("language.yml"); | ||
} | ||
|
||
|
||
language = new Config(this.getDataFolder()+LANGUAGE+".yml",Config.YAML); | ||
|
||
timeLoad.addAll(getConfig().getStringList("刷新矿区时间段")); | ||
|
||
getServer().getCommandMap().register("OreArea", new OreCommand(this)); | ||
getServer().getCommandMap().register("OreArea", new SpawnCommand("spawn")); | ||
this.getServer().getPluginManager().registerEvents(new ListenerWindow(),this); | ||
this.getServer().getPluginManager().registerEvents(new ListenerEvents(),this); | ||
money = new loadMoney(); | ||
readAllFiles(); | ||
readAllPlayer(); | ||
} | ||
|
||
|
||
public LinkedList<String> getTimeLoad() { | ||
return timeLoad; | ||
} | ||
|
||
public static String getLang(String lang) { | ||
return language.getString(lang); | ||
} | ||
|
||
public File getAreaFile(String name){ | ||
return new File(this.getDataFolder()+AREA_NAME+"/"+name+".yml"); | ||
} | ||
|
||
public loadMoney getMoney() { | ||
return money; | ||
} | ||
|
||
private File getPlayerFile(String name){ | ||
return new File(this.getDataFolder()+PLAYER_NAME+"/"+name+".yml"); | ||
} | ||
|
||
public static AreaMainClass getInstance() { | ||
return instance; | ||
} | ||
|
||
|
||
public Config getPlayerConfig(String name){ | ||
if(!playerConfig.containsKey(name)){ | ||
if(!getPlayerFile(name).exists()){ | ||
this.saveResource("player.yml",PLAYER_NAME+"/"+name+".yml",false); | ||
} | ||
playerConfig.put(name,new Config(getPlayerFile(name),Config.YAML)); | ||
} | ||
return playerConfig.get(name); | ||
} | ||
|
||
private void readAllPlayer(){ | ||
for(String name:getPlayerFiles()){ | ||
playerConfig.put(name, new Config(getPlayerFile(name),Config.YAML)); | ||
} | ||
} | ||
|
||
private void readAllFiles(){ | ||
for(String name:getAreaFiles()){ | ||
AreaClass areaClass = AreaClass.getClassByConfig(name,new Config(AreaMainClass.getInstance().getAreaFile(name),Config.YAML)); | ||
areas.put(name,areaClass); | ||
this.getServer().getScheduler().scheduleRepeatingTask(new AreaLoadTask(name),20); | ||
} | ||
} | ||
|
||
private String[] getPlayerFiles(){ | ||
return getDefaultFiles(PLAYER_NAME); | ||
} | ||
|
||
private String[] getDefaultFiles(String playerName) { | ||
List<String> names = new ArrayList<>(); | ||
File files = new File(this.getDataFolder()+ playerName); | ||
if(files.isDirectory()){ | ||
File[] filesArray = files.listFiles(); | ||
if(filesArray != null){ | ||
if(filesArray.length>0){ | ||
for(File file : filesArray){ | ||
names.add( file.getName().substring(0, file.getName().lastIndexOf("."))); | ||
} | ||
} | ||
} | ||
} | ||
return names.toArray(new String[0]); | ||
} | ||
|
||
private String[] getAreaFiles(){ | ||
return getDefaultFiles(AREA_NAME); | ||
} | ||
|
||
/** | ||
* 获取是否进入矿区提示 | ||
* */ | ||
boolean isSendJoinMessage(){ | ||
return getConfig().getBoolean("进入矿区是否提示"); | ||
} | ||
|
||
/** | ||
* 获取是否离开矿区提示 | ||
* */ | ||
boolean isSendQuitMessage(){ | ||
return getConfig().getBoolean("离开矿区是否提示"); | ||
} | ||
|
||
/** | ||
* 获取是否开启购买解锁 | ||
* */ | ||
public boolean isKeyCanOpen(){ | ||
return getConfig().getBoolean("是否开启玩家购买解锁"); | ||
} | ||
|
||
/** | ||
* 获取是否显示传送粒子 | ||
* */ | ||
boolean canShowTransfer(){ | ||
return getConfig().getBoolean("是否显示粒子"); | ||
} | ||
|
||
|
||
|
||
/** | ||
* 获取传送时间 | ||
* */ | ||
int getTransferTime(){ | ||
return getConfig().getInt("传送时间"); | ||
} | ||
|
||
/** | ||
* 获取玩家传送矿区是否提示 | ||
* */ | ||
public boolean canSendTransferMessage(){ | ||
return getConfig().getBoolean("玩家传送到矿区是否提示"); | ||
} | ||
|
||
/** | ||
* 获取玩家传送矿区是否全服公告 | ||
* */ | ||
public boolean canSendTransferBroadCastMessage(){ | ||
return getConfig().getBoolean("玩家传送矿区是否全服公告"); | ||
} | ||
|
||
|
||
/** | ||
* 获取解锁矿区是否公告 | ||
* */ | ||
boolean canSendkeyArea(){ | ||
return getConfig().getBoolean("玩家解锁矿区是否公告"); | ||
} | ||
|
||
|
||
|
||
|
||
/** | ||
* 获取显示类型 | ||
* */ | ||
String getMessageType(){ | ||
return getConfig().getString("提示类型").toLowerCase(); | ||
} | ||
|
||
/** | ||
* 获取显示类型 | ||
* */ | ||
public String getTransferMessageType(){ | ||
return getConfig().getString("玩家传送到矿区提示").toLowerCase(); | ||
} | ||
|
||
|
||
} |
Oops, something went wrong.