9
0
mirror of https://github.com/Dreeam-qwq/Gale.git synced 2025-12-22 08:19:31 +00:00

Add back cache ominous banner item

This commit is contained in:
Dreeam
2024-06-24 09:41:50 +08:00
parent cb3e413cba
commit 1844e54a15
43 changed files with 182 additions and 9 deletions

View File

@@ -0,0 +1,173 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Martijn Muijsers <martijnmuijsers@live.nl>
Date: Thu, 1 Dec 2022 00:37:50 +0100
Subject: [PATCH] Cache ominous banner item
License: LGPL-3.0 (https://www.gnu.org/licenses/lgpl-3.0.html)
Gale - https://galemc.org
This patch is based on the following mixin:
"me/jellysquid/mods/lithium/mixin/ai/raid/RaiderEntityMixin.java"
By: 2No2Name <2No2Name@web.de>
As part of: Lithium (https://github.com/CaffeineMC/lithium-fabric)
Licensed under: LGPL-3.0 (https://www.gnu.org/licenses/lgpl-3.0.html)
diff --git a/src/main/java/net/minecraft/advancements/critereon/EntityEquipmentPredicate.java b/src/main/java/net/minecraft/advancements/critereon/EntityEquipmentPredicate.java
index ff9d99feb75a8e0f695b8f2696bd79baccf77e01..1712e45439e3ebcb61703ac30eaa92e85f99b676 100644
--- a/src/main/java/net/minecraft/advancements/critereon/EntityEquipmentPredicate.java
+++ b/src/main/java/net/minecraft/advancements/critereon/EntityEquipmentPredicate.java
@@ -40,7 +40,7 @@ public record EntityEquipmentPredicate(
.head(
ItemPredicate.Builder.item()
.of(Items.WHITE_BANNER)
- .hasComponents(DataComponentPredicate.allOf(Raid.getLeaderBannerInstance(bannerPatternLookup).getComponents()))
+ .hasComponents(DataComponentPredicate.allOf(Raid.getLeaderBanner(bannerPatternLookup).getComponents())) // Gale - Lithium - cache ominous banner item
)
.build();
}
diff --git a/src/main/java/net/minecraft/data/advancements/packs/VanillaAdventureAdvancements.java b/src/main/java/net/minecraft/data/advancements/packs/VanillaAdventureAdvancements.java
index 09d93c4814ee918d4a2d73794bcd5bdda5a4f8eb..3187956a47182951d239a6d3cc5a8c79ba9c5b38 100644
--- a/src/main/java/net/minecraft/data/advancements/packs/VanillaAdventureAdvancements.java
+++ b/src/main/java/net/minecraft/data/advancements/packs/VanillaAdventureAdvancements.java
@@ -394,7 +394,7 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider {
AdvancementHolder advancementHolder8 = Advancement.Builder.advancement()
.parent(advancementHolder)
.display(
- Raid.getLeaderBannerInstance(registryLookup),
+ Raid.getLeaderBanner(registryLookup), // Gale - Lithium - cache ominous banner item
Component.translatable("advancements.adventure.voluntary_exile.title"),
Component.translatable("advancements.adventure.voluntary_exile.description"),
null,
@@ -413,7 +413,7 @@ public class VanillaAdventureAdvancements implements AdvancementSubProvider {
Advancement.Builder.advancement()
.parent(advancementHolder8)
.display(
- Raid.getLeaderBannerInstance(registryLookup),
+ Raid.getLeaderBanner(registryLookup), // Gale - Lithium - cache ominous banner item
Component.translatable("advancements.adventure.hero_of_the_village.title"),
Component.translatable("advancements.adventure.hero_of_the_village.description"),
null,
diff --git a/src/main/java/net/minecraft/server/commands/RaidCommand.java b/src/main/java/net/minecraft/server/commands/RaidCommand.java
index 774bc4b5bc8c56ff3b0997de5eb1c46ef9ea7d2e..468dd8f6372751f52c0bedef19879a12de412789 100644
--- a/src/main/java/net/minecraft/server/commands/RaidCommand.java
+++ b/src/main/java/net/minecraft/server/commands/RaidCommand.java
@@ -95,7 +95,7 @@ public class RaidCommand {
return 0;
} else {
raider.setPatrolLeader(true);
- raider.setItemSlot(EquipmentSlot.HEAD, Raid.getLeaderBannerInstance(source.registryAccess().lookupOrThrow(Registries.BANNER_PATTERN)));
+ raider.setItemSlot(EquipmentSlot.HEAD, Raid.getLeaderBanner(source.registryAccess().lookupOrThrow(Registries.BANNER_PATTERN))); // Gale - Lithium - cache ominous banner item
raider.setPos(source.getPosition().x, source.getPosition().y, source.getPosition().z);
raider.finalizeSpawn(
source.getLevel(), source.getLevel().getCurrentDifficultyAt(BlockPos.containing(source.getPosition())), MobSpawnType.COMMAND, null
diff --git a/src/main/java/net/minecraft/world/entity/monster/PatrollingMonster.java b/src/main/java/net/minecraft/world/entity/monster/PatrollingMonster.java
index 7e1a4b69291e14dc0323b3f40aa4acce8c4b0acf..1ddc36fdf98b5d7ec1658fe3d2eb38eff6634a52 100644
--- a/src/main/java/net/minecraft/world/entity/monster/PatrollingMonster.java
+++ b/src/main/java/net/minecraft/world/entity/monster/PatrollingMonster.java
@@ -74,7 +74,7 @@ public abstract class PatrollingMonster extends Monster {
}
if (this.isPatrolLeader()) {
- this.setItemSlot(EquipmentSlot.HEAD, Raid.getLeaderBannerInstance(this.registryAccess().lookupOrThrow(Registries.BANNER_PATTERN)));
+ this.setItemSlot(EquipmentSlot.HEAD, Raid.getLeaderBanner(this.registryAccess().lookupOrThrow(Registries.BANNER_PATTERN))); // Gale - Lithium - cache ominous banner item
this.setDropChance(EquipmentSlot.HEAD, 2.0F);
}
diff --git a/src/main/java/net/minecraft/world/entity/raid/Raid.java b/src/main/java/net/minecraft/world/entity/raid/Raid.java
index 5c0e5803284bfc82c2dd8bba9ded0ba7aac4962a..539e17bdeefd0be17a46cb65e034c7e0e4df181c 100644
--- a/src/main/java/net/minecraft/world/entity/raid/Raid.java
+++ b/src/main/java/net/minecraft/world/entity/raid/Raid.java
@@ -725,7 +725,7 @@ public class Raid {
this.level.getRaids().setDirty();
}
- public static ItemStack getLeaderBannerInstance(HolderGetter<BannerPattern> bannerPatternLookup) {
+ private static ItemStack createLeaderBanner(HolderGetter<BannerPattern> bannerPatternLookup) { // Gale - Lithium - cache ominous banner item
ItemStack itemstack = new ItemStack(Items.WHITE_BANNER);
BannerPatternLayers bannerpatternlayers = (new BannerPatternLayers.Builder()).addIfRegistered(bannerPatternLookup, BannerPatterns.RHOMBUS_MIDDLE, DyeColor.CYAN).addIfRegistered(bannerPatternLookup, BannerPatterns.STRIPE_BOTTOM, DyeColor.LIGHT_GRAY).addIfRegistered(bannerPatternLookup, BannerPatterns.STRIPE_CENTER, DyeColor.GRAY).addIfRegistered(bannerPatternLookup, BannerPatterns.BORDER, DyeColor.LIGHT_GRAY).addIfRegistered(bannerPatternLookup, BannerPatterns.STRIPE_MIDDLE, DyeColor.BLACK).addIfRegistered(bannerPatternLookup, BannerPatterns.HALF_HORIZONTAL, DyeColor.LIGHT_GRAY).addIfRegistered(bannerPatternLookup, BannerPatterns.CIRCLE_MIDDLE, DyeColor.LIGHT_GRAY).addIfRegistered(bannerPatternLookup, BannerPatterns.BORDER, DyeColor.BLACK).build();
@@ -735,6 +735,22 @@ public class Raid {
return itemstack;
}
+ // Gale start - Lithium - cache ominous banner item
+ public static ItemStack LEADER_BANNER = ItemStack.EMPTY;
+
+ public static ItemStack getLeaderBanner(HolderGetter<BannerPattern> bannerPatternLookup) {
+ if (LEADER_BANNER.equals(ItemStack.EMPTY)) {
+ LEADER_BANNER = createLeaderBanner(bannerPatternLookup);
+ }
+
+ return LEADER_BANNER;
+ }
+
+ public static ItemStack getLeaderBannerInstance(HolderGetter<BannerPattern> bannerPatternLookup) {
+ return getLeaderBanner(bannerPatternLookup).copy();
+ }
+ // Gale end - Lithium - cache ominous banner item
+
@Nullable
public Raider getLeader(int wave) {
return (Raider) this.groupToLeaderMap.get(wave);
@@ -803,7 +819,7 @@ public class Raid {
public void setLeader(int wave, Raider entity) {
this.groupToLeaderMap.put(wave, entity);
- entity.setItemSlot(EquipmentSlot.HEAD, Raid.getLeaderBannerInstance(entity.registryAccess().lookupOrThrow(Registries.BANNER_PATTERN)));
+ entity.setItemSlot(EquipmentSlot.HEAD, Raid.getLeaderBanner(entity.registryAccess().lookupOrThrow(Registries.BANNER_PATTERN))); // Gale - Lithium - cache ominous banner item
entity.setDropChance(EquipmentSlot.HEAD, 2.0F);
}
diff --git a/src/main/java/net/minecraft/world/entity/raid/Raider.java b/src/main/java/net/minecraft/world/entity/raid/Raider.java
index bbf21ea433f9e3963aac0ede597ed8d3c8e50ed8..9c958635f9b9ca82d49062fdc35b7ebadf02bb2f 100644
--- a/src/main/java/net/minecraft/world/entity/raid/Raider.java
+++ b/src/main/java/net/minecraft/world/entity/raid/Raider.java
@@ -45,7 +45,7 @@ public abstract class Raider extends PatrollingMonster {
protected static final EntityDataAccessor<Boolean> IS_CELEBRATING = SynchedEntityData.defineId(Raider.class, EntityDataSerializers.BOOLEAN);
static final Predicate<ItemEntity> ALLOWED_ITEMS = (entityitem) -> {
- return !entityitem.hasPickUpDelay() && entityitem.isAlive() && ItemStack.matches(entityitem.getItem(), Raid.getLeaderBannerInstance(entityitem.registryAccess().lookupOrThrow(Registries.BANNER_PATTERN)));
+ return !entityitem.hasPickUpDelay() && entityitem.isAlive() && ItemStack.matches(entityitem.getItem(), Raid.getLeaderBanner(entityitem.registryAccess().lookupOrThrow(Registries.BANNER_PATTERN))); // Gale - Lithium - cache ominous banner item
};
@Nullable
protected Raid raid;
@@ -152,7 +152,7 @@ public abstract class Raider extends PatrollingMonster {
public boolean isCaptain() {
ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD);
- boolean flag = !itemstack.isEmpty() && ItemStack.matches(itemstack, Raid.getLeaderBannerInstance(this.registryAccess().lookupOrThrow(Registries.BANNER_PATTERN)));
+ boolean flag = !itemstack.isEmpty() && ItemStack.matches(itemstack, Raid.getLeaderBanner(this.registryAccess().lookupOrThrow(Registries.BANNER_PATTERN))); // Gale - Lithium - cache ominous banner item
boolean flag1 = this.isPatrolLeader();
return flag && flag1;
@@ -224,7 +224,7 @@ public abstract class Raider extends PatrollingMonster {
ItemStack itemstack = item.getItem();
boolean flag = this.hasActiveRaid() && this.getCurrentRaid().getLeader(this.getWave()) != null;
- if (this.hasActiveRaid() && !flag && ItemStack.matches(itemstack, Raid.getLeaderBannerInstance(this.registryAccess().lookupOrThrow(Registries.BANNER_PATTERN)))) {
+ if (this.hasActiveRaid() && !flag && ItemStack.matches(itemstack, Raid.getLeaderBanner(this.registryAccess().lookupOrThrow(Registries.BANNER_PATTERN)))) { // Gale - Lithium - cache ominous banner item
// Paper start - EntityPickupItemEvent fixes
if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityPickupItemEvent(this, item, 0, false).isCancelled()) {
return;
@@ -302,7 +302,7 @@ public abstract class Raider extends PatrollingMonster {
if (!this.mob.level().getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items
Raid raid = this.mob.getCurrentRaid();
- if (this.mob.hasActiveRaid() && !this.mob.getCurrentRaid().isOver() && this.mob.canBeLeader() && !ItemStack.matches(this.mob.getItemBySlot(EquipmentSlot.HEAD), Raid.getLeaderBannerInstance(this.mob.registryAccess().lookupOrThrow(Registries.BANNER_PATTERN)))) {
+ if (this.mob.hasActiveRaid() && !this.mob.getCurrentRaid().isOver() && this.mob.canBeLeader() && !ItemStack.matches(this.mob.getItemBySlot(EquipmentSlot.HEAD), Raid.getLeaderBanner(this.mob.registryAccess().lookupOrThrow(Registries.BANNER_PATTERN)))) { // Gale - Lithium - cache ominous banner item
Raider entityraider = raid.getLeader(this.mob.getWave());
if (entityraider == null || !entityraider.isAlive()) {
diff --git a/src/main/java/net/minecraft/world/item/CreativeModeTabs.java b/src/main/java/net/minecraft/world/item/CreativeModeTabs.java
index 3c5f820fb4ee554e94f417a911922af6c4943e3c..509f1fd055fc4e2b50023ef8c29b190c81bca170 100644
--- a/src/main/java/net/minecraft/world/item/CreativeModeTabs.java
+++ b/src/main/java/net/minecraft/world/item/CreativeModeTabs.java
@@ -1103,7 +1103,7 @@ public class CreativeModeTabs {
entries.accept(Items.PURPLE_BANNER);
entries.accept(Items.MAGENTA_BANNER);
entries.accept(Items.PINK_BANNER);
- entries.accept(Raid.getLeaderBannerInstance(displayContext.holders().lookupOrThrow(Registries.BANNER_PATTERN)));
+ entries.accept(Raid.getLeaderBanner(displayContext.holders().lookupOrThrow(Registries.BANNER_PATTERN))); // Gale - Lithium - cache ominous banner item
entries.accept(Items.SKELETON_SKULL);
entries.accept(Items.WITHER_SKELETON_SKULL);
entries.accept(Items.PLAYER_HEAD);

View File

@@ -13,7 +13,7 @@ As part of: Slice (https://github.com/Cryptite/Slice)
Licensed under: MIT (https://opensource.org/licenses/MIT)
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 329856d3656da0fd01ab1500a423cae554d2544a..32c6c4f8bdc2510a9fbce18be4cf64cbe21e6f10 100644
index 243d52e75cb4f1bd5a11382f8c79db29b145dfbf..37f4f80003e2355226231265b6b7b82f7ce4d27e 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -895,7 +895,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess

View File

@@ -13,7 +13,7 @@ As part of: SportPaper (https://github.com/Electroid/SportPaper)
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 5b29319f59f07c422f9df09af347e57d65c3fba0..bab835c5254d857061920a02bc7c918eb9da7436 100644
index 186c5eb85bb0807d49f8ad35a4a08c869fc0fa90..c1100bfd6e2651185a124849833b24c76f395462 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1467,7 +1467,17 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.

View File

@@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 7ebe9f2842b76c2a12d8316916d22ff17a45b3ac..6afadb847906050566f0eeb8ba5ad5c539d0c9b7 100644
index cf834a2cc39ecd058325d2ef9eb647289648bd8e..1b5bfdd69766c6de813b0ef2fcadcaf19a468c03 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -13,6 +13,8 @@ import java.net.SocketAddress;
@@ -157,7 +157,7 @@ index 7ebe9f2842b76c2a12d8316916d22ff17a45b3ac..6afadb847906050566f0eeb8ba5ad5c5
}
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
index e513e17f460927fcffd029bb3b3357ca85aa514d..f136510042db4c40a486b2ee3ed7e91a90bd9424 100644
index 839f0b57db88ab7a6d6882f1fbedc1007bc95a63..0a97b72217b3509796d23fe9fe611b8ff020748c 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -39,6 +39,7 @@ import net.minecraft.network.syncher.SynchedEntityData;

View File

@@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 6afadb847906050566f0eeb8ba5ad5c539d0c9b7..16718cec74f7166b00177c8a73fd4d7a30213388 100644
index 1b5bfdd69766c6de813b0ef2fcadcaf19a468c03..a8d0e6566183f440f8e2732e10b390ba8b6ed517 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1018,14 +1018,18 @@ public abstract class PlayerList {

View File

@@ -130,7 +130,7 @@ index 8757a6ac609d463f94846d66fe04f50e859e7ce8..a720a05c47b2137a07515461960603cc
}
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 794d9aa6f54f9c68dc4a65c7e3d2d247d742cabc..086249f14abd7479e8444d9153394b29a8982267 100644
index f9647ce528d23743f687249ecaa6b51cfa3e62d2..deb4282880aa5f28100a202c73514c892f487be0 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -9,6 +9,8 @@ import com.mojang.brigadier.suggestion.Suggestions;

View File

@@ -14,7 +14,7 @@ As part of: MultiPaper (https://github.com/MultiPaper/MultiPaper)
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 16718cec74f7166b00177c8a73fd4d7a30213388..90191fb36306454fa9741992967eb3d0af6dc584 100644
index a8d0e6566183f440f8e2732e10b390ba8b6ed517..b74f809138d657bcfcaa68fc30984e591b1e908b 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -275,6 +275,13 @@ public abstract class PlayerList {

View File

@@ -45,7 +45,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
index f136510042db4c40a486b2ee3ed7e91a90bd9424..e8e2ffdb97bf9a54491733fa876365f3f4b3e9ac 100644
index 0a97b72217b3509796d23fe9fe611b8ff020748c..b5659a5cc87859c93f8c837d9f5090f7024a3d84 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -114,6 +114,7 @@ import net.minecraft.world.phys.AABB;

View File

@@ -74,7 +74,7 @@ index 1223c5d23d0ea6aed068bdf0f5725e2ad49fc82c..5df85ba4904a6b4b69ab584e9f30d34c
this.currentState = FishingHook.FishHookState.FLYING;
this.noCulling = true;
diff --git a/src/main/java/net/minecraft/world/entity/raid/Raid.java b/src/main/java/net/minecraft/world/entity/raid/Raid.java
index 5c0e5803284bfc82c2dd8bba9ded0ba7aac4962a..2cc37e5734233954710c4ef55bf3b2918f2026d5 100644
index 539e17bdeefd0be17a46cb65e034c7e0e4df181c..fbc95098b45478a8da395b9816c86571959d179c 100644
--- a/src/main/java/net/minecraft/world/entity/raid/Raid.java
+++ b/src/main/java/net/minecraft/world/entity/raid/Raid.java
@@ -116,7 +116,7 @@ public class Raid {