From 6a88b0935b952a5848f75d31cd8f19cf162a25dc Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Wed, 17 Jun 2026 15:01:41 +0200 Subject: [PATCH 01/13] dump pack format version --- .../core/bootstrap/integration/ResourcePacksGenerator.java | 2 +- src/main/resources/datapacks/omc_dream/pack.mcmeta | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/fr/openmc/core/bootstrap/integration/ResourcePacksGenerator.java b/src/main/java/fr/openmc/core/bootstrap/integration/ResourcePacksGenerator.java index abd7ab6aa..fc4104b6f 100644 --- a/src/main/java/fr/openmc/core/bootstrap/integration/ResourcePacksGenerator.java +++ b/src/main/java/fr/openmc/core/bootstrap/integration/ResourcePacksGenerator.java @@ -16,7 +16,7 @@ public class ResourcePacksGenerator { // https://minecraft.wiki/w/Pack_format - private static final String FORMAT_VERSION = "84"; + private static final String FORMAT_VERSION = "88"; /** * Generate the base structure of a resource pack in the plugin's data folder, with the given name. diff --git a/src/main/resources/datapacks/omc_dream/pack.mcmeta b/src/main/resources/datapacks/omc_dream/pack.mcmeta index 50948629b..d34453c06 100644 --- a/src/main/resources/datapacks/omc_dream/pack.mcmeta +++ b/src/main/resources/datapacks/omc_dream/pack.mcmeta @@ -1,8 +1,8 @@ { "pack": { "description": "Le Pack de données des Rêves d'OpenMC", - "pack_format": 101, - "min_format": 101, - "max_format": 101 + "pack_format": 107.1, + "min_format": 107.1, + "max_format": 107.1 } } \ No newline at end of file From f4990b8409600bfc6aad88389daacfd89eb8f0b0 Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Wed, 17 Jun 2026 15:04:14 +0200 Subject: [PATCH 02/13] fix new datapack version (omc_dream) --- .../configured_feature/glacite/lake/glacite_lake.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/resources/datapacks/omc_dream/data/omc_dream/worldgen/configured_feature/glacite/lake/glacite_lake.json b/src/main/resources/datapacks/omc_dream/data/omc_dream/worldgen/configured_feature/glacite/lake/glacite_lake.json index b17afc6fe..2d163f2ab 100644 --- a/src/main/resources/datapacks/omc_dream/data/omc_dream/worldgen/configured_feature/glacite/lake/glacite_lake.json +++ b/src/main/resources/datapacks/omc_dream/data/omc_dream/worldgen/configured_feature/glacite/lake/glacite_lake.json @@ -12,6 +12,15 @@ "state": { "Name": "blue_ice" } + }, + "can_place_feature": { + "type": "minecraft:true" + }, + "can_replace_with_air_or_fluid": { + "type": "minecraft:true" + }, + "can_replace_with_barrier": { + "type": "minecraft:true" } } } \ No newline at end of file From 579e7f003e6ad1a3ec802512029a5fb677056ff9 Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Wed, 17 Jun 2026 15:04:38 +0200 Subject: [PATCH 03/13] dump versions (26.2 and other libs) --- gradle.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index 1033ab9f6..89bfc59ba 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -minecraftVersion = 26.1.2 +minecraftVersion = 26.2 paperWeightUserDevVersion = 2.0.0-beta.21 # Plugins @@ -17,7 +17,7 @@ ormVersion = 6.1 lombokVersion = 1.18.46 # Test Dependencies -slf4jVersion = 2.0.17 -junitVersion = 6.0.3 +slf4jVersion = 2.1.0-alpha1 +junitVersion = 6.1 mockbukkitVersion = 4.113.1 h2DatabaseVersion = 2.4.240 From f87a4e3ad8650078d15e742ec56f9424c4a0a87e Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Wed, 17 Jun 2026 17:35:26 +0200 Subject: [PATCH 04/13] dump version datapack injected --- .../fr/openmc/api/datapacks/injectors/PackMetadataInjector.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fr/openmc/api/datapacks/injectors/PackMetadataInjector.java b/src/main/java/fr/openmc/api/datapacks/injectors/PackMetadataInjector.java index ee06d15b2..dc6681ffc 100644 --- a/src/main/java/fr/openmc/api/datapacks/injectors/PackMetadataInjector.java +++ b/src/main/java/fr/openmc/api/datapacks/injectors/PackMetadataInjector.java @@ -8,7 +8,7 @@ import java.nio.file.Path; public class PackMetadataInjector implements DatapackInjector { - private static final double[] PACK_FORMAT = new double[] {101.1, 1}; + private static final double[] PACK_FORMAT = new double[] {107.1, 1}; @Override public void inject(File rootFile) { From 42edea0d4a5b90ce44835a00da2a0fa5748eed8c Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Wed, 17 Jun 2026 17:45:37 +0200 Subject: [PATCH 05/13] dump gradleup.shadow --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 6f8926470..35d1b828b 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java' - id "com.gradleup.shadow" version "9.4.1" + id "com.gradleup.shadow" version "9.4.2" id "io.papermc.paperweight.userdev" version "${paperWeightUserDevVersion}" id("xyz.jpenilla.run-paper") version "3.0.2" // Will use ${minecraftVersion} for the paper version } From 1ee76463aedec77f69b6d80b1149bc62d395392b Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Wed, 8 Jul 2026 16:44:38 +0200 Subject: [PATCH 06/13] update: fancy npcs --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 89bfc59ba..5e6cbbf63 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ itemsAdderVersion = 4.0.10 luckpermsVersion = 5.5 placeholderApiVersion = 2.11.7 worldeditVersion = 7.4.0 -fancyNpcsVersion = 2.9.0 +fancyNpcsVersion = 2.10.0 protocolLibVersion = 5.4.0 # Dependencies From 3ad594e5da3a8af09fdd5c9b0c67827edc574b94 Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Wed, 8 Jul 2026 17:01:02 +0200 Subject: [PATCH 07/13] bump gradle and dependancies --- build.gradle | 2 +- gradle.properties | 6 +++--- gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 35d1b828b..ac2e736ef 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java' - id "com.gradleup.shadow" version "9.4.2" + id "com.gradleup.shadow" version "9.5.1" id "io.papermc.paperweight.userdev" version "${paperWeightUserDevVersion}" id("xyz.jpenilla.run-paper") version "3.0.2" // Will use ${minecraftVersion} for the paper version } diff --git a/gradle.properties b/gradle.properties index 5e6cbbf63..49b70f552 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,12 +12,12 @@ protocolLibVersion = 5.4.0 # Dependencies jetbrainsAnnotationsVersion = 26.1.0 -revxrsalLampVersion = 4.0.0-rc.16 +revxrsalLampVersion = 4.0.0-rc.17 ormVersion = 6.1 lombokVersion = 1.18.46 # Test Dependencies slf4jVersion = 2.1.0-alpha1 -junitVersion = 6.1 -mockbukkitVersion = 4.113.1 +junitVersion = 6.1.1 +mockbukkitVersion = 4.114.0 h2DatabaseVersion = 2.4.240 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3271eae37..c1d705cac 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From 389e5c7122a7e76ad5ca882926e14389385bbe10 Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Wed, 8 Jul 2026 17:17:26 +0200 Subject: [PATCH 08/13] build: fix (version of gson and guava incorrect between dependancies) --- build.gradle | 10 ++++++++-- gradle/wrapper/gradle-wrapper.properties | 2 -- .../openmc/core/utils/world/entities/TextDisplay.java | 9 +++------ 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/build.gradle b/build.gradle index ac2e736ef..041741b32 100644 --- a/build.gradle +++ b/build.gradle @@ -51,11 +51,17 @@ repositories { dependencies { paperweight.paperDevBundle "${minecraftVersion}.build.+" - compileOnly "com.sk89q.worldguard:worldguard-bukkit:${worldguardVersion}" + compileOnly("com.sk89q.worldguard:worldguard-bukkit:${worldguardVersion}") { + exclude group: 'com.google.guava', module: 'guava' + exclude group: 'com.google.code.gson', module: 'gson' + } compileOnly "dev.lone:api-itemsadder:${itemsAdderVersion}" compileOnly "net.luckperms:api:${luckpermsVersion}" compileOnly "me.clip:placeholderapi:${placeholderApiVersion}" - compileOnly "com.sk89q.worldedit:worldedit-bukkit:${worldeditVersion}" + compileOnly("com.sk89q.worldedit:worldedit-bukkit:${worldeditVersion}") { + exclude group: 'com.google.guava', module: 'guava' + exclude group: 'com.google.code.gson', module: 'gson' + } compileOnly "de.oliver:FancyNpcs:${fancyNpcsVersion}" compileOnly "net.dmulloy2:ProtocolLib:${protocolLibVersion}" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c1d705cac..53761cb27 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip -networkTimeout=10000 -validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists \ No newline at end of file diff --git a/src/main/java/fr/openmc/core/utils/world/entities/TextDisplay.java b/src/main/java/fr/openmc/core/utils/world/entities/TextDisplay.java index d6d668383..9c496b820 100644 --- a/src/main/java/fr/openmc/core/utils/world/entities/TextDisplay.java +++ b/src/main/java/fr/openmc/core/utils/world/entities/TextDisplay.java @@ -12,10 +12,7 @@ import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.Brightness; -import net.minecraft.world.entity.Display; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.PositionMoveRotation; +import net.minecraft.world.entity.*; import net.minecraft.world.phys.Vec3; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -39,7 +36,7 @@ public class TextDisplay { public TextDisplay(Component text, Location location, Vector3f scale) { this.location = location; - textDisplay = new Display.TextDisplay(EntityType.TEXT_DISPLAY, ((CraftWorld) location.getWorld()).getHandle()); + textDisplay = new Display.TextDisplay(EntityTypes.TEXT_DISPLAY, ((CraftWorld) location.getWorld()).getHandle()); textDisplay.setPos(location.getX(), location.getY(), location.getZ()); textDisplay.setRot(location.getYaw(), location.getPitch()); textDisplay.setBillboardConstraints(Display.BillboardConstraints.CENTER); @@ -72,7 +69,7 @@ private void addViewer(Player viewer) { textDisplay.getZ(), textDisplay.getXRot(), textDisplay.getYRot(), - EntityType.TEXT_DISPLAY, + EntityTypes.TEXT_DISPLAY, 0, Vec3.ZERO, 0 From ed5100ba9378a778dfe2a9fb01fab71e29eca07b Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Wed, 8 Jul 2026 18:43:14 +0200 Subject: [PATCH 09/13] change: esc menu --- .../graveyard_esc/textures/bottom_esc.png | Bin 7951 -> 12466 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/contents/omc_esc/resourcepack/assets/graveyard_esc/textures/bottom_esc.png b/src/main/resources/contents/omc_esc/resourcepack/assets/graveyard_esc/textures/bottom_esc.png index 510c13b5abc7b0d218acd91a3aa848541530fa1f..d327b859b9ba309b59a7114ab5b93af7efc15efe 100644 GIT binary patch literal 12466 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 T@6UVxvyJv;J@rC0LdgFBH;GM3 From 27911463ddddd7041353effd09552aaaa8103b2d Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Wed, 8 Jul 2026 19:01:42 +0200 Subject: [PATCH 10/13] fix: scoreboard --- .../api/scoreboard/SternalBoardHandler.java | 70 ++++++------------- 1 file changed, 20 insertions(+), 50 deletions(-) diff --git a/src/main/java/fr/openmc/api/scoreboard/SternalBoardHandler.java b/src/main/java/fr/openmc/api/scoreboard/SternalBoardHandler.java index 2475235b4..84ff6d236 100644 --- a/src/main/java/fr/openmc/api/scoreboard/SternalBoardHandler.java +++ b/src/main/java/fr/openmc/api/scoreboard/SternalBoardHandler.java @@ -7,8 +7,7 @@ import net.minecraft.network.protocol.game.*; import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.network.ServerGamePacketListenerImpl; -import net.minecraft.world.scores.DisplaySlot; -import net.minecraft.world.scores.Team; +import net.minecraft.world.scores.*; import net.minecraft.world.scores.criteria.ObjectiveCriteria; import org.bukkit.ChatColor; import org.bukkit.craftbukkit.entity.CraftPlayer; @@ -64,8 +63,6 @@ public abstract class SternalBoardHandler { private static final MethodHandle SEND_PACKET; private static final SternalReflection.PacketConstructor PACKET_SB_OBJ; private static final SternalReflection.PacketConstructor PACKET_SB_DISPLAY_OBJ; - private static final SternalReflection.PacketConstructor PACKET_SB_TEAM; - private static final SternalReflection.PacketConstructor PACKET_SB_SERIALIZABLE_TEAM; private static final MethodHandle PACKET_SB_SET_SCORE; private static final MethodHandle PACKET_SB_RESET_SCORE; private static final MethodHandle FIXED_NUMBER_FORMAT; @@ -79,12 +76,6 @@ public abstract class SternalBoardHandler { PACKET_SB_OBJ = SternalReflection.findPacketConstructor(ClientboundSetObjectivePacket.class, lookup); PACKET_SB_DISPLAY_OBJ = SternalReflection.findPacketConstructor(ClientboundSetDisplayObjectivePacket.class, lookup); - PACKET_SB_TEAM = SternalReflection.findPacketConstructor(ClientboundSetPlayerTeamPacket.class, lookup); - - Class sbTeamClass = SternalReflection.innerClass(ClientboundSetPlayerTeamPacket.class, - innerClass -> !innerClass.isEnum()); - PACKET_SB_SERIALIZABLE_TEAM = sbTeamClass != null ? - SternalReflection.findPacketConstructor(sbTeamClass, lookup) : null; PACKET_SB_SET_SCORE = lookup.findConstructor(ClientboundSetScorePacket.class, MethodType.methodType(void.class, String.class, String.class, int.class, @@ -98,7 +89,7 @@ public abstract class SternalBoardHandler { for (Class clazz : Arrays.asList(ClientboundSetObjectivePacket.class, ClientboundSetDisplayObjectivePacket.class, ClientboundSetScorePacket.class, - ClientboundSetPlayerTeamPacket.class, sbTeamClass)) { + ClientboundSetPlayerTeamPacket.class)) { if (clazz == null) continue; Field[] fields = Arrays.stream(clazz.getDeclaredFields()) @@ -414,52 +405,31 @@ protected void sendTeamPacket(int score, TeamMode mode, T prefix, T suffix) thro throw new UnsupportedOperationException(); } - Object packet = PACKET_SB_TEAM.invoke(); - - setField(packet, String.class, this.id + ':' + score); - setField(packet, int.class, mode.ordinal(), 0); + PlayerTeam team = createPlayerTeam(score, prefix, suffix); if (mode == TeamMode.REMOVE) { - sendPacket(packet); + sendPacket(ClientboundSetPlayerTeamPacket.createRemovePacket(team)); return; } - Object team = PACKET_SB_SERIALIZABLE_TEAM.invoke(); - - // Set component fields - setComponentField(team, null, 0); // displayName - setComponentField(team, prefix, 1); // prefix - setComponentField(team, suffix, 2); // suffix - - // Set String fields (nametagVisibility and collisionRule) - setField(team, String.class, "always", 0); - setField(team, String.class, "always", 1); - - // Set enum fields - only set each once (not twice) - setField(team, Team.Visibility.class, Team.Visibility.ALWAYS, 0); - setField(team, Team.CollisionRule.class, Team.CollisionRule.ALWAYS, 0); - - // Try to set NamedTextColor if it exists - try { - setField(team, net.minecraft.ChatFormatting.class, net.minecraft.ChatFormatting.WHITE, 0); - } catch (Exception ignored) { - // Field might not exist or be different type - } - - // Try to set int flags if they exist - try { - setField(team, int.class, 0x00, 0); - } catch (Exception ignored) { - // Field might not exist - } + sendPacket(ClientboundSetPlayerTeamPacket.createAddOrModifyPacket(team, + mode == TeamMode.CREATE)); + } - setField(packet, Optional.class, Optional.of(team)); + private PlayerTeam createPlayerTeam(int score, T prefix, T suffix) throws Throwable { + Scoreboard scoreboard = new Scoreboard(); + PlayerTeam team = scoreboard.addPlayerTeam(this.id + ':' + score); - if (mode == TeamMode.CREATE) { - setField(packet, Collection.class, Collections.singletonList(COLOR_CODES[score])); - } + team.setDisplayName((net.minecraft.network.chat.Component) toMinecraftComponent(null)); + team.setPlayerPrefix((net.minecraft.network.chat.Component) toMinecraftComponent(prefix)); + team.setPlayerSuffix((net.minecraft.network.chat.Component) toMinecraftComponent(suffix)); + team.setNameTagVisibility(Team.Visibility.ALWAYS); + team.setCollisionRule(Team.CollisionRule.ALWAYS); + team.setColor(Optional.of(TeamColor.WHITE)); + team.unpackOptions((byte) 0x00); + scoreboard.addPlayerToTeam(COLOR_CODES[score], team); - sendPacket(packet); + return team; } private void sendPacket(Object packet) throws Throwable { @@ -507,4 +477,4 @@ public enum TeamMode { public enum ScoreboardAction { CHANGE, REMOVE } -} \ No newline at end of file +} From 500b3ec862d8040d551482ae28fed0ac01815e33 Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Thu, 9 Jul 2026 14:08:06 +0200 Subject: [PATCH 11/13] =?UTF-8?q?fix:=20support=20for=20SulfurCube=20(les?= =?UTF-8?q?=20collisions=20sont=20impossibles=20=C3=A0=20detecter,=20c'est?= =?UTF-8?q?=20cot=C3=A9=20client.)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listeners/protections/EntityProtection.java | 7 +++++++ .../listeners/protections/ExplodeProtection.java | 3 ++- .../listeners/protections/InteractProtection.java | 13 +++++++++++-- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/java/fr/openmc/core/features/city/listeners/protections/EntityProtection.java b/src/main/java/fr/openmc/core/features/city/listeners/protections/EntityProtection.java index b56875866..9a728d7fb 100644 --- a/src/main/java/fr/openmc/core/features/city/listeners/protections/EntityProtection.java +++ b/src/main/java/fr/openmc/core/features/city/listeners/protections/EntityProtection.java @@ -1,5 +1,6 @@ package fr.openmc.core.features.city.listeners.protections; +import com.destroystokyo.paper.event.entity.EntityKnockbackByEntityEvent; import fr.openmc.core.features.city.ProtectionsManager; import org.bukkit.entity.Enderman; import org.bukkit.entity.Entity; @@ -39,4 +40,10 @@ public void onEntityChangeBlock(EntityChangeBlockEvent event) { if (!(event.getEntity() instanceof Enderman enderman)) return; ProtectionsManager.verify(enderman, event, enderman.getLocation()); } + + @EventHandler(ignoreCancelled = true) + public void onEntityKnockbackByEntity(EntityKnockbackByEntityEvent event) { + if (!(event.getHitBy() instanceof Player player)) return; + ProtectionsManager.verify(player, event, event.getEntity().getLocation()); + } } diff --git a/src/main/java/fr/openmc/core/features/city/listeners/protections/ExplodeProtection.java b/src/main/java/fr/openmc/core/features/city/listeners/protections/ExplodeProtection.java index 28753f9b8..0edc33299 100644 --- a/src/main/java/fr/openmc/core/features/city/listeners/protections/ExplodeProtection.java +++ b/src/main/java/fr/openmc/core/features/city/listeners/protections/ExplodeProtection.java @@ -36,7 +36,8 @@ public class ExplodeProtection implements Listener { EntityType.WITHER, EntityType.END_CRYSTAL, EntityType.TNT_MINECART, - EntityType.DRAGON_FIREBALL + EntityType.DRAGON_FIREBALL, + EntityType.SULFUR_CUBE ); @EventHandler(ignoreCancelled = true) diff --git a/src/main/java/fr/openmc/core/features/city/listeners/protections/InteractProtection.java b/src/main/java/fr/openmc/core/features/city/listeners/protections/InteractProtection.java index 01d3f6fa4..2383d5317 100644 --- a/src/main/java/fr/openmc/core/features/city/listeners/protections/InteractProtection.java +++ b/src/main/java/fr/openmc/core/features/city/listeners/protections/InteractProtection.java @@ -9,7 +9,7 @@ import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Entity; -import org.bukkit.entity.ItemFrame; +import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -22,6 +22,9 @@ import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; +import java.util.HashSet; +import java.util.Set; + public class InteractProtection implements Listener { @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) @@ -73,13 +76,19 @@ public void onInteract(PlayerInteractEvent event) { ProtectionsManager.verify(player, event, location); } + private final Set INTERACTION_REFUSED = new HashSet<>(Set.of( + EntityType.ITEM_FRAME, + EntityType.GLOW_ITEM_FRAME, + EntityType.SULFUR_CUBE + )); + @EventHandler public void onInteractAtEntity(PlayerInteractAtEntityEvent event) { if (event.getHand() != EquipmentSlot.HAND) return; Entity rightClicked = event.getRightClicked(); if (rightClicked instanceof Player) return; - if (!(rightClicked instanceof ItemFrame)) return; + if (!INTERACTION_REFUSED.contains(rightClicked.getType())) return; if (MascotUtils.canBeAMascot(rightClicked)) return; From 91cf879e84c230fbb0fccadf5af45cd0994319fe Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Thu, 9 Jul 2026 14:28:50 +0200 Subject: [PATCH 12/13] build: fix --- .../miraculousfishing/listeners/EatKebabFermentedListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fr/openmc/core/features/events/contents/dailyevents/contents/miraculousfishing/listeners/EatKebabFermentedListener.java b/src/main/java/fr/openmc/core/features/events/contents/dailyevents/contents/miraculousfishing/listeners/EatKebabFermentedListener.java index 6b0925e29..ef6564579 100644 --- a/src/main/java/fr/openmc/core/features/events/contents/dailyevents/contents/miraculousfishing/listeners/EatKebabFermentedListener.java +++ b/src/main/java/fr/openmc/core/features/events/contents/dailyevents/contents/miraculousfishing/listeners/EatKebabFermentedListener.java @@ -1,6 +1,5 @@ package fr.openmc.core.features.events.contents.dailyevents.contents.miraculousfishing.listeners; -import edu.umd.cs.findbugs.annotations.Nullable; import fr.openmc.core.OMCRegistry; import fr.openmc.core.registry.items.CustomItem; import fr.openmc.core.utils.text.messages.TranslationManager; @@ -14,6 +13,7 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.util.Vector; +import javax.annotation.Nullable; import java.util.Optional; /** From 9513778114222633b9e75dec10660a468f94295f Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Thu, 9 Jul 2026 16:19:03 +0200 Subject: [PATCH 13/13] build: fix --- .../dream/mecanism/sfx/ghost/DreamGhostManager.java | 4 ++-- .../java/fr/openmc/core/utils/nms/PlayerBiomeNMS.java | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/fr/openmc/core/features/dream/mecanism/sfx/ghost/DreamGhostManager.java b/src/main/java/fr/openmc/core/features/dream/mecanism/sfx/ghost/DreamGhostManager.java index bff143dce..ee0d834b3 100644 --- a/src/main/java/fr/openmc/core/features/dream/mecanism/sfx/ghost/DreamGhostManager.java +++ b/src/main/java/fr/openmc/core/features/dream/mecanism/sfx/ghost/DreamGhostManager.java @@ -8,7 +8,7 @@ import fr.openmc.core.utils.nms.SkullNMS; import fr.openmc.core.utils.nms.entity.*; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EntityTypes; import net.minecraft.world.entity.ai.attributes.AttributeInstance; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.decoration.ArmorStand; @@ -102,7 +102,7 @@ public void run() { } private static void sendGhostTo(Player receiver, Player ghostOf, int entityId, ArmorStand stand) { - EntitySpawnNMS.sendSpawnPacket(receiver, EntityType.ARMOR_STAND, entityId, stand.getUUID(), ghostOf.getLocation()); + EntitySpawnNMS.sendSpawnPacket(receiver, EntityTypes.ARMOR_STAND, entityId, stand.getUUID(), ghostOf.getLocation()); EntitySpawnNMS.sendMetaDataEntity(receiver, stand); EntityEquipmentNMS.sendHelmetPacket(receiver, entityId, SkullNMS.getPlayerSkullNMS(ghostOf)); } diff --git a/src/main/java/fr/openmc/core/utils/nms/PlayerBiomeNMS.java b/src/main/java/fr/openmc/core/utils/nms/PlayerBiomeNMS.java index 9407bd618..46df5530f 100644 --- a/src/main/java/fr/openmc/core/utils/nms/PlayerBiomeNMS.java +++ b/src/main/java/fr/openmc/core/utils/nms/PlayerBiomeNMS.java @@ -138,7 +138,7 @@ public static void replaceBiomes( public static LevelChunk getFakeChunk(LevelChunk original, ServerLevel level, Holder biome) { LevelChunk fakeChunk = new LevelChunk(level, original.getPos()); - Strategy> idMap = Strategy.createForBiomes(original.level.registryAccess().lookupOrThrow(Registries.BIOME).asHolderIdMap()); + Strategy> idMap = Strategy.createForBiomes(original.getLevel().registryAccess().lookupOrThrow(Registries.BIOME).asHolderIdMap()); LevelChunkSection[] originalSections = original.getSections(); LevelChunkSection[] fakeSections = fakeChunk.getSections(); @@ -172,10 +172,10 @@ private static LevelChunk getFakeChunkWithMapping( LevelChunk original, String keyMappedBiome, Function identifierModifier) { - LevelChunk fake = new LevelChunk(original.level, original.getPos()); + LevelChunk fake = new LevelChunk(original.getLevel(), original.getPos()); - Registry registry = original.level.registryAccess().lookupOrThrow(Registries.BIOME); - Strategy> idMap = Strategy.createForBiomes(original.level.registryAccess().lookupOrThrow(Registries.BIOME).asHolderIdMap()); + Registry registry = original.getLevel().registryAccess().lookupOrThrow(Registries.BIOME); + Strategy> idMap = Strategy.createForBiomes(original.getLevel().registryAccess().lookupOrThrow(Registries.BIOME).asHolderIdMap()); LevelChunkSection[] originalSections = original.getSections(); LevelChunkSection[] fakeSections = fake.getSections();