Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Запретить стол зачарований.Где это можно включить? За 1.5.2 запинаете, знаю. На 1.5.2 плагины уже не пишут, тогда без плагинов давайте. Может можно в ядре отключить?
чярят через all u wantЗапретить стол зачарований.
Не выдавать креатив, либо поставь EnchantFixer или EnchantLimiter или типо того.чярят через all u want
EnchantFixer не контролирует бронюНе выдавать креатив, либо поставь EnchantFixer или EnchantLimiter или типо того.
Ну тогда могу посоветовать написать простенький плагин: ловить InventoryClickEvent -> проверять если данный предмет зачарован -> убирать чары все.EnchantFixer не контролирует броню
Я покалупал плагин, убрал if и результат чёт не очень.Ну тогда могу посоветовать написать простенький плагин: ловить InventoryClickEvent -> проверять если данный предмет зачарован -> убирать чары все.
@EventHandler
public void onInventoryClick(InventoryClickEvent e)
{
Player player = (Player)e.getWhoClicked();
ItemStack item = e.getCurrentItem();
if ((player == null) || (item == null)) {
return;
}
Material material = item.getType();
boolean blocked = check(item);
if (blocked)
{
item = new ItemStack(material);
if ((Config.ItemName != null) && (!Config.ItemName.equals("")))
{
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(Config.ItemName);
item.setItemMeta(meta);
}
player.setItemInHand(item);
player.sendMessage(this.main.msgprefix + Config.Message);
e.setCancelled(true);
}
}
Это вообще не то что тебе надо.Я покалупал плагин, убрал if и результат чёт не очень.
if ((Config.ItemName != null) && (!Config.ItemName.equals("")))
Можешь подсказать строку на удаление предмета полностью?Код:@EventHandler public void onInventoryClick(InventoryClickEvent e) { Player player = (Player)e.getWhoClicked(); ItemStack item = e.getCurrentItem(); if ((player == null) || (item == null)) { return; } Material material = item.getType(); boolean blocked = check(item); if (blocked) { item = new ItemStack(material); if ((Config.ItemName != null) && (!Config.ItemName.equals(""))) { ItemMeta meta = item.getItemMeta(); meta.setDisplayName(Config.ItemName); item.setItemMeta(meta); } player.setItemInHand(item); player.sendMessage(this.main.msgprefix + Config.Message); e.setCancelled(true); } }
И где брать enevt'ы для spigot api, если мне понадобится забанить игрока
//Снимает зачарование с предмета если на него кликаешь в инвентаре
@EventHandler
public void onClick(InventoryClickEvent e) {
ItemStack is = e.getCurrentItem();
if (is == null || is.getType() == Material.AIR) { return; }
if (!is.hasItemMeta()) { return; }
ItemMeta meta = is.getItemMeta();
if (meta.hasEnchants()) {
for (Enchantment ench : meta.getEnchants().keySet()) {
meta.removeEnchant(ench);
}
}
is.setItemMeta(meta);
//Если нужно отослать сообщение игроку
Player p = (Player) e.getWhoClicked();
p.sendMessage("§cЗачарованные предметы запрещены!");
}
Этот код под 1.5.2? И будет работать если я этот кусок кода в eclips просто вставлю, вместо "public void onInventoryClick(InventoryClickEvent e)"Это вообще не то что тебе надо.
Вот тебе такое нужно:
Код://Снимает зачарование с предмета если на него кликаешь в инвентаре @EventHandler public void onClick(InventoryClickEvent e) { ItemStack is = e.getCurrentItem(); if (is == null || is.getType() == Material.AIR) { return; } if (!is.hasItemMeta()) { return; } ItemMeta meta = is.getItemMeta(); if (meta.hasEnchants()) { for (Enchantment ench : meta.getEnchants().keySet()) { meta.removeEnchant(ench); } } is.setItemMeta(meta); //Если нужно отослать сообщение игроку Player p = (Player) e.getWhoClicked(); p.sendMessage("§cЗачарованные предметы запрещены!"); }
Этот код под все версии идет. Нет нельзя. Это ивент. Читай на вики как их правильно регистрировать.Этот код под 1.5.2? И будет работать если я этот кусок кода в eclips просто вставлю, вместо "public void onInventoryClick(InventoryClickEvent e)"
Блииин я не умею...Этот код под все версии идет. Нет нельзя. Это ивент. Читай на вики как их правильно регистрировать.
package ru.yooxa.enchantfixer;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import org.bukkit.Material;
import org.bukkit.Server;
import org.bukkit.entity.Item;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerPickupItemEvent;
import org.*********ventory.ItemStack;
import org.*********ventory.meta.ItemMeta;
import org.bukkit.plugin.PluginManager;
public class PlayerListener
implements Listener
{
public Main main;
public PlayerListener(Main main)
{
this.main = main;
main.getServer().getPluginManager().registerEvents(this, main);
}
@EventHandler
public void onInteract(PlayerInteractEvent e)
{
Player player = e.getPlayer();
ItemStack item = e.getItem();
if ((player == null) || (item == null)) {
return;
}
Material material = item.getType();
boolean blocked = check(item);
if (blocked)
{
item = new ItemStack(material);
if ((Config.ItemName != null) && (!Config.ItemName.equals("")))
{
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(Config.ItemName);
item.setItemMeta(meta);
}
player.setItemInHand(item);
player.sendMessage(this.main.msgprefix + Config.Message);
e.setCancelled(true);
}
}
@EventHandler
public void onItemPickup(PlayerPickupItemEvent e)
{
Player player = e.getPlayer();
ItemStack item = e.getItem().getItemStack();
if ((player == null) || (item == null)) {
return;
}
boolean blocked = check(item);
if (blocked) {
e.setCancelled(true);
}
}
@EventHandler
public void onInventoryClick(InventoryClickEvent e)
{
Player player = (Player)e.getWhoClicked();
ItemStack item = e.getCurrentItem();
if ((player == null) || (item == null)) {
return;
}
Material material = item.getType();
boolean blocked = check(item);
if (blocked)
{
item = new ItemStack(material);
if ((Config.ItemName != null) && (!Config.ItemName.equals("")))
{
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(Config.ItemName);
item.setItemMeta(meta);
}
player.setItemInHand(item);
player.sendMessage(this.main.msgprefix + Config.Message);
e.setCancelled(true);
}
}
public boolean check(ItemStack item)
{
boolean blocked = false;
for (Iterator i$ = item.getEnchantments().values().iterator(); i$.hasNext();)
{
int i = ((Integer)i$.next()).intValue();
if (i > Config.MaxLevel)
{
blocked = true;
break;
}
}
return blocked;
}
}
Все методы перед которыми стоит @EventHandler можешь убрать (если они тебе не нужны). И просто мой метод вставь рядом с ихними или вместо их.Блииин я не умею...
Глянь, пожалуйста, куда вставить
JavaScript:package ru.yooxa.enchantfixer; import java.util.Collection; import java.util.Iterator; import java.util.Map; import org.bukkit.Material; import org.bukkit.Server; import org.bukkit.entity.Item; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerPickupItemEvent; import org.*********ventory.ItemStack; import org.*********ventory.meta.ItemMeta; import org.bukkit.plugin.PluginManager; public class PlayerListener implements Listener { public Main main; public PlayerListener(Main main) { this.main = main; main.getServer().getPluginManager().registerEvents(this, main); } @EventHandler public void onInteract(PlayerInteractEvent e) { Player player = e.getPlayer(); ItemStack item = e.getItem(); if ((player == null) || (item == null)) { return; } Material material = item.getType(); boolean blocked = check(item); if (blocked) { item = new ItemStack(material); if ((Config.ItemName != null) && (!Config.ItemName.equals(""))) { ItemMeta meta = item.getItemMeta(); meta.setDisplayName(Config.ItemName); item.setItemMeta(meta); } player.setItemInHand(item); player.sendMessage(this.main.msgprefix + Config.Message); e.setCancelled(true); } } @EventHandler public void onItemPickup(PlayerPickupItemEvent e) { Player player = e.getPlayer(); ItemStack item = e.getItem().getItemStack(); if ((player == null) || (item == null)) { return; } boolean blocked = check(item); if (blocked) { e.setCancelled(true); } } @EventHandler public void onInventoryClick(InventoryClickEvent e) { Player player = (Player)e.getWhoClicked(); ItemStack item = e.getCurrentItem(); if ((player == null) || (item == null)) { return; } Material material = item.getType(); boolean blocked = check(item); if (blocked) { item = new ItemStack(material); if ((Config.ItemName != null) && (!Config.ItemName.equals(""))) { ItemMeta meta = item.getItemMeta(); meta.setDisplayName(Config.ItemName); item.setItemMeta(meta); } player.setItemInHand(item); player.sendMessage(this.main.msgprefix + Config.Message); e.setCancelled(true); } } public boolean check(ItemStack item) { boolean blocked = false; for (Iterator i$ = item.getEnchantments().values().iterator(); i$.hasNext();) { int i = ((Integer)i$.next()).intValue(); if (i > Config.MaxLevel) { blocked = true; break; } } return blocked; } }
Сделал как ты сказал:Все методы перед которыми стоит @EventHandler можешь убрать (если они тебе не нужны). И просто мой метод вставь рядом с ихними или вместо их.
package ru.yooxa.enchantfixer;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import org.bukkit.Material;
import org.bukkit.Server;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Item;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerPickupItemEvent;
import org.*********ventory.ItemStack;
import org.*********ventory.meta.ItemMeta;
import org.bukkit.plugin.PluginManager;
public class PlayerListener
implements Listener
{
public Main main;
public PlayerListener(Main main)
{
this.main = main;
main.getServer().getPluginManager().registerEvents(this, main);
}
@EventHandler
public void onClick(InventoryClickEvent e) {
ItemStack is = e.getCurrentItem();
if (is == null || is.getType() == Material.AIR) { return; }
if (!is.hasItemMeta()) { return; }
ItemMeta meta = is.getItemMeta();
if (meta.hasEnchants()) {
for (Enchantment ench : meta.getEnchants().keySet()) {
meta.removeEnchant(ench);
}
}
is.setItemMeta(meta);
Player p = (Player) e.getWhoClicked();
p.sendMessage("§cЗачарованные предметы запрещены!");
}
public boolean check(ItemStack item)
{
boolean blocked = false;
for (Iterator i$ = item.getEnchantments().values().iterator(); i$.hasNext();)
{
int i = ((Integer)i$.next()).intValue();
if (i > Config.MaxLevel)
{
blocked = true;
break;
}
}
return blocked;
}
}
package ru.yooxa.enchantfixer;
import org.bukkit.configuration.file.FileConfiguration;
public class Config
{
public Main main;
public static int MaxLevel;
public static String Message;
public static String ItemName;
public Config(Main main)
{
this.main = main;
MaxLevel = main.getConfig().getInt("MaxLevel");
Message = main.getConfig().getString("Message").replace("&", "§");
ItemName = main.getConfig().getString("ItemName").replace("&", "§");
}
}
package ru.yooxa.enchantfixer;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class Main
extends JavaPlugin
{
String msgprefix;
public void onEnable()
{
saveDefaultConfig();
this.msgprefix = getConfig().getString("Prefix").replace("&", "§");
new Config(this);
new PlayerListener(this);
}
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
{
if (cmd.getName().equalsIgnoreCase("enchantfixer"))
{
if ((sender instanceof Player))
{
Player player = (Player)sender;
if (!player.hasPermission("enchantfixer.reload"))
{
player.sendMessage(this.msgprefix + "Нет прав");
return true;
}
}
if (args.length != 1)
{
sender.sendMessage(this.msgprefix + "Используйте /enchantfixer reload , чтобы перезагрузить конфиг");
return true;
}
if (args[0].equalsIgnoreCase("reload"))
{
new Config(this);
sender.sendMessage(this.msgprefix + "Конфиг перезагружен.");
return true;
}
}
return false;
}
}
Ну так и укажи тип. Или своей башки нету?Сделал как ты сказал:
Но плагин не как не снимает чары.JavaScript:package ru.yooxa.enchantfixer; import java.util.Collection; import java.util.Iterator; import java.util.Map; import org.bukkit.Material; import org.bukkit.Server; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Item; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerPickupItemEvent; import org.*********ventory.ItemStack; import org.*********ventory.meta.ItemMeta; import org.bukkit.plugin.PluginManager; public class PlayerListener implements Listener { public Main main; public PlayerListener(Main main) { this.main = main; main.getServer().getPluginManager().registerEvents(this, main); } @EventHandler public void onClick(InventoryClickEvent e) { ItemStack is = e.getCurrentItem(); if (is == null || is.getType() == Material.AIR) { return; } if (!is.hasItemMeta()) { return; } ItemMeta meta = is.getItemMeta(); if (meta.hasEnchants()) { for (Enchantment ench : meta.getEnchants().keySet()) { meta.removeEnchant(ench); } } is.setItemMeta(meta); Player p = (Player) e.getWhoClicked(); p.sendMessage("§cЗачарованные предметы запрещены!"); } public boolean check(ItemStack item) { boolean blocked = false; for (Iterator i$ = item.getEnchantments().values().iterator(); i$.hasNext();) { int i = ((Integer)i$.next()).intValue(); if (i > Config.MaxLevel) { blocked = true; break; } } return blocked; } }
Eclips ошибку пишетПосмотреть вложение 45710
Вот тут содержимое
config.java
JavaScript:package ru.yooxa.enchantfixer; import org.bukkit.configuration.file.FileConfiguration; public class Config { public Main main; public static int MaxLevel; public static String Message; public static String ItemName; public Config(Main main) { this.main = main; MaxLevel = main.getConfig().getInt("MaxLevel"); Message = main.getConfig().getString("Message").replace("&", "§"); ItemName = main.getConfig().getString("ItemName").replace("&", "§"); } }
Main.java
JavaScript:package ru.yooxa.enchantfixer; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; public class Main extends JavaPlugin { String msgprefix; public void onEnable() { saveDefaultConfig(); this.msgprefix = getConfig().getString("Prefix").replace("&", "§"); new Config(this); new PlayerListener(this); } public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (cmd.getName().equalsIgnoreCase("enchantfixer")) { if ((sender instanceof Player)) { Player player = (Player)sender; if (!player.hasPermission("enchantfixer.reload")) { player.sendMessage(this.msgprefix + "Нет прав"); return true; } } if (args.length != 1) { sender.sendMessage(this.msgprefix + "Используйте /enchantfixer reload , чтобы перезагрузить конфиг"); return true; } if (args[0].equalsIgnoreCase("reload")) { new Config(this); sender.sendMessage(this.msgprefix + "Конфиг перезагружен."); return true; } } return false; } }
Я не знаю что надо написать, предлагает после Iterator скобки <чёто ещё>Ну так и укажи тип. Или своей башки нету?
Учись думать головой.Я не знаю что надо написать, предлагает после Iterator скобки <чёто ещё>
я java не знаю. ты можешь помочь?Учись думать головой.
Как хочешь.я java не знаю. ты можешь помочь?
Убери вообще класс config.javaя java не знаю. ты можешь помочь?
package ru.yooxa.enchantfixer;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin {
public void onEnable() {
new PlayerListener(this);
}
}
Прикольно, он убирает чары только в Survival, а если игрок в креативе, можно вообще предмет удалить, его ведь не жалко?Убери вообще класс config.java
PlayerListener.java -> убери метод check.
Main.java сделай таким:
Код:package ru.yooxa.enchantfixer; import org.bukkit.plugin.java.JavaPlugin; public class Main extends JavaPlugin { public void onEnable() { new PlayerListener(this); } }