Minecraft(我的世界)中文论坛
标题:
[管理|安全]GamemodeLock —— 游戏模式锁,方便的游戏模式管理插件[全版本]
作者:
Greensky
时间:
2015-7-1 09:15
标题:
[管理|安全]GamemodeLock —— 游戏模式锁,方便的游戏模式管理插件[全版本]
本帖最后由 henry5041 于 2019-7-31 13:48 编辑
GamemodeLock
还在为服务器中创造到处飞难以管理而发愁吗?此插件允许你通过控制玩家权限以管理玩家游戏模式,方便地管理玩家的游戏模式。
特性
游戏模式权限化,即玩家只有在有某一游戏模式的权限时才能切换到某一游戏模式,如果没有这一权限则会被设置回原来的游戏模式。
注意:此插件涉及玩家游戏模式更改,如发现bug请务必第一时间反馈,谢谢。
权限
gamemode.creative - 玩家使用创造模式的权限
gamemode.survival - 玩家使用生存模式的权限(所有玩家默认拥有,如果你想让玩家限制在冒险模式的话可以取消此权限)
gamemodelock.bypass - 无视此插件功能的权限,op默认拥有
gamemodelock.command - 使用/gamemodelock指令的权限
使用方法
首先安装插件。
如果你想要给玩家创造模式权限的话:
先给予想要给创造模式的玩家gamemode.creative权限,再设置玩家游戏模式。(若不先给权限的话则无法)
对于使用GroupManager组权限插件的服务器来说,上述权限可以简单地通过以下指令给予:
/manuaddp [想给权限的玩家] gamemode.creative
复制代码
如果想要取消玩家创造模式权限的话:
先删除玩家的gamemode.creative权限,再使用/gamemodelock刷新插件。
对于使用GroupManager组权限插件的服务器来说,上述权限可以简单地通过以下指令删除:
/manudelp [想给权限的玩家] gamemode.creative
复制代码
如果你想取消玩家生存模式权限的话:
先使用以下指令:
/manuaddp [想给权限的玩家] -gamemode.survival
复制代码
再使用/gamemodelock指令来刷新游戏模式。
(请不要跟我提旁观者模式,我使用的包版本太旧了没这东西)
指令
/gamemodelock - 用于在修改玩家游戏模式权限后刷新插件以应用新的权限
下载
GamemodeLock-0.0.1.jar
(16.51 KB, 下载次数: 312)
2015-6-30 22:37 上传
点击文件名下载附件
如果喜欢这个插件的话,请在百忙之中回复这一句,我将不胜感激:
支持GamemodeLock,支持Henry5041!希望此插件越做越成功!
复制代码
卧槽居然把上一个帖子没有改直接放过来了我在想些什么…
源代码
(我没那个功夫放到github上,你们将就着看吧)
package org.greensky.gamemodelock;
import java.io.IOException;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerGameModeChangeEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.mcstats.Metrics;
public final class GamemodeLock extends JavaPlugin implements Listener {
@Override
public void onEnable() {
// TODO Insert logic to be performed when the plugin is enabled
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
if (!player.hasPermission("gamemodelock.bypass")) {
switch (player.getGameMode()) {
case CREATIVE:
if (!player.hasPermission("gamemode.creative")) {
if (player.hasPermission("gamemode.survival")) {
player.setGameMode(GameMode.SURVIVAL);
} else {
player.setGameMode(GameMode.ADVENTURE);
}
}
break;
case SURVIVAL:
if (!player.hasPermission("gamemode.survival")) {
if (player.hasPermission("gamemode.creative")) {
player.setGameMode(GameMode.CREATIVE);
} else {
player.setGameMode(GameMode.ADVENTURE);
}
}
break;
default:
}
}
}
getServer().getPluginManager().registerEvents(this, this);
try {
Metrics metrics = new Metrics(this);
metrics.start();
} catch (IOException e) {
// Failed
getLogger().info("enable metrics failed");
}
}
@EventHandler(priority = EventPriority.HIGH)
public void onPlayerJoinEvent(PlayerJoinEvent event) {
// Your code here...
Player player = event.getPlayer();
player.sendMessage("You have logged in");
if (!player.hasPermission("gamemodelock.bypass")) {
switch (player.getGameMode()) {
case CREATIVE:
if (!player.hasPermission("gamemode.creative")) {
if (player.hasPermission("gamemode.survival")) {
player.setGameMode(GameMode.SURVIVAL);
} else {
player.setGameMode(GameMode.ADVENTURE);
}
}
break;
case SURVIVAL:
if (!player.hasPermission("gamemode.survival")) {
if (player.hasPermission("gamemode.creative")) {
player.setGameMode(GameMode.CREATIVE);
} else {
player.setGameMode(GameMode.ADVENTURE);
}
}
break;
default:
}
}
}
@EventHandler
public void onPlayerGameModeChangeEvent(PlayerGameModeChangeEvent event) {
Player player = event.getPlayer();
player.sendMessage("You have changed game mode");
if (!player.hasPermission("gamemodelock.bypass")) {
switch (event.getNewGameMode()) {
case CREATIVE:
if (!player.hasPermission("gamemode.creative")) {
event.setCancelled(true);
}
break;
case SURVIVAL:
if (!player.hasPermission("gamemode.survival")) {
event.setCancelled(true);
}
break;
default:
}
}
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label,
String[] args) {
if (cmd.getName().equalsIgnoreCase("gamemodelock")) {
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
if (!player.hasPermission("gamemodelock.bypass")) {
switch (player.getGameMode()) {
case CREATIVE:
if (!player.hasPermission("gamemode.creative")) {
if (player.hasPermission("gamemode.survival")) {
player.setGameMode(GameMode.SURVIVAL);
} else {
player.setGameMode(GameMode.ADVENTURE);
}
}
break;
case SURVIVAL:
if (!player.hasPermission("gamemode.survival")) {
if (player.hasPermission("gamemode.creative")) {
player.setGameMode(GameMode.CREATIVE);
} else {
player.setGameMode(GameMode.ADVENTURE);
}
}
break;
default:
}
}
}
sender.sendMessage("Game mode locked");
return true;
} // If this has happened the function will return true.
// If this hasn't happened the value of false will be returned.
return false;
}
}
复制代码
后记
中考刚结束,正好有时间把一直以来想写的插件写出来,希望这个插件能对大家有用。因为是赶制出来的,插件里面的提示信息不太清晰,不过插件功能也不复杂,根据这里的教程使用即可。
作者:
矿工小周
时间:
2015-7-1 09:19
本帖最后由 矿工小周 于 2015-7-1 09:36 编辑
支持GamemodeLock,支持Henry5041!希望此插件越做越成功!
作者:
onijiri
时间:
2015-7-1 09:21
好棒的插件啊,真的幸苦了服主(≧▽≦)!Onijiri前排支持!
作者:
2285214727
时间:
2015-7-1 09:53
前排支持
出售爆米花
作者:
可可可可可乐
时间:
2015-7-1 09:56
不错,手机看源代码乱成一排。。。功能赞,回家电脑看看
作者:
爱拍丿刀锋
时间:
2015-8-24 23:28
支持GamemodeLock,支持Henry5041!希望此插件越做越成功!
作者:
枫影绝尘
时间:
2015-10-7 22:34
非常不错的插件,正好解决了服务器的问题!
作者:
枫影绝尘
时间:
2015-10-7 22:34
非常不错的插件,正好解决了服务器的问题!
作者:
MC_apple
时间:
2015-10-11 18:00
不错
作者:
xiazai
时间:
2016-1-3 17:08
能解决mv多世界切换世界游戏模式更新么
作者:
啊木哥
时间:
2016-1-3 17:11
支持原创,希望楼主继续加油
作者:
XueRe
时间:
2020-1-5 23:55
谢谢楼主分享~~
作者:
Mark666
时间:
2020-1-8 22:08
提示:
作者被禁止或删除 内容自动屏蔽
作者:
1260755449
时间:
2020-2-12 12:24
谢谢分享 支持原创
作者:
Jasonloin
时间:
2021-1-1 11:25
不错的插件