From e54f3fcf116fa4ac8a70bc154cd4ab8db603f6a9 Mon Sep 17 00:00:00 2001 From: AlphaKR93 Date: Sat, 14 Dec 2024 12:22:39 +0900 Subject: [PATCH] Add tick toggle command --- .../server/0007-Plazma-Configurations.patch | 13 ++- ...8-Setup-basic-configuration-sections.patch | 18 ++-- .../server/0014-Tweak-console-logging.patch | 4 +- ...-option-to-change-nether-portal-size.patch | 4 +- ...sable-moved-to-quickly-check-for-spe.patch | 4 +- ...021-Configurable-cave-lava-sea-level.patch | 4 +- .../server/0031-Implement-FreedomChat.patch | 4 +- ...flag-when-loading-maps-from-the-disk.patch | 4 +- ...0036-Load-player-data-asynchronously.patch | 4 +- ...mize-advancement-criteria-triggering.patch | 4 +- ...3-Process-pathfinding-asynchronously.patch | 4 +- ...nt-alternative-noise-chunk-generator.patch | 6 +- ...7-Add-option-to-allow-shoot-fireball.patch | 93 ++++++++++++++++--- ...0050-Port-minor-SparklyPaper-patches.patch | 11 ++- ...5-SparklyPaper-Optimize-season-check.patch | 4 +- .../server/0057-Implement-CarpetFixes.patch | 8 +- patches/server/0058-Ticking-Controller.patch | 4 +- .../server/0060-Tick-toggle-subcommand.patch | 36 +++++++ 18 files changed, 170 insertions(+), 59 deletions(-) create mode 100644 patches/server/0060-Tick-toggle-subcommand.patch diff --git a/patches/server/0007-Plazma-Configurations.patch b/patches/server/0007-Plazma-Configurations.patch index e520e04..17c43ef 100644 --- a/patches/server/0007-Plazma-Configurations.patch +++ b/patches/server/0007-Plazma-Configurations.patch @@ -1017,16 +1017,20 @@ index 0000000000000000000000000000000000000000..b6664ba0fce55f5cfa0c8d3051dc8c2b +} diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java new file mode 100644 -index 0000000000000000000000000000000000000000..d8006ae086c18a4ef43906d516eba0d5fd397f5f +index 0000000000000000000000000000000000000000..b638690d5cd2360444e6c525f97f634d8e1dc60e --- /dev/null +++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -@@ -0,0 +1,26 @@ +@@ -0,0 +1,30 @@ +package org.plazmamc.plazma.configurations; + +import io.papermc.paper.configuration.Configuration; +import io.papermc.paper.configuration.ConfigurationPart; ++import it.unimi.dsi.fastutil.objects.Reference2ObjectMap; ++import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap; ++import net.minecraft.Util; +import org.jetbrains.annotations.NotNull; +import org.spongepowered.configurate.objectmapping.meta.Setting; ++import java.util.List; + +@SuppressWarnings({"CanBeFinal", "FieldCanBeLocal", "FieldMayBeFinal", "InnerClassMayBeStatic"}) +public class GlobalConfiguration extends ConfigurationPart { @@ -1321,16 +1325,17 @@ index 0000000000000000000000000000000000000000..f2d3d51cb4b8fc7a5fd6db1a63289fff +} diff --git a/src/main/java/plazma/Config.java b/src/main/java/plazma/Config.java new file mode 100644 -index 0000000000000000000000000000000000000000..afa60976a6a0bbdd8ed5b9231df2aeeb669b231e +index 0000000000000000000000000000000000000000..dbba467f668600ef3dcc653d9bfe1f712c69e245 --- /dev/null +++ b/src/main/java/plazma/Config.java -@@ -0,0 +1,20 @@ +@@ -0,0 +1,21 @@ +package plazma; + +import org.jetbrains.annotations.Contract; +import org.jspecify.annotations.NonNull; +import org.plazmamc.plazma.configurations.GlobalConfiguration; +import org.plazmamc.plazma.configurations.PlazmaConfigurations; ++import java.util.List; + +public interface Config { + diff --git a/patches/server/0008-Setup-basic-configuration-sections.patch b/patches/server/0008-Setup-basic-configuration-sections.patch index 128126f..c2af4c6 100644 --- a/patches/server/0008-Setup-basic-configuration-sections.patch +++ b/patches/server/0008-Setup-basic-configuration-sections.patch @@ -5,21 +5,27 @@ Subject: [PATCH] Setup basic configuration sections diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -index d8006ae086c18a4ef43906d516eba0d5fd397f5f..aff5c68bc715c6ea9b5b808e5a94cbac9a3725ba 100644 +index b638690d5cd2360444e6c525f97f634d8e1dc60e..35d5bd2f7dba1aa74547b6ae994bc84a56911bf2 100644 --- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java +++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -@@ -3,6 +3,7 @@ package org.plazmamc.plazma.configurations; - import io.papermc.paper.configuration.Configuration; - import io.papermc.paper.configuration.ConfigurationPart; +@@ -6,6 +6,7 @@ import it.unimi.dsi.fastutil.objects.Reference2ObjectMap; + import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap; + import net.minecraft.Util; import org.jetbrains.annotations.NotNull; +import org.spongepowered.configurate.objectmapping.meta.PostProcess; import org.spongepowered.configurate.objectmapping.meta.Setting; + import java.util.List; - @SuppressWarnings({"CanBeFinal", "FieldCanBeLocal", "FieldMayBeFinal", "InnerClassMayBeStatic"}) -@@ -23,4 +24,49 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -27,4 +28,55 @@ public class GlobalConfiguration extends ConfigurationPart { @Setting(Configuration.VERSION_FIELD) int version = VERSION; ++ public Command command; ++ public class Command extends ConfigurationPart { ++ ++ ++ } ++ + public Player player; + public class Player extends ConfigurationPart { + diff --git a/patches/server/0014-Tweak-console-logging.patch b/patches/server/0014-Tweak-console-logging.patch index 785736b..b01b601 100644 --- a/patches/server/0014-Tweak-console-logging.patch +++ b/patches/server/0014-Tweak-console-logging.patch @@ -71,10 +71,10 @@ index 16999fa20c3621e016d1b0fadfb76f2fe03a2a69..8d7d050f12df83931bbb32f1832d7fcb } diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -index aff5c68bc715c6ea9b5b808e5a94cbac9a3725ba..779cdc523aab3afc529685f7e913bd6bb7336c51 100644 +index 35d5bd2f7dba1aa74547b6ae994bc84a56911bf2..e153370e617e63a8e497036c93ea55dfe851bc6e 100644 --- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java +++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -@@ -69,4 +69,14 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -79,4 +79,14 @@ public class GlobalConfiguration extends ConfigurationPart { } diff --git a/patches/server/0017-Add-option-to-change-nether-portal-size.patch b/patches/server/0017-Add-option-to-change-nether-portal-size.patch index 7a6f190..2dc40d7 100644 --- a/patches/server/0017-Add-option-to-change-nether-portal-size.patch +++ b/patches/server/0017-Add-option-to-change-nether-portal-size.patch @@ -36,10 +36,10 @@ index acdff7b4a00d563739fd301c3633a266875296fa..1266aaf4bfcf53aa16d7b9bd697a0c48 // CraftBukkit start - return boolean, add entity diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -index 779cdc523aab3afc529685f7e913bd6bb7336c51..665b77d5cdf81a73d28f93294ee590af746bdfbc 100644 +index e153370e617e63a8e497036c93ea55dfe851bc6e..11d386d3e134b1994302c4e026b6a11c46336522 100644 --- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java +++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -@@ -60,6 +60,26 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -70,6 +70,26 @@ public class GlobalConfiguration extends ConfigurationPart { public Structure structure; public class Structure extends ConfigurationPart { diff --git a/patches/server/0020-Add-option-to-disable-moved-to-quickly-check-for-spe.patch b/patches/server/0020-Add-option-to-disable-moved-to-quickly-check-for-spe.patch index 40042f4..338d0a3 100644 --- a/patches/server/0020-Add-option-to-disable-moved-to-quickly-check-for-spe.patch +++ b/patches/server/0020-Add-option-to-disable-moved-to-quickly-check-for-spe.patch @@ -24,10 +24,10 @@ index 9ae16e24013ea5664d4ea6d52ed7dd188404890f..91f161d27a45174b6f3c31440eea46ff return false; } else if (this.player.isChangingDimension()) { diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -index 665b77d5cdf81a73d28f93294ee590af746bdfbc..e2aa6b8ae63ed7f5a0882fcaf5a3fadc29f553f1 100644 +index 11d386d3e134b1994302c4e026b6a11c46336522..93d746b0e7f263b36a66864834445cb41e5e2cee 100644 --- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java +++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -@@ -27,6 +27,7 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -37,6 +37,7 @@ public class GlobalConfiguration extends ConfigurationPart { public Player player; public class Player extends ConfigurationPart { diff --git a/patches/server/0021-Configurable-cave-lava-sea-level.patch b/patches/server/0021-Configurable-cave-lava-sea-level.patch index 66d9ed5..25d7c37 100644 --- a/patches/server/0021-Configurable-cave-lava-sea-level.patch +++ b/patches/server/0021-Configurable-cave-lava-sea-level.patch @@ -33,10 +33,10 @@ index 3f39d6c786d9dfdd9ad591e08ff05fcbb41a1df6..0346fd4ab7095d66c0eef5a440afbc7a @Override diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -index e2aa6b8ae63ed7f5a0882fcaf5a3fadc29f553f1..6648d50cea38c17714785a335e5bc25f98d2595e 100644 +index 93d746b0e7f263b36a66864834445cb41e5e2cee..0b59a3a36c86948877cb8cb875dc114e9f9d284a 100644 --- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java +++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -@@ -35,6 +35,24 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -45,6 +45,24 @@ public class GlobalConfiguration extends ConfigurationPart { public WorldGeneration worldgen; public class WorldGeneration extends ConfigurationPart { diff --git a/patches/server/0031-Implement-FreedomChat.patch b/patches/server/0031-Implement-FreedomChat.patch index 98504f6..f1b46f9 100644 --- a/patches/server/0031-Implement-FreedomChat.patch +++ b/patches/server/0031-Implement-FreedomChat.patch @@ -52,10 +52,10 @@ index 8d7d050f12df83931bbb32f1832d7fcbc06317da..be4a5407fe9b692b72eb2b85e2dea160 player.loadGameTypes((CompoundTag) optional.orElse(null)); // CraftBukkit - decompile error ServerGamePacketListenerImpl playerconnection = new ServerGamePacketListenerImpl(this.server, connection, player, clientData); diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -index 6648d50cea38c17714785a335e5bc25f98d2595e..9e61505b8c34a3be20bcbe91ac98941729f5b64f 100644 +index 0b59a3a36c86948877cb8cb875dc114e9f9d284a..6e14f6a03c7bcd820f3d787178a62844ad022332 100644 --- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java +++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -@@ -29,6 +29,15 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -39,6 +39,15 @@ public class GlobalConfiguration extends ConfigurationPart { public boolean checkSpectatorMovedToQuickly = !OPTIMIZE; diff --git a/patches/server/0032-Reset-dirty-flag-when-loading-maps-from-the-disk.patch b/patches/server/0032-Reset-dirty-flag-when-loading-maps-from-the-disk.patch index 8121bcb..64b7dba 100644 --- a/patches/server/0032-Reset-dirty-flag-when-loading-maps-from-the-disk.patch +++ b/patches/server/0032-Reset-dirty-flag-when-loading-maps-from-the-disk.patch @@ -19,10 +19,10 @@ index 26da9e7c25ef6a89482838010d8ed6bcf8c87511..71aa3b9c5604f832e764e0d7a93da467 } diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -index 9e61505b8c34a3be20bcbe91ac98941729f5b64f..d1d6ac9e3ad200228dc0ee08fd0152ccec38b397 100644 +index 6e14f6a03c7bcd820f3d787178a62844ad022332..193e565b6d62caf278223db033351d03ff417637 100644 --- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java +++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -@@ -114,6 +114,7 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -124,6 +124,7 @@ public class GlobalConfiguration extends ConfigurationPart { public Miscellaneous misc; public class Miscellaneous extends ConfigurationPart { diff --git a/patches/server/0036-Load-player-data-asynchronously.patch b/patches/server/0036-Load-player-data-asynchronously.patch index f29a6c2..a477386 100644 --- a/patches/server/0036-Load-player-data-asynchronously.patch +++ b/patches/server/0036-Load-player-data-asynchronously.patch @@ -56,10 +56,10 @@ index be4a5407fe9b692b72eb2b85e2dea160a0555bca..579f81ed04eeb6373b25e6794d3bf0c4 // CraftBukkit start - Better rename detection if (optional.isPresent()) { diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -index d1d6ac9e3ad200228dc0ee08fd0152ccec38b397..9e5477d15668488139e431b8289d1fcfac38048c 100644 +index 193e565b6d62caf278223db033351d03ff417637..7f30fa1928e1a7e59ee5acfdfd2334f810c30243 100644 --- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java +++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -@@ -28,6 +28,7 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -38,6 +38,7 @@ public class GlobalConfiguration extends ConfigurationPart { public class Player extends ConfigurationPart { public boolean checkSpectatorMovedToQuickly = !OPTIMIZE; diff --git a/patches/server/0038-Optimize-advancement-criteria-triggering.patch b/patches/server/0038-Optimize-advancement-criteria-triggering.patch index 9e421c8..e1a4055 100644 --- a/patches/server/0038-Optimize-advancement-criteria-triggering.patch +++ b/patches/server/0038-Optimize-advancement-criteria-triggering.patch @@ -51,10 +51,10 @@ index ebbad97920df3d1645637e646a98e16cb04d361e..a149c949a042e1d1e504d9f5ce0bfa6d int j = 0; int k = 0; diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -index 9e5477d15668488139e431b8289d1fcfac38048c..68a0e7144942022f0665e3124d98add70376d4a4 100644 +index 7f30fa1928e1a7e59ee5acfdfd2334f810c30243..ba2c7b679f68d49add77731383bf68292fe9614a 100644 --- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java +++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -@@ -129,4 +129,16 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -139,4 +139,16 @@ public class GlobalConfiguration extends ConfigurationPart { } diff --git a/patches/server/0043-Process-pathfinding-asynchronously.patch b/patches/server/0043-Process-pathfinding-asynchronously.patch index 4723c8d..cb13182 100644 --- a/patches/server/0043-Process-pathfinding-asynchronously.patch +++ b/patches/server/0043-Process-pathfinding-asynchronously.patch @@ -1298,10 +1298,10 @@ index 1c83926923f50fb4da1a83dc91614c20a831555f..aec2d0f9a957be65d031957dbff874d8 Command.broadcastCommandMessage(sender, text("Successfully reloaded Plazma configuration files.", NamedTextColor.GREEN)); diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -index 68a0e7144942022f0665e3124d98add70376d4a4..e85e7b22e7b2e59897d4c35e2e5150c0a26235c6 100644 +index ba2c7b679f68d49add77731383bf68292fe9614a..81f7ac9753058aa72dea5704fc9859ba3b909fb1 100644 --- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java +++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -@@ -70,6 +70,26 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -80,6 +80,26 @@ public class GlobalConfiguration extends ConfigurationPart { public class Entity extends ConfigurationPart { diff --git a/patches/server/0044-Implement-alternative-noise-chunk-generator.patch b/patches/server/0044-Implement-alternative-noise-chunk-generator.patch index ac5f218..ffa1292 100644 --- a/patches/server/0044-Implement-alternative-noise-chunk-generator.patch +++ b/patches/server/0044-Implement-alternative-noise-chunk-generator.patch @@ -218,10 +218,10 @@ index 0e6dfe2635ea5f5e410049b05f94f5083b2f18a4..584311a00c5037a6d5bc05b1261969aa return null; } diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -index e85e7b22e7b2e59897d4c35e2e5150c0a26235c6..dc300e14e1bd03b4e855a360f1deda1cd7d6f7f0 100644 +index 81f7ac9753058aa72dea5704fc9859ba3b909fb1..dc632fe50e777c019705796602debc3a7f33152d 100644 --- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java +++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -@@ -45,6 +45,8 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -55,6 +55,8 @@ public class GlobalConfiguration extends ConfigurationPart { public WorldGeneration worldgen; public class WorldGeneration extends ConfigurationPart { @@ -230,7 +230,7 @@ index e85e7b22e7b2e59897d4c35e2e5150c0a26235c6..dc300e14e1bd03b4e855a360f1deda1c public LavaSea lavaSea; public class LavaSea extends ConfigurationPart { -@@ -64,6 +66,11 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -74,6 +76,11 @@ public class GlobalConfiguration extends ConfigurationPart { } diff --git a/patches/server/0047-Add-option-to-allow-shoot-fireball.patch b/patches/server/0047-Add-option-to-allow-shoot-fireball.patch index 87cd1ea..f302fa7 100644 --- a/patches/server/0047-Add-option-to-allow-shoot-fireball.patch +++ b/patches/server/0047-Add-option-to-allow-shoot-fireball.patch @@ -5,31 +5,62 @@ Subject: [PATCH] Add option to allow shoot fireball diff --git a/src/main/java/net/minecraft/world/item/FireChargeItem.java b/src/main/java/net/minecraft/world/item/FireChargeItem.java -index 641eb27097740219199ce61ed3e6aa5f42a51b1c..c5973b9182d25d7eb03ba3d91ec7a325cae5fa00 100644 +index 641eb27097740219199ce61ed3e6aa5f42a51b1c..f51be1746fc649d636bc9e3ae451d18e35a04026 100644 --- a/src/main/java/net/minecraft/world/item/FireChargeItem.java +++ b/src/main/java/net/minecraft/world/item/FireChargeItem.java -@@ -30,6 +30,27 @@ public class FireChargeItem extends Item implements ProjectileItem { +@@ -30,6 +30,58 @@ public class FireChargeItem extends Item implements ProjectileItem { super(settings); } + // Plazma start - Option to shoot fireballs + @Override + public InteractionResult use(Level world, Player user, net.minecraft.world.InteractionHand hand) { -+ if (!world.plazmaConfig().item.allowShootFireballs) { ++ if (!(world instanceof net.minecraft.server.level.ServerLevel level) || !world.plazmaConfig().item.shootableFireCharge.enabled) { + super.use(world, user, hand); + return InteractionResult.PASS; + } + -+ ItemStack itemStack = user.getItemInHand(hand); + Vec3 vec = user.getDirection().getUnitVec3().multiply(10, 10, 10); ++ net.minecraft.world.entity.projectile.AbstractHurtingProjectile fireball = switch(world.plazmaConfig().item.shootableFireCharge.shootType) { ++ case SMALL_FIREBALL -> new SmallFireball(world, user, vec); ++ case LARGE_FIREBALL -> new net.minecraft.world.entity.projectile.LargeFireball(world, user, vec, world.plazmaConfig().item.shootableFireCharge.explosionPower); ++ case DRAGON_FIREBALL -> new net.minecraft.world.entity.projectile.DragonFireball(world, user, vec); ++ case WITHER_SKULL -> new net.minecraft.world.entity.projectile.WitherSkull(world, user, vec); ++ }; + -+ SmallFireball fireball = new SmallFireball(world, user, vec); -+ fireball.setItem(itemStack); -+ fireball.shootFromRotation(user, user.getXRot(), user.getYRot(), 0.0F, 1.5F, 1.0F); -+ world.addFreshEntity(fireball); ++ ItemStack itemStack = user.getItemInHand(hand); ++ net.minecraft.world.entity.projectile.Projectile.Delayed delayed; ++ delayed = net.minecraft.world.entity.projectile.Projectile.spawnProjectileDelayed( ++ fireball, ++ level, ++ itemStack, ++ projectile -> { ++ projectile.setPos(user.getX(), user.getEyeY() - 0.10000000149011612D, user.getZ()); ++ projectile.shootFromRotation(user, user.getXRot(), user.getYRot(), world.plazmaConfig().item.shootableFireCharge.shootRoll, world.plazmaConfig().item.shootableFireCharge.shootPower, world.plazmaConfig().item.shootableFireCharge.shootOffset); ++ if (!(projectile instanceof net.minecraft.world.entity.projectile.Fireball ball)) return; ++ ball.setItem(itemStack); ++ } ++ ); + -+ itemStack.shrink(1); -+ return InteractionResult.SUCCESS; ++ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event; ++ event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent( ++ (org.bukkit.entity.Player) user.getBukkitEntity(), ++ org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), ++ (org.bukkit.entity.Projectile) delayed.projectile().getBukkitEntity() ++ ); ++ ++ if (event.callEvent() && delayed.attemptSpawn(org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.FIRE_CHARGE)) { ++ user.awardStat(net.minecraft.stats.Stats.ITEM_USED.get(this)); ++ ++ if (event.shouldConsume()) itemStack.consume(1, user); ++ else if (user instanceof net.minecraft.server.level.ServerPlayer) ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory(); ++ ++ world.playSound(null, user.getX(), user.getY(), user.getZ(), SoundEvents.FIRECHARGE_USE, SoundSource.NEUTRAL, 0.5F, 0.4F / (world.getRandom().nextFloat() * 0.4F + 0.8F)); ++ return InteractionResult.SUCCESS; ++ } ++ ++ if (user instanceof net.minecraft.server.level.ServerPlayer) ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory(); ++ return InteractionResult.FAIL; + } + // Plazma end - Option to shoot fireballs + @@ -50,10 +81,10 @@ index 580bd63fdbf9555f867362d3c1f39f41fd750089..bfde7c2d386d94913bde5452b903f2f2 public static final Item WRITABLE_BOOK = registerItem( "writable_book", WritableBookItem::new, new Item.Properties().stacksTo(1).component(DataComponents.WRITABLE_BOOK_CONTENT, WritableBookContent.EMPTY) diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -index dc300e14e1bd03b4e855a360f1deda1cd7d6f7f0..2e1cf5f79556250aa22df3ade66393fe6a947659 100644 +index dc632fe50e777c019705796602debc3a7f33152d..3c917e2a7fe8e5ff1ac91ddba29c717952a15d57 100644 --- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java +++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -@@ -146,7 +146,6 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -156,7 +156,6 @@ public class GlobalConfiguration extends ConfigurationPart { } @@ -61,15 +92,47 @@ index dc300e14e1bd03b4e855a360f1deda1cd7d6f7f0..2e1cf5f79556250aa22df3ade66393fe public ConsoleLogs consoleLogs; public class ConsoleLogs extends ConfigurationPart { +diff --git a/src/main/java/org/plazmamc/plazma/configurations/RemovedConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/RemovedConfigurations.java +index ac0f038de0ce5cf6df0b730af69d3229c3119eff..ba3331a81002304187318ed32fec2dd31e4c23ee 100644 +--- a/src/main/java/org/plazmamc/plazma/configurations/RemovedConfigurations.java ++++ b/src/main/java/org/plazmamc/plazma/configurations/RemovedConfigurations.java +@@ -7,7 +7,8 @@ import static org.spongepowered.configurate.NodePath.path; + interface RemovedConfigurations { + + NodePath[] WORLD_PATHS = { +- path("structure", "nether-portal") ++ path("structure", "nether-portal"), ++ path("item", "allow-shoot-fireballs") + }; + + NodePath[] GLOBAL_PATHS = { diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java -index c1d4a96cf5be77f4460c54ed19622f527d42ca06..7591e21bfd90edff05639bb6a027c3fe8c1c36c3 100644 +index c1d4a96cf5be77f4460c54ed19622f527d42ca06..bbb51ccf2016987202811ee893f855da2612dd17 100644 --- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java +++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java -@@ -86,6 +86,7 @@ public class WorldConfigurations extends ConfigurationPart { +@@ -86,6 +86,25 @@ public class WorldConfigurations extends ConfigurationPart { public Item item; public class Item extends ConfigurationPart { -+ public boolean allowShootFireballs = false; ++ public ShootableFireCharge shootableFireCharge; ++ public class ShootableFireCharge extends ConfigurationPart { ++ ++ public boolean enabled = false; ++ public ShootType shootType = ShootType.SMALL_FIREBALL; ++ public int explosionPower = 1; ++ ++ public float shootRoll = 0.0f; ++ public float shootPower = 1.5f; ++ public float shootOffset = 1.0f; ++ ++ public enum ShootType { ++ SMALL_FIREBALL, ++ LARGE_FIREBALL, ++ DRAGON_FIREBALL, ++ WITHER_SKULL ++ } ++ ++ } } diff --git a/patches/server/0050-Port-minor-SparklyPaper-patches.patch b/patches/server/0050-Port-minor-SparklyPaper-patches.patch index 0034c7c..894a256 100644 --- a/patches/server/0050-Port-minor-SparklyPaper-patches.patch +++ b/patches/server/0050-Port-minor-SparklyPaper-patches.patch @@ -103,14 +103,15 @@ index 8149b9c51b78eb5c689b7218a2ca3aab60e73bcf..125a4f13dbe98976c4cf94bb523463a5 } diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java -index 7591e21bfd90edff05639bb6a027c3fe8c1c36c3..bab5f682b8aeaa6dfcda7f07499ae297cbcbe23e 100644 +index bbb51ccf2016987202811ee893f855da2612dd17..f6f372644bca9111aa3f45bf7ae8e66e53d11505 100644 --- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java +++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java -@@ -87,6 +87,7 @@ public class WorldConfigurations extends ConfigurationPart { +@@ -86,6 +86,8 @@ public class WorldConfigurations extends ConfigurationPart { + public Item item; public class Item extends ConfigurationPart { - public boolean allowShootFireballs = false; + public boolean skipMapUpdateIfCraftRenderIsNull = true; - - } ++ + public ShootableFireCharge shootableFireCharge; + public class ShootableFireCharge extends ConfigurationPart { diff --git a/patches/server/0055-SparklyPaper-Optimize-season-check.patch b/patches/server/0055-SparklyPaper-Optimize-season-check.patch index 984f3e0..842c4c6 100644 --- a/patches/server/0055-SparklyPaper-Optimize-season-check.patch +++ b/patches/server/0055-SparklyPaper-Optimize-season-check.patch @@ -123,10 +123,10 @@ index 0000000000000000000000000000000000000000..530bac5a415c8597ae76ec603c1d8158 + +} diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -index 2e1cf5f79556250aa22df3ade66393fe6a947659..b5b252c79b9508200d9d0bd15f0469b0cb0fd3b3 100644 +index 3c917e2a7fe8e5ff1ac91ddba29c717952a15d57..538c572661bd92666f84e6f9ef3e9760f69f50a9 100644 --- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java +++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -@@ -143,6 +143,17 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -153,6 +153,17 @@ public class GlobalConfiguration extends ConfigurationPart { public class Miscellaneous extends ConfigurationPart { public boolean resetDirtyWhenLoadingMapsFromDisk = false; diff --git a/patches/server/0057-Implement-CarpetFixes.patch b/patches/server/0057-Implement-CarpetFixes.patch index 8176e99..14dc690 100644 --- a/patches/server/0057-Implement-CarpetFixes.patch +++ b/patches/server/0057-Implement-CarpetFixes.patch @@ -138,10 +138,10 @@ index 90f8360f547ce709fd13ee34f8e67d8bfa94b498..4e5fb377696c0a98a56f9ea11d0116b2 int j = pos.getY() - 2; int k = pos.getZ() - 2; diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -index b5b252c79b9508200d9d0bd15f0469b0cb0fd3b3..3bc5d3f1ed3d46ae1dc8f4b3207b78bf94911fdd 100644 +index 538c572661bd92666f84e6f9ef3e9760f69f50a9..db31d0c066e92fe308e7e64075e832bec66a5c02 100644 --- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java +++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -@@ -178,4 +178,16 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -188,4 +188,16 @@ public class GlobalConfiguration extends ConfigurationPart { } @@ -159,10 +159,10 @@ index b5b252c79b9508200d9d0bd15f0469b0cb0fd3b3..3bc5d3f1ed3d46ae1dc8f4b3207b78bf + } diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java -index f822b544d98602be85bf0c54a6040a5907b1906e..ee7655924358642d4fc58c261decd808ff7f8019 100644 +index 36345efa302413ad4e7d6e611d182572622f76ff..d314be46a02d73e669088d3a37937c8751f7735d 100644 --- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java +++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java -@@ -107,4 +107,11 @@ public class WorldConfigurations extends ConfigurationPart { +@@ -126,4 +126,11 @@ public class WorldConfigurations extends ConfigurationPart { } diff --git a/patches/server/0058-Ticking-Controller.patch b/patches/server/0058-Ticking-Controller.patch index c35367c..a82d75f 100644 --- a/patches/server/0058-Ticking-Controller.patch +++ b/patches/server/0058-Ticking-Controller.patch @@ -226,10 +226,10 @@ index 028aea6640356ba80f5d682e3cc03b7f82f5b9c7..d788849dc5a568d455cd83ca5b6e1b4b @Override diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -index 3bc5d3f1ed3d46ae1dc8f4b3207b78bf94911fdd..3a94005e24a6a695ac4c94ace1bc9c454180139b 100644 +index db31d0c066e92fe308e7e64075e832bec66a5c02..04a8bb41b27b8c435203991bebddccb27f472cdb 100644 --- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java +++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java -@@ -190,4 +190,39 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -200,4 +200,39 @@ public class GlobalConfiguration extends ConfigurationPart { } diff --git a/patches/server/0060-Tick-toggle-subcommand.patch b/patches/server/0060-Tick-toggle-subcommand.patch new file mode 100644 index 0000000..9757dfc --- /dev/null +++ b/patches/server/0060-Tick-toggle-subcommand.patch @@ -0,0 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: AlphaKR93 +Date: Sat, 14 Dec 2024 11:06:41 +0900 +Subject: [PATCH] Tick toggle subcommand + + +diff --git a/src/main/java/net/minecraft/server/commands/TickCommand.java b/src/main/java/net/minecraft/server/commands/TickCommand.java +index 13d96b54f48d60b098b80e04ba6168762c335c75..5aab945085eb4ed2ea44832319c6daad96fe3a71 100644 +--- a/src/main/java/net/minecraft/server/commands/TickCommand.java ++++ b/src/main/java/net/minecraft/server/commands/TickCommand.java +@@ -21,6 +21,10 @@ public class TickCommand { + dispatcher.register( + Commands.literal("tick") + .requires(source -> source.hasPermission(3)) ++ // Plazma start - Tick toggle subcommand ++ .executes(context -> toggleFreeze(context.getSource())) ++ .then(Commands.literal("toggle").executes(context -> toggleFreeze(context.getSource()))) ++ // Plazma end - Tick toggle subcommand + .then(Commands.literal("query").executes(context -> tickQuery(context.getSource()))) + .then( + Commands.literal("rate") +@@ -108,6 +112,14 @@ public class TickCommand { + return 1; + } + ++ // Plazma start - Tick toggle subcommand ++ private static int toggleFreeze(CommandSourceStack source) { ++ ServerTickRateManager serverTickRateManager = source.getServer().tickRateManager(); ++ boolean frozen = !serverTickRateManager.isFrozen(); ++ return setFreeze(source, frozen); ++ } ++ // Plazma end - Tick toggle subcommand ++ + private static int setFreeze(CommandSourceStack source, boolean frozen) { + ServerTickRateManager serverTickRateManager = source.getServer().tickRateManager(); + if (frozen) {