mirror of
https://e.coding.net/circlecloud/SimpleEssential.git
synced 2025-01-06 12:18:56 +00:00
add Inventory Control...
Signed-off-by: j502647092 <jtb1@163.com>
This commit is contained in:
parent
66d5f92092
commit
7aa79c220c
@ -30,6 +30,8 @@ import cn.citycraft.SimpleEssential.command.CommandTphere;
|
|||||||
import cn.citycraft.SimpleEssential.command.CommandWorkBench;
|
import cn.citycraft.SimpleEssential.command.CommandWorkBench;
|
||||||
import cn.citycraft.SimpleEssential.config.Config;
|
import cn.citycraft.SimpleEssential.config.Config;
|
||||||
import cn.citycraft.SimpleEssential.config.Language;
|
import cn.citycraft.SimpleEssential.config.Language;
|
||||||
|
import cn.citycraft.SimpleEssential.inventory.InventoryControl;
|
||||||
|
import cn.citycraft.SimpleEssential.listen.PlayerInventoryViewListen;
|
||||||
import cn.citycraft.SimpleEssential.listen.PlayerLocationListen;
|
import cn.citycraft.SimpleEssential.listen.PlayerLocationListen;
|
||||||
import cn.citycraft.SimpleEssential.teleport.TeleportControl;
|
import cn.citycraft.SimpleEssential.teleport.TeleportControl;
|
||||||
import cn.citycraft.SimpleEssential.utils.VersionChecker;
|
import cn.citycraft.SimpleEssential.utils.VersionChecker;
|
||||||
@ -45,11 +47,22 @@ public class SimpleEssential extends JavaPlugin {
|
|||||||
* 传送控制
|
* 传送控制
|
||||||
*/
|
*/
|
||||||
public TeleportControl tpcontrol;
|
public TeleportControl tpcontrol;
|
||||||
|
/**
|
||||||
|
* 容器界面控制
|
||||||
|
*/
|
||||||
|
public InventoryControl invcontrol;
|
||||||
/**
|
/**
|
||||||
* 命令监听列表
|
* 命令监听列表
|
||||||
*/
|
*/
|
||||||
private List<BaseCommand> commandlist;
|
private List<BaseCommand> commandlist;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private void initInventoryControl() {
|
||||||
|
invcontrol = new InventoryControl(this);
|
||||||
|
}
|
||||||
|
|
||||||
private void initTeleportControl() {
|
private void initTeleportControl() {
|
||||||
int tpdelay = Config.getInstance().getInt("Teleport.delay", 3);
|
int tpdelay = Config.getInstance().getInt("Teleport.delay", 3);
|
||||||
String tpcontorlname = Config.getMessage("Teleport.name");
|
String tpcontorlname = Config.getMessage("Teleport.name");
|
||||||
@ -88,6 +101,7 @@ public class SimpleEssential extends JavaPlugin {
|
|||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
this.initTeleportControl();
|
this.initTeleportControl();
|
||||||
|
this.initInventoryControl();
|
||||||
this.registerCommands();
|
this.registerCommands();
|
||||||
this.registerEvents();
|
this.registerEvents();
|
||||||
new VersionChecker(this);
|
new VersionChecker(this);
|
||||||
@ -145,5 +159,6 @@ public class SimpleEssential extends JavaPlugin {
|
|||||||
*/
|
*/
|
||||||
private void registerEvents() {
|
private void registerEvents() {
|
||||||
registerEvent(new PlayerLocationListen(this));
|
registerEvent(new PlayerLocationListen(this));
|
||||||
|
registerEvent(new PlayerInventoryViewListen(this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,6 @@ package cn.citycraft.SimpleEssential.command;
|
|||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.command.CommandException;
|
import org.bukkit.command.CommandException;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -26,27 +25,20 @@ public class CommandEnchantBench extends BaseCommand {
|
|||||||
this.plugin = main;
|
this.plugin = main;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void clearEnchatRange(Location loc) {
|
|
||||||
setRange(loc, Material.AIR);
|
|
||||||
loc.getBlock().setType(Material.AIR);
|
|
||||||
};
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(CommandSender sender, String label, String[] args) throws CommandException {
|
public void execute(CommandSender sender, String label, String[] args) throws CommandException {
|
||||||
Player p = (Player) sender;
|
Player p = (Player) sender;
|
||||||
final Location loc = p.getLocation();
|
final Location loc = p.getLocation();
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 0:
|
case 0:
|
||||||
setEnchatRange(loc);
|
loc.setY(250);
|
||||||
p.openEnchanting(loc.clone().add(0, 255, 0), true);
|
|
||||||
Bukkit.getScheduler().runTaskLater(plugin, new Runnable() {
|
|
||||||
|
|
||||||
|
Bukkit.getScheduler().runTaskLater(plugin, new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
clearEnchatRange(loc);
|
|
||||||
}
|
|
||||||
|
|
||||||
}, 200);
|
}
|
||||||
|
}, 600);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
switch (args[0]) {
|
switch (args[0]) {
|
||||||
@ -77,45 +69,4 @@ public class CommandEnchantBench extends BaseCommand {
|
|||||||
public boolean isOnlyPlayerExecutable() {
|
public boolean isOnlyPlayerExecutable() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setBlock(Location loc, int x, int y, int z, Material ma) {
|
|
||||||
new Location(loc.getWorld(), loc.getBlockX() + x, loc.getBlockY() + y + 255, loc.getBlockZ() + z).getBlock().setType(ma);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void setEnchatRange(Location loc) {
|
|
||||||
setRange(loc, Material.BOOKSHELF);
|
|
||||||
loc.getBlock().setType(Material.ENCHANTMENT_TABLE);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void setRange(Location loc, Material ma) {
|
|
||||||
for (int i = -2; i < 3; i++) {
|
|
||||||
for (int j = 0; j < 3; j++) {
|
|
||||||
for (int k = -2; k < 3; k++) {
|
|
||||||
if (i != 0 && j != 0) {
|
|
||||||
setBlock(loc, i, j, k, ma);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// setBlock(loc, -2, 0, -2, ma);
|
|
||||||
// setBlock(loc, -2, 1, -1, ma);
|
|
||||||
// setBlock(loc, -2, 0, 1, ma);
|
|
||||||
// setBlock(loc, -1, 0, 2, ma);
|
|
||||||
//
|
|
||||||
// setBlock(loc, 2, 0, 2, ma);
|
|
||||||
// setBlock(loc, 2, 1, 2, ma);
|
|
||||||
// setBlock(loc, 1, 0, 2, ma);
|
|
||||||
// setBlock(loc, 2, 0, 1, ma);
|
|
||||||
//
|
|
||||||
// setBlock(loc, -2, 0, -2, ma);
|
|
||||||
// setBlock(loc, -2, 1, -2, ma);
|
|
||||||
// setBlock(loc, -1, 0, -2, ma);
|
|
||||||
// setBlock(loc, -2, 0, -1, ma);
|
|
||||||
//
|
|
||||||
// setBlock(loc, 2, 0, -2, ma);
|
|
||||||
// setBlock(loc, 2, 1, -2, ma);
|
|
||||||
// setBlock(loc, 1, 0, -2, ma);
|
|
||||||
// setBlock(loc, 2, 0, -1, ma);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,66 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package cn.citycraft.SimpleEssential.inventory;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import cn.citycraft.SimpleEssential.SimpleEssential;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author 蒋天蓓
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class InventoryControl {
|
||||||
|
SimpleEssential plugin;
|
||||||
|
HashMap<String, Location> enchantbench = new HashMap<String, Location>();
|
||||||
|
|
||||||
|
public InventoryControl(SimpleEssential main) {
|
||||||
|
this.plugin = main;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clearEnchatRange(Player player) {
|
||||||
|
if (!isOpen(player))
|
||||||
|
return;
|
||||||
|
Location loc = enchantbench.get(player.getName());
|
||||||
|
setRange(loc, Material.AIR);
|
||||||
|
loc.getBlock().setType(Material.AIR);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isOpen(Player player) {
|
||||||
|
return enchantbench.containsKey(player.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void open(Player player) {
|
||||||
|
Location loc = player.getLocation();
|
||||||
|
loc.setY(-5);
|
||||||
|
setEnchatRange(loc);
|
||||||
|
player.openEnchanting(loc, true);
|
||||||
|
enchantbench.put(player.getName(), loc);
|
||||||
|
};
|
||||||
|
|
||||||
|
protected void setBlock(Location loc, int x, int y, int z, Material ma) {
|
||||||
|
new Location(loc.getWorld(), loc.getBlockX() + x, loc.getBlockY() + y, loc.getBlockZ() + z).getBlock().setType(ma);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setEnchatRange(Location loc) {
|
||||||
|
setRange(loc, Material.BOOKSHELF);
|
||||||
|
loc.getBlock().setType(Material.ENCHANTMENT_TABLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setRange(Location loc, Material ma) {
|
||||||
|
for (int i = -2; i < 3; i++) {
|
||||||
|
for (int j = 0; j < 2; j++) {
|
||||||
|
for (int k = -2; k < 3; k++) {
|
||||||
|
if (!((i * k == 0) || (i * k * i * k == 1))) {
|
||||||
|
setBlock(loc, i, j, k, ma);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package cn.citycraft.SimpleEssential.listen;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryType;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
|
||||||
|
import cn.citycraft.SimpleEssential.SimpleEssential;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 玩家随身附魔台记录监听
|
||||||
|
*
|
||||||
|
* @author 蒋天蓓 2015年8月12日下午8:19:33
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class PlayerInventoryViewListen implements Listener {
|
||||||
|
SimpleEssential plugin;
|
||||||
|
|
||||||
|
public PlayerInventoryViewListen(SimpleEssential main) {
|
||||||
|
this.plugin = main;
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
|
public void onInventoryClose(InventoryCloseEvent e) {
|
||||||
|
if (!(e.getPlayer() instanceof Player))
|
||||||
|
return;
|
||||||
|
Player player = (Player) e.getPlayer();
|
||||||
|
Inventory inv = e.getInventory();
|
||||||
|
if (inv.getType() == InventoryType.ENCHANTING) {
|
||||||
|
plugin.invcontrol.clearEnchatRange(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user