From fb3fef1fc7cd871fe92fbe18121acd00f4df067c Mon Sep 17 00:00:00 2001 From: Helvetica Volubi Date: Wed, 11 Jun 2025 23:25:28 +0800 Subject: [PATCH] feat: new old version's feature - spawn invulnerable time - old nether portal collision - old zombie reinforcement --- gradle.properties | 2 +- .../0010-Old-nether-portal-collision.patch | 20 ++++++++++ .../0011-Spawn-invulnerable-time.patch | 40 +++++++++++++++++++ .../0012-Old-zombie-reinforcement.patch | 19 +++++++++ .../modules/misc/OldFeatureConfig.java.patch | 29 ++++++++++++++ 5 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 lophine-server/minecraft-patches/features/0010-Old-nether-portal-collision.patch create mode 100644 lophine-server/minecraft-patches/features/0011-Spawn-invulnerable-time.patch create mode 100644 lophine-server/minecraft-patches/features/0012-Old-zombie-reinforcement.patch create mode 100644 lophine-server/paper-patches/files/src/main/java/me/earthme/lophine/config/modules/misc/OldFeatureConfig.java.patch diff --git a/gradle.properties b/gradle.properties index 9ff4b65..aead16a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group=me.earthme.lophine version=1.21.5-R0.1-SNAPSHOT mcVersion=1.21.5 -luminolRef=85f3e2875fcb38ecc7f54ffeb72fdc50dd890970 +luminolRef=6eebbe4221f34bf65832b02af01814fc057206b6 org.gradle.configuration-cache=true org.gradle.caching=true diff --git a/lophine-server/minecraft-patches/features/0010-Old-nether-portal-collision.patch b/lophine-server/minecraft-patches/features/0010-Old-nether-portal-collision.patch new file mode 100644 index 0000000..acc94cd --- /dev/null +++ b/lophine-server/minecraft-patches/features/0010-Old-nether-portal-collision.patch @@ -0,0 +1,20 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Helvetica Volubi +Date: Sun, 18 May 2025 23:48:59 +0800 +Subject: [PATCH] Old nether portal collision + +This patch should removed in 1.21.6 when mojang revert it. + +diff --git a/net/minecraft/world/level/block/NetherPortalBlock.java b/net/minecraft/world/level/block/NetherPortalBlock.java +index 421ea9c748159ac989900427a13abe9b244dc7aa..ecdecf0484137e0f98bf41d09e0dc7dc7715fd35 100644 +--- a/net/minecraft/world/level/block/NetherPortalBlock.java ++++ b/net/minecraft/world/level/block/NetherPortalBlock.java +@@ -65,7 +65,7 @@ public class NetherPortalBlock extends Block implements Portal { + + @Override + protected VoxelShape getEntityInsideCollisionShape(BlockState state, BlockGetter level, BlockPos pos, Entity entity) { +- return state.getShape(level, pos); ++ return me.earthme.lophine.config.modules.misc.OldFeatureConfig.oldNetherPortalCollision ? Shapes.block() : state.getShape(level, pos); // Lophine - Old nether portal collision + } + + @Override diff --git a/lophine-server/minecraft-patches/features/0011-Spawn-invulnerable-time.patch b/lophine-server/minecraft-patches/features/0011-Spawn-invulnerable-time.patch new file mode 100644 index 0000000..2588a23 --- /dev/null +++ b/lophine-server/minecraft-patches/features/0011-Spawn-invulnerable-time.patch @@ -0,0 +1,40 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Helvetica Volubi +Date: Mon, 19 May 2025 00:06:03 +0800 +Subject: [PATCH] Spawn invulnerable time + + +diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java +index 1764875b9024569671bf2be537afb8b492f79102..473f9de0908d3fb2cfb640ff7c6f7b78c1280721 100644 +--- a/net/minecraft/server/level/ServerPlayer.java ++++ b/net/minecraft/server/level/ServerPlayer.java +@@ -221,6 +221,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc + private int lastSentFood = -99999999; + private boolean lastFoodSaturationZero = true; + public int lastSentExp = -99999999; ++ private int spawnInvulnerableTime = 60; // Lophine - spawn invulnerable time + private ChatVisiblity chatVisibility = ChatVisiblity.FULL; + public ParticleStatus particleStatus = ParticleStatus.ALL; + private boolean canChatColor = true; +@@ -923,6 +924,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc + this.tickClientLoadTimeout(); + this.gameMode.tick(); + this.wardenSpawnTracker.tick(); ++ if (me.earthme.lophine.config.modules.misc.OldFeatureConfig.spawnInvulnerableTime && this.invulnerableTime > 0) --this.spawnInvulnerableTime; // Lophine - spawn invulnerable time + if (this.invulnerableTime > 0) { + this.invulnerableTime--; + } +@@ -1420,6 +1422,13 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc + if (this.isInvulnerableTo(level, damageSource)) { + return false; + } else { ++ // Lophine start - spawn invulnerable time ++ if (me.earthme.lophine.config.modules.misc.OldFeatureConfig.spawnInvulnerableTime) { ++ if (this.spawnInvulnerableTime > 0 && !damageSource.is(net.minecraft.tags.DamageTypeTags.BYPASSES_INVULNERABILITY)) { ++ return false; ++ } ++ } ++ // Lophine end - spawn invulnerable time + Entity entity = damageSource.getEntity(); + if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false. + !(entity instanceof Player player && !this.canHarmPlayer(player)) diff --git a/lophine-server/minecraft-patches/features/0012-Old-zombie-reinforcement.patch b/lophine-server/minecraft-patches/features/0012-Old-zombie-reinforcement.patch new file mode 100644 index 0000000..df5630e --- /dev/null +++ b/lophine-server/minecraft-patches/features/0012-Old-zombie-reinforcement.patch @@ -0,0 +1,19 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Helvetica Volubi +Date: Mon, 19 May 2025 00:42:17 +0800 +Subject: [PATCH] Old zombie reinforcement + + +diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java +index 4395947fc8c719864ac2afde5e6bbb53da5129c2..348e2b6020de8584b512ec849a5fba484380930e 100644 +--- a/net/minecraft/world/entity/monster/Zombie.java ++++ b/net/minecraft/world/entity/monster/Zombie.java +@@ -342,7 +342,7 @@ public class Zombie extends Monster { + int floor = Mth.floor(this.getX()); + int floor1 = Mth.floor(this.getY()); + int floor2 = Mth.floor(this.getZ()); +- EntityType type = this.getType(); ++ EntityType type = me.earthme.lophine.config.modules.misc.OldFeatureConfig.oldZombieReinforcement ? EntityType.ZOMBIE : this.getType(); // Lophine - old zombie reinforcement + Zombie zombie = type.create(level, EntitySpawnReason.REINFORCEMENT); + if (zombie == null) { + return true; diff --git a/lophine-server/paper-patches/files/src/main/java/me/earthme/lophine/config/modules/misc/OldFeatureConfig.java.patch b/lophine-server/paper-patches/files/src/main/java/me/earthme/lophine/config/modules/misc/OldFeatureConfig.java.patch new file mode 100644 index 0000000..82c8d62 --- /dev/null +++ b/lophine-server/paper-patches/files/src/main/java/me/earthme/lophine/config/modules/misc/OldFeatureConfig.java.patch @@ -0,0 +1,29 @@ +--- /dev/null ++++ b/src/main/java/me/earthme/lophine/config/modules/misc/OldFeatureConfig.java +@@ -1,0 +_,26 @@ ++package me.earthme.lophine.config.modules.misc; ++ ++import me.earthme.luminol.config.EnumConfigCategory; ++import me.earthme.luminol.config.IConfigModule; ++import me.earthme.luminol.config.flags.ConfigInfo; ++ ++public class OldFeatureConfig implements IConfigModule { ++ @ConfigInfo(baseName = "old_nether_portal_collision") ++ public static boolean oldNetherPortalCollision = false; ++ ++ @ConfigInfo(baseName = "spawn_invulnerable_time") ++ public static boolean spawnInvulnerableTime = false; ++ ++ @ConfigInfo(baseName = "old_zombie_reinforcement") ++ public static boolean oldZombieReinforcement = false; ++ ++ @Override ++ public EnumConfigCategory getCategory() { ++ return EnumConfigCategory.MISC; ++ } ++ ++ @Override ++ public String getBaseName() { ++ return "old-feature"; ++ } ++}