Да, такую механику можно реализовать, используя события в Minecraft. Например, вы можете использовать плагин на основе Bukkit или Spigot, чтобы отслеживать, держит ли игрок факел в руках, и наносить урон, если он стоит рядом с костром или огнем.
Вот примерный код на Java для реализации этой логики:
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class FireDamagePlugin extends JavaPlugin implements Listener {
@Override
public void onEnable() {
Bukkit.getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onPlayerMove(PlayerMoveEvent event) {
Player player = event.getPlayer();
if (isNearFire(player) && !isHoldingTorch(player)) {
player.damage(1.0); // Наносим 1 урон
}
}
private boolean isNearFire(Player player) {
// Логика проверки, находится ли игрок рядом с костром или огнем
// Например, проверка блока на координатах игрока
return player.getLocation().getBlock().getType() == Material.FIRE ||
player.getLocation().getBlock().getType() == Material.BONFIRE; // Добавьте другие типы, если нужно
}
private boolean isHoldingTorch(Player player) {
return player.getInventory().getItemInMainHand().getType() == Material.TORCH;
}
}
Этот код создает плагин, который будет наносить урон игроку, если он не держит факел и находится рядом с огнем. Не забудьте настроить его под свои нужды и протестировать в игре.