From 0f52e40621665d47250316bb33dd3cbcd3a58116 Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Sat, 6 Jun 2026 17:11:42 +0200 Subject: [PATCH 1/3] fix: renamed tag in 26.1.2 --- ...ayer_cannot_survive_on.json => cannot_support_snow_layer.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/resources/datapacks/omc_dream/data/minecraft/tags/block/{snow_layer_cannot_survive_on.json => cannot_support_snow_layer.json} (100%) diff --git a/src/main/resources/datapacks/omc_dream/data/minecraft/tags/block/snow_layer_cannot_survive_on.json b/src/main/resources/datapacks/omc_dream/data/minecraft/tags/block/cannot_support_snow_layer.json similarity index 100% rename from src/main/resources/datapacks/omc_dream/data/minecraft/tags/block/snow_layer_cannot_survive_on.json rename to src/main/resources/datapacks/omc_dream/data/minecraft/tags/block/cannot_support_snow_layer.json From ba23974b8f34e6b5554dfb9bacc19c42513eb138 Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Sun, 7 Jun 2026 11:59:35 +0200 Subject: [PATCH 2/3] change: buff CrazyFrog ai --- .../dream/registries/mobs/CrazyFrog.java | 48 ++++++++++++++++++- .../core/utils/world/LocationUtils.java | 10 ++++ 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/src/main/java/fr/openmc/core/features/dream/registries/mobs/CrazyFrog.java b/src/main/java/fr/openmc/core/features/dream/registries/mobs/CrazyFrog.java index 70dedb983..4c9bc8c6f 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/mobs/CrazyFrog.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/mobs/CrazyFrog.java @@ -1,15 +1,33 @@ package fr.openmc.core.features.dream.registries.mobs; +import fr.openmc.core.OMCPlugin; +import fr.openmc.core.OMCRegistry; import fr.openmc.core.features.dream.models.registry.DreamMob; import fr.openmc.core.features.dream.registries.DreamItemRegistry; import fr.openmc.core.registry.loottable.CustomLoot; import fr.openmc.core.utils.RandomUtils; +import fr.openmc.core.utils.world.LocationUtils; +import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Frog; +import org.bukkit.entity.LivingEntity; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.util.Vector; import java.util.List; -public class CrazyFrog extends DreamMob { +/** + * Ring ding ding daa baa + * Baa aramba baa bom baa barooumba + * Wh-wha-what′s going on-on? + * Ding, ding + * This is the Crazy Frog + * Ding, ding + * Bem bem! + */ +public class CrazyFrog extends DreamMob implements Listener { public CrazyFrog(String id) { super(id, @@ -37,4 +55,32 @@ public Frog spawn(Location location) { return frog; } + + @EventHandler + public void onHit(EntityDamageByEntityEvent event) { + if (!(OMCRegistry.CUSTOM_MOBS.getMob(event.getEntity()) instanceof CrazyFrog)) return; + if (!(event.getEntity() instanceof Frog frog)) return; + + Bukkit.getScheduler().runTaskLater(OMCPlugin.getInstance(), () -> { + jump(frog, RandomUtils.randomBetween(14, 15)); + for (int i = 0; i <= 3; i++) { + Bukkit.getScheduler().runTaskLater(OMCPlugin.getInstance(), () -> + jump(frog, RandomUtils.randomBetween(9, 13)), 40L * i); + }},5L); + } + + private void jump(LivingEntity entity, double distance) { + Location to = LocationUtils.randomLocation(entity.getLocation(), distance); + Location from = entity.getLocation(); + + double dx = to.getX() - from.getX(); + double dz = to.getZ() - from.getZ(); + + double vy = 0.85; + double tick = (vy / 0.08) / 2; + double vx = dx / tick; + double vz = dz / tick; + + entity.setVelocity(new Vector(vx, vy, vz)); + } } diff --git a/src/main/java/fr/openmc/core/utils/world/LocationUtils.java b/src/main/java/fr/openmc/core/utils/world/LocationUtils.java index 1bc4b56ab..8d8fc52c0 100644 --- a/src/main/java/fr/openmc/core/utils/world/LocationUtils.java +++ b/src/main/java/fr/openmc/core/utils/world/LocationUtils.java @@ -9,6 +9,16 @@ import java.util.Random; public class LocationUtils { + public static Location randomLocation(Location origin, double distance) { + double angle = Math.random() * 2 * Math.PI; + + double x = origin.getX() + Math.cos(angle) * distance; + double z = origin.getZ() + Math.sin(angle) * distance; + + Location target = new Location(origin.getWorld(), x, origin.getY(), z); + return target.getWorld().getHighestBlockAt(target).getLocation().add(0, 1, 0); + } + public static Location getSafeNearbySurface(Location location, int radius) { World world = location.getWorld(); int baseY = location.getBlockY(); From c1030f1519e11d76bc71ab326f9b73abee1cebf0 Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Sun, 7 Jun 2026 13:41:31 +0200 Subject: [PATCH 3/3] fix: multiple jump --- .../dream/registries/mobs/CrazyFrog.java | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/main/java/fr/openmc/core/features/dream/registries/mobs/CrazyFrog.java b/src/main/java/fr/openmc/core/features/dream/registries/mobs/CrazyFrog.java index 4c9bc8c6f..16b84f56b 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/mobs/CrazyFrog.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/mobs/CrazyFrog.java @@ -14,8 +14,10 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.scheduler.BukkitTask; import org.bukkit.util.Vector; +import java.util.HashMap; import java.util.List; /** @@ -29,6 +31,8 @@ */ public class CrazyFrog extends DreamMob implements Listener { + private static final HashMap jumpTasks = new HashMap<>(); + public CrazyFrog(String id) { super(id, "Grenouille Folle", @@ -61,12 +65,17 @@ public void onHit(EntityDamageByEntityEvent event) { if (!(OMCRegistry.CUSTOM_MOBS.getMob(event.getEntity()) instanceof CrazyFrog)) return; if (!(event.getEntity() instanceof Frog frog)) return; - Bukkit.getScheduler().runTaskLater(OMCPlugin.getInstance(), () -> { + if (jumpTasks.containsKey(frog)) { + cancelJumps(frog); + } + + jumpTasks.put(frog, Bukkit.getScheduler().runTaskLater(OMCPlugin.getInstance(), () -> { jump(frog, RandomUtils.randomBetween(14, 15)); for (int i = 0; i <= 3; i++) { - Bukkit.getScheduler().runTaskLater(OMCPlugin.getInstance(), () -> - jump(frog, RandomUtils.randomBetween(9, 13)), 40L * i); - }},5L); + Bukkit.getScheduler().runTaskLater(OMCPlugin.getInstance(), () -> { + jump(frog, RandomUtils.randomBetween(9, 13)); + }, 40L * i); + }},5L)); } private void jump(LivingEntity entity, double distance) { @@ -83,4 +92,9 @@ private void jump(LivingEntity entity, double distance) { entity.setVelocity(new Vector(vx, vy, vz)); } + + private void cancelJumps(Frog frog) { + BukkitTask task = jumpTasks.remove(frog); + if (task != null) task.cancel(); + } }