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

Lite-craft

Активный участник
Пользователь
Баллы
46
Имя в Minecraft
shiroihana
Нужна помощь я новичек, в основном разобрался но многое не понятно
Я думаю по названию понятно что нужно....
Помогите очень нужно
 
Нужна помощь я новичек, в основном разобрался но многое не понятно
Я думаю по названию понятно что нужно....
Помогите очень нужно
Исходники WG в пабе, что мешает воспользоватся?
 
Нужно чтобы все блоки нельзя было ломать или определенный. Или только в определенном месте?
 
Нужно чтобы все блоки нельзя было ломать или определенный. Или только в определенном месте?
Везде чтобы нельзя было ломать определенный блок(шерсть например)(чтоб восстанавливался) чтобы дроп не выпадал.
 
Java:
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.*********ventory.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
YAML:
Blocks:
- STONE
- DIRT
- WOOL
 
Последнее редактирование:
Java:
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.*********ventory.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
YAML:
Blocks:
- STONE
- DIRT
- WOOL
В любом случае спасибо за помощь, код сам протестить не могу, надеюсь беудет работать
 
Java:
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.*********ventory.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
YAML:
Blocks:
- STONE
- DIRT
- WOOL
Ну зачем? Так человек не научится сам
 
Посмотрит, как это работает, и научится применять это в следующий раз.
 
Код:
       @EventHandler
       public void onBreak(BlockBreakEvent event) {
           event.setCancelled(true);
       }

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

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

Код:
Bukkit.getPluginManager().registerEvents(this, this);
 
Еще вопросы(чтобы не спамить новыми темами)
--Как установить блок рядом с игроком но +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;
Надеюсь вы мне поможете.
А вот еще забыл это в первую очередь
как устонавить нужный текст над головой у игроков не в табе а именно у игроков
 
Последнее редактирование:
Держи может пригодитса.Мой сборник кодов.
Java:
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);
  }
 }
 
Держи может пригодитса.Мой сборник кодов.
Java:
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);
  }
}
Не знаешь кода на вызов салюта там где хочет взорваться энтити и убийство этого энтити
 
Назад
Верх