测试版
This commit is contained in:
commit
f23d4d4ae1
40
.gitignore
vendored
Normal file
40
.gitignore
vendored
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
target/
|
||||||
|
!.mvn/wrapper/maven-wrapper.jar
|
||||||
|
!**/src/main/**/target/
|
||||||
|
!**/src/test/**/target/
|
||||||
|
|
||||||
|
### IntelliJ IDEA ###
|
||||||
|
.idea/modules.xml
|
||||||
|
.idea/jarRepositories.xml
|
||||||
|
.idea/compiler.xml
|
||||||
|
.idea/libraries/
|
||||||
|
*.iws
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
|
||||||
|
### Eclipse ###
|
||||||
|
.apt_generated
|
||||||
|
.classpath
|
||||||
|
.factorypath
|
||||||
|
.project
|
||||||
|
.settings
|
||||||
|
.springBeans
|
||||||
|
.sts4-cache
|
||||||
|
|
||||||
|
### NetBeans ###
|
||||||
|
/nbproject/private/
|
||||||
|
/nbbuild/
|
||||||
|
/dist/
|
||||||
|
/nbdist/
|
||||||
|
/.nb-gradle/
|
||||||
|
build/
|
||||||
|
!**/src/main/**/build/
|
||||||
|
!**/src/test/**/build/
|
||||||
|
|
||||||
|
### VS Code ###
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
### Mac OS ###
|
||||||
|
.DS_Store
|
||||||
|
/.idea/
|
||||||
|
/out/
|
32
pom.xml
Normal file
32
pom.xml
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>org.example</groupId>
|
||||||
|
<artifactId>DemonChestPreview</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>8</maven.compiler.source>
|
||||||
|
<maven.compiler.target>8</maven.compiler.target>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>public-rpg</id>
|
||||||
|
<url>https://repo.aurora-pixels.com/repository/public-rpg/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.spigotmc</groupId>
|
||||||
|
<artifactId>spigot-api</artifactId>
|
||||||
|
<version>1.12.2</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
</project>
|
|
@ -0,0 +1,79 @@
|
||||||
|
package me.Demon.DemonChestPreview.Command;
|
||||||
|
|
||||||
|
import me.Demon.DemonChestPreview.Main;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabExecutor;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ChestCommand implements CommandExecutor, TabExecutor {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
Player p = (Player) sender;
|
||||||
|
if (args.length == 1) {
|
||||||
|
if (args[0].equalsIgnoreCase("add") && sender.isOp()) {
|
||||||
|
Block targetBlock = p.getTargetBlock(null, 5);
|
||||||
|
if (targetBlock != null && targetBlock.getType() == Material.CHEST) {
|
||||||
|
String loc = getLoc(targetBlock);
|
||||||
|
if (!Main.previewList.contains(loc)) {
|
||||||
|
List<String> list = Main.previewList;
|
||||||
|
list.add(loc);
|
||||||
|
Main.plugin.getConfig().set("ChestLoc", list);
|
||||||
|
Main.plugin.saveConfig();
|
||||||
|
p.sendMessage(Main.prefix + "已添加箱子展示箱 §7#" + loc);
|
||||||
|
} else {
|
||||||
|
p.sendMessage(Main.prefix + "此箱子已存在展示坐标内.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
p.sendMessage(Main.prefix + "添加失败,指向的物品类型不是箱子.");
|
||||||
|
}
|
||||||
|
} else if (args[0].equalsIgnoreCase("del") && sender.isOp()) {
|
||||||
|
Block targetBlock = p.getTargetBlock(null, 5);
|
||||||
|
if (targetBlock != null && targetBlock.getType() == Material.CHEST) {
|
||||||
|
String loc = getLoc(targetBlock);
|
||||||
|
if (Main.previewList.contains(loc)) {
|
||||||
|
List<String> list = Main.previewList;
|
||||||
|
list.remove(loc);
|
||||||
|
Main.plugin.getConfig().set("ChestLoc", list);
|
||||||
|
Main.plugin.saveConfig();
|
||||||
|
p.sendMessage(Main.prefix + "已删除箱子展示箱 §7#" + loc);
|
||||||
|
} else {
|
||||||
|
p.sendMessage(Main.prefix + "此箱子不存在展示坐标内.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
p.sendMessage(Main.prefix + "删除失败,指向的物品类型不是箱子.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String getLoc(Block targetBlock) {
|
||||||
|
Location chestLocation = targetBlock.getLocation();
|
||||||
|
String world = chestLocation.getWorld().getName();
|
||||||
|
int x = chestLocation.getBlockX();
|
||||||
|
int y = chestLocation.getBlockY();
|
||||||
|
int z = chestLocation.getBlockZ();
|
||||||
|
return world + "," + x + "," + y + "," + z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
List<String> list = new ArrayList<>();
|
||||||
|
if (args.length == 1) {
|
||||||
|
if (sender.isOp()) {
|
||||||
|
list.add("add");
|
||||||
|
list.add("del");
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
package me.Demon.DemonChestPreview.Listener;
|
||||||
|
|
||||||
|
import me.Demon.DemonChestPreview.Main;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.block.BlockState;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryType;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
|
||||||
|
public class PreviewEvent implements Listener {
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onChestClick(InventoryClickEvent e) {
|
||||||
|
Player p = (Player) e.getWhoClicked();
|
||||||
|
Inventory inv = e.getInventory();
|
||||||
|
if (inv.getHolder() instanceof BlockState) {
|
||||||
|
BlockState blockState = (BlockState) inv.getHolder();
|
||||||
|
Location chestLocation = blockState.getLocation();
|
||||||
|
String world = chestLocation.getWorld().getName();
|
||||||
|
int x = chestLocation.getBlockX();
|
||||||
|
int y = chestLocation.getBlockY();
|
||||||
|
int z = chestLocation.getBlockZ();
|
||||||
|
String loc = world + "," + x + "," + y + "," + z;
|
||||||
|
if (Main.previewList.contains(loc)) {
|
||||||
|
if (inv.getType() == InventoryType.CHEST && !p.isOp()) {
|
||||||
|
if (e.getClick() == ClickType.DOUBLE_CLICK || e.getClick() == ClickType.SHIFT_LEFT || e.getClick() == ClickType.SHIFT_RIGHT) {
|
||||||
|
e.setCancelled(true);
|
||||||
|
p.closeInventory();
|
||||||
|
p.sendMessage("§7点击速度过快,请慢一点。");
|
||||||
|
p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1.0F, 2.0F);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
e.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
33
src/main/java/me/Demon/DemonChestPreview/Main.java
Normal file
33
src/main/java/me/Demon/DemonChestPreview/Main.java
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
package me.Demon.DemonChestPreview;
|
||||||
|
|
||||||
|
import me.Demon.DemonChestPreview.Command.ChestCommand;
|
||||||
|
import me.Demon.DemonChestPreview.Listener.PreviewEvent;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class Main extends JavaPlugin {
|
||||||
|
public static Main plugin;
|
||||||
|
public static String prefix = "§7[§6箱子展示§7] §f";
|
||||||
|
public static List<String> previewList = new ArrayList<>();
|
||||||
|
|
||||||
|
public void onEnable() {
|
||||||
|
plugin = this;
|
||||||
|
saveDefaultConfig();
|
||||||
|
Bukkit.getServer().getPluginManager().registerEvents(new PreviewEvent(), plugin);
|
||||||
|
getCommand("dcpreview").setExecutor(new ChestCommand());
|
||||||
|
getCommand("dcpreview").setTabCompleter(new ChestCommand());
|
||||||
|
previewList.addAll(getConfig().getStringList("ChestLoc"));
|
||||||
|
Bukkit.getConsoleSender().sendMessage("§f[§6!§f] §aDemonChestPreview (" + this.getDescription().getVersion() + ") §f开始加载");
|
||||||
|
Bukkit.getConsoleSender().sendMessage("§f[§6!§f] §b已加载展示箱: §f" + previewList.size() + " §b个");
|
||||||
|
Bukkit.getConsoleSender().sendMessage("§f[§6!§f] §aDemonChestPreview §f加载完成,祝你使用愉快!");
|
||||||
|
Bukkit.getConsoleSender().sendMessage("§f[§6!§f] §f作者QQ号: §c32282861");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void onDisable() {
|
||||||
|
Bukkit.getConsoleSender().sendMessage("§f[§6!§f] §eDemonChestPreview §c卸载完成,下次再见!");
|
||||||
|
}
|
||||||
|
}
|
1
src/main/resources/config.yml
Normal file
1
src/main/resources/config.yml
Normal file
|
@ -0,0 +1 @@
|
||||||
|
ChestLoc: {}
|
5
src/main/resources/plugin.yml
Normal file
5
src/main/resources/plugin.yml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
name: DemonChestPreview
|
||||||
|
main: me.Demon.DemonChestPreview.Main
|
||||||
|
version: 1.0
|
||||||
|
commands:
|
||||||
|
dcpreview:
|
Loading…
Reference in New Issue
Block a user