Я хочу сделать так, чтобы работал мой плагин bukkit-paper для 1.20.1, где вы можете добыть рамку конечного портала с помощью Silk Touch, и он добывает, и вы получаете предмет:
package me.grubbauer.endcrafter;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.plugin.java.JavaPlugin;
public final class EndCrafter extends JavaPlugin implements Listener {
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
Block block = event.getBlock();
if (block.getType() == Material.END_PORTAL) {
// Check if the player has silk touch
if (event.getPlayer().getInventory().getItemInMainHand().containsEnchantment(Enchantment.SILK_TOUCH)) {
// Drop end portal blocks
dropEndPortalBlocks(block);
// Cancel the event so the original block doesn't drop anything
event.setCancelled(true);
}
}
}
private void dropEndPortalBlocks(Block block) {
// Drop end portal blocks
for (BlockFace face : BlockFace.values()) {
Block adjacentBlock = block.getRelative(face);
if (adjacentBlock.getType() == Material.END_PORTAL_FRAME) {
adjacentBlock.breakNaturally();
}
}
}
}
Ожидается:
Блок разрушается и блок выпадает при добыче с помощью Silk Touch.
Результат:
Не мой< /п>
Я хочу сделать так, чтобы работал мой плагин bukkit-paper для 1.20.1, где вы можете добыть рамку конечного портала с помощью Silk Touch, и он добывает, и вы получаете предмет: [code]package me.grubbauer.endcrafter;
public final class EndCrafter extends JavaPlugin implements Listener {
@Override public void onEnable() { getServer().getPluginManager().registerEvents(this, this); }
@EventHandler public void onBlockBreak(BlockBreakEvent event) { Block block = event.getBlock(); if (block.getType() == Material.END_PORTAL) { // Check if the player has silk touch if (event.getPlayer().getInventory().getItemInMainHand().containsEnchantment(Enchantment.SILK_TOUCH)) { // Drop end portal blocks dropEndPortalBlocks(block); // Cancel the event so the original block doesn't drop anything event.setCancelled(true); } } }
private void dropEndPortalBlocks(Block block) { // Drop end portal blocks for (BlockFace face : BlockFace.values()) { Block adjacentBlock = block.getRelative(face); if (adjacentBlock.getType() == Material.END_PORTAL_FRAME) { adjacentBlock.breakNaturally(); } } } }
[/code] Ожидается: Блок разрушается и блок выпадает при добыче с помощью Silk Touch. Результат: Не мой< /п>