Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Нужно чтобы после разрушения блок опять ставился

Тема в разделе "Разработка плагинов для новичков", создана пользователем Lite-craft, 13 мар 2016.

  1. Автор темы
    Lite-craft

    Lite-craft Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    Нужна помощь я новичек, в основном разобрался но многое не понятно
    Я думаю по названию понятно что нужно....
    Помогите очень нужно
     
  2. Хостинг MineCraft
    <
  3. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Исходники WG в пабе, что мешает воспользоватся?
     
  4. Автор темы
    Lite-craft

    Lite-craft Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    А если нету wG на серве
     
  5. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Причём тут WG на серве? Тебе нужен метод возвращения блока после ломания, или готовый плагин?
     
  6. Автор темы
    Lite-craft

    Lite-craft Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    Метод возвращения, в коде сам не найду
     
  7. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Блок выпадать должен?
     
  8. Автор темы
    Lite-craft

    Lite-craft Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    Желательно нет
     
  9. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Нужно чтобы все блоки нельзя было ломать или определенный. Или только в определенном месте?
     
  10. Автор темы
    Lite-craft

    Lite-craft Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    Везде чтобы нельзя было ломать определенный блок(шерсть например)(чтоб восстанавливался) чтобы дроп не выпадал.
     
  11. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Код:
    
    package ru.xtime;
    
    import java.util.List;
    
    import org.bukkit.Bukkit;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.java.JavaPlugin;
    
    
    public class XTime2 extends JavaPlugin implements Listener {
        static XTime2 plugin;
        static FileConfiguration c;
        List<String> Blocks;
    
            public void onEnable() {
                this.saveDefaultConfig();
                XTime2.plugin = this;
                XTime2.c = this.getConfig();
                Blocks = XTime2.c.getStringList("Blocks");
                this.getLogger().info("BlockBreak Enabled!");
                Bukkit.getPluginManager().registerEvents(this, this);
            }
         
            @EventHandler
            public void onBreak(final BlockBreakEvent event) {
                if (event.isCancelled()){
                    return;
                }
                final String block = event.getBlock().getType().toString();
                if (Blocks.contains(block)) {
                    event.setCancelled(true);
                }
            }
            // ЭТО ДЛЯ ТОГО ЧТОБЫ ПОЛУЧИТЬ НАЗВАНИЕ БЛОКА КОТОРОЕ ХОЧЕШЬ ЗАПРЕТИТЬ ЛОМАТЬ.
            // ЭТОТ БЛОК НАДО ДЕРЖАТЬ В РУКЕ И КЛИКАТЬ ПРАВОЙ КНОПКОЙ МЫШИ.
            // Потом это можно убрать
            //-------------
            @EventHandler
            public void PlayerInteractEvent(PlayerInteractEvent event) {
                Player player = event.getPlayer();
                if (player.isOp()) {
                if (event.getAction() == Action.RIGHT_CLICK_AIR
                        || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
                    ItemStack hand = event.getItem();
                    if (hand != null) {
                        player.sendMessage(hand.getType().toString());
                        }
                    }
                }
            }
            //---------------------
        }
    
    ну както так. код не тестил, но должен работать.
    И в конфиг помоему нужно писать всё большими буквами.
    config.yml
    Код:
    Blocks:
    - STONE
    - DIRT
    - WOOL
    
     
    Последнее редактирование: 13 мар 2016
  12. Автор темы
    Lite-craft

    Lite-craft Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    В любом случае спасибо за помощь, код сам протестить не могу, надеюсь беудет работать
     
  13. MegaFlary

    MegaFlary Старожил Пользователь

    Баллы:
    153
  14. AxmeD

    AxmeD Старожил Пользователь

    Баллы:
    103
    Skype:
    ahmed136323
    Ну зачем? Так человек не научится сам
     
  15. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    А так он вообще ничему не научится.
     
  16. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Посмотрит, как это работает, и научится применять это в следующий раз.
     
  17. Автор темы
    Lite-craft

    Lite-craft Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    Я научусь по коду, мне нужны ивенты, и методы, кода достаточно.
     
  18. _Spark_

    _Spark_ Активный участник Пользователь

    Баллы:
    78
    Код:
           @EventHandler
           public void onBreak(BlockBreakEvent event) {
               event.setCancelled(true);
           }
    

    Самое главное.

    Не забудь зарегистировать эвенты в onEnable():

    Код:
    Bukkit.getPluginManager().registerEvents(this, this);
    
     
  19. Автор темы
    Lite-craft

    Lite-craft Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    Еще вопросы(чтобы не спамить новыми темами)
    --Как установить блок рядом с игроком но +1 x кордината от него
    --Выдача предмета игроку
    --Таймер, допустим я делаю изменение вектора игрока
    e.getPlayer().setVelocity( new Vector(0, 0, 2));
    Как сделать таймер чтобы через 3 секунды(допустим) изменялся на этот
    e.getPlayer().setVelocity( new Vector(3, 2, 1));
    --Проверка игрока на локации
    Ну допустим на коордах 300 64 200 если он там есть выполняется код
    --Проверка айтема в инвентаре у игрока
    --Что делает return; return true; return false;
    Надеюсь вы мне поможете.
    А вот еще забыл это в первую очередь
    как устонавить нужный текст над головой у игроков не в табе а именно у игроков
     
    Последнее редактирование: 14 мар 2016
  20. Bohdan_Hrytsak

    Bohdan_Hrytsak Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NegaTiV
    Держи может пригодитса.Мой сборник кодов.
    Код:
    public class Main
      extends JavaPlugin
      implements Listener
    {   public static final Logger _log = Logger.getLogger("Minecraft");
       public void onEnable()
        {
        Bukkit.getPluginManager().registerEvents(this, this);
        getConfig().options().copyDefaults(true);
        saveConfig();
        reloadConfig();
        }
       private String c(String input)
        {
        return ChatColor.translateAlternateColorCodes('&', input);
        }
    }
    ----------------------------------------------------------------------------------------------------------
    name: DupePlugin
    main: me.uselessperson.DupePlugin
    version: 1.0.5
    author: UselessPerson
    commands:
      dupe:
      description: Adds a dupe feature to the game
      usage: <command> <argument>{\rtf1}
    -----------------------------------------------------------------------------------------------------------
    int count = 0;
    for(ItemStack item : e.getInventory().getContents())
      if(item.getType().equals(Material.GOLDEN_APPLE))
      count += item.getAmount();
    if(count >= 30)
    {
      // TO DO HERE
    }
    ------------------------------------------------------------------------------------------------------------------
    if(Arrays.asList(e.getInventory().getContents())
     .stream().filter(item -> item.getType() == Material.GOLDEN_APPLE).mapToInt(item -> item.getAmount()).sum() >= 30)
    -------------------------------------------------------------------------------------------------------------------
      public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
      {
      Player player = (Player)sender;
      String p = getConfig().getString("PremJoinZ.PluginPrefix");
      if (cmd.getName().equalsIgnoreCase("premjoinz")) {
      if (args.length == 0)
      {
      sender.sendMessage(c("&2&lavbbaa"));
    --------------------------------------------------------------------------------------------------------------------
      public void onEnable() {
      Bukkit.getScheduler().runTaskTimerAsynchronously((Plugin)this, (Runnable)new Task(), 20L, 20L);
    }
    И Task.java
    
    
    
    package ru.xtime;
    import org.bukkit.Bukkit;
    import org.bukkit.entity.Player;
    public class Task implements Runnable
    {  
      public void run() {
      for (final Player p : Bukkit.getServer().getOnlinePlayers()) {
      p.sendMessage("TEST");
      }
    }
    }
    ----------------------------------------------------------------------------------------------------------------------------------
    public void onDeathEntity(EntityDeathEvent e){
      ItemStack is = new ItemStack(Material.OBSIDIAN, 2);
      LivingEntity Le = e.getEntity();
      Location loc = Le.getLocation();
      World w = loc.getWorld();
      w.dropItem(l, is);
      }
    ------------------------------------------------------------------------------------------------
    @EventHandler(priority = EventPriority.HIGHEST)
      public void onPlayerDrop(PlayerDropItemEvent event) {
      Player player = (Player) event.getPlayer();
      if (player.getGameMode() == GameMode.SURVIVAL || player.getGameMode() ==GameMode.ADVENTURE) {
      event.setCancelled(true);
      }
      }
    ------------------------------------------------------------
    ItemMeta im = is.getItemMeta();
    im.setLore(Arrays.asList(new String[]{
      "Описание","Предмета","В несколько строк"}));
    is.setItemMeta(im);
    -----------------------------------------------------------------------------------------------
    @EventHandler
      public void onPickupItem(PlayerPickupItemEvent e) {
      PlayerInventory inv = e.getPlayer().getInventory(); // получение инвентаря игрока
       
      if(inv.contains(Material.DIAMOND_BLOCK)) { // если игрок имеет алмазный блок
      inv.remove(Material.DIAMOND_BLOCK); // забираем алмазный блок
      }
      }
    -------------------------------------------------------------------------------------------
    ConfigurationSection itemInfo = plugin.getConfig().getConfigurationSection("Item.name");
    final World w = plugin.getServer().getWorld(itemInfo.getString("world"));
    int x  = itemInfo.getInt("x");
    int y  = itemInfo.getInt("y");
    int z  = itemInfo.getInt("z");
    int id  = itemInfo.getInt("id");
    int cd  = itemInfo.getInt("interval");
    Location loc = new Location(w, x, y, z);
    ItemStack is = new ItemStack(Material.getMaterial(id));
    int taskId = Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable()
      {
      @Override
      public void run()
      {
      w.dropItemNaturally(loc, is);
      }
      }, cd, cd);
    --------------------------------------------------------------------------------------------
    Set<String> itemsInfo = plugin.getConfig().getConfigurationSection("Item").getKeys(false);
       
    for(String key : itemsInfo)
    {
      ConfigurationSection itemInfo = plugin.getConfig().getConfigurationSection("Item." + key);
      //остальное не меняется...
    }
    --------------------------------------------------------------------------------------------------
    
    package ru.bohdan;
    import org.bukkit.Bukkit;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Main
    extends JavaPlugin
    implements Listener
    {
    public void onEnable()
      {
      Bukkit.getPluginManager().registerEvents(this, this);
      }
       @EventHandler
        public void on(PlayerJoinEvent e){
         Player p = e.getPlayer();
      Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable(){
      @Override
      public void run()
      {
         p.setHealth(0);
      }
      }, 300, 300);
      }
     }
    
     
  21. Автор темы
    Lite-craft

    Lite-craft Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    Не знаешь кода на вызов салюта там где хочет взорваться энтити и убийство этого энтити
     

Поделиться этой страницей