- Баллы
- 123
Про это я знаю, но от 0 мне не подходит, мне нужно четко в диапазонеюJava:Random r = new Random() r.nextInt(N); // Число от 0 до N.
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Про это я знаю, но от 0 мне не подходит, мне нужно четко в диапазонеюJava:Random r = new Random() r.nextInt(N); // Число от 0 до N.
rand.nextInt(max) + minПро это я знаю, но от 0 мне не подходит, мне нужно четко в диапазонею
int number = r.nextInt(ширина диапазона) + сколько не хватает до нижней границы.Про это я знаю, но от 0 мне не подходит, мне нужно четко в диапазонею
Написать еще один метод? Или не вариант?А как можно это красиво впаять в мой метод?))
Фиг его знает.. Наверно попробую.Написать еще один метод? Или не вариант?
package ua.roboman.plugin;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.*********ventory.ItemStack;
import org.*********ventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class Items
{
private ArrayList<ItemStack> randomItems = new ArrayList<ItemStack>();
private String chatPrefix = ChatColor.translateAlternateColorCodes('&', "&c&l[&2&lCase&a&ls&c&l] &7");
public Items()
{
}
private String generateRandomDurabilityM()
{
int Min = 1;
int Max = 100;
int fortune = Min + (int)(Math.random() * ((Max - Min) + 1));
if (fortune <= 30) return ChatColor.translateAlternateColorCodes('&', "&4Закаленный в боях");
else if (fortune <= 55) return ChatColor.translateAlternateColorCodes('&', "&cПоношенный");
else if (fortune <= 75) return ChatColor.translateAlternateColorCodes('&', "&5&lПосле полевых испытаний");
else if (fortune <= 90) return ChatColor.translateAlternateColorCodes('&', "&a&lНемного поношенный");
else if (fortune <= 100)return ChatColor.translateAlternateColorCodes('&', "&2&lПрямо с завода");
else return ChatColor.translateAlternateColorCodes('&', "&e&lЭкстраординарный");
}
private List<String> getRandomDurabilityToLore()
{
ArrayList<String> list = new ArrayList<String>();
list.add(generateRandomDurabilityM());
return list;
}
private Short getDurability(short max, String durability)
{
if (durability.equals(ChatColor.translateAlternateColorCodes('&', "&4Закаленный в боях")))
{
return (short) (max / 2.);
}
else if (durability.equals(ChatColor.translateAlternateColorCodes('&', "&cПоношенный")))
{
return (short) (max * 3. / 4);
}
else if (durability.equals(ChatColor.translateAlternateColorCodes('&', "&5После полевых испытаний")))
{
return (short) (max * 5. / 6);
}
else if (durability.equals(ChatColor.translateAlternateColorCodes('&', "&a&lНемного поношенный")))
{
return (short) (max * 9. / 10);
}
else if (durability.equals(ChatColor.translateAlternateColorCodes('&', "&2&lПрямо с завода")))
{
return max;
}
return -1;
}
public void playerOpenCase(Player player)
{
int Min = 1;
int Max = 5;
int fortune = Min + (int) (Math.random() * ((Max - Min) + 1));
String name;
ItemStack item;
if (fortune == 1)
{
name = ChatColor.translateAlternateColorCodes('&', "&9Золотой меч");
item = new ItemStack(Material.GOLD_SWORD);
}
else if (fortune == 2)
{
name = ChatColor.translateAlternateColorCodes('&', "&1Деревянный меч");
item = new ItemStack(Material.WOOD_SWORD);
}
else if (fortune == 3)
{
name = ChatColor.translateAlternateColorCodes('&', "&dКаменный меч");
item = new ItemStack(Material.STONE_SWORD);
}
else if (fortune == 4)
{
name = ChatColor.translateAlternateColorCodes('&', "&5Железный меч");
item = new ItemStack(Material.IRON_SWORD);
}
else if (fortune == 5)
{
name = ChatColor.translateAlternateColorCodes('&', "&4Алмазный меч");
item = new ItemStack(Material.DIAMOND_SWORD);
}
else return;
ItemMeta meta = item.getItemMeta();
if (new Random().nextBoolean()) meta.addEnchant(Enchantment.DAMAGE_ALL, new Random().nextInt(29)+1, true);
if (new Random().nextBoolean()) meta.addEnchant(Enchantment.KNOCKBACK, new Random().nextInt(19)+1, true);
if (new Random().nextBoolean()) meta.addEnchant(Enchantment.FIRE_ASPECT, new Random().nextInt(19)+1, true);
if (new Random().nextBoolean()) meta.addEnchant(Enchantment.LOOT_BONUS_MOBS, new Random().nextInt(19)+1, true);
if (new Random().nextBoolean()) meta.addEnchant(Enchantment.DURABILITY, new Random().nextInt(29)+1, true);
meta.setDisplayName(name);
List<String> lore = getRandomDurabilityToLore();
meta.setLore(lore);
item.setDurability(getDurability(item.getType().getMaxDurability(), ChatColor.translateAlternateColorCodes('&', name)));
item.setItemMeta(meta);
player.getInventory().setItemInHand(item);
Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', chatPrefix + "Игрок &9" + player.getName() + "&7 открыл кейс и получил: " + name.toLowerCase() + " " + meta.getLore().get(0).toLowerCase()));
}
}
Блин, ну какая разница?Почему не switch?
switch более эффективен в данном примереБлин, ну какая разница?
Красивее в коде да, по скорости так же.switch более эффективен в данном примере
Извините,оффтоп: Mr_RoboMan,Добавь в скайп, tiberium_1111, вопросик есть)Блин, ну какая разница?
Шабы ты мне рекламил свой сервер 1.5.2? Ну ок...Извините,оффтоп: Mr_RoboMan,Добавь в скайп, tiberium_1111, вопросик есть)
@EventHandler
public void checkOpenCase(PlayerInteractEvent event)
{
if (event.getClickedBlock().getType().equals(Material.CHEST))
{
Bukkit.broadcastMessage("ПервыйТест");
if (event.getPlayer().getInventory().getItemInHand().getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', "&aКейс")))
{
Bukkit.broadcastMessage("ВторойТест");
if (((Chest) event.getClickedBlock()).getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', "&cКлюч")))
{
Bukkit.broadcastMessage("ТретийТест");
event.getPlayer().getInventory().setItemInHand(new ItemStack(Material.AIR));
event.getClickedBlock().setTypeId(0);
new Items().playerOpenCase(event.getPlayer());
}
else event.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', chatPrefix + "Чтобы открыть кейс нужно держать ключ в руке."));
}
}
}
getBlockChest() ? Это где такой метод есть?..У меня уже ночь и мозги отключены, но материал.чест надо проверять в гетБлокСтейт
@EventHandler
public void checkOpenCase(PlayerInteractEvent event)
{
Bukkit.broadcastMessage("Просто тест");
if (event.getClickedBlock().getType().getId() == 54)
{
Bukkit.broadcastMessage("ПервыйТест");
if (event.getPlayer().getInventory().getItemInHand().getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', "&aКейс")))
{
Bukkit.broadcastMessage("ВторойТест");
if (((Chest) event.getClickedBlock()).getBlockInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', "&cКлюч")))
{
Bukkit.broadcastMessage("ТретийТест");
event.getPlayer().getInventory().setItemInHand(new ItemStack(Material.AIR));
event.getClickedBlock().setTypeId(0);
new Items().playerOpenCase(event.getPlayer());
}
else event.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', chatPrefix + "Чтобы открыть кейс нужно держать ключ в руке."));
}
}
}
Так может ты не зарегистрировал листенер?На любой блок ПКМ/ЛКМ - никакой реакции(((
АгаТак может ты не зарегистрировал листенер?
Теперь в чат выводиться все кроме третьего теста, как правильно проверить сундук?((Chest) event.getClickedBlock())
((Chest)event.getClickedBlock().getState())гетБлокСтейт
За совет спасибо, тем не менее я предпочитаю это делать параллельно.Выучите Java'у для начала, а потом уже беритесь за плагины.
Спасибо, зароботало.((Chest)event.getClickedBlock().getState())
package ua.roboman.plugin;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Chest;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;
import org.*********ventory.ItemStack;
import org.*********ventory.ShapedRecipe;
import org.*********ventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.ArrayList;
import java.util.logging.Logger;
public class RandomCase extends JavaPlugin implements Listener
{
protected String loggerPrefix = "[RandomCase] ";
protected String chatPrefix = ChatColor.translateAlternateColorCodes('&', "&c&l[&2&lCase&a&ls&c&l] &7");
protected Logger logger = Logger.getLogger("RandomCase");
@Override
public void onEnable()
{
getServer().getPluginManager().registerEvents(this, this);
logger.info(loggerPrefix + "Плагин успешно включен.");
ArrayList<String> loreCase = new ArrayList<String>();
loreCase.add(ChatColor.translateAlternateColorCodes('&', "&a&lОружейный кейс"));
ItemStack itemCase = new ItemStack(Material.CHEST);
ItemMeta caseMeta = itemCase.getItemMeta();
caseMeta.addEnchant(Enchantment.DURABILITY, 1, true);
caseMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&aКейс"));
caseMeta.setLore(loreCase);
itemCase.setItemMeta(caseMeta);
ShapedRecipe recipeCase = new ShapedRecipe(itemCase);
recipeCase.shape("WWW", "WEW", "WWW");
recipeCase.setIngredient('W', Material.WOOD);
recipeCase.setIngredient('E', Material.ENDER_PEARL);
getServer().addRecipe(recipeCase);
//==============================================================================================================
ArrayList<String> loreKey = new ArrayList<String>();
loreKey.add(ChatColor.translateAlternateColorCodes('&', "&c&lКлюч к кейсу"));
ItemStack itemKey = new ItemStack(Material.TRIPWIRE_HOOK);
ItemMeta keyMeta = itemKey.getItemMeta();
keyMeta.addEnchant(Enchantment.DURABILITY, 1, true);
keyMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&cКлюч"));
keyMeta.setLore(loreKey);
itemKey.setItemMeta(keyMeta);
ShapedRecipe recipeKey = new ShapedRecipe(itemKey);
recipeKey.shape("SIS", "SDS", "SSS");
recipeKey.setIngredient('S', Material.STICK);
recipeKey.setIngredient('I', Material.IRON_BLOCK);
recipeKey.setIngredient('D', Material.DIAMOND);
getServer().addRecipe(recipeKey);
}
@EventHandler
public void checkOpenCase(PlayerInteractEvent event)
{
Bukkit.broadcastMessage("Просто тест");
if (event.getClickedBlock().getType().getId() == 54)
{
Bukkit.broadcastMessage("ПервыйТест");
if (event.getPlayer().getInventory().getItemInHand().getItemMeta().getDisplayName().equals(ChatColor.translateAlternateColorCodes('&', "&cКлюч")))
{
Bukkit.broadcastMessage("ВторойТест");
if (((Chest)event.getClickedBlock().getState()).getInventory().getName().equals(ChatColor.translateAlternateColorCodes('&', "&aКейс")))
{
Bukkit.broadcastMessage("ТретийТест");
event.getPlayer().getInventory().setItemInHand(null);
event.getClickedBlock().breakNaturally();
new Items().playerOpenCase(event.getPlayer());
}
else event.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', chatPrefix + "Чтобы открыть кейс нужно держать ключ в руке."));
}
}
}
}
package ua.roboman.plugin;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.*********ventory.ItemStack;
import org.*********ventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.Random;
public class Items
{
private String chatPrefix = ChatColor.translateAlternateColorCodes('&', "&c&l[&2&lCase&a&ls&c&l] &7");
public Items()
{
}
public ItemStack setLoreAndDurability(ItemStack item, int goCase)
{
ItemMeta meta = item.getItemMeta();
short durability = item.getType().getMaxDurability();
int fortune = new Random().nextInt(99)+1;
ArrayList<String> bs = new ArrayList<String>(), ww = new ArrayList<String>(), ft = new ArrayList<String>(), mw = new ArrayList<String>(), fn = new ArrayList<String>();
switch (goCase) {
case 1:
bs.add(ChatColor.translateAlternateColorCodes('&', "&4Закаленный в боях"));
ww.add(ChatColor.translateAlternateColorCodes('&', "&cПоношенный"));
ft.add(ChatColor.translateAlternateColorCodes('&', "&5После полевых испытаний"));
mw.add(ChatColor.translateAlternateColorCodes('&', "&a&lНемного поношенный"));
fn.add(ChatColor.translateAlternateColorCodes('&', "&2&lПрямо с завода"));
break;
case 2:
bs.add(ChatColor.translateAlternateColorCodes('&', "&4Закаленная в огороде"));
ww.add(ChatColor.translateAlternateColorCodes('&', "&cПоношенная"));
ft.add(ChatColor.translateAlternateColorCodes('&', "&5После полевых испытаний"));
mw.add(ChatColor.translateAlternateColorCodes('&', "&a&lНемного поношенная"));
fn.add(ChatColor.translateAlternateColorCodes('&', "&2&lПрямо с кузни"));
break;
case 3:
bs.add(ChatColor.translateAlternateColorCodes('&', "&4Закаленный в древесине"));
ww.add(ChatColor.translateAlternateColorCodes('&', "&cПоношенный"));
ft.add(ChatColor.translateAlternateColorCodes('&', "&5После полевых испытаний"));
mw.add(ChatColor.translateAlternateColorCodes('&', "&a&lНемного поношенный"));
fn.add(ChatColor.translateAlternateColorCodes('&', "&2&lПрямо с завода"));
break;
case 4:
bs.add(ChatColor.translateAlternateColorCodes('&', "&4Закаленные в боях"));
ww.add(ChatColor.translateAlternateColorCodes('&', "&cПоношенные"));
ft.add(ChatColor.translateAlternateColorCodes('&', "&5После полевых испытаний"));
mw.add(ChatColor.translateAlternateColorCodes('&', "&a&lНемного поношенные"));
fn.add(ChatColor.translateAlternateColorCodes('&', "&2&lПрямо с завода"));
break;
}
if (fortune <= 30) {
meta.setLore(bs);
item.setDurability((short) (durability / 2.));
} else if (fortune <= 55) {
meta.setLore(ww);
item.setDurability((short) (durability * 3. / 4));
} else if (fortune <= 75) {
meta.setLore(ft);
item.setDurability((short) (durability * 5. / 6));
} else if (fortune <= 90) {
meta.setLore(mw);
item.setDurability((short) (durability * 9. / 10));
} else {
meta.setLore(fn);
item.setDurability(durability);
}
item.setItemMeta(meta);
return item;
}
public ItemStack getRandomItem()
{
Random random = new Random();
Integer fortuneOne = random.nextInt(2)+1;
switch (fortuneOne) {
case 1: {
ItemStack firstItem = new ItemStack(Material.GOLD_SWORD);
ItemMeta firstMeta = firstItem.getItemMeta();
if (random.nextBoolean()) firstMeta.addEnchant(Enchantment.DAMAGE_ALL, random.nextInt(4)+1, true);
if (random.nextBoolean()) firstMeta.addEnchant(Enchantment.KNOCKBACK, random.nextInt(1) + 1, true);
if (random.nextBoolean()) firstMeta.addEnchant(Enchantment.FIRE_ASPECT, random.nextInt(1) + 1, true);
if (random.nextBoolean()) firstMeta.addEnchant(Enchantment.LOOT_BONUS_MOBS, random.nextInt(1) + 1, true);
if (random.nextBoolean()) firstMeta.addEnchant(Enchantment.DURABILITY, random.nextInt(2)+1, true);
firstMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&9Золотой меч"));
firstItem.setItemMeta(firstMeta);
firstItem = setLoreAndDurability(firstItem, 1);
return firstItem;
} case 2: {
ItemStack secondItem = new ItemStack(Material.WOOD_SWORD);
ItemMeta secondMeta = secondItem.getItemMeta();
if (random.nextBoolean()) secondMeta.addEnchant(Enchantment.DAMAGE_ALL, random.nextInt(4) + 1, true);
if (random.nextBoolean()) secondMeta.addEnchant(Enchantment.KNOCKBACK, random.nextInt(1) + 1, true);
if (random.nextBoolean()) secondMeta.addEnchant(Enchantment.FIRE_ASPECT, random.nextInt(1) + 1, true);
if (random.nextBoolean()) secondMeta.addEnchant(Enchantment.LOOT_BONUS_MOBS, random.nextInt(1) + 1, true);
if (random.nextBoolean()) secondMeta.addEnchant(Enchantment.DURABILITY, random.nextInt(2) + 1, true);
secondMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&1Деревянный меч"));
secondItem.setItemMeta(secondMeta);
secondItem = setLoreAndDurability(secondItem, 1);
return secondItem;
}
}
return null;
}
public void playerOpenCase(Player player)
{
ItemStack item = getRandomItem();
player.getInventory().setItemInHand(item);
Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', chatPrefix + "Игрок &9" + player.getName() + "&7 открыл кейс и получил: " + item.getItemMeta().getDisplayName().toLowerCase() + " " + item.getItemMeta().getLore().get(0).toLowerCase()));
}
}