本帖最后由 1582952890 于 2017-9-16 18:03 编辑
(萌萌的服主) (蜜汁大叔)
:这是什么?

:这个啊,一个用Shift来运行指令的插件

:(黑人问号脸)???

:在某服务器看到的一截图,于是捣鼓捣鼓就这样了233

:哦...

插件例程-大角虫就当听听歌了

[bili=6981878]0[/bili]



特性:
  • 支持变量(%player%-玩家名)
  • 可自定义的Pitch(Shift面朝角度)
  • 支持多行命令
Bug:
  • 暂无欢迎提出


未来计划:
  • 可能会加上面向地面后按Shift多少秒后再进行指令运行


图片(Gif 1.31M):



Config文件配置:
  1. #isdown是指是设定是想要Shift后面向地面的开关,false的话就是面朝向上
  2. isdown: true
  3. #这个是面朝向上时达到这个数值就会触发指令
  4. upPitch: -75
  5. #这个是面朝向下时达到这个数值就会触发指令
  6. downPitch: 75
  7. #这个是指令的发送者 true就是player false就是控制台
  8. sender: true
  9. #命令行
  10. command:
  11.   - "say hello"
  12.   - "say i'm %player%"
复制代码

源码:写得有点渣,望大角虫别责怪QAQ
  1. package com.mayspeed.shiftcommand;

  2. import java.io.File;
  3. import java.util.ArrayList;
  4. import java.util.List;

  5. import org.bukkit.Bukkit;
  6. import org.bukkit.entity.Player;
  7. import org.bukkit.event.EventHandler;
  8. import org.bukkit.event.Listener;
  9. import org.bukkit.event.player.PlayerToggleSneakEvent;
  10. import org.bukkit.plugin.java.JavaPlugin;

  11. public class Main extends JavaPlugin implements Listener{
  12.         public void onEnable() {
  13.                 //判断是否拥有插件文件夹
  14.                 if(!getDataFolder().exists()) {
  15.                           getDataFolder().mkdir();
  16.                 }
  17.                 File file = new File(getDataFolder(),"config.yml");
  18.                 //判断是否存在config.yml
  19.                 if (!(file.exists())) {
  20.                         saveDefaultConfig();
  21.                 }
  22.                 saveConfig();
  23.                 reloadConfig();
  24.                 getLogger().info("[蹲下指令]ShiftCommand 已加载 Power By May_Speed");
  25.                 Bukkit.getPluginManager().registerEvents(this, this);
  26.         }
  27.         @EventHandler
  28.         public void onShift(PlayerToggleSneakEvent e) {
  29.                 //因为这个事件是包含了 从走路到潜行再到潜行到走路的一个事件所以要判断一下
  30.                 if(!e.isSneaking()) {
  31.                         return;
  32.                 }
  33.                 Player player = (Player) e.getPlayer();
  34.                 double pitch = player.getLocation().getPitch(); //取玩家当前的面向角度
  35.                 double downpitch = getConfig().getDouble("downPitch");
  36.                 double uppitch = getConfig().getDouble("upPitch");
  37.                 boolean isdown = getConfig().getBoolean("isdown");
  38.                 if(isdown) {
  39.                         if(pitch >= downpitch) { //经过我测试 ,只要角度大于75都差不多是面朝向下
  40.                                 List <String> command = new ArrayList <String> ();
  41.                                 command = getConfig().getStringList("command");
  42.                                 //解释一下 这里定义i为0 之后判断i是否小于List类型的command大小,是的话则i自加1
  43.                                 for(int i = 0;i < getConfig().getStringList("command").size();i++) {
  44.                                         if(getConfig().getBoolean("sender")) { //这里是判断发送者 true为玩家 false为服务器
  45.                                                 Bukkit.dispatchCommand(player, command.get(i).replace("&", "§").replace("%player%", player.getName()));
  46.                                                 System.out.println(command.get(i));
  47.                                         }else {
  48.                                                 Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command.get(i).replace("&", "§").replace("%player%", player.getName()));
  49.                                         }
  50.                                 }
  51.                         }
  52.                 }else {
  53.                         if(pitch <= uppitch) { //经过我测试 ,只要角度大于75都差不多是面朝向下
  54.                                 List <String> command = new ArrayList <String> ();
  55.                                 command = getConfig().getStringList("command");
  56.                                 //解释一下 这里定义i为0 之后判断i是否小于List类型的command大小,是的话则i自加1
  57.                                 for(int i = 0;i < getConfig().getStringList("command").size();i++) {
  58.                                         if(getConfig().getBoolean("sender")) { //这里是判断发送者 true为玩家 false为服务器
  59.                                                 Bukkit.dispatchCommand(player, command.get(i).replace("&", "§").replace("%player%", player.getName()));
  60.                                                 System.out.println(command.get(i));
  61.                                         }else {
  62.                                                 Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command.get(i).replace("&", "§").replace("%player%", player.getName()));
  63.                                         }
  64.                                 }
  65.                         }
  66.                 }
  67.                 return;
  68.         }
  69. }
复制代码




[蹲下指令]ShiftCommand.jar

3.28 KB, 下载次数: 341

欢迎下载~