Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private Map<Player, Double> playerWetness = new HashMap<>();
- private Map<Player, Double> playerSanity = new HashMap<>();
- @Override
- public void onEnable() {
- getServer().getPluginManager().registerEvents(this, this);
- startStatusUpdater();
- }
- @EventHandler
- public void onPlayerJoin(PlayerJoinEvent event) {
- Player player = event.getPlayer();
- playerWetness.put(player, 0.0);
- playerSanity.put(player, 100.0);
- }
- @EventHandler
- public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
- if (event.getDamager() instanceof Player) {
- Player player = (Player) event.getDamager();
- if (playerWetness.getOrDefault(player, 0.0) > 50) {
- dropRandomItem(player);
- }
- }
- }
- private void updatePlayerStatus(Player player) {
- Location loc = player.getLocation();
- World world = player.getWorld();
- // Update wetness
- if (world.hasStorm() && player.getLocation().getBlock().getHighestBlock().getType() == Material.AIR) {
- increaseWetness(player, 3.33); // 100 / 30 seconds
- } else if (player.isInWater()) {
- increaseWetness(player, 10.0); // 100 / 10 seconds
- } else {
- decreaseWetness(player, 5.0); // 100 / 20 seconds
- }
- // Update sanity
- if (loc.getBlock().getLightLevel() < 3) {
- decreaseSanity(player, 20.0); // 100 / 5 seconds
- } else {
- increaseSanity(player, 10.0); // Arbitrary value, adjust as needed
- }
- updateActionBar(player);
- }
- private void increaseWetness(Player player, double amount) {
- playerWetness.put(player, Math.min(100, playerWetness.getOrDefault(player, 0.0) + amount));
- }
- private void decreaseWetness(Player player, double amount) {
- playerWetness.put(player, Math.max(0, playerWetness.getOrDefault(player, 0.0) - amount));
- }
- private void decreaseSanity(Player player, double amount) {
- playerSanity.put(player, Math.max(0, playerSanity.getOrDefault(player, 100.0) - amount));
- }
- private void increaseSanity(Player player, double amount) {
- playerSanity.put(player, Math.min(100, playerSanity.getOrDefault(player, 100.0) + amount));
- }
- private void updateActionBar(Player player) {
- double wetness = playerWetness.getOrDefault(player, 0.0);
- double sanity = playerSanity.getOrDefault(player, 100.0);
- String message = String.format(
- ChatColor.BLUE + "Przemoczenie: %.1f%% " + ChatColor.GREEN + "Psychika: %.1f%%",
- wetness, sanity
- );
- player.sendActionBar(message);
- if (wetness > 90 || sanity < 10) {
- player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0f, 1.0f);
- player.spawnParticle(org.bukkit.Particle.WATER_SPLASH, player.getLocation().add(0, 1, 0), 10);
- }
- }
- private void dropRandomItem(Player player) {
- ItemStack[] inventory = player.getInventory().getContents();
- Random random = new Random();
- ItemStack itemToDrop = null;
- while (itemToDrop == null && inventory.length > 0) {
- int slot = random.nextInt(inventory.length);
- itemToDrop = inventory[slot];
- }
- if (itemToDrop != null) {
- player.getInventory().remove(itemToDrop);
- player.getWorld().dropItemNaturally(player.getLocation(), itemToDrop);
- player.sendMessage(ChatColor.RED + "Upuściłeś przedmiot z powodu przemoczenia!");
- }
- }
- private void startStatusUpdater() {
- new BukkitRunnable() {
- @Override
- public void run() {
- for (Player player : Bukkit.getOnlinePlayers()) {
- updatePlayerStatus(player);
- }
- }
- }.runTaskTimer(this, 0L, 20L); // Run every second (20 ticks)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement