From 66545fe5e14b6c5c592cc3862e5ea760f0ae9001 Mon Sep 17 00:00:00 2001
From: Zepalesque <60141811+Zepalesque@users.noreply.github.com>
Date: Fri, 26 Apr 2024 09:14:26 -0400
Subject: [PATCH 01/15] Select Music Event
---
.../client/sounds/MusicManager.java.patch | 14 +++++
.../neoforge/client/ClientHooks.java | 8 +++
.../client/event/SelectMusicEvent.java | 60 +++++++++++++++++++
3 files changed, 82 insertions(+)
create mode 100644 patches/net/minecraft/client/sounds/MusicManager.java.patch
create mode 100644 src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
diff --git a/patches/net/minecraft/client/sounds/MusicManager.java.patch b/patches/net/minecraft/client/sounds/MusicManager.java.patch
new file mode 100644
index 0000000000..3455923e4b
--- /dev/null
+++ b/patches/net/minecraft/client/sounds/MusicManager.java.patch
@@ -0,0 +1,14 @@
+--- a/net/minecraft/client/sounds/MusicManager.java
++++ b/net/minecraft/client/sounds/MusicManager.java
+@@ -25,6 +_,11 @@
+
+ public void tick() {
+ Music music = this.minecraft.getSituationalMusic();
++
++ if (music == null) {
++ return;
++ }
++
+ if (this.currentMusic != null) {
+ if (!music.getEvent().value().getLocation().equals(this.currentMusic.getLocation()) && music.replaceCurrentMusic()) {
+ this.minecraft.getSoundManager().stop(this.currentMusic);
diff --git a/src/main/java/net/neoforged/neoforge/client/ClientHooks.java b/src/main/java/net/neoforged/neoforge/client/ClientHooks.java
index d4fa3aeeff..54d7fa5099 100644
--- a/src/main/java/net/neoforged/neoforge/client/ClientHooks.java
+++ b/src/main/java/net/neoforged/neoforge/client/ClientHooks.java
@@ -101,6 +101,7 @@
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.packs.resources.ReloadableResourceManager;
+import net.minecraft.sounds.Music;
import net.minecraft.util.Mth;
import net.minecraft.util.RandomSource;
import net.minecraft.world.InteractionHand;
@@ -162,6 +163,7 @@
import net.neoforged.neoforge.client.event.RenderTooltipEvent;
import net.neoforged.neoforge.client.event.ScreenEvent;
import net.neoforged.neoforge.client.event.ScreenshotEvent;
+import net.neoforged.neoforge.client.event.SelectMusicEvent;
import net.neoforged.neoforge.client.event.TextureAtlasStitchedEvent;
import net.neoforged.neoforge.client.event.ToastAddEvent;
import net.neoforged.neoforge.client.event.ViewportEvent;
@@ -390,6 +392,12 @@ public static SoundInstance playSound(SoundEngine manager, SoundInstance sound)
return e.getSound();
}
+ public static SelectMusicEvent selectMusic(Music music) {
+ SelectMusicEvent e = new SelectMusicEvent(music);
+ NeoForge.EVENT_BUS.post(e);
+ return e;
+ }
+
public static void drawScreen(Screen screen, GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) {
guiGraphics.pose().pushPose();
guiLayers.forEach(layer -> {
diff --git a/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java b/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
new file mode 100644
index 0000000000..64504a7ac4
--- /dev/null
+++ b/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) NeoForged and contributors
+ * SPDX-License-Identifier: LGPL-2.1-only
+ */
+
+package net.neoforged.neoforge.client.event;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.sounds.Music;
+import net.neoforged.bus.api.Event;
+import net.neoforged.bus.api.ICancellableEvent;
+import net.neoforged.fml.LogicalSide;
+import net.neoforged.neoforge.common.NeoForge;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Fired when the {@link net.minecraft.client.sounds.MusicManager} checks what situational music should be used. This fires before the music begins playing.
+ * This can be used to change or prevent (by passing {@code null)} any {@link Music} from being selected, which will
+ * either change what the music will be next time it plays based on the situation, or prevent it from playing any if {@code null} is passed in.
+ *
+ *
This event is not {@linkplain ICancellableEvent cancellable}, and does not {@linkplain HasResult have a result}.
+ *
+ * This event is fired on the {@linkplain NeoForge#EVENT_BUS main Forge event bus},
+ * only on the {@linkplain LogicalSide#CLIENT logical client}.
+ *
+ * @see Minecraft#getSituationalMusic()
+ */
+public class SelectMusicEvent extends Event {
+ private @Nullable Music music;
+ private final Music originalMusic;
+
+ public SelectMusicEvent(Music music) {
+ this.music = music;
+ this.originalMusic = music;
+ }
+
+ /**
+ * {@return the original music that was to be played}
+ */
+ public Music getOriginalMusic() {
+ return originalMusic;
+ }
+
+ /**
+ * {@return the Music to be played, or {@code null} if there should be no music based on the situation}
+ */
+ @Nullable
+ public Music getMusic() {
+ return music;
+ }
+
+ /**
+ * Changes what music should be selected, which may be {@code null} to keep the music from being played
+ *
+ * @param newMusic the new {@link Music} to be played, or {@code null} for no music
+ */
+ public void setMusic(@Nullable Music newMusic) {
+ this.music = newMusic;
+ }
+}
From 73b60ac2705efd20261ff9960524a5941a0f9b82 Mon Sep 17 00:00:00 2001
From: Zepalesque <60141811+Zepalesque@users.noreply.github.com>
Date: Fri, 26 Apr 2024 13:51:07 -0400
Subject: [PATCH 02/15] Optimized patches and make a small fix
---
.../client/sounds/MusicManager.java.patch | 19 +++++++++++++++----
.../neoforge/client/ClientHooks.java | 5 +++--
2 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/patches/net/minecraft/client/sounds/MusicManager.java.patch b/patches/net/minecraft/client/sounds/MusicManager.java.patch
index 3455923e4b..8759f44e4c 100644
--- a/patches/net/minecraft/client/sounds/MusicManager.java.patch
+++ b/patches/net/minecraft/client/sounds/MusicManager.java.patch
@@ -1,14 +1,25 @@
--- a/net/minecraft/client/sounds/MusicManager.java
+++ b/net/minecraft/client/sounds/MusicManager.java
-@@ -25,6 +_,11 @@
+@@ -25,6 +_,13 @@
public void tick() {
Music music = this.minecraft.getSituationalMusic();
-+
-+ if (music == null) {
++ Music posted = net.neoforged.neoforge.client.ClientHooks.selectMusic(music);
++ if (posted == null) {
++ if (this.currentMusic == null) {
++ this.nextSongDelay--;
++ }
+ return;
+ }
-+
if (this.currentMusic != null) {
if (!music.getEvent().value().getLocation().equals(this.currentMusic.getLocation()) && music.replaceCurrentMusic()) {
this.minecraft.getSoundManager().stop(this.currentMusic);
+@@ -39,7 +_,7 @@
+
+ this.nextSongDelay = Math.min(this.nextSongDelay, music.getMaxDelay());
+ if (this.currentMusic == null && this.nextSongDelay-- <= 0) {
+- this.startPlaying(music);
++ this.startPlaying(posted);
+ }
+ }
+
diff --git a/src/main/java/net/neoforged/neoforge/client/ClientHooks.java b/src/main/java/net/neoforged/neoforge/client/ClientHooks.java
index 54d7fa5099..8ce7d8aaa5 100644
--- a/src/main/java/net/neoforged/neoforge/client/ClientHooks.java
+++ b/src/main/java/net/neoforged/neoforge/client/ClientHooks.java
@@ -392,10 +392,11 @@ public static SoundInstance playSound(SoundEngine manager, SoundInstance sound)
return e.getSound();
}
- public static SelectMusicEvent selectMusic(Music music) {
+ @Nullable
+ public static Music selectMusic(Music music) {
SelectMusicEvent e = new SelectMusicEvent(music);
NeoForge.EVENT_BUS.post(e);
- return e;
+ return e.getMusic();
}
public static void drawScreen(Screen screen, GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) {
From 9ff4ba69b95fb3bfe8f3ca84e56693bf23c48c63 Mon Sep 17 00:00:00 2001
From: Zepalesque <60141811+Zepalesque@users.noreply.github.com>
Date: Fri, 26 Apr 2024 21:21:30 -0400
Subject: [PATCH 03/15] Optimize patches and revamp documentation
hopefully I didn't overdo the javadocs lol
---
.../client/sounds/MusicManager.java.patch | 18 +++++-----------
.../client/event/SelectMusicEvent.java | 21 ++++++++++++++++++-
2 files changed, 25 insertions(+), 14 deletions(-)
diff --git a/patches/net/minecraft/client/sounds/MusicManager.java.patch b/patches/net/minecraft/client/sounds/MusicManager.java.patch
index 8759f44e4c..bb168fb5ea 100644
--- a/patches/net/minecraft/client/sounds/MusicManager.java.patch
+++ b/patches/net/minecraft/client/sounds/MusicManager.java.patch
@@ -1,11 +1,12 @@
--- a/net/minecraft/client/sounds/MusicManager.java
+++ b/net/minecraft/client/sounds/MusicManager.java
-@@ -25,6 +_,13 @@
+@@ -24,7 +_,13 @@
+ }
public void tick() {
- Music music = this.minecraft.getSituationalMusic();
-+ Music posted = net.neoforged.neoforge.client.ClientHooks.selectMusic(music);
-+ if (posted == null) {
+- Music music = this.minecraft.getSituationalMusic();
++ Music music = net.neoforged.neoforge.client.ClientHooks.selectMusic(this.minecraft.getSituationalMusic());
++ if (music == null) {
+ if (this.currentMusic == null) {
+ this.nextSongDelay--;
+ }
@@ -14,12 +15,3 @@
if (this.currentMusic != null) {
if (!music.getEvent().value().getLocation().equals(this.currentMusic.getLocation()) && music.replaceCurrentMusic()) {
this.minecraft.getSoundManager().stop(this.currentMusic);
-@@ -39,7 +_,7 @@
-
- this.nextSongDelay = Math.min(this.nextSongDelay, music.getMaxDelay());
- if (this.currentMusic == null && this.nextSongDelay-- <= 0) {
-- this.startPlaying(music);
-+ this.startPlaying(posted);
- }
- }
-
diff --git a/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java b/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
index 64504a7ac4..ffeb75b3e4 100644
--- a/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
+++ b/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
@@ -8,6 +8,7 @@
import net.minecraft.client.Minecraft;
import net.minecraft.sounds.Music;
import net.neoforged.bus.api.Event;
+import net.neoforged.bus.api.EventPriority;
import net.neoforged.bus.api.ICancellableEvent;
import net.neoforged.fml.LogicalSide;
import net.neoforged.neoforge.common.NeoForge;
@@ -18,12 +19,30 @@
* This can be used to change or prevent (by passing {@code null)} any {@link Music} from being selected, which will
* either change what the music will be next time it plays based on the situation, or prevent it from playing any if {@code null} is passed in.
*
+ * Note that you should listen to a different {@link EventPriority} based on what music you are using for the replacement.
+ *
+ * Somewhat counterintuitively, you should listen with a *lower* {@link EventPriority} for music tracks you want to have higher priority.
+ * This is because higher event priorities will fire before lower ones, meaning that the *lower* priority listeners end up setting the value later,
+ * therefore making the last listener to set the music the one that gets used.
+ *
+ * Generally, you should most likely choose something around these lines for your listener's priority:
+ *
+ * {@linkplain EventPriority#HIGHEST HIGHEST} should generally be used for more ambient situational music tracks such as ones based on biome or dimension that need to be more dynamic than vanilla's system for biome music specified in the biome's json.
+ * {@linkplain EventPriority#HIGH HIGH} should generally be used for slightly more dynamic ambience, such as potential nighttime music for instance.
+ * {@linkplain EventPriority#NORMAL NORMAL} should generally be used for music tracks that are meant to be played at a certain area, for instance a structure.
+ * {@linkplain EventPriority#LOW LOW} would should generally be used for more dynamic instances where you want your music to be fairly high-priority, for instance maybe while in combat.
+ * {@linkplain EventPriority#LOWEST LOWEST} should generally be used in situations where you want your music to take priority over any other music tracks, such as in a boss fight.
+ *
+ * Note that these of course are just general suggestions and your specific use case may call for using a different priority. You can also access the original music track vanilla would have chosen, along with whichever track the event's value was last set to.
+ * This can be used for even more dynamic music sequences, such as ones that change based on what music would have played.
+ *
+ * Note as well that if you want your music track to instantly start and cancel any other playing music, it should be {@linkplain Music#replaceCurrentMusic() set up to do so.}
+ *
* This event is not {@linkplain ICancellableEvent cancellable}, and does not {@linkplain HasResult have a result}.
*
* This event is fired on the {@linkplain NeoForge#EVENT_BUS main Forge event bus},
* only on the {@linkplain LogicalSide#CLIENT logical client}.
*
- * @see Minecraft#getSituationalMusic()
*/
public class SelectMusicEvent extends Event {
private @Nullable Music music;
From a0524cb6cd452e2f9ceb57ea70c83868c1d94470 Mon Sep 17 00:00:00 2001
From: Zepalesque <60141811+Zepalesque@users.noreply.github.com>
Date: Fri, 26 Apr 2024 21:23:55 -0400
Subject: [PATCH 04/15] Simplify music event javadocs a bit
---
.../neoforge/client/event/SelectMusicEvent.java | 14 +++-----------
1 file changed, 3 insertions(+), 11 deletions(-)
diff --git a/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java b/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
index ffeb75b3e4..ba0eb7db8f 100644
--- a/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
+++ b/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
@@ -25,17 +25,9 @@
* This is because higher event priorities will fire before lower ones, meaning that the *lower* priority listeners end up setting the value later,
* therefore making the last listener to set the music the one that gets used.
*
- * Generally, you should most likely choose something around these lines for your listener's priority:
- *
- * {@linkplain EventPriority#HIGHEST HIGHEST} should generally be used for more ambient situational music tracks such as ones based on biome or dimension that need to be more dynamic than vanilla's system for biome music specified in the biome's json.
- * {@linkplain EventPriority#HIGH HIGH} should generally be used for slightly more dynamic ambience, such as potential nighttime music for instance.
- * {@linkplain EventPriority#NORMAL NORMAL} should generally be used for music tracks that are meant to be played at a certain area, for instance a structure.
- * {@linkplain EventPriority#LOW LOW} would should generally be used for more dynamic instances where you want your music to be fairly high-priority, for instance maybe while in combat.
- * {@linkplain EventPriority#LOWEST LOWEST} should generally be used in situations where you want your music to take priority over any other music tracks, such as in a boss fight.
- *
- * Note that these of course are just general suggestions and your specific use case may call for using a different priority. You can also access the original music track vanilla would have chosen, along with whichever track the event's value was last set to.
- * This can be used for even more dynamic music sequences, such as ones that change based on what music would have played.
- *
+ * Generally, you should listen with lower event priorities if you want your music to take priority over others. For instance, high priority might be used for biome or dimension-based music,
+ * whereas normal might be used for structures, and low might be used for combat or boss battles. This may of course vary based on use case.
+
* Note as well that if you want your music track to instantly start and cancel any other playing music, it should be {@linkplain Music#replaceCurrentMusic() set up to do so.}
*
* This event is not {@linkplain ICancellableEvent cancellable}, and does not {@linkplain HasResult have a result}.
From a2bc17c195df09f97d74cc68ef079e3758d9e301 Mon Sep 17 00:00:00 2001
From: Zepalesque <60141811+Zepalesque@users.noreply.github.com>
Date: Fri, 26 Apr 2024 21:46:04 -0400
Subject: [PATCH 05/15] forgot to do formatting and stuff
---
.../neoforged/neoforge/client/event/SelectMusicEvent.java | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java b/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
index ba0eb7db8f..3e08ae19d1 100644
--- a/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
+++ b/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
@@ -5,7 +5,6 @@
package net.neoforged.neoforge.client.event;
-import net.minecraft.client.Minecraft;
import net.minecraft.sounds.Music;
import net.neoforged.bus.api.Event;
import net.neoforged.bus.api.EventPriority;
@@ -23,11 +22,11 @@
*
* Somewhat counterintuitively, you should listen with a *lower* {@link EventPriority} for music tracks you want to have higher priority.
* This is because higher event priorities will fire before lower ones, meaning that the *lower* priority listeners end up setting the value later,
- * therefore making the last listener to set the music the one that gets used.
+ * therefore making the last listener to set the music the one that gets used.
*
* Generally, you should listen with lower event priorities if you want your music to take priority over others. For instance, high priority might be used for biome or dimension-based music,
* whereas normal might be used for structures, and low might be used for combat or boss battles. This may of course vary based on use case.
-
+ *
* Note as well that if you want your music track to instantly start and cancel any other playing music, it should be {@linkplain Music#replaceCurrentMusic() set up to do so.}
*
* This event is not {@linkplain ICancellableEvent cancellable}, and does not {@linkplain HasResult have a result}.
From 640ee7fe5c3e403837cf22be1648930baf711f96 Mon Sep 17 00:00:00 2001
From: Zepalesque <60141811+Zepalesque@users.noreply.github.com>
Date: Sat, 4 May 2024 11:22:48 -0400
Subject: [PATCH 06/15] fix: avoid unintended behavior where the music delay
may go below 0
---
patches/net/minecraft/client/sounds/MusicManager.java.patch | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/patches/net/minecraft/client/sounds/MusicManager.java.patch b/patches/net/minecraft/client/sounds/MusicManager.java.patch
index bb168fb5ea..251d1279f0 100644
--- a/patches/net/minecraft/client/sounds/MusicManager.java.patch
+++ b/patches/net/minecraft/client/sounds/MusicManager.java.patch
@@ -1,15 +1,12 @@
--- a/net/minecraft/client/sounds/MusicManager.java
+++ b/net/minecraft/client/sounds/MusicManager.java
-@@ -24,7 +_,13 @@
+@@ -24,7 +_,10 @@
}
public void tick() {
- Music music = this.minecraft.getSituationalMusic();
+ Music music = net.neoforged.neoforge.client.ClientHooks.selectMusic(this.minecraft.getSituationalMusic());
+ if (music == null) {
-+ if (this.currentMusic == null) {
-+ this.nextSongDelay--;
-+ }
+ return;
+ }
if (this.currentMusic != null) {
From 1a1c33ddf411e4379d25cca653564371636f9d40 Mon Sep 17 00:00:00 2001
From: Zepalesque <60141811+Zepalesque@users.noreply.github.com>
Date: Mon, 17 Jun 2024 19:24:59 -0400
Subject: [PATCH 07/15] feat: Rework event, with new documentation and tweaked
behavior
---
.../neoforge/client/ClientHooks.java | 4 +-
.../client/event/SelectMusicEvent.java | 64 +++++++++++--------
2 files changed, 39 insertions(+), 29 deletions(-)
diff --git a/src/main/java/net/neoforged/neoforge/client/ClientHooks.java b/src/main/java/net/neoforged/neoforge/client/ClientHooks.java
index 8ce7d8aaa5..27212b39c9 100644
--- a/src/main/java/net/neoforged/neoforge/client/ClientHooks.java
+++ b/src/main/java/net/neoforged/neoforge/client/ClientHooks.java
@@ -393,8 +393,8 @@ public static SoundInstance playSound(SoundEngine manager, SoundInstance sound)
}
@Nullable
- public static Music selectMusic(Music music) {
- SelectMusicEvent e = new SelectMusicEvent(music);
+ public static Music selectMusic(Music situational, @Nullable SoundInstance playing) {
+ SelectMusicEvent e = new SelectMusicEvent(situational, playing);
NeoForge.EVENT_BUS.post(e);
return e.getMusic();
}
diff --git a/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java b/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
index 3e08ae19d1..16b65debb1 100644
--- a/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
+++ b/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
@@ -5,6 +5,7 @@
package net.neoforged.neoforge.client.event;
+import net.minecraft.client.resources.sounds.SoundInstance;
import net.minecraft.sounds.Music;
import net.neoforged.bus.api.Event;
import net.neoforged.bus.api.EventPriority;
@@ -14,45 +15,51 @@
import org.jetbrains.annotations.Nullable;
/**
- * Fired when the {@link net.minecraft.client.sounds.MusicManager} checks what situational music should be used. This fires before the music begins playing.
- * This can be used to change or prevent (by passing {@code null)} any {@link Music} from being selected, which will
- * either change what the music will be next time it plays based on the situation, or prevent it from playing any if {@code null} is passed in.
- *
- * Note that you should listen to a different {@link EventPriority} based on what music you are using for the replacement.
- *
- * Somewhat counterintuitively, you should listen with a *lower* {@link EventPriority} for music tracks you want to have higher priority.
- * This is because higher event priorities will fire before lower ones, meaning that the *lower* priority listeners end up setting the value later,
- * therefore making the last listener to set the music the one that gets used.
- *
- * Generally, you should listen with lower event priorities if you want your music to take priority over others. For instance, high priority might be used for biome or dimension-based music,
- * whereas normal might be used for structures, and low might be used for combat or boss battles. This may of course vary based on use case.
- *
- * Note as well that if you want your music track to instantly start and cancel any other playing music, it should be {@linkplain Music#replaceCurrentMusic() set up to do so.}
- *
- * This event is not {@linkplain ICancellableEvent cancellable}, and does not {@linkplain HasResult have a result}.
- *
- * This event is fired on the {@linkplain NeoForge#EVENT_BUS main Forge event bus},
- * only on the {@linkplain LogicalSide#CLIENT logical client}.
+ * Fired when the {@link net.minecraft.client.sounds.MusicManager} checks what situational music should be used. This fires before the music begins playing.
+ * If the music is set to {@code null} by a modder, it will cancel any music that was already playing.
+ *
+ * Note that the higher priority you make your event listener, the earlier the music will be set.
+ * Because of this, if you want your music to take precedence over others (perhaps you want to have seperate nighttime music for a biome for instance) then you may want it to have a lower priority.
+ *
+ * To make your music instantly play rather than waiting for the playing music to stop, set the music to one that {@linkplain Music#replaceCurrentMusic() is set to replace the current music.}
+ *
+ * Higher priorities would likely be better suited for biome-based or dimension-based musics, whereas lower priority is likely good for specific structures or situations.
+ *
+ * This event is {@linkplain ICancellableEvent cancellable}, and does not {@linkplain HasResult have a result}.
+ * If the event is cancelled, then no further modification to the {@link Music} value will be allowed. This should only be used if your music should take priority over others, such as for boss music.
+ *
+ * This event is fired on the {@linkplain NeoForge#EVENT_BUS main Forge event bus},
+ * only on the {@linkplain LogicalSide#CLIENT logical client}.
*
*/
-public class SelectMusicEvent extends Event {
+public class SelectMusicEvent extends Event implements ICancellableEvent {
private @Nullable Music music;
private final Music originalMusic;
+ private final @Nullable SoundInstance playingMusic;
- public SelectMusicEvent(Music music) {
+ public SelectMusicEvent(Music music, @Nullable SoundInstance playingMusic) {
this.music = music;
this.originalMusic = music;
+ this.playingMusic = playingMusic;
}
/**
- * {@return the original music that was to be played}
+ * {@return the original situational music that was selected}
*/
public Music getOriginalMusic() {
return originalMusic;
}
/**
- * {@return the Music to be played, or {@code null} if there should be no music based on the situation}
+ * {@return the current track that the {@link net.minecraft.client.sounds.MusicManager} is playing, or {@code null} if there is none.}
+ */
+ @Nullable
+ public SoundInstance getPlayingMusic() {
+ return playingMusic;
+ }
+
+ /**
+ * {@return the Music to be played, or {@code null} if any playing music should be cancelled}
*/
@Nullable
public Music getMusic() {
@@ -60,11 +67,14 @@ public Music getMusic() {
}
/**
- * Changes what music should be selected, which may be {@code null} to keep the music from being played
- *
- * @param newMusic the new {@link Music} to be played, or {@code null} for no music
+ * Changes the situational music. If this is set to {@code null}, any currently playing music will be cancelled.
+ * If this was {@code null} but on the next tick isn't, the muisc given will be immediately played.
+ *
+ * Note that if {@link #isCanceled()} is {@code true}, this method will do nothing, as it is meant to override other musics.
*/
public void setMusic(@Nullable Music newMusic) {
- this.music = newMusic;
+ if (!this.isCanceled()) {
+ this.music = newMusic;
+ }
}
}
From 551a73f97f34c13d8f56f64239c26d1571fd54f7 Mon Sep 17 00:00:00 2001
From: Zepalesque <60141811+Zepalesque@users.noreply.github.com>
Date: Mon, 17 Jun 2024 19:28:36 -0400
Subject: [PATCH 08/15] Patches (not sure why others were changed? I haven't
made any changes to them, maybe some other pr forgot to do this)
---
.../client/sounds/MusicManager.java.patch | 43 ++++++++++++++++---
...ConfigurationPacketListenerImpl.java.patch | 6 +--
.../minecraft/world/item/ItemStack.java.patch | 22 +++-------
.../client/event/SelectMusicEvent.java | 1 -
4 files changed, 43 insertions(+), 29 deletions(-)
diff --git a/patches/net/minecraft/client/sounds/MusicManager.java.patch b/patches/net/minecraft/client/sounds/MusicManager.java.patch
index 251d1279f0..283914311d 100644
--- a/patches/net/minecraft/client/sounds/MusicManager.java.patch
+++ b/patches/net/minecraft/client/sounds/MusicManager.java.patch
@@ -1,14 +1,43 @@
--- a/net/minecraft/client/sounds/MusicManager.java
+++ b/net/minecraft/client/sounds/MusicManager.java
-@@ -24,7 +_,10 @@
+@@ -24,22 +_,28 @@
}
public void tick() {
- Music music = this.minecraft.getSituationalMusic();
-+ Music music = net.neoforged.neoforge.client.ClientHooks.selectMusic(this.minecraft.getSituationalMusic());
-+ if (music == null) {
-+ return;
-+ }
++ Music music = net.neoforged.neoforge.client.ClientHooks.selectMusic(this.minecraft.getSituationalMusic(), this.currentMusic);
if (this.currentMusic != null) {
- if (!music.getEvent().value().getLocation().equals(this.currentMusic.getLocation()) && music.replaceCurrentMusic()) {
- this.minecraft.getSoundManager().stop(this.currentMusic);
+- if (!music.getEvent().value().getLocation().equals(this.currentMusic.getLocation()) && music.replaceCurrentMusic()) {
+- this.minecraft.getSoundManager().stop(this.currentMusic);
+- this.nextSongDelay = Mth.nextInt(this.random, 0, music.getMinDelay() / 2);
+- }
++ if (music == null) {
++ this.stopPlaying();
++ this.nextSongDelay = 0;
++ } else {
++ if (!music.getEvent().value().getLocation().equals(this.currentMusic.getLocation()) && music.replaceCurrentMusic()) {
++ this.minecraft.getSoundManager().stop(this.currentMusic);
++ this.nextSongDelay = Mth.nextInt(this.random, 0, music.getMinDelay() / 2);
++ }
+
+- if (!this.minecraft.getSoundManager().isActive(this.currentMusic)) {
+- this.currentMusic = null;
+- this.nextSongDelay = Math.min(this.nextSongDelay, Mth.nextInt(this.random, music.getMinDelay(), music.getMaxDelay()));
++ if (!this.minecraft.getSoundManager().isActive(this.currentMusic)) {
++ this.currentMusic = null;
++ this.nextSongDelay = Math.min(this.nextSongDelay, Mth.nextInt(this.random, music.getMinDelay(), music.getMaxDelay()));
++ }
+ }
+ }
+-
+- this.nextSongDelay = Math.min(this.nextSongDelay, music.getMaxDelay());
+- if (this.currentMusic == null && this.nextSongDelay-- <= 0) {
+- this.startPlaying(music);
++ if (music != null) {
++ this.nextSongDelay = Math.min(this.nextSongDelay, music.getMaxDelay());
++ if (this.currentMusic == null && this.nextSongDelay-- <= 0) {
++ this.startPlaying(music);
++ }
+ }
+ }
+
diff --git a/patches/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java.patch b/patches/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java.patch
index 61fdc711d9..1e60515d03 100644
--- a/patches/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java.patch
+++ b/patches/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java.patch
@@ -59,12 +59,10 @@
}
@Override
-@@ -125,7 +_,13 @@
- public void handleConfigurationFinished(ServerboundFinishConfigurationPacket p_294283_) {
+@@ -126,6 +_,12 @@
PacketUtils.ensureRunningOnSameThread(p_294283_, this, this.server);
this.finishCurrentTask(JoinWorldTask.TYPE);
-- this.connection.setupOutboundProtocol(GameProtocols.CLIENTBOUND_TEMPLATE.bind(RegistryFriendlyByteBuf.decorator(this.server.registryAccess())));
-+ this.connection.setupOutboundProtocol(GameProtocols.CLIENTBOUND_TEMPLATE.bind(RegistryFriendlyByteBuf.decorator(this.server.registryAccess(), this.connectionType)));
+ this.connection.setupOutboundProtocol(GameProtocols.CLIENTBOUND_TEMPLATE.bind(RegistryFriendlyByteBuf.decorator(this.server.registryAccess())));
+ // Packets can only be sent after the outbound protocol is set up again
+ if (this.connectionType == net.neoforged.neoforge.network.connection.ConnectionType.OTHER) {
+ //We need to also initialize this here, as the client may have sent the packet before we have finished our configuration.
diff --git a/patches/net/minecraft/world/item/ItemStack.java.patch b/patches/net/minecraft/world/item/ItemStack.java.patch
index b211333782..074261d353 100644
--- a/patches/net/minecraft/world/item/ItemStack.java.patch
+++ b/patches/net/minecraft/world/item/ItemStack.java.patch
@@ -158,27 +158,15 @@
public ItemEnchantments getEnchantments() {
return this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY);
}
-@@ -933,11 +_,15 @@
+@@ -933,6 +_,8 @@
}
public void forEachModifier(EquipmentSlot p_332001_, BiConsumer, AttributeModifier> p_330882_) {
-- ItemAttributeModifiers itemattributemodifiers = this.getOrDefault(DataComponents.ATTRIBUTE_MODIFIERS, ItemAttributeModifiers.EMPTY);
-- if (!itemattributemodifiers.modifiers().isEmpty()) {
-- itemattributemodifiers.forEach(p_332001_, p_330882_);
-- } else {
-- this.getItem().getDefaultAttributeModifiers().forEach(p_332001_, p_330882_);
-+ // Neo: Use ItemStack extension method, which fires an event for mod-added attributes modifiers
+ this.getAttributeModifiers(p_332001_).forEach(p_330882_);
-+ if (false) {
-+ ItemAttributeModifiers itemattributemodifiers = this.getOrDefault(DataComponents.ATTRIBUTE_MODIFIERS, ItemAttributeModifiers.EMPTY);
-+ if (!itemattributemodifiers.modifiers().isEmpty()) {
-+ itemattributemodifiers.forEach(p_332001_, p_330882_);
-+ } else {
-+ this.getItem().getDefaultAttributeModifiers().forEach(p_332001_, p_330882_);
-+ }
- }
-
- EnchantmentHelper.forEachModifier(this, p_332001_, p_330882_);
++ if (true) return;
+ ItemAttributeModifiers itemattributemodifiers = this.getOrDefault(DataComponents.ATTRIBUTE_MODIFIERS, ItemAttributeModifiers.EMPTY);
+ if (!itemattributemodifiers.modifiers().isEmpty()) {
+ itemattributemodifiers.forEach(p_332001_, p_330882_);
@@ -951,7 +_,7 @@
MutableComponent mutablecomponent1 = ComponentUtils.wrapInSquareBrackets(mutablecomponent);
diff --git a/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java b/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
index 16b65debb1..b2dabe6a5a 100644
--- a/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
+++ b/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
@@ -8,7 +8,6 @@
import net.minecraft.client.resources.sounds.SoundInstance;
import net.minecraft.sounds.Music;
import net.neoforged.bus.api.Event;
-import net.neoforged.bus.api.EventPriority;
import net.neoforged.bus.api.ICancellableEvent;
import net.neoforged.fml.LogicalSide;
import net.neoforged.neoforge.common.NeoForge;
From aaa252128d2023dee63c37e70b43227aea50c67a Mon Sep 17 00:00:00 2001
From: Zepalesque <60141811+Zepalesque@users.noreply.github.com>
Date: Mon, 17 Jun 2024 21:00:03 -0400
Subject: [PATCH 09/15] improv: optimize patches
---
.../renderer/RenderStateShard.java.patch | 433 +++++++++++++++
.../client/renderer/RenderType.java.patch | 499 ++++++++++++++++++
.../layers/HumanoidArmorLayer.java.patch | 2 +-
.../client/sounds/MusicManager.java.patch | 49 +-
4 files changed, 952 insertions(+), 31 deletions(-)
create mode 100644 patches/net/minecraft/client/renderer/RenderStateShard.java.patch
diff --git a/patches/net/minecraft/client/renderer/RenderStateShard.java.patch b/patches/net/minecraft/client/renderer/RenderStateShard.java.patch
new file mode 100644
index 0000000000..5e398d60b5
--- /dev/null
+++ b/patches/net/minecraft/client/renderer/RenderStateShard.java.patch
@@ -0,0 +1,433 @@
+--- a/net/minecraft/client/renderer/RenderStateShard.java
++++ b/net/minecraft/client/renderer/RenderStateShard.java
+@@ -20,16 +_,16 @@
+
+ @OnlyIn(Dist.CLIENT)
+ public abstract class RenderStateShard {
+- public static final float VIEW_SCALE_Z_EPSILON = 0.99975586F;
++ private static final float VIEW_SCALE_Z_EPSILON = 0.99975586F;
+ public static final double MAX_ENCHANTMENT_GLINT_SPEED_MILLIS = 8.0;
+- public final String name;
+- public final Runnable setupState;
+- public final Runnable clearState;
+- public static final RenderStateShard.TransparencyStateShard NO_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
++ protected final String name;
++ protected Runnable setupState;
++ private final Runnable clearState;
++ protected static final RenderStateShard.TransparencyStateShard NO_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
+ "no_transparency", () -> RenderSystem.disableBlend(), () -> {
+ }
+ );
+- public static final RenderStateShard.TransparencyStateShard ADDITIVE_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
++ protected static final RenderStateShard.TransparencyStateShard ADDITIVE_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
+ "additive_transparency", () -> {
+ RenderSystem.enableBlend();
+ RenderSystem.blendFunc(GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ONE);
+@@ -38,7 +_,7 @@
+ RenderSystem.defaultBlendFunc();
+ }
+ );
+- public static final RenderStateShard.TransparencyStateShard LIGHTNING_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
++ protected static final RenderStateShard.TransparencyStateShard LIGHTNING_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
+ "lightning_transparency", () -> {
+ RenderSystem.enableBlend();
+ RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE);
+@@ -47,7 +_,7 @@
+ RenderSystem.defaultBlendFunc();
+ }
+ );
+- public static final RenderStateShard.TransparencyStateShard GLINT_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
++ protected static final RenderStateShard.TransparencyStateShard GLINT_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
+ "glint_transparency",
+ () -> {
+ RenderSystem.enableBlend();
+@@ -60,7 +_,7 @@
+ RenderSystem.defaultBlendFunc();
+ }
+ );
+- public static final RenderStateShard.TransparencyStateShard CRUMBLING_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
++ protected static final RenderStateShard.TransparencyStateShard CRUMBLING_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
+ "crumbling_transparency",
+ () -> {
+ RenderSystem.enableBlend();
+@@ -73,7 +_,7 @@
+ RenderSystem.defaultBlendFunc();
+ }
+ );
+- public static final RenderStateShard.TransparencyStateShard TRANSLUCENT_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
++ protected static final RenderStateShard.TransparencyStateShard TRANSLUCENT_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
+ "translucent_transparency",
+ () -> {
+ RenderSystem.enableBlend();
+@@ -89,189 +_,189 @@
+ RenderSystem.defaultBlendFunc();
+ }
+ );
+- public static final RenderStateShard.ShaderStateShard NO_SHADER = new RenderStateShard.ShaderStateShard();
+- public static final RenderStateShard.ShaderStateShard POSITION_COLOR_LIGHTMAP_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard NO_SHADER = new RenderStateShard.ShaderStateShard();
++ protected static final RenderStateShard.ShaderStateShard POSITION_COLOR_LIGHTMAP_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getPositionColorLightmapShader
+ );
+- public static final RenderStateShard.ShaderStateShard POSITION_SHADER = new RenderStateShard.ShaderStateShard(GameRenderer::getPositionShader);
+- public static final RenderStateShard.ShaderStateShard POSITION_TEX_SHADER = new RenderStateShard.ShaderStateShard(GameRenderer::getPositionTexShader);
+- public static final RenderStateShard.ShaderStateShard POSITION_COLOR_TEX_LIGHTMAP_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard POSITION_SHADER = new RenderStateShard.ShaderStateShard(GameRenderer::getPositionShader);
++ protected static final RenderStateShard.ShaderStateShard POSITION_TEX_SHADER = new RenderStateShard.ShaderStateShard(GameRenderer::getPositionTexShader);
++ protected static final RenderStateShard.ShaderStateShard POSITION_COLOR_TEX_LIGHTMAP_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getPositionColorTexLightmapShader
+ );
+- public static final RenderStateShard.ShaderStateShard POSITION_COLOR_SHADER = new RenderStateShard.ShaderStateShard(GameRenderer::getPositionColorShader);
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_SOLID_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard POSITION_COLOR_SHADER = new RenderStateShard.ShaderStateShard(GameRenderer::getPositionColorShader);
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_SOLID_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeSolidShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_CUTOUT_MIPPED_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_CUTOUT_MIPPED_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeCutoutMippedShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_CUTOUT_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_CUTOUT_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeCutoutShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_TRANSLUCENT_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_TRANSLUCENT_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeTranslucentShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_TRANSLUCENT_MOVING_BLOCK_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_TRANSLUCENT_MOVING_BLOCK_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeTranslucentMovingBlockShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ARMOR_CUTOUT_NO_CULL_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ARMOR_CUTOUT_NO_CULL_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeArmorCutoutNoCullShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_SOLID_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_SOLID_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeEntitySolidShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_CUTOUT_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_CUTOUT_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeEntityCutoutShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_CUTOUT_NO_CULL_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_CUTOUT_NO_CULL_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeEntityCutoutNoCullShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_CUTOUT_NO_CULL_Z_OFFSET_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_CUTOUT_NO_CULL_Z_OFFSET_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeEntityCutoutNoCullZOffsetShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ITEM_ENTITY_TRANSLUCENT_CULL_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ITEM_ENTITY_TRANSLUCENT_CULL_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeItemEntityTranslucentCullShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_TRANSLUCENT_CULL_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_TRANSLUCENT_CULL_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeEntityTranslucentCullShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_TRANSLUCENT_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_TRANSLUCENT_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeEntityTranslucentShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_TRANSLUCENT_EMISSIVE_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_TRANSLUCENT_EMISSIVE_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeEntityTranslucentEmissiveShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_SMOOTH_CUTOUT_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_SMOOTH_CUTOUT_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeEntitySmoothCutoutShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_BEACON_BEAM_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_BEACON_BEAM_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeBeaconBeamShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_DECAL_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_DECAL_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeEntityDecalShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_NO_OUTLINE_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_NO_OUTLINE_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeEntityNoOutlineShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_SHADOW_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_SHADOW_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeEntityShadowShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_ALPHA_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_ALPHA_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeEntityAlphaShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_EYES_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_EYES_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeEyesShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENERGY_SWIRL_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENERGY_SWIRL_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeEnergySwirlShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_LEASH_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_LEASH_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeLeashShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_WATER_MASK_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_WATER_MASK_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeWaterMaskShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_OUTLINE_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_OUTLINE_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeOutlineShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ARMOR_ENTITY_GLINT_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ARMOR_ENTITY_GLINT_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeArmorEntityGlintShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_GLINT_TRANSLUCENT_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_GLINT_TRANSLUCENT_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeGlintTranslucentShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_GLINT_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_GLINT_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeGlintShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_GLINT_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_GLINT_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeEntityGlintShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_GLINT_DIRECT_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_GLINT_DIRECT_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeEntityGlintDirectShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_CRUMBLING_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_CRUMBLING_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeCrumblingShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeTextShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_BACKGROUND_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_BACKGROUND_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeTextBackgroundShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_INTENSITY_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_INTENSITY_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeTextIntensityShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_SEE_THROUGH_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_SEE_THROUGH_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeTextSeeThroughShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_BACKGROUND_SEE_THROUGH_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_BACKGROUND_SEE_THROUGH_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeTextBackgroundSeeThroughShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_INTENSITY_SEE_THROUGH_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_INTENSITY_SEE_THROUGH_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeTextIntensitySeeThroughShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_LIGHTNING_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_LIGHTNING_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeLightningShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_TRIPWIRE_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_TRIPWIRE_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeTripwireShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_END_PORTAL_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_END_PORTAL_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeEndPortalShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_END_GATEWAY_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_END_GATEWAY_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeEndGatewayShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_CLOUDS_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_CLOUDS_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeCloudsShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_LINES_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_LINES_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeLinesShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_GUI_SHADER = new RenderStateShard.ShaderStateShard(GameRenderer::getRendertypeGuiShader);
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_GUI_OVERLAY_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_GUI_SHADER = new RenderStateShard.ShaderStateShard(GameRenderer::getRendertypeGuiShader);
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_GUI_OVERLAY_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeGuiOverlayShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_GUI_TEXT_HIGHLIGHT_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_GUI_TEXT_HIGHLIGHT_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeGuiTextHighlightShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_GUI_GHOST_RECIPE_OVERLAY_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_GUI_GHOST_RECIPE_OVERLAY_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeGuiGhostRecipeOverlayShader
+ );
+- public static final RenderStateShard.ShaderStateShard RENDERTYPE_BREEZE_WIND_SHADER = new RenderStateShard.ShaderStateShard(
++ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_BREEZE_WIND_SHADER = new RenderStateShard.ShaderStateShard(
+ GameRenderer::getRendertypeBreezeWindShader
+ );
+- public static final RenderStateShard.TextureStateShard BLOCK_SHEET_MIPPED = new RenderStateShard.TextureStateShard(
++ protected static final RenderStateShard.TextureStateShard BLOCK_SHEET_MIPPED = new RenderStateShard.TextureStateShard(
+ TextureAtlas.LOCATION_BLOCKS, false, true
+ );
+- public static final RenderStateShard.TextureStateShard BLOCK_SHEET = new RenderStateShard.TextureStateShard(TextureAtlas.LOCATION_BLOCKS, false, false);
+- public static final RenderStateShard.EmptyTextureStateShard NO_TEXTURE = new RenderStateShard.EmptyTextureStateShard();
+- public static final RenderStateShard.TexturingStateShard DEFAULT_TEXTURING = new RenderStateShard.TexturingStateShard("default_texturing", () -> {
++ protected static final RenderStateShard.TextureStateShard BLOCK_SHEET = new RenderStateShard.TextureStateShard(TextureAtlas.LOCATION_BLOCKS, false, false);
++ protected static final RenderStateShard.EmptyTextureStateShard NO_TEXTURE = new RenderStateShard.EmptyTextureStateShard();
++ protected static final RenderStateShard.TexturingStateShard DEFAULT_TEXTURING = new RenderStateShard.TexturingStateShard("default_texturing", () -> {
+ }, () -> {
+ });
+- public static final RenderStateShard.TexturingStateShard GLINT_TEXTURING = new RenderStateShard.TexturingStateShard(
++ protected static final RenderStateShard.TexturingStateShard GLINT_TEXTURING = new RenderStateShard.TexturingStateShard(
+ "glint_texturing", () -> setupGlintTexturing(8.0F), () -> RenderSystem.resetTextureMatrix()
+ );
+- public static final RenderStateShard.TexturingStateShard ENTITY_GLINT_TEXTURING = new RenderStateShard.TexturingStateShard(
++ protected static final RenderStateShard.TexturingStateShard ENTITY_GLINT_TEXTURING = new RenderStateShard.TexturingStateShard(
+ "entity_glint_texturing", () -> setupGlintTexturing(0.16F), () -> RenderSystem.resetTextureMatrix()
+ );
+- public static final RenderStateShard.LightmapStateShard LIGHTMAP = new RenderStateShard.LightmapStateShard(true);
+- public static final RenderStateShard.LightmapStateShard NO_LIGHTMAP = new RenderStateShard.LightmapStateShard(false);
+- public static final RenderStateShard.OverlayStateShard OVERLAY = new RenderStateShard.OverlayStateShard(true);
+- public static final RenderStateShard.OverlayStateShard NO_OVERLAY = new RenderStateShard.OverlayStateShard(false);
+- public static final RenderStateShard.CullStateShard CULL = new RenderStateShard.CullStateShard(true);
+- public static final RenderStateShard.CullStateShard NO_CULL = new RenderStateShard.CullStateShard(false);
+- public static final RenderStateShard.DepthTestStateShard NO_DEPTH_TEST = new RenderStateShard.DepthTestStateShard("always", 519);
+- public static final RenderStateShard.DepthTestStateShard EQUAL_DEPTH_TEST = new RenderStateShard.DepthTestStateShard("==", 514);
+- public static final RenderStateShard.DepthTestStateShard LEQUAL_DEPTH_TEST = new RenderStateShard.DepthTestStateShard("<=", 515);
+- public static final RenderStateShard.DepthTestStateShard GREATER_DEPTH_TEST = new RenderStateShard.DepthTestStateShard(">", 516);
+- public static final RenderStateShard.WriteMaskStateShard COLOR_DEPTH_WRITE = new RenderStateShard.WriteMaskStateShard(true, true);
+- public static final RenderStateShard.WriteMaskStateShard COLOR_WRITE = new RenderStateShard.WriteMaskStateShard(true, false);
+- public static final RenderStateShard.WriteMaskStateShard DEPTH_WRITE = new RenderStateShard.WriteMaskStateShard(false, true);
+- public static final RenderStateShard.LayeringStateShard NO_LAYERING = new RenderStateShard.LayeringStateShard("no_layering", () -> {
++ protected static final RenderStateShard.LightmapStateShard LIGHTMAP = new RenderStateShard.LightmapStateShard(true);
++ protected static final RenderStateShard.LightmapStateShard NO_LIGHTMAP = new RenderStateShard.LightmapStateShard(false);
++ protected static final RenderStateShard.OverlayStateShard OVERLAY = new RenderStateShard.OverlayStateShard(true);
++ protected static final RenderStateShard.OverlayStateShard NO_OVERLAY = new RenderStateShard.OverlayStateShard(false);
++ protected static final RenderStateShard.CullStateShard CULL = new RenderStateShard.CullStateShard(true);
++ protected static final RenderStateShard.CullStateShard NO_CULL = new RenderStateShard.CullStateShard(false);
++ protected static final RenderStateShard.DepthTestStateShard NO_DEPTH_TEST = new RenderStateShard.DepthTestStateShard("always", 519);
++ protected static final RenderStateShard.DepthTestStateShard EQUAL_DEPTH_TEST = new RenderStateShard.DepthTestStateShard("==", 514);
++ protected static final RenderStateShard.DepthTestStateShard LEQUAL_DEPTH_TEST = new RenderStateShard.DepthTestStateShard("<=", 515);
++ protected static final RenderStateShard.DepthTestStateShard GREATER_DEPTH_TEST = new RenderStateShard.DepthTestStateShard(">", 516);
++ protected static final RenderStateShard.WriteMaskStateShard COLOR_DEPTH_WRITE = new RenderStateShard.WriteMaskStateShard(true, true);
++ protected static final RenderStateShard.WriteMaskStateShard COLOR_WRITE = new RenderStateShard.WriteMaskStateShard(true, false);
++ protected static final RenderStateShard.WriteMaskStateShard DEPTH_WRITE = new RenderStateShard.WriteMaskStateShard(false, true);
++ protected static final RenderStateShard.LayeringStateShard NO_LAYERING = new RenderStateShard.LayeringStateShard("no_layering", () -> {
+ }, () -> {
+ });
+- public static final RenderStateShard.LayeringStateShard POLYGON_OFFSET_LAYERING = new RenderStateShard.LayeringStateShard(
++ protected static final RenderStateShard.LayeringStateShard POLYGON_OFFSET_LAYERING = new RenderStateShard.LayeringStateShard(
+ "polygon_offset_layering", () -> {
+ RenderSystem.polygonOffset(-1.0F, -10.0F);
+ RenderSystem.enablePolygonOffset();
+@@ -280,7 +_,7 @@
+ RenderSystem.disablePolygonOffset();
+ }
+ );
+- public static final RenderStateShard.LayeringStateShard VIEW_OFFSET_Z_LAYERING = new RenderStateShard.LayeringStateShard(
++ protected static final RenderStateShard.LayeringStateShard VIEW_OFFSET_Z_LAYERING = new RenderStateShard.LayeringStateShard(
+ "view_offset_z_layering", () -> {
+ Matrix4fStack matrix4fstack = RenderSystem.getModelViewStack();
+ matrix4fstack.pushMatrix();
+@@ -292,15 +_,15 @@
+ RenderSystem.applyModelViewMatrix();
+ }
+ );
+- public static final RenderStateShard.OutputStateShard MAIN_TARGET = new RenderStateShard.OutputStateShard("main_target", () -> {
++ protected static final RenderStateShard.OutputStateShard MAIN_TARGET = new RenderStateShard.OutputStateShard("main_target", () -> {
+ }, () -> {
+ });
+- public static final RenderStateShard.OutputStateShard OUTLINE_TARGET = new RenderStateShard.OutputStateShard(
++ protected static final RenderStateShard.OutputStateShard OUTLINE_TARGET = new RenderStateShard.OutputStateShard(
+ "outline_target",
+ () -> Minecraft.getInstance().levelRenderer.entityTarget().bindWrite(false),
+ () -> Minecraft.getInstance().getMainRenderTarget().bindWrite(false)
+ );
+- public static final RenderStateShard.OutputStateShard TRANSLUCENT_TARGET = new RenderStateShard.OutputStateShard("translucent_target", () -> {
++ protected static final RenderStateShard.OutputStateShard TRANSLUCENT_TARGET = new RenderStateShard.OutputStateShard("translucent_target", () -> {
+ if (Minecraft.useShaderTransparency()) {
+ Minecraft.getInstance().levelRenderer.getTranslucentTarget().bindWrite(false);
+ }
+@@ -309,7 +_,7 @@
+ Minecraft.getInstance().getMainRenderTarget().bindWrite(false);
+ }
+ });
+- public static final RenderStateShard.OutputStateShard PARTICLES_TARGET = new RenderStateShard.OutputStateShard("particles_target", () -> {
++ protected static final RenderStateShard.OutputStateShard PARTICLES_TARGET = new RenderStateShard.OutputStateShard("particles_target", () -> {
+ if (Minecraft.useShaderTransparency()) {
+ Minecraft.getInstance().levelRenderer.getParticlesTarget().bindWrite(false);
+ }
+@@ -318,7 +_,7 @@
+ Minecraft.getInstance().getMainRenderTarget().bindWrite(false);
+ }
+ });
+- public static final RenderStateShard.OutputStateShard WEATHER_TARGET = new RenderStateShard.OutputStateShard("weather_target", () -> {
++ protected static final RenderStateShard.OutputStateShard WEATHER_TARGET = new RenderStateShard.OutputStateShard("weather_target", () -> {
+ if (Minecraft.useShaderTransparency()) {
+ Minecraft.getInstance().levelRenderer.getWeatherTarget().bindWrite(false);
+ }
+@@ -327,7 +_,7 @@
+ Minecraft.getInstance().getMainRenderTarget().bindWrite(false);
+ }
+ });
+- public static final RenderStateShard.OutputStateShard CLOUDS_TARGET = new RenderStateShard.OutputStateShard("clouds_target", () -> {
++ protected static final RenderStateShard.OutputStateShard CLOUDS_TARGET = new RenderStateShard.OutputStateShard("clouds_target", () -> {
+ if (Minecraft.useShaderTransparency()) {
+ Minecraft.getInstance().levelRenderer.getCloudsTarget().bindWrite(false);
+ }
+@@ -336,7 +_,7 @@
+ Minecraft.getInstance().getMainRenderTarget().bindWrite(false);
+ }
+ });
+- public static final RenderStateShard.OutputStateShard ITEM_ENTITY_TARGET = new RenderStateShard.OutputStateShard("item_entity_target", () -> {
++ protected static final RenderStateShard.OutputStateShard ITEM_ENTITY_TARGET = new RenderStateShard.OutputStateShard("item_entity_target", () -> {
+ if (Minecraft.useShaderTransparency()) {
+ Minecraft.getInstance().levelRenderer.getItemEntityTarget().bindWrite(false);
+ }
+@@ -345,12 +_,12 @@
+ Minecraft.getInstance().getMainRenderTarget().bindWrite(false);
+ }
+ });
+- public static final RenderStateShard.LineStateShard DEFAULT_LINE = new RenderStateShard.LineStateShard(OptionalDouble.of(1.0));
+- public static final RenderStateShard.ColorLogicStateShard NO_COLOR_LOGIC = new RenderStateShard.ColorLogicStateShard(
++ protected static final RenderStateShard.LineStateShard DEFAULT_LINE = new RenderStateShard.LineStateShard(OptionalDouble.of(1.0));
++ protected static final RenderStateShard.ColorLogicStateShard NO_COLOR_LOGIC = new RenderStateShard.ColorLogicStateShard(
+ "no_color_logic", () -> RenderSystem.disableColorLogicOp(), () -> {
+ }
+ );
+- public static final RenderStateShard.ColorLogicStateShard OR_REVERSE_COLOR_LOGIC = new RenderStateShard.ColorLogicStateShard("or_reverse", () -> {
++ protected static final RenderStateShard.ColorLogicStateShard OR_REVERSE_COLOR_LOGIC = new RenderStateShard.ColorLogicStateShard("or_reverse", () -> {
+ RenderSystem.enableColorLogicOp();
+ RenderSystem.logicOp(GlStateManager.LogicOp.OR_REVERSE);
+ }, () -> RenderSystem.disableColorLogicOp());
+@@ -374,7 +_,7 @@
+ return this.name;
+ }
+
+- public static void setupGlintTexturing(float p_110187_) {
++ private static void setupGlintTexturing(float p_110187_) {
+ long i = (long)((double)Util.getMillis() * Minecraft.getInstance().options.glintSpeed().get() * 8.0);
+ float f = (float)(i % 110000L) / 110000.0F;
+ float f1 = (float)(i % 30000L) / 30000.0F;
+@@ -399,7 +_,7 @@
+ }
+
+ @OnlyIn(Dist.CLIENT)
+- public static class ColorLogicStateShard extends RenderStateShard {
++ protected static class ColorLogicStateShard extends RenderStateShard {
+ public ColorLogicStateShard(String p_286784_, Runnable p_286884_, Runnable p_286375_) {
+ super(p_286784_, p_286884_, p_286375_);
+ }
+@@ -485,7 +_,7 @@
+ }
+
+ @OnlyIn(Dist.CLIENT)
+- public static class LineStateShard extends RenderStateShard {
++ protected static class LineStateShard extends RenderStateShard {
+ private final OptionalDouble width;
+
+ public LineStateShard(OptionalDouble p_110278_) {
diff --git a/patches/net/minecraft/client/renderer/RenderType.java.patch b/patches/net/minecraft/client/renderer/RenderType.java.patch
index c91bd86985..d3da0b8ccb 100644
--- a/patches/net/minecraft/client/renderer/RenderType.java.patch
+++ b/patches/net/minecraft/client/renderer/RenderType.java.patch
@@ -1,5 +1,486 @@
--- a/net/minecraft/client/renderer/RenderType.java
+++ b/net/minecraft/client/renderer/RenderType.java
+@@ -19,11 +_,11 @@
+
+ @OnlyIn(Dist.CLIENT)
+ public abstract class RenderType extends RenderStateShard {
+- public static final int MEGABYTE = 1048576;
++ private static final int MEGABYTE = 1048576;
+ public static final int BIG_BUFFER_SIZE = 4194304;
+ public static final int SMALL_BUFFER_SIZE = 786432;
+ public static final int TRANSIENT_BUFFER_SIZE = 1536;
+- public static final RenderType SOLID = create(
++ private static final RenderType SOLID = create(
+ "solid",
+ DefaultVertexFormat.BLOCK,
+ VertexFormat.Mode.QUADS,
+@@ -36,7 +_,7 @@
+ .setTextureState(BLOCK_SHEET_MIPPED)
+ .createCompositeState(true)
+ );
+- public static final RenderType CUTOUT_MIPPED = create(
++ private static final RenderType CUTOUT_MIPPED = create(
+ "cutout_mipped",
+ DefaultVertexFormat.BLOCK,
+ VertexFormat.Mode.QUADS,
+@@ -49,7 +_,7 @@
+ .setTextureState(BLOCK_SHEET_MIPPED)
+ .createCompositeState(true)
+ );
+- public static final RenderType CUTOUT = create(
++ private static final RenderType CUTOUT = create(
+ "cutout",
+ DefaultVertexFormat.BLOCK,
+ VertexFormat.Mode.QUADS,
+@@ -62,16 +_,16 @@
+ .setTextureState(BLOCK_SHEET)
+ .createCompositeState(true)
+ );
+- public static final RenderType TRANSLUCENT = create(
++ private static final RenderType TRANSLUCENT = create(
+ "translucent", DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 786432, true, true, translucentState(RENDERTYPE_TRANSLUCENT_SHADER)
+ );
+- public static final RenderType TRANSLUCENT_MOVING_BLOCK = create(
++ private static final RenderType TRANSLUCENT_MOVING_BLOCK = create(
+ "translucent_moving_block", DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 786432, false, true, translucentMovingBlockState()
+ );
+- public static final Function ARMOR_CUTOUT_NO_CULL = Util.memoize(
++ private static final Function ARMOR_CUTOUT_NO_CULL = Util.memoize(
+ p_297924_ -> createArmorCutoutNoCull("armor_cutout_no_cull", p_297924_, false)
+ );
+- public static final Function ENTITY_SOLID = Util.memoize(
++ private static final Function ENTITY_SOLID = Util.memoize(
+ p_286159_ -> {
+ RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
+ .setShaderState(RENDERTYPE_ENTITY_SOLID_SHADER)
+@@ -83,7 +_,7 @@
+ return create("entity_solid", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, false, rendertype$compositestate);
+ }
+ );
+- public static final Function ENTITY_CUTOUT = Util.memoize(
++ private static final Function ENTITY_CUTOUT = Util.memoize(
+ p_286173_ -> {
+ RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
+ .setShaderState(RENDERTYPE_ENTITY_CUTOUT_SHADER)
+@@ -95,7 +_,7 @@
+ return create("entity_cutout", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, false, rendertype$compositestate);
+ }
+ );
+- public static final BiFunction ENTITY_CUTOUT_NO_CULL = Util.memoize(
++ private static final BiFunction ENTITY_CUTOUT_NO_CULL = Util.memoize(
+ (p_286166_, p_286167_) -> {
+ RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
+ .setShaderState(RENDERTYPE_ENTITY_CUTOUT_NO_CULL_SHADER)
+@@ -108,7 +_,7 @@
+ return create("entity_cutout_no_cull", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, false, rendertype$compositestate);
+ }
+ );
+- public static final BiFunction ENTITY_CUTOUT_NO_CULL_Z_OFFSET = Util.memoize(
++ private static final BiFunction ENTITY_CUTOUT_NO_CULL_Z_OFFSET = Util.memoize(
+ (p_286153_, p_286154_) -> {
+ RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
+ .setShaderState(RENDERTYPE_ENTITY_CUTOUT_NO_CULL_Z_OFFSET_SHADER)
+@@ -124,7 +_,7 @@
+ );
+ }
+ );
+- public static final Function ITEM_ENTITY_TRANSLUCENT_CULL = Util.memoize(
++ private static final Function ITEM_ENTITY_TRANSLUCENT_CULL = Util.memoize(
+ p_286155_ -> {
+ RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
+ .setShaderState(RENDERTYPE_ITEM_ENTITY_TRANSLUCENT_CULL_SHADER)
+@@ -138,7 +_,7 @@
+ return create("item_entity_translucent_cull", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, true, rendertype$compositestate);
+ }
+ );
+- public static final Function ENTITY_TRANSLUCENT_CULL = Util.memoize(
++ private static final Function ENTITY_TRANSLUCENT_CULL = Util.memoize(
+ p_286165_ -> {
+ RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
+ .setShaderState(RENDERTYPE_ENTITY_TRANSLUCENT_CULL_SHADER)
+@@ -150,7 +_,7 @@
+ return create("entity_translucent_cull", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, true, rendertype$compositestate);
+ }
+ );
+- public static final BiFunction ENTITY_TRANSLUCENT = Util.memoize(
++ private static final BiFunction ENTITY_TRANSLUCENT = Util.memoize(
+ (p_286156_, p_286157_) -> {
+ RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
+ .setShaderState(RENDERTYPE_ENTITY_TRANSLUCENT_SHADER)
+@@ -163,7 +_,7 @@
+ return create("entity_translucent", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, true, rendertype$compositestate);
+ }
+ );
+- public static final BiFunction ENTITY_TRANSLUCENT_EMISSIVE = Util.memoize(
++ private static final BiFunction ENTITY_TRANSLUCENT_EMISSIVE = Util.memoize(
+ (p_286163_, p_286164_) -> {
+ RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
+ .setShaderState(RENDERTYPE_ENTITY_TRANSLUCENT_EMISSIVE_SHADER)
+@@ -176,7 +_,7 @@
+ return create("entity_translucent_emissive", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, true, rendertype$compositestate);
+ }
+ );
+- public static final Function ENTITY_SMOOTH_CUTOUT = Util.memoize(
++ private static final Function ENTITY_SMOOTH_CUTOUT = Util.memoize(
+ p_286169_ -> {
+ RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
+ .setShaderState(RENDERTYPE_ENTITY_SMOOTH_CUTOUT_SHADER)
+@@ -187,7 +_,7 @@
+ return create("entity_smooth_cutout", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, rendertype$compositestate);
+ }
+ );
+- public static final BiFunction BEACON_BEAM = Util.memoize(
++ private static final BiFunction BEACON_BEAM = Util.memoize(
+ (p_234330_, p_234331_) -> {
+ RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
+ .setShaderState(RENDERTYPE_BEACON_BEAM_SHADER)
+@@ -198,7 +_,7 @@
+ return create("beacon_beam", DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 1536, false, true, rendertype$compositestate);
+ }
+ );
+- public static final Function ENTITY_DECAL = Util.memoize(
++ private static final Function ENTITY_DECAL = Util.memoize(
+ p_286171_ -> {
+ RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
+ .setShaderState(RENDERTYPE_ENTITY_DECAL_SHADER)
+@@ -211,7 +_,7 @@
+ return create("entity_decal", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, rendertype$compositestate);
+ }
+ );
+- public static final Function ENTITY_NO_OUTLINE = Util.memoize(
++ private static final Function ENTITY_NO_OUTLINE = Util.memoize(
+ p_286160_ -> {
+ RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
+ .setShaderState(RENDERTYPE_ENTITY_NO_OUTLINE_SHADER)
+@@ -225,7 +_,7 @@
+ return create("entity_no_outline", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, false, true, rendertype$compositestate);
+ }
+ );
+- public static final Function ENTITY_SHADOW = Util.memoize(
++ private static final Function ENTITY_SHADOW = Util.memoize(
+ p_286151_ -> {
+ RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
+ .setShaderState(RENDERTYPE_ENTITY_SHADOW_SHADER)
+@@ -241,7 +_,7 @@
+ return create("entity_shadow", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, false, false, rendertype$compositestate);
+ }
+ );
+- public static final Function DRAGON_EXPLOSION_ALPHA = Util.memoize(
++ private static final Function DRAGON_EXPLOSION_ALPHA = Util.memoize(
+ p_286150_ -> {
+ RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
+ .setShaderState(RENDERTYPE_ENTITY_ALPHA_SHADER)
+@@ -251,7 +_,7 @@
+ return create("entity_alpha", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, rendertype$compositestate);
+ }
+ );
+- public static final BiFunction EYES = Util.memoize(
++ private static final BiFunction EYES = Util.memoize(
+ (p_311464_, p_311465_) -> {
+ RenderStateShard.TextureStateShard renderstateshard$texturestateshard = new RenderStateShard.TextureStateShard(p_311464_, false, false);
+ return create(
+@@ -270,7 +_,7 @@
+ );
+ }
+ );
+- public static final RenderType LEASH = create(
++ private static final RenderType LEASH = create(
+ "leash",
+ DefaultVertexFormat.POSITION_COLOR_LIGHTMAP,
+ VertexFormat.Mode.TRIANGLE_STRIP,
+@@ -282,7 +_,7 @@
+ .setLightmapState(LIGHTMAP)
+ .createCompositeState(false)
+ );
+- public static final RenderType WATER_MASK = create(
++ private static final RenderType WATER_MASK = create(
+ "water_mask",
+ DefaultVertexFormat.POSITION,
+ VertexFormat.Mode.QUADS,
+@@ -293,7 +_,7 @@
+ .setWriteMaskState(DEPTH_WRITE)
+ .createCompositeState(false)
+ );
+- public static final RenderType ARMOR_ENTITY_GLINT = create(
++ private static final RenderType ARMOR_ENTITY_GLINT = create(
+ "armor_entity_glint",
+ DefaultVertexFormat.POSITION_TEX,
+ VertexFormat.Mode.QUADS,
+@@ -309,7 +_,7 @@
+ .setLayeringState(VIEW_OFFSET_Z_LAYERING)
+ .createCompositeState(false)
+ );
+- public static final RenderType GLINT_TRANSLUCENT = create(
++ private static final RenderType GLINT_TRANSLUCENT = create(
+ "glint_translucent",
+ DefaultVertexFormat.POSITION_TEX,
+ VertexFormat.Mode.QUADS,
+@@ -325,7 +_,7 @@
+ .setOutputState(ITEM_ENTITY_TARGET)
+ .createCompositeState(false)
+ );
+- public static final RenderType GLINT = create(
++ private static final RenderType GLINT = create(
+ "glint",
+ DefaultVertexFormat.POSITION_TEX,
+ VertexFormat.Mode.QUADS,
+@@ -340,7 +_,7 @@
+ .setTexturingState(GLINT_TEXTURING)
+ .createCompositeState(false)
+ );
+- public static final RenderType ENTITY_GLINT = create(
++ private static final RenderType ENTITY_GLINT = create(
+ "entity_glint",
+ DefaultVertexFormat.POSITION_TEX,
+ VertexFormat.Mode.QUADS,
+@@ -356,7 +_,7 @@
+ .setTexturingState(ENTITY_GLINT_TEXTURING)
+ .createCompositeState(false)
+ );
+- public static final RenderType ENTITY_GLINT_DIRECT = create(
++ private static final RenderType ENTITY_GLINT_DIRECT = create(
+ "entity_glint_direct",
+ DefaultVertexFormat.POSITION_TEX,
+ VertexFormat.Mode.QUADS,
+@@ -371,7 +_,7 @@
+ .setTexturingState(ENTITY_GLINT_TEXTURING)
+ .createCompositeState(false)
+ );
+- public static final Function CRUMBLING = Util.memoize(
++ private static final Function CRUMBLING = Util.memoize(
+ p_286174_ -> {
+ RenderStateShard.TextureStateShard renderstateshard$texturestateshard = new RenderStateShard.TextureStateShard(p_286174_, false, false);
+ return create(
+@@ -391,7 +_,7 @@
+ );
+ }
+ );
+- public static final Function TEXT = Util.memoize(
++ private static final Function TEXT = Util.memoize(
+ p_307114_ -> create(
+ "text",
+ DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP,
+@@ -407,7 +_,7 @@
+ .createCompositeState(false)
+ )
+ );
+- public static final RenderType TEXT_BACKGROUND = create(
++ private static final RenderType TEXT_BACKGROUND = create(
+ "text_background",
+ DefaultVertexFormat.POSITION_COLOR_LIGHTMAP,
+ VertexFormat.Mode.QUADS,
+@@ -421,7 +_,7 @@
+ .setLightmapState(LIGHTMAP)
+ .createCompositeState(false)
+ );
+- public static final Function TEXT_INTENSITY = Util.memoize(
++ private static final Function TEXT_INTENSITY = Util.memoize(
+ p_307113_ -> create(
+ "text_intensity",
+ DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP,
+@@ -437,7 +_,7 @@
+ .createCompositeState(false)
+ )
+ );
+- public static final Function TEXT_POLYGON_OFFSET = Util.memoize(
++ private static final Function TEXT_POLYGON_OFFSET = Util.memoize(
+ p_286152_ -> create(
+ "text_polygon_offset",
+ DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP,
+@@ -454,7 +_,7 @@
+ .createCompositeState(false)
+ )
+ );
+- public static final Function TEXT_INTENSITY_POLYGON_OFFSET = Util.memoize(
++ private static final Function TEXT_INTENSITY_POLYGON_OFFSET = Util.memoize(
+ p_286175_ -> create(
+ "text_intensity_polygon_offset",
+ DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP,
+@@ -471,7 +_,7 @@
+ .createCompositeState(false)
+ )
+ );
+- public static final Function TEXT_SEE_THROUGH = Util.memoize(
++ private static final Function TEXT_SEE_THROUGH = Util.memoize(
+ p_286158_ -> create(
+ "text_see_through",
+ DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP,
+@@ -489,7 +_,7 @@
+ .createCompositeState(false)
+ )
+ );
+- public static final RenderType TEXT_BACKGROUND_SEE_THROUGH = create(
++ private static final RenderType TEXT_BACKGROUND_SEE_THROUGH = create(
+ "text_background_see_through",
+ DefaultVertexFormat.POSITION_COLOR_LIGHTMAP,
+ VertexFormat.Mode.QUADS,
+@@ -505,7 +_,7 @@
+ .setWriteMaskState(COLOR_WRITE)
+ .createCompositeState(false)
+ );
+- public static final Function TEXT_INTENSITY_SEE_THROUGH = Util.memoize(
++ private static final Function TEXT_INTENSITY_SEE_THROUGH = Util.memoize(
+ p_286168_ -> create(
+ "text_intensity_see_through",
+ DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP,
+@@ -523,7 +_,7 @@
+ .createCompositeState(false)
+ )
+ );
+- public static final RenderType LIGHTNING = create(
++ private static final RenderType LIGHTNING = create(
+ "lightning",
+ DefaultVertexFormat.POSITION_COLOR,
+ VertexFormat.Mode.QUADS,
+@@ -537,7 +_,7 @@
+ .setOutputState(WEATHER_TARGET)
+ .createCompositeState(false)
+ );
+- public static final RenderType DRAGON_RAYS = create(
++ private static final RenderType DRAGON_RAYS = create(
+ "dragon_rays",
+ DefaultVertexFormat.POSITION_COLOR,
+ VertexFormat.Mode.TRIANGLES,
+@@ -550,7 +_,7 @@
+ .setTransparencyState(LIGHTNING_TRANSPARENCY)
+ .createCompositeState(false)
+ );
+- public static final RenderType DRAGON_RAYS_DEPTH = create(
++ private static final RenderType DRAGON_RAYS_DEPTH = create(
+ "dragon_rays_depth",
+ DefaultVertexFormat.POSITION,
+ VertexFormat.Mode.TRIANGLES,
+@@ -559,8 +_,8 @@
+ false,
+ RenderType.CompositeState.builder().setShaderState(RenderStateShard.POSITION_SHADER).setWriteMaskState(DEPTH_WRITE).createCompositeState(false)
+ );
+- public static final RenderType TRIPWIRE = create("tripwire", DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 1536, true, true, tripwireState());
+- public static final RenderType END_PORTAL = create(
++ private static final RenderType TRIPWIRE = create("tripwire", DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 1536, true, true, tripwireState());
++ private static final RenderType END_PORTAL = create(
+ "end_portal",
+ DefaultVertexFormat.POSITION,
+ VertexFormat.Mode.QUADS,
+@@ -577,7 +_,7 @@
+ )
+ .createCompositeState(false)
+ );
+- public static final RenderType END_GATEWAY = create(
++ private static final RenderType END_GATEWAY = create(
+ "end_gateway",
+ DefaultVertexFormat.POSITION,
+ VertexFormat.Mode.QUADS,
+@@ -594,8 +_,8 @@
+ )
+ .createCompositeState(false)
+ );
+- public static final RenderType CLOUDS = createClouds(false);
+- public static final RenderType CLOUDS_DEPTH_ONLY = createClouds(true);
++ private static final RenderType CLOUDS = createClouds(false);
++ private static final RenderType CLOUDS_DEPTH_ONLY = createClouds(true);
+ public static final RenderType.CompositeRenderType LINES = create(
+ "lines",
+ DefaultVertexFormat.POSITION_COLOR_NORMAL,
+@@ -626,7 +_,7 @@
+ .setCullState(NO_CULL)
+ .createCompositeState(false)
+ );
+- public static final Function DEBUG_LINE_STRIP = Util.memoize(
++ private static final Function DEBUG_LINE_STRIP = Util.memoize(
+ p_286162_ -> create(
+ "debug_line_strip",
+ DefaultVertexFormat.POSITION_COLOR,
+@@ -640,7 +_,7 @@
+ .createCompositeState(false)
+ )
+ );
+- public static final RenderType.CompositeRenderType DEBUG_FILLED_BOX = create(
++ private static final RenderType.CompositeRenderType DEBUG_FILLED_BOX = create(
+ "debug_filled_box",
+ DefaultVertexFormat.POSITION_COLOR,
+ VertexFormat.Mode.TRIANGLE_STRIP,
+@@ -653,7 +_,7 @@
+ .setTransparencyState(TRANSLUCENT_TRANSPARENCY)
+ .createCompositeState(false)
+ );
+- public static final RenderType.CompositeRenderType DEBUG_QUADS = create(
++ private static final RenderType.CompositeRenderType DEBUG_QUADS = create(
+ "debug_quads",
+ DefaultVertexFormat.POSITION_COLOR,
+ VertexFormat.Mode.QUADS,
+@@ -666,7 +_,7 @@
+ .setCullState(NO_CULL)
+ .createCompositeState(false)
+ );
+- public static final RenderType.CompositeRenderType DEBUG_STRUCTURE_QUADS = create(
++ private static final RenderType.CompositeRenderType DEBUG_STRUCTURE_QUADS = create(
+ "debug_structure_quads",
+ DefaultVertexFormat.POSITION_COLOR,
+ VertexFormat.Mode.QUADS,
+@@ -681,7 +_,7 @@
+ .setWriteMaskState(COLOR_WRITE)
+ .createCompositeState(false)
+ );
+- public static final RenderType.CompositeRenderType DEBUG_SECTION_QUADS = create(
++ private static final RenderType.CompositeRenderType DEBUG_SECTION_QUADS = create(
+ "debug_section_quads",
+ DefaultVertexFormat.POSITION_COLOR,
+ VertexFormat.Mode.QUADS,
+@@ -695,7 +_,7 @@
+ .setCullState(CULL)
+ .createCompositeState(false)
+ );
+- public static final RenderType.CompositeRenderType GUI = create(
++ private static final RenderType.CompositeRenderType GUI = create(
+ "gui",
+ DefaultVertexFormat.POSITION_COLOR,
+ VertexFormat.Mode.QUADS,
+@@ -706,7 +_,7 @@
+ .setDepthTestState(LEQUAL_DEPTH_TEST)
+ .createCompositeState(false)
+ );
+- public static final RenderType.CompositeRenderType GUI_OVERLAY = create(
++ private static final RenderType.CompositeRenderType GUI_OVERLAY = create(
+ "gui_overlay",
+ DefaultVertexFormat.POSITION_COLOR,
+ VertexFormat.Mode.QUADS,
+@@ -718,7 +_,7 @@
+ .setWriteMaskState(COLOR_WRITE)
+ .createCompositeState(false)
+ );
+- public static final RenderType.CompositeRenderType GUI_TEXT_HIGHLIGHT = create(
++ private static final RenderType.CompositeRenderType GUI_TEXT_HIGHLIGHT = create(
+ "gui_text_highlight",
+ DefaultVertexFormat.POSITION_COLOR,
+ VertexFormat.Mode.QUADS,
+@@ -730,7 +_,7 @@
+ .setColorLogicState(OR_REVERSE_COLOR_LOGIC)
+ .createCompositeState(false)
+ );
+- public static final RenderType.CompositeRenderType GUI_GHOST_RECIPE_OVERLAY = create(
++ private static final RenderType.CompositeRenderType GUI_GHOST_RECIPE_OVERLAY = create(
+ "gui_ghost_recipe_overlay",
+ DefaultVertexFormat.POSITION_COLOR,
+ VertexFormat.Mode.QUADS,
+@@ -742,12 +_,12 @@
+ .setWriteMaskState(COLOR_WRITE)
+ .createCompositeState(false)
+ );
+- public static final ImmutableList CHUNK_BUFFER_LAYERS = ImmutableList.of(solid(), cutoutMipped(), cutout(), translucent(), tripwire());
+- public final VertexFormat format;
+- public final VertexFormat.Mode mode;
+- public final int bufferSize;
+- public final boolean affectsCrumbling;
+- public final boolean sortOnUpload;
++ private static final ImmutableList CHUNK_BUFFER_LAYERS = ImmutableList.of(solid(), cutoutMipped(), cutout(), translucent(), tripwire());
++ private final VertexFormat format;
++ private final VertexFormat.Mode mode;
++ private final int bufferSize;
++ private final boolean affectsCrumbling;
++ private final boolean sortOnUpload;
+
+ public static RenderType solid() {
+ return SOLID;
@@ -968,7 +_,7 @@
}
@@ -42,6 +523,24 @@
}
public static RenderType lightning() {
+@@ -1122,7 +_,7 @@
+ this.sortOnUpload = p_173183_;
+ }
+
+- public static RenderType.CompositeRenderType create(
++ static RenderType.CompositeRenderType create(
+ String p_173210_, VertexFormat p_173211_, VertexFormat.Mode p_173212_, int p_173213_, RenderType.CompositeState p_173214_
+ ) {
+ return create(p_173210_, p_173211_, p_173212_, p_173213_, false, false, p_173214_);
+@@ -1438,7 +_,7 @@
+ }
+
+ @OnlyIn(Dist.CLIENT)
+- public static enum OutlineProperty {
++ static enum OutlineProperty {
+ NONE("none"),
+ IS_OUTLINE("is_outline"),
+ AFFECTS_OUTLINE("affects_outline");
@@ -1454,4 +_,17 @@
return this.name;
}
diff --git a/patches/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java.patch b/patches/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java.patch
index 1b6543d310..26cdd60b6e 100644
--- a/patches/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java.patch
+++ b/patches/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java.patch
@@ -13,7 +13,7 @@
int j = armormaterial$layer.dyeable() ? i : -1;
- this.renderModel(p_117119_, p_117120_, p_117123_, p_117124_, j, armormaterial$layer.texture(flag));
+ var texture = net.neoforged.neoforge.client.ClientHooks.getArmorTexture(p_117121_, itemstack, armormaterial$layer, flag, p_117122_);
-+ this.renderModel(p_117119_, p_117120_, p_117123_, model, j, texture);
++ this.renderModel(p_117119_, p_117120_, p_117123_, p_117124_, j, texture);
}
ArmorTrim armortrim = itemstack.get(DataComponents.TRIM);
diff --git a/patches/net/minecraft/client/sounds/MusicManager.java.patch b/patches/net/minecraft/client/sounds/MusicManager.java.patch
index 283914311d..bd458eb040 100644
--- a/patches/net/minecraft/client/sounds/MusicManager.java.patch
+++ b/patches/net/minecraft/client/sounds/MusicManager.java.patch
@@ -1,43 +1,32 @@
--- a/net/minecraft/client/sounds/MusicManager.java
+++ b/net/minecraft/client/sounds/MusicManager.java
-@@ -24,22 +_,28 @@
+@@ -24,7 +_,12 @@
}
public void tick() {
- Music music = this.minecraft.getSituationalMusic();
+ Music music = net.neoforged.neoforge.client.ClientHooks.selectMusic(this.minecraft.getSituationalMusic(), this.currentMusic);
++ if (music == null && this.currentMusic != null) {
++ this.stopPlaying();
++ this.nextSongDelay = 0;
++ return;
++ }
if (this.currentMusic != null) {
-- if (!music.getEvent().value().getLocation().equals(this.currentMusic.getLocation()) && music.replaceCurrentMusic()) {
-- this.minecraft.getSoundManager().stop(this.currentMusic);
-- this.nextSongDelay = Mth.nextInt(this.random, 0, music.getMinDelay() / 2);
-- }
-+ if (music == null) {
-+ this.stopPlaying();
-+ this.nextSongDelay = 0;
-+ } else {
-+ if (!music.getEvent().value().getLocation().equals(this.currentMusic.getLocation()) && music.replaceCurrentMusic()) {
-+ this.minecraft.getSoundManager().stop(this.currentMusic);
-+ this.nextSongDelay = Mth.nextInt(this.random, 0, music.getMinDelay() / 2);
-+ }
-
-- if (!this.minecraft.getSoundManager().isActive(this.currentMusic)) {
-- this.currentMusic = null;
-- this.nextSongDelay = Math.min(this.nextSongDelay, Mth.nextInt(this.random, music.getMinDelay(), music.getMaxDelay()));
-+ if (!this.minecraft.getSoundManager().isActive(this.currentMusic)) {
-+ this.currentMusic = null;
-+ this.nextSongDelay = Math.min(this.nextSongDelay, Mth.nextInt(this.random, music.getMinDelay(), music.getMaxDelay()));
-+ }
+ if (!music.getEvent().value().getLocation().equals(this.currentMusic.getLocation()) && music.replaceCurrentMusic()) {
+ this.minecraft.getSoundManager().stop(this.currentMusic);
+@@ -37,10 +_,15 @@
}
}
--
-- this.nextSongDelay = Math.min(this.nextSongDelay, music.getMaxDelay());
-- if (this.currentMusic == null && this.nextSongDelay-- <= 0) {
-- this.startPlaying(music);
-+ if (music != null) {
-+ this.nextSongDelay = Math.min(this.nextSongDelay, music.getMaxDelay());
-+ if (this.currentMusic == null && this.nextSongDelay-- <= 0) {
-+ this.startPlaying(music);
-+ }
+
++ if (music == null) {
++ return;
++ }
++
+ this.nextSongDelay = Math.min(this.nextSongDelay, music.getMaxDelay());
+ if (this.currentMusic == null && this.nextSongDelay-- <= 0) {
+ this.startPlaying(music);
}
++
}
+ public void startPlaying(Music p_120185_) {
From 6310a7082837ec67b7ede8522ff276f5b059d9c6 Mon Sep 17 00:00:00 2001
From: Zepalesque <60141811+Zepalesque@users.noreply.github.com>
Date: Mon, 17 Jun 2024 21:04:18 -0400
Subject: [PATCH 10/15] fix: remove unintentional patch issues from merge
---
.../renderer/RenderStateShard.java.patch | 433 ---------------
.../client/renderer/RenderType.java.patch | 499 ------------------
.../layers/HumanoidArmorLayer.java.patch | 2 +-
...ConfigurationPacketListenerImpl.java.patch | 6 +-
.../minecraft/world/item/ItemStack.java.patch | 22 +-
5 files changed, 22 insertions(+), 940 deletions(-)
delete mode 100644 patches/net/minecraft/client/renderer/RenderStateShard.java.patch
diff --git a/patches/net/minecraft/client/renderer/RenderStateShard.java.patch b/patches/net/minecraft/client/renderer/RenderStateShard.java.patch
deleted file mode 100644
index 5e398d60b5..0000000000
--- a/patches/net/minecraft/client/renderer/RenderStateShard.java.patch
+++ /dev/null
@@ -1,433 +0,0 @@
---- a/net/minecraft/client/renderer/RenderStateShard.java
-+++ b/net/minecraft/client/renderer/RenderStateShard.java
-@@ -20,16 +_,16 @@
-
- @OnlyIn(Dist.CLIENT)
- public abstract class RenderStateShard {
-- public static final float VIEW_SCALE_Z_EPSILON = 0.99975586F;
-+ private static final float VIEW_SCALE_Z_EPSILON = 0.99975586F;
- public static final double MAX_ENCHANTMENT_GLINT_SPEED_MILLIS = 8.0;
-- public final String name;
-- public final Runnable setupState;
-- public final Runnable clearState;
-- public static final RenderStateShard.TransparencyStateShard NO_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
-+ protected final String name;
-+ protected Runnable setupState;
-+ private final Runnable clearState;
-+ protected static final RenderStateShard.TransparencyStateShard NO_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
- "no_transparency", () -> RenderSystem.disableBlend(), () -> {
- }
- );
-- public static final RenderStateShard.TransparencyStateShard ADDITIVE_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
-+ protected static final RenderStateShard.TransparencyStateShard ADDITIVE_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
- "additive_transparency", () -> {
- RenderSystem.enableBlend();
- RenderSystem.blendFunc(GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ONE);
-@@ -38,7 +_,7 @@
- RenderSystem.defaultBlendFunc();
- }
- );
-- public static final RenderStateShard.TransparencyStateShard LIGHTNING_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
-+ protected static final RenderStateShard.TransparencyStateShard LIGHTNING_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
- "lightning_transparency", () -> {
- RenderSystem.enableBlend();
- RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE);
-@@ -47,7 +_,7 @@
- RenderSystem.defaultBlendFunc();
- }
- );
-- public static final RenderStateShard.TransparencyStateShard GLINT_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
-+ protected static final RenderStateShard.TransparencyStateShard GLINT_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
- "glint_transparency",
- () -> {
- RenderSystem.enableBlend();
-@@ -60,7 +_,7 @@
- RenderSystem.defaultBlendFunc();
- }
- );
-- public static final RenderStateShard.TransparencyStateShard CRUMBLING_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
-+ protected static final RenderStateShard.TransparencyStateShard CRUMBLING_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
- "crumbling_transparency",
- () -> {
- RenderSystem.enableBlend();
-@@ -73,7 +_,7 @@
- RenderSystem.defaultBlendFunc();
- }
- );
-- public static final RenderStateShard.TransparencyStateShard TRANSLUCENT_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
-+ protected static final RenderStateShard.TransparencyStateShard TRANSLUCENT_TRANSPARENCY = new RenderStateShard.TransparencyStateShard(
- "translucent_transparency",
- () -> {
- RenderSystem.enableBlend();
-@@ -89,189 +_,189 @@
- RenderSystem.defaultBlendFunc();
- }
- );
-- public static final RenderStateShard.ShaderStateShard NO_SHADER = new RenderStateShard.ShaderStateShard();
-- public static final RenderStateShard.ShaderStateShard POSITION_COLOR_LIGHTMAP_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard NO_SHADER = new RenderStateShard.ShaderStateShard();
-+ protected static final RenderStateShard.ShaderStateShard POSITION_COLOR_LIGHTMAP_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getPositionColorLightmapShader
- );
-- public static final RenderStateShard.ShaderStateShard POSITION_SHADER = new RenderStateShard.ShaderStateShard(GameRenderer::getPositionShader);
-- public static final RenderStateShard.ShaderStateShard POSITION_TEX_SHADER = new RenderStateShard.ShaderStateShard(GameRenderer::getPositionTexShader);
-- public static final RenderStateShard.ShaderStateShard POSITION_COLOR_TEX_LIGHTMAP_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard POSITION_SHADER = new RenderStateShard.ShaderStateShard(GameRenderer::getPositionShader);
-+ protected static final RenderStateShard.ShaderStateShard POSITION_TEX_SHADER = new RenderStateShard.ShaderStateShard(GameRenderer::getPositionTexShader);
-+ protected static final RenderStateShard.ShaderStateShard POSITION_COLOR_TEX_LIGHTMAP_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getPositionColorTexLightmapShader
- );
-- public static final RenderStateShard.ShaderStateShard POSITION_COLOR_SHADER = new RenderStateShard.ShaderStateShard(GameRenderer::getPositionColorShader);
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_SOLID_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard POSITION_COLOR_SHADER = new RenderStateShard.ShaderStateShard(GameRenderer::getPositionColorShader);
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_SOLID_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeSolidShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_CUTOUT_MIPPED_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_CUTOUT_MIPPED_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeCutoutMippedShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_CUTOUT_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_CUTOUT_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeCutoutShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_TRANSLUCENT_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_TRANSLUCENT_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeTranslucentShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_TRANSLUCENT_MOVING_BLOCK_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_TRANSLUCENT_MOVING_BLOCK_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeTranslucentMovingBlockShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ARMOR_CUTOUT_NO_CULL_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ARMOR_CUTOUT_NO_CULL_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeArmorCutoutNoCullShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_SOLID_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_SOLID_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeEntitySolidShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_CUTOUT_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_CUTOUT_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeEntityCutoutShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_CUTOUT_NO_CULL_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_CUTOUT_NO_CULL_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeEntityCutoutNoCullShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_CUTOUT_NO_CULL_Z_OFFSET_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_CUTOUT_NO_CULL_Z_OFFSET_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeEntityCutoutNoCullZOffsetShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ITEM_ENTITY_TRANSLUCENT_CULL_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ITEM_ENTITY_TRANSLUCENT_CULL_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeItemEntityTranslucentCullShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_TRANSLUCENT_CULL_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_TRANSLUCENT_CULL_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeEntityTranslucentCullShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_TRANSLUCENT_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_TRANSLUCENT_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeEntityTranslucentShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_TRANSLUCENT_EMISSIVE_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_TRANSLUCENT_EMISSIVE_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeEntityTranslucentEmissiveShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_SMOOTH_CUTOUT_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_SMOOTH_CUTOUT_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeEntitySmoothCutoutShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_BEACON_BEAM_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_BEACON_BEAM_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeBeaconBeamShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_DECAL_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_DECAL_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeEntityDecalShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_NO_OUTLINE_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_NO_OUTLINE_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeEntityNoOutlineShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_SHADOW_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_SHADOW_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeEntityShadowShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_ALPHA_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_ALPHA_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeEntityAlphaShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_EYES_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_EYES_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeEyesShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENERGY_SWIRL_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENERGY_SWIRL_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeEnergySwirlShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_LEASH_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_LEASH_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeLeashShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_WATER_MASK_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_WATER_MASK_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeWaterMaskShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_OUTLINE_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_OUTLINE_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeOutlineShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ARMOR_ENTITY_GLINT_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ARMOR_ENTITY_GLINT_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeArmorEntityGlintShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_GLINT_TRANSLUCENT_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_GLINT_TRANSLUCENT_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeGlintTranslucentShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_GLINT_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_GLINT_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeGlintShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_GLINT_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_GLINT_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeEntityGlintShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_GLINT_DIRECT_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_ENTITY_GLINT_DIRECT_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeEntityGlintDirectShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_CRUMBLING_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_CRUMBLING_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeCrumblingShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeTextShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_BACKGROUND_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_BACKGROUND_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeTextBackgroundShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_INTENSITY_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_INTENSITY_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeTextIntensityShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_SEE_THROUGH_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_SEE_THROUGH_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeTextSeeThroughShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_BACKGROUND_SEE_THROUGH_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_BACKGROUND_SEE_THROUGH_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeTextBackgroundSeeThroughShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_INTENSITY_SEE_THROUGH_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_TEXT_INTENSITY_SEE_THROUGH_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeTextIntensitySeeThroughShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_LIGHTNING_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_LIGHTNING_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeLightningShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_TRIPWIRE_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_TRIPWIRE_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeTripwireShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_END_PORTAL_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_END_PORTAL_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeEndPortalShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_END_GATEWAY_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_END_GATEWAY_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeEndGatewayShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_CLOUDS_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_CLOUDS_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeCloudsShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_LINES_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_LINES_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeLinesShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_GUI_SHADER = new RenderStateShard.ShaderStateShard(GameRenderer::getRendertypeGuiShader);
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_GUI_OVERLAY_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_GUI_SHADER = new RenderStateShard.ShaderStateShard(GameRenderer::getRendertypeGuiShader);
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_GUI_OVERLAY_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeGuiOverlayShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_GUI_TEXT_HIGHLIGHT_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_GUI_TEXT_HIGHLIGHT_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeGuiTextHighlightShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_GUI_GHOST_RECIPE_OVERLAY_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_GUI_GHOST_RECIPE_OVERLAY_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeGuiGhostRecipeOverlayShader
- );
-- public static final RenderStateShard.ShaderStateShard RENDERTYPE_BREEZE_WIND_SHADER = new RenderStateShard.ShaderStateShard(
-+ protected static final RenderStateShard.ShaderStateShard RENDERTYPE_BREEZE_WIND_SHADER = new RenderStateShard.ShaderStateShard(
- GameRenderer::getRendertypeBreezeWindShader
- );
-- public static final RenderStateShard.TextureStateShard BLOCK_SHEET_MIPPED = new RenderStateShard.TextureStateShard(
-+ protected static final RenderStateShard.TextureStateShard BLOCK_SHEET_MIPPED = new RenderStateShard.TextureStateShard(
- TextureAtlas.LOCATION_BLOCKS, false, true
- );
-- public static final RenderStateShard.TextureStateShard BLOCK_SHEET = new RenderStateShard.TextureStateShard(TextureAtlas.LOCATION_BLOCKS, false, false);
-- public static final RenderStateShard.EmptyTextureStateShard NO_TEXTURE = new RenderStateShard.EmptyTextureStateShard();
-- public static final RenderStateShard.TexturingStateShard DEFAULT_TEXTURING = new RenderStateShard.TexturingStateShard("default_texturing", () -> {
-+ protected static final RenderStateShard.TextureStateShard BLOCK_SHEET = new RenderStateShard.TextureStateShard(TextureAtlas.LOCATION_BLOCKS, false, false);
-+ protected static final RenderStateShard.EmptyTextureStateShard NO_TEXTURE = new RenderStateShard.EmptyTextureStateShard();
-+ protected static final RenderStateShard.TexturingStateShard DEFAULT_TEXTURING = new RenderStateShard.TexturingStateShard("default_texturing", () -> {
- }, () -> {
- });
-- public static final RenderStateShard.TexturingStateShard GLINT_TEXTURING = new RenderStateShard.TexturingStateShard(
-+ protected static final RenderStateShard.TexturingStateShard GLINT_TEXTURING = new RenderStateShard.TexturingStateShard(
- "glint_texturing", () -> setupGlintTexturing(8.0F), () -> RenderSystem.resetTextureMatrix()
- );
-- public static final RenderStateShard.TexturingStateShard ENTITY_GLINT_TEXTURING = new RenderStateShard.TexturingStateShard(
-+ protected static final RenderStateShard.TexturingStateShard ENTITY_GLINT_TEXTURING = new RenderStateShard.TexturingStateShard(
- "entity_glint_texturing", () -> setupGlintTexturing(0.16F), () -> RenderSystem.resetTextureMatrix()
- );
-- public static final RenderStateShard.LightmapStateShard LIGHTMAP = new RenderStateShard.LightmapStateShard(true);
-- public static final RenderStateShard.LightmapStateShard NO_LIGHTMAP = new RenderStateShard.LightmapStateShard(false);
-- public static final RenderStateShard.OverlayStateShard OVERLAY = new RenderStateShard.OverlayStateShard(true);
-- public static final RenderStateShard.OverlayStateShard NO_OVERLAY = new RenderStateShard.OverlayStateShard(false);
-- public static final RenderStateShard.CullStateShard CULL = new RenderStateShard.CullStateShard(true);
-- public static final RenderStateShard.CullStateShard NO_CULL = new RenderStateShard.CullStateShard(false);
-- public static final RenderStateShard.DepthTestStateShard NO_DEPTH_TEST = new RenderStateShard.DepthTestStateShard("always", 519);
-- public static final RenderStateShard.DepthTestStateShard EQUAL_DEPTH_TEST = new RenderStateShard.DepthTestStateShard("==", 514);
-- public static final RenderStateShard.DepthTestStateShard LEQUAL_DEPTH_TEST = new RenderStateShard.DepthTestStateShard("<=", 515);
-- public static final RenderStateShard.DepthTestStateShard GREATER_DEPTH_TEST = new RenderStateShard.DepthTestStateShard(">", 516);
-- public static final RenderStateShard.WriteMaskStateShard COLOR_DEPTH_WRITE = new RenderStateShard.WriteMaskStateShard(true, true);
-- public static final RenderStateShard.WriteMaskStateShard COLOR_WRITE = new RenderStateShard.WriteMaskStateShard(true, false);
-- public static final RenderStateShard.WriteMaskStateShard DEPTH_WRITE = new RenderStateShard.WriteMaskStateShard(false, true);
-- public static final RenderStateShard.LayeringStateShard NO_LAYERING = new RenderStateShard.LayeringStateShard("no_layering", () -> {
-+ protected static final RenderStateShard.LightmapStateShard LIGHTMAP = new RenderStateShard.LightmapStateShard(true);
-+ protected static final RenderStateShard.LightmapStateShard NO_LIGHTMAP = new RenderStateShard.LightmapStateShard(false);
-+ protected static final RenderStateShard.OverlayStateShard OVERLAY = new RenderStateShard.OverlayStateShard(true);
-+ protected static final RenderStateShard.OverlayStateShard NO_OVERLAY = new RenderStateShard.OverlayStateShard(false);
-+ protected static final RenderStateShard.CullStateShard CULL = new RenderStateShard.CullStateShard(true);
-+ protected static final RenderStateShard.CullStateShard NO_CULL = new RenderStateShard.CullStateShard(false);
-+ protected static final RenderStateShard.DepthTestStateShard NO_DEPTH_TEST = new RenderStateShard.DepthTestStateShard("always", 519);
-+ protected static final RenderStateShard.DepthTestStateShard EQUAL_DEPTH_TEST = new RenderStateShard.DepthTestStateShard("==", 514);
-+ protected static final RenderStateShard.DepthTestStateShard LEQUAL_DEPTH_TEST = new RenderStateShard.DepthTestStateShard("<=", 515);
-+ protected static final RenderStateShard.DepthTestStateShard GREATER_DEPTH_TEST = new RenderStateShard.DepthTestStateShard(">", 516);
-+ protected static final RenderStateShard.WriteMaskStateShard COLOR_DEPTH_WRITE = new RenderStateShard.WriteMaskStateShard(true, true);
-+ protected static final RenderStateShard.WriteMaskStateShard COLOR_WRITE = new RenderStateShard.WriteMaskStateShard(true, false);
-+ protected static final RenderStateShard.WriteMaskStateShard DEPTH_WRITE = new RenderStateShard.WriteMaskStateShard(false, true);
-+ protected static final RenderStateShard.LayeringStateShard NO_LAYERING = new RenderStateShard.LayeringStateShard("no_layering", () -> {
- }, () -> {
- });
-- public static final RenderStateShard.LayeringStateShard POLYGON_OFFSET_LAYERING = new RenderStateShard.LayeringStateShard(
-+ protected static final RenderStateShard.LayeringStateShard POLYGON_OFFSET_LAYERING = new RenderStateShard.LayeringStateShard(
- "polygon_offset_layering", () -> {
- RenderSystem.polygonOffset(-1.0F, -10.0F);
- RenderSystem.enablePolygonOffset();
-@@ -280,7 +_,7 @@
- RenderSystem.disablePolygonOffset();
- }
- );
-- public static final RenderStateShard.LayeringStateShard VIEW_OFFSET_Z_LAYERING = new RenderStateShard.LayeringStateShard(
-+ protected static final RenderStateShard.LayeringStateShard VIEW_OFFSET_Z_LAYERING = new RenderStateShard.LayeringStateShard(
- "view_offset_z_layering", () -> {
- Matrix4fStack matrix4fstack = RenderSystem.getModelViewStack();
- matrix4fstack.pushMatrix();
-@@ -292,15 +_,15 @@
- RenderSystem.applyModelViewMatrix();
- }
- );
-- public static final RenderStateShard.OutputStateShard MAIN_TARGET = new RenderStateShard.OutputStateShard("main_target", () -> {
-+ protected static final RenderStateShard.OutputStateShard MAIN_TARGET = new RenderStateShard.OutputStateShard("main_target", () -> {
- }, () -> {
- });
-- public static final RenderStateShard.OutputStateShard OUTLINE_TARGET = new RenderStateShard.OutputStateShard(
-+ protected static final RenderStateShard.OutputStateShard OUTLINE_TARGET = new RenderStateShard.OutputStateShard(
- "outline_target",
- () -> Minecraft.getInstance().levelRenderer.entityTarget().bindWrite(false),
- () -> Minecraft.getInstance().getMainRenderTarget().bindWrite(false)
- );
-- public static final RenderStateShard.OutputStateShard TRANSLUCENT_TARGET = new RenderStateShard.OutputStateShard("translucent_target", () -> {
-+ protected static final RenderStateShard.OutputStateShard TRANSLUCENT_TARGET = new RenderStateShard.OutputStateShard("translucent_target", () -> {
- if (Minecraft.useShaderTransparency()) {
- Minecraft.getInstance().levelRenderer.getTranslucentTarget().bindWrite(false);
- }
-@@ -309,7 +_,7 @@
- Minecraft.getInstance().getMainRenderTarget().bindWrite(false);
- }
- });
-- public static final RenderStateShard.OutputStateShard PARTICLES_TARGET = new RenderStateShard.OutputStateShard("particles_target", () -> {
-+ protected static final RenderStateShard.OutputStateShard PARTICLES_TARGET = new RenderStateShard.OutputStateShard("particles_target", () -> {
- if (Minecraft.useShaderTransparency()) {
- Minecraft.getInstance().levelRenderer.getParticlesTarget().bindWrite(false);
- }
-@@ -318,7 +_,7 @@
- Minecraft.getInstance().getMainRenderTarget().bindWrite(false);
- }
- });
-- public static final RenderStateShard.OutputStateShard WEATHER_TARGET = new RenderStateShard.OutputStateShard("weather_target", () -> {
-+ protected static final RenderStateShard.OutputStateShard WEATHER_TARGET = new RenderStateShard.OutputStateShard("weather_target", () -> {
- if (Minecraft.useShaderTransparency()) {
- Minecraft.getInstance().levelRenderer.getWeatherTarget().bindWrite(false);
- }
-@@ -327,7 +_,7 @@
- Minecraft.getInstance().getMainRenderTarget().bindWrite(false);
- }
- });
-- public static final RenderStateShard.OutputStateShard CLOUDS_TARGET = new RenderStateShard.OutputStateShard("clouds_target", () -> {
-+ protected static final RenderStateShard.OutputStateShard CLOUDS_TARGET = new RenderStateShard.OutputStateShard("clouds_target", () -> {
- if (Minecraft.useShaderTransparency()) {
- Minecraft.getInstance().levelRenderer.getCloudsTarget().bindWrite(false);
- }
-@@ -336,7 +_,7 @@
- Minecraft.getInstance().getMainRenderTarget().bindWrite(false);
- }
- });
-- public static final RenderStateShard.OutputStateShard ITEM_ENTITY_TARGET = new RenderStateShard.OutputStateShard("item_entity_target", () -> {
-+ protected static final RenderStateShard.OutputStateShard ITEM_ENTITY_TARGET = new RenderStateShard.OutputStateShard("item_entity_target", () -> {
- if (Minecraft.useShaderTransparency()) {
- Minecraft.getInstance().levelRenderer.getItemEntityTarget().bindWrite(false);
- }
-@@ -345,12 +_,12 @@
- Minecraft.getInstance().getMainRenderTarget().bindWrite(false);
- }
- });
-- public static final RenderStateShard.LineStateShard DEFAULT_LINE = new RenderStateShard.LineStateShard(OptionalDouble.of(1.0));
-- public static final RenderStateShard.ColorLogicStateShard NO_COLOR_LOGIC = new RenderStateShard.ColorLogicStateShard(
-+ protected static final RenderStateShard.LineStateShard DEFAULT_LINE = new RenderStateShard.LineStateShard(OptionalDouble.of(1.0));
-+ protected static final RenderStateShard.ColorLogicStateShard NO_COLOR_LOGIC = new RenderStateShard.ColorLogicStateShard(
- "no_color_logic", () -> RenderSystem.disableColorLogicOp(), () -> {
- }
- );
-- public static final RenderStateShard.ColorLogicStateShard OR_REVERSE_COLOR_LOGIC = new RenderStateShard.ColorLogicStateShard("or_reverse", () -> {
-+ protected static final RenderStateShard.ColorLogicStateShard OR_REVERSE_COLOR_LOGIC = new RenderStateShard.ColorLogicStateShard("or_reverse", () -> {
- RenderSystem.enableColorLogicOp();
- RenderSystem.logicOp(GlStateManager.LogicOp.OR_REVERSE);
- }, () -> RenderSystem.disableColorLogicOp());
-@@ -374,7 +_,7 @@
- return this.name;
- }
-
-- public static void setupGlintTexturing(float p_110187_) {
-+ private static void setupGlintTexturing(float p_110187_) {
- long i = (long)((double)Util.getMillis() * Minecraft.getInstance().options.glintSpeed().get() * 8.0);
- float f = (float)(i % 110000L) / 110000.0F;
- float f1 = (float)(i % 30000L) / 30000.0F;
-@@ -399,7 +_,7 @@
- }
-
- @OnlyIn(Dist.CLIENT)
-- public static class ColorLogicStateShard extends RenderStateShard {
-+ protected static class ColorLogicStateShard extends RenderStateShard {
- public ColorLogicStateShard(String p_286784_, Runnable p_286884_, Runnable p_286375_) {
- super(p_286784_, p_286884_, p_286375_);
- }
-@@ -485,7 +_,7 @@
- }
-
- @OnlyIn(Dist.CLIENT)
-- public static class LineStateShard extends RenderStateShard {
-+ protected static class LineStateShard extends RenderStateShard {
- private final OptionalDouble width;
-
- public LineStateShard(OptionalDouble p_110278_) {
diff --git a/patches/net/minecraft/client/renderer/RenderType.java.patch b/patches/net/minecraft/client/renderer/RenderType.java.patch
index d3da0b8ccb..c91bd86985 100644
--- a/patches/net/minecraft/client/renderer/RenderType.java.patch
+++ b/patches/net/minecraft/client/renderer/RenderType.java.patch
@@ -1,486 +1,5 @@
--- a/net/minecraft/client/renderer/RenderType.java
+++ b/net/minecraft/client/renderer/RenderType.java
-@@ -19,11 +_,11 @@
-
- @OnlyIn(Dist.CLIENT)
- public abstract class RenderType extends RenderStateShard {
-- public static final int MEGABYTE = 1048576;
-+ private static final int MEGABYTE = 1048576;
- public static final int BIG_BUFFER_SIZE = 4194304;
- public static final int SMALL_BUFFER_SIZE = 786432;
- public static final int TRANSIENT_BUFFER_SIZE = 1536;
-- public static final RenderType SOLID = create(
-+ private static final RenderType SOLID = create(
- "solid",
- DefaultVertexFormat.BLOCK,
- VertexFormat.Mode.QUADS,
-@@ -36,7 +_,7 @@
- .setTextureState(BLOCK_SHEET_MIPPED)
- .createCompositeState(true)
- );
-- public static final RenderType CUTOUT_MIPPED = create(
-+ private static final RenderType CUTOUT_MIPPED = create(
- "cutout_mipped",
- DefaultVertexFormat.BLOCK,
- VertexFormat.Mode.QUADS,
-@@ -49,7 +_,7 @@
- .setTextureState(BLOCK_SHEET_MIPPED)
- .createCompositeState(true)
- );
-- public static final RenderType CUTOUT = create(
-+ private static final RenderType CUTOUT = create(
- "cutout",
- DefaultVertexFormat.BLOCK,
- VertexFormat.Mode.QUADS,
-@@ -62,16 +_,16 @@
- .setTextureState(BLOCK_SHEET)
- .createCompositeState(true)
- );
-- public static final RenderType TRANSLUCENT = create(
-+ private static final RenderType TRANSLUCENT = create(
- "translucent", DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 786432, true, true, translucentState(RENDERTYPE_TRANSLUCENT_SHADER)
- );
-- public static final RenderType TRANSLUCENT_MOVING_BLOCK = create(
-+ private static final RenderType TRANSLUCENT_MOVING_BLOCK = create(
- "translucent_moving_block", DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 786432, false, true, translucentMovingBlockState()
- );
-- public static final Function ARMOR_CUTOUT_NO_CULL = Util.memoize(
-+ private static final Function ARMOR_CUTOUT_NO_CULL = Util.memoize(
- p_297924_ -> createArmorCutoutNoCull("armor_cutout_no_cull", p_297924_, false)
- );
-- public static final Function ENTITY_SOLID = Util.memoize(
-+ private static final Function ENTITY_SOLID = Util.memoize(
- p_286159_ -> {
- RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
- .setShaderState(RENDERTYPE_ENTITY_SOLID_SHADER)
-@@ -83,7 +_,7 @@
- return create("entity_solid", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, false, rendertype$compositestate);
- }
- );
-- public static final Function ENTITY_CUTOUT = Util.memoize(
-+ private static final Function ENTITY_CUTOUT = Util.memoize(
- p_286173_ -> {
- RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
- .setShaderState(RENDERTYPE_ENTITY_CUTOUT_SHADER)
-@@ -95,7 +_,7 @@
- return create("entity_cutout", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, false, rendertype$compositestate);
- }
- );
-- public static final BiFunction ENTITY_CUTOUT_NO_CULL = Util.memoize(
-+ private static final BiFunction ENTITY_CUTOUT_NO_CULL = Util.memoize(
- (p_286166_, p_286167_) -> {
- RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
- .setShaderState(RENDERTYPE_ENTITY_CUTOUT_NO_CULL_SHADER)
-@@ -108,7 +_,7 @@
- return create("entity_cutout_no_cull", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, false, rendertype$compositestate);
- }
- );
-- public static final BiFunction ENTITY_CUTOUT_NO_CULL_Z_OFFSET = Util.memoize(
-+ private static final BiFunction ENTITY_CUTOUT_NO_CULL_Z_OFFSET = Util.memoize(
- (p_286153_, p_286154_) -> {
- RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
- .setShaderState(RENDERTYPE_ENTITY_CUTOUT_NO_CULL_Z_OFFSET_SHADER)
-@@ -124,7 +_,7 @@
- );
- }
- );
-- public static final Function ITEM_ENTITY_TRANSLUCENT_CULL = Util.memoize(
-+ private static final Function ITEM_ENTITY_TRANSLUCENT_CULL = Util.memoize(
- p_286155_ -> {
- RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
- .setShaderState(RENDERTYPE_ITEM_ENTITY_TRANSLUCENT_CULL_SHADER)
-@@ -138,7 +_,7 @@
- return create("item_entity_translucent_cull", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, true, rendertype$compositestate);
- }
- );
-- public static final Function ENTITY_TRANSLUCENT_CULL = Util.memoize(
-+ private static final Function ENTITY_TRANSLUCENT_CULL = Util.memoize(
- p_286165_ -> {
- RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
- .setShaderState(RENDERTYPE_ENTITY_TRANSLUCENT_CULL_SHADER)
-@@ -150,7 +_,7 @@
- return create("entity_translucent_cull", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, true, rendertype$compositestate);
- }
- );
-- public static final BiFunction ENTITY_TRANSLUCENT = Util.memoize(
-+ private static final BiFunction ENTITY_TRANSLUCENT = Util.memoize(
- (p_286156_, p_286157_) -> {
- RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
- .setShaderState(RENDERTYPE_ENTITY_TRANSLUCENT_SHADER)
-@@ -163,7 +_,7 @@
- return create("entity_translucent", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, true, rendertype$compositestate);
- }
- );
-- public static final BiFunction ENTITY_TRANSLUCENT_EMISSIVE = Util.memoize(
-+ private static final BiFunction ENTITY_TRANSLUCENT_EMISSIVE = Util.memoize(
- (p_286163_, p_286164_) -> {
- RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
- .setShaderState(RENDERTYPE_ENTITY_TRANSLUCENT_EMISSIVE_SHADER)
-@@ -176,7 +_,7 @@
- return create("entity_translucent_emissive", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, true, true, rendertype$compositestate);
- }
- );
-- public static final Function ENTITY_SMOOTH_CUTOUT = Util.memoize(
-+ private static final Function ENTITY_SMOOTH_CUTOUT = Util.memoize(
- p_286169_ -> {
- RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
- .setShaderState(RENDERTYPE_ENTITY_SMOOTH_CUTOUT_SHADER)
-@@ -187,7 +_,7 @@
- return create("entity_smooth_cutout", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, rendertype$compositestate);
- }
- );
-- public static final BiFunction BEACON_BEAM = Util.memoize(
-+ private static final BiFunction BEACON_BEAM = Util.memoize(
- (p_234330_, p_234331_) -> {
- RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
- .setShaderState(RENDERTYPE_BEACON_BEAM_SHADER)
-@@ -198,7 +_,7 @@
- return create("beacon_beam", DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 1536, false, true, rendertype$compositestate);
- }
- );
-- public static final Function ENTITY_DECAL = Util.memoize(
-+ private static final Function ENTITY_DECAL = Util.memoize(
- p_286171_ -> {
- RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
- .setShaderState(RENDERTYPE_ENTITY_DECAL_SHADER)
-@@ -211,7 +_,7 @@
- return create("entity_decal", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, rendertype$compositestate);
- }
- );
-- public static final Function ENTITY_NO_OUTLINE = Util.memoize(
-+ private static final Function ENTITY_NO_OUTLINE = Util.memoize(
- p_286160_ -> {
- RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
- .setShaderState(RENDERTYPE_ENTITY_NO_OUTLINE_SHADER)
-@@ -225,7 +_,7 @@
- return create("entity_no_outline", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, false, true, rendertype$compositestate);
- }
- );
-- public static final Function ENTITY_SHADOW = Util.memoize(
-+ private static final Function ENTITY_SHADOW = Util.memoize(
- p_286151_ -> {
- RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
- .setShaderState(RENDERTYPE_ENTITY_SHADOW_SHADER)
-@@ -241,7 +_,7 @@
- return create("entity_shadow", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, false, false, rendertype$compositestate);
- }
- );
-- public static final Function DRAGON_EXPLOSION_ALPHA = Util.memoize(
-+ private static final Function DRAGON_EXPLOSION_ALPHA = Util.memoize(
- p_286150_ -> {
- RenderType.CompositeState rendertype$compositestate = RenderType.CompositeState.builder()
- .setShaderState(RENDERTYPE_ENTITY_ALPHA_SHADER)
-@@ -251,7 +_,7 @@
- return create("entity_alpha", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 1536, rendertype$compositestate);
- }
- );
-- public static final BiFunction EYES = Util.memoize(
-+ private static final BiFunction EYES = Util.memoize(
- (p_311464_, p_311465_) -> {
- RenderStateShard.TextureStateShard renderstateshard$texturestateshard = new RenderStateShard.TextureStateShard(p_311464_, false, false);
- return create(
-@@ -270,7 +_,7 @@
- );
- }
- );
-- public static final RenderType LEASH = create(
-+ private static final RenderType LEASH = create(
- "leash",
- DefaultVertexFormat.POSITION_COLOR_LIGHTMAP,
- VertexFormat.Mode.TRIANGLE_STRIP,
-@@ -282,7 +_,7 @@
- .setLightmapState(LIGHTMAP)
- .createCompositeState(false)
- );
-- public static final RenderType WATER_MASK = create(
-+ private static final RenderType WATER_MASK = create(
- "water_mask",
- DefaultVertexFormat.POSITION,
- VertexFormat.Mode.QUADS,
-@@ -293,7 +_,7 @@
- .setWriteMaskState(DEPTH_WRITE)
- .createCompositeState(false)
- );
-- public static final RenderType ARMOR_ENTITY_GLINT = create(
-+ private static final RenderType ARMOR_ENTITY_GLINT = create(
- "armor_entity_glint",
- DefaultVertexFormat.POSITION_TEX,
- VertexFormat.Mode.QUADS,
-@@ -309,7 +_,7 @@
- .setLayeringState(VIEW_OFFSET_Z_LAYERING)
- .createCompositeState(false)
- );
-- public static final RenderType GLINT_TRANSLUCENT = create(
-+ private static final RenderType GLINT_TRANSLUCENT = create(
- "glint_translucent",
- DefaultVertexFormat.POSITION_TEX,
- VertexFormat.Mode.QUADS,
-@@ -325,7 +_,7 @@
- .setOutputState(ITEM_ENTITY_TARGET)
- .createCompositeState(false)
- );
-- public static final RenderType GLINT = create(
-+ private static final RenderType GLINT = create(
- "glint",
- DefaultVertexFormat.POSITION_TEX,
- VertexFormat.Mode.QUADS,
-@@ -340,7 +_,7 @@
- .setTexturingState(GLINT_TEXTURING)
- .createCompositeState(false)
- );
-- public static final RenderType ENTITY_GLINT = create(
-+ private static final RenderType ENTITY_GLINT = create(
- "entity_glint",
- DefaultVertexFormat.POSITION_TEX,
- VertexFormat.Mode.QUADS,
-@@ -356,7 +_,7 @@
- .setTexturingState(ENTITY_GLINT_TEXTURING)
- .createCompositeState(false)
- );
-- public static final RenderType ENTITY_GLINT_DIRECT = create(
-+ private static final RenderType ENTITY_GLINT_DIRECT = create(
- "entity_glint_direct",
- DefaultVertexFormat.POSITION_TEX,
- VertexFormat.Mode.QUADS,
-@@ -371,7 +_,7 @@
- .setTexturingState(ENTITY_GLINT_TEXTURING)
- .createCompositeState(false)
- );
-- public static final Function CRUMBLING = Util.memoize(
-+ private static final Function CRUMBLING = Util.memoize(
- p_286174_ -> {
- RenderStateShard.TextureStateShard renderstateshard$texturestateshard = new RenderStateShard.TextureStateShard(p_286174_, false, false);
- return create(
-@@ -391,7 +_,7 @@
- );
- }
- );
-- public static final Function TEXT = Util.memoize(
-+ private static final Function TEXT = Util.memoize(
- p_307114_ -> create(
- "text",
- DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP,
-@@ -407,7 +_,7 @@
- .createCompositeState(false)
- )
- );
-- public static final RenderType TEXT_BACKGROUND = create(
-+ private static final RenderType TEXT_BACKGROUND = create(
- "text_background",
- DefaultVertexFormat.POSITION_COLOR_LIGHTMAP,
- VertexFormat.Mode.QUADS,
-@@ -421,7 +_,7 @@
- .setLightmapState(LIGHTMAP)
- .createCompositeState(false)
- );
-- public static final Function TEXT_INTENSITY = Util.memoize(
-+ private static final Function TEXT_INTENSITY = Util.memoize(
- p_307113_ -> create(
- "text_intensity",
- DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP,
-@@ -437,7 +_,7 @@
- .createCompositeState(false)
- )
- );
-- public static final Function TEXT_POLYGON_OFFSET = Util.memoize(
-+ private static final Function TEXT_POLYGON_OFFSET = Util.memoize(
- p_286152_ -> create(
- "text_polygon_offset",
- DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP,
-@@ -454,7 +_,7 @@
- .createCompositeState(false)
- )
- );
-- public static final Function TEXT_INTENSITY_POLYGON_OFFSET = Util.memoize(
-+ private static final Function TEXT_INTENSITY_POLYGON_OFFSET = Util.memoize(
- p_286175_ -> create(
- "text_intensity_polygon_offset",
- DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP,
-@@ -471,7 +_,7 @@
- .createCompositeState(false)
- )
- );
-- public static final Function TEXT_SEE_THROUGH = Util.memoize(
-+ private static final Function TEXT_SEE_THROUGH = Util.memoize(
- p_286158_ -> create(
- "text_see_through",
- DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP,
-@@ -489,7 +_,7 @@
- .createCompositeState(false)
- )
- );
-- public static final RenderType TEXT_BACKGROUND_SEE_THROUGH = create(
-+ private static final RenderType TEXT_BACKGROUND_SEE_THROUGH = create(
- "text_background_see_through",
- DefaultVertexFormat.POSITION_COLOR_LIGHTMAP,
- VertexFormat.Mode.QUADS,
-@@ -505,7 +_,7 @@
- .setWriteMaskState(COLOR_WRITE)
- .createCompositeState(false)
- );
-- public static final Function TEXT_INTENSITY_SEE_THROUGH = Util.memoize(
-+ private static final Function TEXT_INTENSITY_SEE_THROUGH = Util.memoize(
- p_286168_ -> create(
- "text_intensity_see_through",
- DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP,
-@@ -523,7 +_,7 @@
- .createCompositeState(false)
- )
- );
-- public static final RenderType LIGHTNING = create(
-+ private static final RenderType LIGHTNING = create(
- "lightning",
- DefaultVertexFormat.POSITION_COLOR,
- VertexFormat.Mode.QUADS,
-@@ -537,7 +_,7 @@
- .setOutputState(WEATHER_TARGET)
- .createCompositeState(false)
- );
-- public static final RenderType DRAGON_RAYS = create(
-+ private static final RenderType DRAGON_RAYS = create(
- "dragon_rays",
- DefaultVertexFormat.POSITION_COLOR,
- VertexFormat.Mode.TRIANGLES,
-@@ -550,7 +_,7 @@
- .setTransparencyState(LIGHTNING_TRANSPARENCY)
- .createCompositeState(false)
- );
-- public static final RenderType DRAGON_RAYS_DEPTH = create(
-+ private static final RenderType DRAGON_RAYS_DEPTH = create(
- "dragon_rays_depth",
- DefaultVertexFormat.POSITION,
- VertexFormat.Mode.TRIANGLES,
-@@ -559,8 +_,8 @@
- false,
- RenderType.CompositeState.builder().setShaderState(RenderStateShard.POSITION_SHADER).setWriteMaskState(DEPTH_WRITE).createCompositeState(false)
- );
-- public static final RenderType TRIPWIRE = create("tripwire", DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 1536, true, true, tripwireState());
-- public static final RenderType END_PORTAL = create(
-+ private static final RenderType TRIPWIRE = create("tripwire", DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 1536, true, true, tripwireState());
-+ private static final RenderType END_PORTAL = create(
- "end_portal",
- DefaultVertexFormat.POSITION,
- VertexFormat.Mode.QUADS,
-@@ -577,7 +_,7 @@
- )
- .createCompositeState(false)
- );
-- public static final RenderType END_GATEWAY = create(
-+ private static final RenderType END_GATEWAY = create(
- "end_gateway",
- DefaultVertexFormat.POSITION,
- VertexFormat.Mode.QUADS,
-@@ -594,8 +_,8 @@
- )
- .createCompositeState(false)
- );
-- public static final RenderType CLOUDS = createClouds(false);
-- public static final RenderType CLOUDS_DEPTH_ONLY = createClouds(true);
-+ private static final RenderType CLOUDS = createClouds(false);
-+ private static final RenderType CLOUDS_DEPTH_ONLY = createClouds(true);
- public static final RenderType.CompositeRenderType LINES = create(
- "lines",
- DefaultVertexFormat.POSITION_COLOR_NORMAL,
-@@ -626,7 +_,7 @@
- .setCullState(NO_CULL)
- .createCompositeState(false)
- );
-- public static final Function DEBUG_LINE_STRIP = Util.memoize(
-+ private static final Function DEBUG_LINE_STRIP = Util.memoize(
- p_286162_ -> create(
- "debug_line_strip",
- DefaultVertexFormat.POSITION_COLOR,
-@@ -640,7 +_,7 @@
- .createCompositeState(false)
- )
- );
-- public static final RenderType.CompositeRenderType DEBUG_FILLED_BOX = create(
-+ private static final RenderType.CompositeRenderType DEBUG_FILLED_BOX = create(
- "debug_filled_box",
- DefaultVertexFormat.POSITION_COLOR,
- VertexFormat.Mode.TRIANGLE_STRIP,
-@@ -653,7 +_,7 @@
- .setTransparencyState(TRANSLUCENT_TRANSPARENCY)
- .createCompositeState(false)
- );
-- public static final RenderType.CompositeRenderType DEBUG_QUADS = create(
-+ private static final RenderType.CompositeRenderType DEBUG_QUADS = create(
- "debug_quads",
- DefaultVertexFormat.POSITION_COLOR,
- VertexFormat.Mode.QUADS,
-@@ -666,7 +_,7 @@
- .setCullState(NO_CULL)
- .createCompositeState(false)
- );
-- public static final RenderType.CompositeRenderType DEBUG_STRUCTURE_QUADS = create(
-+ private static final RenderType.CompositeRenderType DEBUG_STRUCTURE_QUADS = create(
- "debug_structure_quads",
- DefaultVertexFormat.POSITION_COLOR,
- VertexFormat.Mode.QUADS,
-@@ -681,7 +_,7 @@
- .setWriteMaskState(COLOR_WRITE)
- .createCompositeState(false)
- );
-- public static final RenderType.CompositeRenderType DEBUG_SECTION_QUADS = create(
-+ private static final RenderType.CompositeRenderType DEBUG_SECTION_QUADS = create(
- "debug_section_quads",
- DefaultVertexFormat.POSITION_COLOR,
- VertexFormat.Mode.QUADS,
-@@ -695,7 +_,7 @@
- .setCullState(CULL)
- .createCompositeState(false)
- );
-- public static final RenderType.CompositeRenderType GUI = create(
-+ private static final RenderType.CompositeRenderType GUI = create(
- "gui",
- DefaultVertexFormat.POSITION_COLOR,
- VertexFormat.Mode.QUADS,
-@@ -706,7 +_,7 @@
- .setDepthTestState(LEQUAL_DEPTH_TEST)
- .createCompositeState(false)
- );
-- public static final RenderType.CompositeRenderType GUI_OVERLAY = create(
-+ private static final RenderType.CompositeRenderType GUI_OVERLAY = create(
- "gui_overlay",
- DefaultVertexFormat.POSITION_COLOR,
- VertexFormat.Mode.QUADS,
-@@ -718,7 +_,7 @@
- .setWriteMaskState(COLOR_WRITE)
- .createCompositeState(false)
- );
-- public static final RenderType.CompositeRenderType GUI_TEXT_HIGHLIGHT = create(
-+ private static final RenderType.CompositeRenderType GUI_TEXT_HIGHLIGHT = create(
- "gui_text_highlight",
- DefaultVertexFormat.POSITION_COLOR,
- VertexFormat.Mode.QUADS,
-@@ -730,7 +_,7 @@
- .setColorLogicState(OR_REVERSE_COLOR_LOGIC)
- .createCompositeState(false)
- );
-- public static final RenderType.CompositeRenderType GUI_GHOST_RECIPE_OVERLAY = create(
-+ private static final RenderType.CompositeRenderType GUI_GHOST_RECIPE_OVERLAY = create(
- "gui_ghost_recipe_overlay",
- DefaultVertexFormat.POSITION_COLOR,
- VertexFormat.Mode.QUADS,
-@@ -742,12 +_,12 @@
- .setWriteMaskState(COLOR_WRITE)
- .createCompositeState(false)
- );
-- public static final ImmutableList CHUNK_BUFFER_LAYERS = ImmutableList.of(solid(), cutoutMipped(), cutout(), translucent(), tripwire());
-- public final VertexFormat format;
-- public final VertexFormat.Mode mode;
-- public final int bufferSize;
-- public final boolean affectsCrumbling;
-- public final boolean sortOnUpload;
-+ private static final ImmutableList CHUNK_BUFFER_LAYERS = ImmutableList.of(solid(), cutoutMipped(), cutout(), translucent(), tripwire());
-+ private final VertexFormat format;
-+ private final VertexFormat.Mode mode;
-+ private final int bufferSize;
-+ private final boolean affectsCrumbling;
-+ private final boolean sortOnUpload;
-
- public static RenderType solid() {
- return SOLID;
@@ -968,7 +_,7 @@
}
@@ -523,24 +42,6 @@
}
public static RenderType lightning() {
-@@ -1122,7 +_,7 @@
- this.sortOnUpload = p_173183_;
- }
-
-- public static RenderType.CompositeRenderType create(
-+ static RenderType.CompositeRenderType create(
- String p_173210_, VertexFormat p_173211_, VertexFormat.Mode p_173212_, int p_173213_, RenderType.CompositeState p_173214_
- ) {
- return create(p_173210_, p_173211_, p_173212_, p_173213_, false, false, p_173214_);
-@@ -1438,7 +_,7 @@
- }
-
- @OnlyIn(Dist.CLIENT)
-- public static enum OutlineProperty {
-+ static enum OutlineProperty {
- NONE("none"),
- IS_OUTLINE("is_outline"),
- AFFECTS_OUTLINE("affects_outline");
@@ -1454,4 +_,17 @@
return this.name;
}
diff --git a/patches/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java.patch b/patches/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java.patch
index 26cdd60b6e..1b6543d310 100644
--- a/patches/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java.patch
+++ b/patches/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java.patch
@@ -13,7 +13,7 @@
int j = armormaterial$layer.dyeable() ? i : -1;
- this.renderModel(p_117119_, p_117120_, p_117123_, p_117124_, j, armormaterial$layer.texture(flag));
+ var texture = net.neoforged.neoforge.client.ClientHooks.getArmorTexture(p_117121_, itemstack, armormaterial$layer, flag, p_117122_);
-+ this.renderModel(p_117119_, p_117120_, p_117123_, p_117124_, j, texture);
++ this.renderModel(p_117119_, p_117120_, p_117123_, model, j, texture);
}
ArmorTrim armortrim = itemstack.get(DataComponents.TRIM);
diff --git a/patches/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java.patch b/patches/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java.patch
index 1e60515d03..61fdc711d9 100644
--- a/patches/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java.patch
+++ b/patches/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java.patch
@@ -59,10 +59,12 @@
}
@Override
-@@ -126,6 +_,12 @@
+@@ -125,7 +_,13 @@
+ public void handleConfigurationFinished(ServerboundFinishConfigurationPacket p_294283_) {
PacketUtils.ensureRunningOnSameThread(p_294283_, this, this.server);
this.finishCurrentTask(JoinWorldTask.TYPE);
- this.connection.setupOutboundProtocol(GameProtocols.CLIENTBOUND_TEMPLATE.bind(RegistryFriendlyByteBuf.decorator(this.server.registryAccess())));
+- this.connection.setupOutboundProtocol(GameProtocols.CLIENTBOUND_TEMPLATE.bind(RegistryFriendlyByteBuf.decorator(this.server.registryAccess())));
++ this.connection.setupOutboundProtocol(GameProtocols.CLIENTBOUND_TEMPLATE.bind(RegistryFriendlyByteBuf.decorator(this.server.registryAccess(), this.connectionType)));
+ // Packets can only be sent after the outbound protocol is set up again
+ if (this.connectionType == net.neoforged.neoforge.network.connection.ConnectionType.OTHER) {
+ //We need to also initialize this here, as the client may have sent the packet before we have finished our configuration.
diff --git a/patches/net/minecraft/world/item/ItemStack.java.patch b/patches/net/minecraft/world/item/ItemStack.java.patch
index 074261d353..b211333782 100644
--- a/patches/net/minecraft/world/item/ItemStack.java.patch
+++ b/patches/net/minecraft/world/item/ItemStack.java.patch
@@ -158,15 +158,27 @@
public ItemEnchantments getEnchantments() {
return this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY);
}
-@@ -933,6 +_,8 @@
+@@ -933,11 +_,15 @@
}
public void forEachModifier(EquipmentSlot p_332001_, BiConsumer, AttributeModifier> p_330882_) {
+- ItemAttributeModifiers itemattributemodifiers = this.getOrDefault(DataComponents.ATTRIBUTE_MODIFIERS, ItemAttributeModifiers.EMPTY);
+- if (!itemattributemodifiers.modifiers().isEmpty()) {
+- itemattributemodifiers.forEach(p_332001_, p_330882_);
+- } else {
+- this.getItem().getDefaultAttributeModifiers().forEach(p_332001_, p_330882_);
++ // Neo: Use ItemStack extension method, which fires an event for mod-added attributes modifiers
+ this.getAttributeModifiers(p_332001_).forEach(p_330882_);
-+ if (true) return;
- ItemAttributeModifiers itemattributemodifiers = this.getOrDefault(DataComponents.ATTRIBUTE_MODIFIERS, ItemAttributeModifiers.EMPTY);
- if (!itemattributemodifiers.modifiers().isEmpty()) {
- itemattributemodifiers.forEach(p_332001_, p_330882_);
++ if (false) {
++ ItemAttributeModifiers itemattributemodifiers = this.getOrDefault(DataComponents.ATTRIBUTE_MODIFIERS, ItemAttributeModifiers.EMPTY);
++ if (!itemattributemodifiers.modifiers().isEmpty()) {
++ itemattributemodifiers.forEach(p_332001_, p_330882_);
++ } else {
++ this.getItem().getDefaultAttributeModifiers().forEach(p_332001_, p_330882_);
++ }
+ }
+
+ EnchantmentHelper.forEachModifier(this, p_332001_, p_330882_);
@@ -951,7 +_,7 @@
MutableComponent mutablecomponent1 = ComponentUtils.wrapInSquareBrackets(mutablecomponent);
From 96ad5c10dbd74daf3012d2071891378256f96723 Mon Sep 17 00:00:00 2001
From: Zepalesque <60141811+Zepalesque@users.noreply.github.com>
Date: Mon, 17 Jun 2024 21:18:38 -0400
Subject: [PATCH 11/15] fix: overrideMusic method which cancels the event, and
remove if logic from setMusic
---
.../neoforge/client/event/SelectMusicEvent.java | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java b/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
index b2dabe6a5a..f4692c7b45 100644
--- a/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
+++ b/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
@@ -25,7 +25,7 @@
* Higher priorities would likely be better suited for biome-based or dimension-based musics, whereas lower priority is likely good for specific structures or situations.
*
* This event is {@linkplain ICancellableEvent cancellable}, and does not {@linkplain HasResult have a result}.
- * If the event is cancelled, then no further modification to the {@link Music} value will be allowed. This should only be used if your music should take priority over others, such as for boss music.
+ * If the event is canceled, then whatever the latest music set was will be used as the music.
*
* This event is fired on the {@linkplain NeoForge#EVENT_BUS main Forge event bus},
* only on the {@linkplain LogicalSide#CLIENT logical client}.
@@ -69,11 +69,16 @@ public Music getMusic() {
* Changes the situational music. If this is set to {@code null}, any currently playing music will be cancelled.
* If this was {@code null} but on the next tick isn't, the muisc given will be immediately played.
*
- * Note that if {@link #isCanceled()} is {@code true}, this method will do nothing, as it is meant to override other musics.
*/
public void setMusic(@Nullable Music newMusic) {
- if (!this.isCanceled()) {
- this.music = newMusic;
- }
+ this.music = newMusic;
+ }
+
+ /**
+ * Sets the music and cancels the event, using this as the final music
+ */
+ public void overrideMusic(@Nullable Music newMusic) {
+ this.music = newMusic;
+ this.setCanceled(true);
}
}
From f1b20675930db614da5ee431a140a0532262c058 Mon Sep 17 00:00:00 2001
From: Zepalesque <60141811+Zepalesque@users.noreply.github.com>
Date: Mon, 17 Jun 2024 21:23:10 -0400
Subject: [PATCH 12/15] docs: update documentation
---
.../net/neoforged/neoforge/client/event/SelectMusicEvent.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java b/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
index f4692c7b45..e0e97694a2 100644
--- a/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
+++ b/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
@@ -9,6 +9,7 @@
import net.minecraft.sounds.Music;
import net.neoforged.bus.api.Event;
import net.neoforged.bus.api.ICancellableEvent;
+import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.LogicalSide;
import net.neoforged.neoforge.common.NeoForge;
import org.jetbrains.annotations.Nullable;
@@ -75,7 +76,8 @@ public void setMusic(@Nullable Music newMusic) {
}
/**
- * Sets the music and cancels the event, using this as the final music
+ * Sets the music and then cancels the event so that other listeners will not be invoked.
+ * Note that listeners using {@link SubscribeEvent#receiveCanceled()} will still be able to override this, but by default they will not
*/
public void overrideMusic(@Nullable Music newMusic) {
this.music = newMusic;
From ccc5ba956baf6d975515533fad6d7b094b042d69 Mon Sep 17 00:00:00 2001
From: Zepalesque <60141811+Zepalesque@users.noreply.github.com>
Date: Mon, 17 Jun 2024 22:16:47 -0400
Subject: [PATCH 13/15] fix: fixes
---
.../client/sounds/MusicManager.java.patch | 24 ++++---------------
1 file changed, 5 insertions(+), 19 deletions(-)
diff --git a/patches/net/minecraft/client/sounds/MusicManager.java.patch b/patches/net/minecraft/client/sounds/MusicManager.java.patch
index bd458eb040..15ed3b4608 100644
--- a/patches/net/minecraft/client/sounds/MusicManager.java.patch
+++ b/patches/net/minecraft/client/sounds/MusicManager.java.patch
@@ -1,32 +1,18 @@
--- a/net/minecraft/client/sounds/MusicManager.java
+++ b/net/minecraft/client/sounds/MusicManager.java
-@@ -24,7 +_,12 @@
+@@ -24,7 +_,14 @@
}
public void tick() {
- Music music = this.minecraft.getSituationalMusic();
+ Music music = net.neoforged.neoforge.client.ClientHooks.selectMusic(this.minecraft.getSituationalMusic(), this.currentMusic);
-+ if (music == null && this.currentMusic != null) {
-+ this.stopPlaying();
++ if (music == null) {
++ if (this.currentMusic != null) {
++ this.stopPlaying();
++ }
+ this.nextSongDelay = 0;
+ return;
+ }
if (this.currentMusic != null) {
if (!music.getEvent().value().getLocation().equals(this.currentMusic.getLocation()) && music.replaceCurrentMusic()) {
this.minecraft.getSoundManager().stop(this.currentMusic);
-@@ -37,10 +_,15 @@
- }
- }
-
-+ if (music == null) {
-+ return;
-+ }
-+
- this.nextSongDelay = Math.min(this.nextSongDelay, music.getMaxDelay());
- if (this.currentMusic == null && this.nextSongDelay-- <= 0) {
- this.startPlaying(music);
- }
-+
- }
-
- public void startPlaying(Music p_120185_) {
From 327c0a448b1674edff8704db31aec41a1c74c60c Mon Sep 17 00:00:00 2001
From: Zepalesque <60141811+Zepalesque@users.noreply.github.com>
Date: Mon, 17 Jun 2024 22:18:23 -0400
Subject: [PATCH 14/15] refactor: tiny change; make spacing consistent with
vanilla
---
patches/net/minecraft/client/sounds/MusicManager.java.patch | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/patches/net/minecraft/client/sounds/MusicManager.java.patch b/patches/net/minecraft/client/sounds/MusicManager.java.patch
index 15ed3b4608..9772e14aed 100644
--- a/patches/net/minecraft/client/sounds/MusicManager.java.patch
+++ b/patches/net/minecraft/client/sounds/MusicManager.java.patch
@@ -1,6 +1,6 @@
--- a/net/minecraft/client/sounds/MusicManager.java
+++ b/net/minecraft/client/sounds/MusicManager.java
-@@ -24,7 +_,14 @@
+@@ -24,7 +_,15 @@
}
public void tick() {
@@ -13,6 +13,7 @@
+ this.nextSongDelay = 0;
+ return;
+ }
++
if (this.currentMusic != null) {
if (!music.getEvent().value().getLocation().equals(this.currentMusic.getLocation()) && music.replaceCurrentMusic()) {
this.minecraft.getSoundManager().stop(this.currentMusic);
From 37823ebe1266141b303c30db66996ceeaf291799 Mon Sep 17 00:00:00 2001
From: TelepathicGrunt <40846040+TelepathicGrunt@users.noreply.github.com>
Date: Sun, 7 Jul 2024 07:45:42 -0400
Subject: [PATCH 15/15] Fix typo in comment
---
.../net/neoforged/neoforge/client/event/SelectMusicEvent.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java b/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
index e0e97694a2..e0d20a712b 100644
--- a/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
+++ b/src/main/java/net/neoforged/neoforge/client/event/SelectMusicEvent.java
@@ -51,7 +51,7 @@ public Music getOriginalMusic() {
}
/**
- * {@return the current track that the {@link net.minecraft.client.sounds.MusicManager} is playing, or {@code null} if there is none.}
+ * {@return the current track that the {@link net.minecraft.client.sounds.MusicManager} is playing, or {@code null} if there is none}
*/
@Nullable
public SoundInstance getPlayingMusic() {
@@ -68,7 +68,7 @@ public Music getMusic() {
/**
* Changes the situational music. If this is set to {@code null}, any currently playing music will be cancelled.
- * If this was {@code null} but on the next tick isn't, the muisc given will be immediately played.
+ * If this was {@code null} but on the next tick isn't, the music given will be immediately played.
*
*/
public void setMusic(@Nullable Music newMusic) {