This commit is contained in:
2024-08-02 01:50:22 +02:00
commit a8f779957c
9 changed files with 468 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
package org.twipnetwork.magicalCampfire;
import org.bukkit.plugin.java.JavaPlugin;
public final class MagicalCampfire extends JavaPlugin {
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(new MagicalCampfireListener(), this);
getLogger().info("MagicalCampfire Plugin Enabled!");
}
@Override
public void onDisable() {
getLogger().info("MagicalCampfire Plugin Disabled!");
}
}

View File

@@ -0,0 +1,51 @@
package org.twipnetwork.magicalCampfire;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.data.type.Campfire;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.plugin.Plugin;
import org.bukkit.Location;
public class MagicalCampfireListener implements Listener {
private final Plugin plugin;
public MagicalCampfireListener() {
this.plugin = Bukkit.getPluginManager().getPlugin("MagicalCampfire");
startRegenTask();
}
private void startRegenTask() {
new BukkitRunnable() {
@Override
public void run() {
for (Player player : Bukkit.getOnlinePlayers()) {
if (isNearLitCampfire(player)) {
double newHealth = Math.min(player.getHealth() + 0.5, player.getMaxHealth());
player.setHealth(newHealth);
}
}
}
}.runTaskTimer(plugin, 0L, 40L);
}
private boolean isNearLitCampfire(Player player) {
Location playerLoc = player.getLocation();
for (int x = -2; x <= 2; x++) {
for (int y = -2; y <= 2; y++) {
for (int z = -2; z <= 2; z++) {
Location loc = playerLoc.clone().add(x, y, z);
if (loc.getBlock().getType() == Material.CAMPFIRE) {
Campfire campfire = (Campfire) loc.getBlock().getBlockData();
if (campfire.isLit()) {
return true;
}
}
}
}
}
return false;
}
}