mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-12 00:07:45 +00:00
Use official mappings for in-repo patches, will be converted to SRG during build.
This commit is contained in:
641 files changed
+9696
-9678
No files matched your search
+30
-2
@@ -16,6 +16,7 @@ import net.minecraftforge.gradle.common.tasks.CheckJarCompatibility
|
||||
import net.minecraftforge.gradle.common.tasks.DownloadMavenArtifact
|
||||
import net.minecraftforge.gradle.common.tasks.ExtractInheritance
|
||||
import net.minecraftforge.gradle.common.tasks.SignJar
|
||||
import net.minecraftforge.gradle.patcher.tasks.GeneratePatches
|
||||
import net.minecraftforge.gradle.userdev.tasks.RenameJar
|
||||
import org.apache.tools.ant.filters.ReplaceTokens
|
||||
import org.gradle.plugins.ide.eclipse.model.SourceFolder
|
||||
@@ -654,7 +655,7 @@ project(':forge') {
|
||||
parent = project(':clean')
|
||||
patches = file("$rootDir/patches/minecraft")
|
||||
patchedSrc = file('src/main/java')
|
||||
srgPatches = true
|
||||
srgPatches = false
|
||||
accessTransformers.from file("$rootDir/src/main/resources/META-INF/accesstransformer.cfg")
|
||||
sideAnnotationStrippers.from file("$rootDir/src/main/resources/forge.sas")
|
||||
|
||||
@@ -814,6 +815,33 @@ project(':forge') {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
afterEvaluate {
|
||||
if (!patcher.srgPatches) {
|
||||
srg2mcpClean {
|
||||
dependsOn = []
|
||||
input = project(':mcp').setupMCP.output
|
||||
}
|
||||
userdevJar {
|
||||
onlyIf = { t -> true }
|
||||
}
|
||||
def patches = project.file('build/genPatchesForUserdev/output/')
|
||||
patches.mkdirs()
|
||||
def genPatchesForUserdev = tasks.register('genPatchesForUserdev', GeneratePatches){
|
||||
base = project(':mcp').setupMCP.output
|
||||
modified = applyRangeMapBase.output
|
||||
originalPrefix = genPatches.originalPrefix
|
||||
modifiedPrefix = genPatches.modifiedPrefix
|
||||
output = patches
|
||||
autoHeader true
|
||||
lineEnding = '\n'
|
||||
}
|
||||
bakePatches {
|
||||
dependsOn = []
|
||||
input = genPatchesForUserdev.get().output
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ext {
|
||||
MANIFESTS = [
|
||||
@@ -1220,7 +1248,7 @@ project(':forge') {
|
||||
], [
|
||||
sides: ['client'],
|
||||
jar: JAR_SPLITTER,
|
||||
classpath: JAR_SPLITER_CLASSPATH,
|
||||
classpath: JAR_SPLITTER_CLASSPATH,
|
||||
args: [
|
||||
'--input', '{MINECRAFT_JAR}',
|
||||
'--slim', '{MC_SLIM}',
|
||||
|
||||
@@ -5,30 +5,30 @@
|
||||
GlStateManager._texParameter(3553, 10242, 33071);
|
||||
GlStateManager._texParameter(3553, 10243, 33071);
|
||||
+ if (!stencilEnabled)
|
||||
GlStateManager._texImage2D(3553, 0, 6402, this.f_83915_, this.f_83916_, 0, 6402, 5126, (IntBuffer)null);
|
||||
GlStateManager._texImage2D(3553, 0, 6402, this.width, this.height, 0, 6402, 5126, (IntBuffer)null);
|
||||
+ else
|
||||
+ GlStateManager._texImage2D(3553, 0, org.lwjgl.opengl.GL30.GL_DEPTH32F_STENCIL8, this.f_83915_, this.f_83916_, 0, org.lwjgl.opengl.GL30.GL_DEPTH_STENCIL, org.lwjgl.opengl.GL30.GL_FLOAT_32_UNSIGNED_INT_24_8_REV, null);
|
||||
+ GlStateManager._texImage2D(3553, 0, org.lwjgl.opengl.GL30.GL_DEPTH32F_STENCIL8, this.width, this.height, 0, org.lwjgl.opengl.GL30.GL_DEPTH_STENCIL, org.lwjgl.opengl.GL30.GL_FLOAT_32_UNSIGNED_INT_24_8_REV, null);
|
||||
}
|
||||
|
||||
this.m_83936_(9728);
|
||||
this.setFilterMode(9728);
|
||||
@@ -124,7 +_,14 @@
|
||||
GlStateManager._glBindFramebuffer(36160, this.f_83920_);
|
||||
GlStateManager._glFramebufferTexture2D(36160, 36064, 3553, this.f_83923_, 0);
|
||||
if (this.f_83919_) {
|
||||
GlStateManager._glBindFramebuffer(36160, this.frameBufferId);
|
||||
GlStateManager._glFramebufferTexture2D(36160, 36064, 3553, this.colorTextureId, 0);
|
||||
if (this.useDepth) {
|
||||
+ if(!stencilEnabled)
|
||||
GlStateManager._glFramebufferTexture2D(36160, 36096, 3553, this.f_83924_, 0);
|
||||
GlStateManager._glFramebufferTexture2D(36160, 36096, 3553, this.depthBufferId, 0);
|
||||
+ else if(net.minecraftforge.common.ForgeConfig.CLIENT.useCombinedDepthStencilAttachment.get()) {
|
||||
+ GlStateManager._glFramebufferTexture2D(org.lwjgl.opengl.GL30.GL_FRAMEBUFFER, org.lwjgl.opengl.GL30.GL_DEPTH_STENCIL_ATTACHMENT, 3553, this.f_83924_, 0);
|
||||
+ GlStateManager._glFramebufferTexture2D(org.lwjgl.opengl.GL30.GL_FRAMEBUFFER, org.lwjgl.opengl.GL30.GL_DEPTH_STENCIL_ATTACHMENT, 3553, this.depthBufferId, 0);
|
||||
+ } else {
|
||||
+ GlStateManager._glFramebufferTexture2D(org.lwjgl.opengl.GL30.GL_FRAMEBUFFER, org.lwjgl.opengl.GL30.GL_DEPTH_ATTACHMENT, 3553, this.f_83924_, 0);
|
||||
+ GlStateManager._glFramebufferTexture2D(org.lwjgl.opengl.GL30.GL_FRAMEBUFFER, org.lwjgl.opengl.GL30.GL_STENCIL_ATTACHMENT, 3553, this.f_83924_, 0);
|
||||
+ GlStateManager._glFramebufferTexture2D(org.lwjgl.opengl.GL30.GL_FRAMEBUFFER, org.lwjgl.opengl.GL30.GL_DEPTH_ATTACHMENT, 3553, this.depthBufferId, 0);
|
||||
+ GlStateManager._glFramebufferTexture2D(org.lwjgl.opengl.GL30.GL_FRAMEBUFFER, org.lwjgl.opengl.GL30.GL_STENCIL_ATTACHMENT, 3553, this.depthBufferId, 0);
|
||||
+ }
|
||||
}
|
||||
|
||||
this.m_83949_();
|
||||
this.checkStatus();
|
||||
@@ -292,4 +_,27 @@
|
||||
public int m_83980_() {
|
||||
return this.f_83924_;
|
||||
public int getDepthTextureId() {
|
||||
return this.depthBufferId;
|
||||
}
|
||||
+
|
||||
+ /*================================ FORGE START ================================================*/
|
||||
@@ -42,7 +42,7 @@
|
||||
+ public void enableStencil() {
|
||||
+ if(stencilEnabled) return;
|
||||
+ stencilEnabled = true;
|
||||
+ this.m_83941_(f_83917_, f_83918_, net.minecraft.client.Minecraft.f_91002_);
|
||||
+ this.resize(viewWidth, viewHeight, net.minecraft.client.Minecraft.ON_OSX);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
|
||||
@@ -4,25 +4,25 @@
|
||||
GLFW.glfwWindowHint(139267, 2);
|
||||
GLFW.glfwWindowHint(139272, 204801);
|
||||
GLFW.glfwWindowHint(139270, 1);
|
||||
- this.f_85349_ = GLFW.glfwCreateWindow(this.f_85359_, this.f_85360_, p_85376_, this.f_85355_ && monitor != null ? monitor.m_84954_() : 0L, 0L);
|
||||
+ this.f_85349_ = net.minecraftforge.fml.loading.ImmediateWindowHandler.setupMinecraftWindow(()->this.f_85359_, ()->this.f_85360_, ()->p_85376_, ()->this.f_85355_ && monitor != null ? monitor.m_84954_() : 0L);
|
||||
+ if (!net.minecraftforge.fml.loading.ImmediateWindowHandler.positionWindow(Optional.ofNullable(monitor), w->this.f_85359_ = this.f_85352_ = w, h->this.f_85360_ = this.f_85353_ = h, x->this.f_85357_ = this.f_85350_ = x, y->this.f_85358_ = this.f_85351_ = y)) {
|
||||
- this.window = GLFW.glfwCreateWindow(this.width, this.height, p_85376_, this.fullscreen && monitor != null ? monitor.getMonitor() : 0L, 0L);
|
||||
+ this.window = net.minecraftforge.fml.loading.ImmediateWindowHandler.setupMinecraftWindow(()->this.width, ()->this.height, ()->p_85376_, ()->this.fullscreen && monitor != null ? monitor.getMonitor() : 0L);
|
||||
+ if (!net.minecraftforge.fml.loading.ImmediateWindowHandler.positionWindow(Optional.ofNullable(monitor), w->this.width = this.windowedWidth = w, h->this.height = this.windowedHeight = h, x->this.x = this.windowedX = x, y->this.y = this.windowedY = y)) {
|
||||
if (monitor != null) {
|
||||
VideoMode videomode = monitor.m_84948_(this.f_85355_ ? this.f_85354_ : Optional.empty());
|
||||
this.f_85350_ = this.f_85357_ = monitor.m_84951_() + videomode.m_85332_() / 2 - this.f_85359_ / 2;
|
||||
VideoMode videomode = monitor.getPreferredVidMode(this.fullscreen ? this.preferredFullscreenVideoMode : Optional.empty());
|
||||
this.windowedX = this.x = monitor.getX() + videomode.getWidth() / 2 - this.width / 2;
|
||||
@@ -93,6 +_,7 @@
|
||||
this.f_85350_ = this.f_85357_ = aint1[0];
|
||||
this.f_85351_ = this.f_85358_ = aint[0];
|
||||
this.windowedX = this.x = aint1[0];
|
||||
this.windowedY = this.y = aint[0];
|
||||
}
|
||||
+ }
|
||||
|
||||
GLFW.glfwMakeContextCurrent(this.f_85349_);
|
||||
GLFW.glfwMakeContextCurrent(this.window);
|
||||
GL.createCapabilities();
|
||||
@@ -242,6 +_,7 @@
|
||||
GLFW.glfwGetFramebufferSize(this.f_85349_, aint, aint1);
|
||||
this.f_85361_ = aint[0] > 0 ? aint[0] : 1;
|
||||
this.f_85362_ = aint1[0] > 0 ? aint1[0] : 1;
|
||||
+ if (this.f_85362_ == 0 || this.f_85361_==0) net.minecraftforge.fml.loading.ImmediateWindowHandler.updateFBSize(w->this.f_85361_=w, h->this.f_85362_=h);
|
||||
GLFW.glfwGetFramebufferSize(this.window, aint, aint1);
|
||||
this.framebufferWidth = aint[0] > 0 ? aint[0] : 1;
|
||||
this.framebufferHeight = aint1[0] > 0 ? aint1[0] : 1;
|
||||
+ if (this.framebufferHeight == 0 || this.framebufferWidth==0) net.minecraftforge.fml.loading.ImmediateWindowHandler.updateFBSize(w->this.framebufferWidth=w, h->this.framebufferHeight=h);
|
||||
}
|
||||
|
||||
private void m_85427_(long p_85428_, int p_85429_, int p_85430_) {
|
||||
private void onResize(long p_85428_, int p_85429_, int p_85430_) {
|
||||
@@ -1,17 +1,17 @@
|
||||
--- a/com/mojang/blaze3d/vertex/BufferBuilder.java
|
||||
+++ b/com/mojang/blaze3d/vertex/BufferBuilder.java
|
||||
@@ -459,4 +_,14 @@
|
||||
this.f_276566_ = p_277855_;
|
||||
this.sorting = p_277855_;
|
||||
}
|
||||
}
|
||||
+
|
||||
+ // Forge start
|
||||
+ public void putBulkData(ByteBuffer buffer) {
|
||||
+ m_85722_(buffer.limit() + this.f_85658_.m_86020_());
|
||||
+ this.f_85648_.position(this.f_85652_);
|
||||
+ this.f_85648_.put(buffer);
|
||||
+ this.f_85648_.position(0);
|
||||
+ this.f_85654_ += buffer.limit() / this.f_85658_.m_86020_();
|
||||
+ this.f_85652_ += buffer.limit();
|
||||
+ ensureCapacity(buffer.limit() + this.format.getVertexSize());
|
||||
+ this.buffer.position(this.nextElementByte);
|
||||
+ this.buffer.put(buffer);
|
||||
+ this.buffer.position(0);
|
||||
+ this.vertices += buffer.limit() / this.format.getVertexSize();
|
||||
+ this.nextElementByte += buffer.limit();
|
||||
+ }
|
||||
}
|
||||
@@ -6,6 +6,6 @@
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
-public class PoseStack {
|
||||
+public class PoseStack implements net.minecraftforge.client.extensions.IForgePoseStack {
|
||||
private final Deque<PoseStack.Pose> f_85834_ = Util.m_137469_(Queues.newArrayDeque(), (p_85848_) -> {
|
||||
private final Deque<PoseStack.Pose> poseStack = Util.make(Queues.newArrayDeque(), (p_85848_) -> {
|
||||
Matrix4f matrix4f = new Matrix4f();
|
||||
Matrix3f matrix3f = new Matrix3f();
|
||||
@@ -2,10 +2,10 @@
|
||||
+++ b/com/mojang/blaze3d/vertex/SheetedDecalTextureGenerator.java
|
||||
@@ -46,7 +_,7 @@
|
||||
|
||||
public void m_5752_() {
|
||||
Vector3f vector3f = this.f_85869_.transform(new Vector3f(this.f_85876_, this.f_85877_, this.f_85878_));
|
||||
- Direction direction = Direction.m_122372_(vector3f.x(), vector3f.y(), vector3f.z());
|
||||
public void endVertex() {
|
||||
Vector3f vector3f = this.normalInversePose.transform(new Vector3f(this.nx, this.ny, this.nz));
|
||||
- Direction direction = Direction.getNearest(vector3f.x(), vector3f.y(), vector3f.z());
|
||||
+ Direction direction = net.minecraftforge.client.ForgeHooksClient.getNearestStable(vector3f.x(), vector3f.y(), vector3f.z());
|
||||
Vector4f vector4f = this.f_85868_.transform(new Vector4f(this.f_85870_, this.f_85871_, this.f_85872_, 1.0F));
|
||||
Vector4f vector4f = this.cameraInversePose.transform(new Vector4f(this.x, this.y, this.z, 1.0F));
|
||||
vector4f.rotateY((float)Math.PI);
|
||||
vector4f.rotateX((-(float)Math.PI / 2F));
|
||||
@@ -6,20 +6,20 @@
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
-public interface VertexConsumer {
|
||||
+public interface VertexConsumer extends net.minecraftforge.client.extensions.IForgeVertexConsumer {
|
||||
VertexConsumer m_5483_(double p_85945_, double p_85946_, double p_85947_);
|
||||
VertexConsumer vertex(double p_85945_, double p_85946_, double p_85947_);
|
||||
|
||||
VertexConsumer m_6122_(int p_85973_, int p_85974_, int p_85975_, int p_85976_);
|
||||
VertexConsumer color(int p_85973_, int p_85974_, int p_85975_, int p_85976_);
|
||||
@@ -64,6 +_,10 @@
|
||||
}
|
||||
|
||||
default void m_85995_(PoseStack.Pose p_85996_, BakedQuad p_85997_, float[] p_85998_, float p_85999_, float p_86000_, float p_86001_, int[] p_86002_, int p_86003_, boolean p_86004_) {
|
||||
default void putBulkData(PoseStack.Pose p_85996_, BakedQuad p_85997_, float[] p_85998_, float p_85999_, float p_86000_, float p_86001_, int[] p_86002_, int p_86003_, boolean p_86004_) {
|
||||
+ putBulkData(p_85996_, p_85997_, p_85998_, p_85999_, p_86000_, p_86001_, 1, p_86002_, p_86003_, p_86004_);
|
||||
+ }
|
||||
+
|
||||
+ default void putBulkData(PoseStack.Pose p_85996_, BakedQuad p_85997_, float[] p_85998_, float p_85999_, float p_86000_, float p_86001_, float alpha, int[] p_86002_, int p_86003_, boolean p_86004_) {
|
||||
float[] afloat = new float[]{p_85998_[0], p_85998_[1], p_85998_[2], p_85998_[3]};
|
||||
int[] aint = new int[]{p_86002_[0], p_86002_[1], p_86002_[2], p_86002_[3]};
|
||||
int[] aint1 = p_85997_.m_111303_();
|
||||
int[] aint1 = p_85997_.getVertices();
|
||||
@@ -99,11 +_,13 @@
|
||||
f5 = afloat[k] * p_86001_;
|
||||
}
|
||||
@@ -29,10 +29,10 @@
|
||||
float f9 = bytebuffer.getFloat(16);
|
||||
float f10 = bytebuffer.getFloat(20);
|
||||
Vector4f vector4f = matrix4f.transform(new Vector4f(f, f1, f2, 1.0F));
|
||||
- this.m_5954_(vector4f.x(), vector4f.y(), vector4f.z(), f3, f4, f5, 1.0F, f9, f10, p_86003_, l, vector3f.x(), vector3f.y(), vector3f.z());
|
||||
+ applyBakedNormals(vector3f, bytebuffer, p_85996_.m_252943_());
|
||||
- this.vertex(vector4f.x(), vector4f.y(), vector4f.z(), f3, f4, f5, 1.0F, f9, f10, p_86003_, l, vector3f.x(), vector3f.y(), vector3f.z());
|
||||
+ applyBakedNormals(vector3f, bytebuffer, p_85996_.normal());
|
||||
+ float vertexAlpha = p_86004_ ? alpha * (float) (bytebuffer.get(15) & 255) / 255.0F : alpha;
|
||||
+ this.m_5954_(vector4f.x(), vector4f.y(), vector4f.z(), f3, f4, f5, vertexAlpha, f9, f10, p_86003_, l, vector3f.x(), vector3f.y(), vector3f.z());
|
||||
+ this.vertex(vector4f.x(), vector4f.y(), vector4f.z(), f3, f4, f5, vertexAlpha, f9, f10, p_86003_, l, vector3f.x(), vector3f.y(), vector3f.z());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
}
|
||||
}
|
||||
+
|
||||
+ public ImmutableMap<String, VertexFormatElement> getElementMapping() { return f_166905_; }
|
||||
+ public int getOffset(int index) { return f_86013_.getInt(index); }
|
||||
+ public boolean hasPosition() { return f_86012_.stream().anyMatch(e -> e.m_86048_() == VertexFormatElement.Usage.POSITION); }
|
||||
+ public boolean hasNormal() { return f_86012_.stream().anyMatch(e -> e.m_86048_() == VertexFormatElement.Usage.NORMAL); }
|
||||
+ public boolean hasColor() { return f_86012_.stream().anyMatch(e -> e.m_86048_() == VertexFormatElement.Usage.COLOR); }
|
||||
+ public boolean hasUV(int which) { return f_86012_.stream().anyMatch(e -> e.m_86048_() == VertexFormatElement.Usage.UV && e.m_86049_() == which); }
|
||||
+ public ImmutableMap<String, VertexFormatElement> getElementMapping() { return elementMapping; }
|
||||
+ public int getOffset(int index) { return offsets.getInt(index); }
|
||||
+ public boolean hasPosition() { return elements.stream().anyMatch(e -> e.getUsage() == VertexFormatElement.Usage.POSITION); }
|
||||
+ public boolean hasNormal() { return elements.stream().anyMatch(e -> e.getUsage() == VertexFormatElement.Usage.NORMAL); }
|
||||
+ public boolean hasColor() { return elements.stream().anyMatch(e -> e.getUsage() == VertexFormatElement.Usage.COLOR); }
|
||||
+ public boolean hasUV(int which) { return elements.stream().anyMatch(e -> e.getUsage() == VertexFormatElement.Usage.UV && e.getIndex() == which); }
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
--- a/com/mojang/blaze3d/vertex/VertexFormatElement.java
|
||||
+++ b/com/mojang/blaze3d/vertex/VertexFormatElement.java
|
||||
@@ -90,6 +_,10 @@
|
||||
this.f_86031_.m_166978_(this.f_86032_, p_166964_);
|
||||
this.usage.clearBufferState(this.index, p_166964_);
|
||||
}
|
||||
|
||||
+ public int getElementCount() {
|
||||
+ return f_86033_;
|
||||
+ return count;
|
||||
+ }
|
||||
+
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
|
||||
-public final class Transformation {
|
||||
+public final class Transformation implements net.minecraftforge.common.extensions.IForgeTransformation {
|
||||
private final Matrix4f f_121078_;
|
||||
public static final Codec<Transformation> f_268453_ = RecordCodecBuilder.create((p_269604_) -> {
|
||||
return p_269604_.group(ExtraCodecs.f_252432_.fieldOf("translation").forGetter((p_269599_) -> {
|
||||
private final Matrix4f matrix;
|
||||
public static final Codec<Transformation> CODEC = RecordCodecBuilder.create((p_269604_) -> {
|
||||
return p_269604_.group(ExtraCodecs.VECTOR3F.fieldOf("translation").forGetter((p_269599_) -> {
|
||||
@@ -156,6 +_,19 @@
|
||||
public int hashCode() {
|
||||
return Objects.hash(this.f_121078_);
|
||||
return Objects.hash(this.matrix);
|
||||
}
|
||||
+
|
||||
+ private Matrix3f normalTransform = null;
|
||||
@@ -21,11 +21,11 @@
|
||||
+ }
|
||||
+ private void checkNormalTransform() {
|
||||
+ if (normalTransform == null) {
|
||||
+ normalTransform = new Matrix3f(f_121078_);
|
||||
+ normalTransform = new Matrix3f(matrix);
|
||||
+ normalTransform.invert();
|
||||
+ normalTransform.transpose();
|
||||
+ }
|
||||
+ }
|
||||
|
||||
public Transformation m_175937_(Transformation p_175938_, float p_175939_) {
|
||||
Vector3f vector3f = this.m_252829_();
|
||||
public Transformation slerp(Transformation p_175938_, float p_175939_) {
|
||||
Vector3f vector3f = this.getTranslation();
|
||||
+7
-7
@@ -1,18 +1,18 @@
|
||||
--- a/com/mojang/realmsclient/gui/screens/RealmsGenericErrorScreen.java
|
||||
+++ b/com/mojang/realmsclient/gui/screens/RealmsGenericErrorScreen.java
|
||||
@@ -61,6 +_,15 @@
|
||||
return Component.m_237119_().m_7220_(this.f_200947_.f_287789_).m_130946_(": ").m_7220_(this.f_200947_.f_287787_);
|
||||
return Component.empty().append(this.lines.title).append(": ").append(this.lines.detail);
|
||||
}
|
||||
|
||||
+ @Override
|
||||
+ public boolean m_7933_(int key, int scanCode, int modifiers) {
|
||||
+ public boolean keyPressed(int key, int scanCode, int modifiers) {
|
||||
+ if (key == org.lwjgl.glfw.GLFW.GLFW_KEY_ESCAPE) {
|
||||
+ f_96541_.m_91152_(this.f_88665_);
|
||||
+ minecraft.setScreen(this.nextScreen);
|
||||
+ return true;
|
||||
+ }
|
||||
+ return super.m_7933_(key, scanCode, modifiers);
|
||||
+ return super.keyPressed(key, scanCode, modifiers);
|
||||
+ }
|
||||
+
|
||||
public void m_88315_(GuiGraphics p_283497_, int p_88680_, int p_88681_, float p_88682_) {
|
||||
super.m_88315_(p_283497_, p_88680_, p_88681_, p_88682_);
|
||||
p_283497_.m_280653_(this.f_96547_, this.f_200947_.f_287789_, this.f_96543_ / 2, 80, -1);
|
||||
public void render(GuiGraphics p_283497_, int p_88680_, int p_88681_, float p_88682_) {
|
||||
super.render(p_283497_, p_88680_, p_88681_, p_88682_);
|
||||
p_283497_.drawCenteredString(this.font, this.lines.title, this.width / 2, 80, -1);
|
||||
@@ -1,32 +1,32 @@
|
||||
--- a/net/minecraft/CrashReport.java
|
||||
+++ b/net/minecraft/CrashReport.java
|
||||
@@ -57,14 +_,8 @@
|
||||
if (this.f_127506_ != null && this.f_127506_.length > 0) {
|
||||
if (this.uncategorizedStackTrace != null && this.uncategorizedStackTrace.length > 0) {
|
||||
p_127520_.append("-- Head --\n");
|
||||
p_127520_.append("Thread: ").append(Thread.currentThread().getName()).append("\n");
|
||||
- p_127520_.append("Stacktrace:\n");
|
||||
-
|
||||
- for(StackTraceElement stacktraceelement : this.f_127506_) {
|
||||
- for(StackTraceElement stacktraceelement : this.uncategorizedStackTrace) {
|
||||
- p_127520_.append("\t").append("at ").append((Object)stacktraceelement);
|
||||
- p_127520_.append("\n");
|
||||
- }
|
||||
-
|
||||
- p_127520_.append("\n");
|
||||
+ p_127520_.append("Stacktrace:");
|
||||
+ p_127520_.append(net.minecraftforge.logging.CrashReportExtender.generateEnhancedStackTrace(this.f_127506_));
|
||||
+ p_127520_.append(net.minecraftforge.logging.CrashReportExtender.generateEnhancedStackTrace(this.uncategorizedStackTrace));
|
||||
}
|
||||
|
||||
for(CrashReportCategory crashreportcategory : this.f_127503_) {
|
||||
for(CrashReportCategory crashreportcategory : this.details) {
|
||||
@@ -72,6 +_,7 @@
|
||||
p_127520_.append("\n\n");
|
||||
}
|
||||
|
||||
+ net.minecraftforge.logging.CrashReportExtender.extendSystemReport(f_178624_);
|
||||
this.f_178624_.m_143525_(p_127520_);
|
||||
+ net.minecraftforge.logging.CrashReportExtender.extendSystemReport(systemReport);
|
||||
this.systemReport.appendToCrashReportString(p_127520_);
|
||||
}
|
||||
|
||||
@@ -91,23 +_,13 @@
|
||||
throwable.setStackTrace(this.f_127501_.getStackTrace());
|
||||
throwable.setStackTrace(this.exception.getStackTrace());
|
||||
}
|
||||
|
||||
- String s;
|
||||
@@ -44,10 +44,10 @@
|
||||
+ return net.minecraftforge.logging.CrashReportExtender.generateEnhancedStackTrace(throwable);
|
||||
}
|
||||
|
||||
public String m_127526_() {
|
||||
public String getFriendlyReport() {
|
||||
StringBuilder stringbuilder = new StringBuilder();
|
||||
stringbuilder.append("---- Minecraft Crash Report ----\n");
|
||||
+ net.minecraftforge.logging.CrashReportExtender.addCrashReportHeader(stringbuilder, this);
|
||||
stringbuilder.append("// ");
|
||||
stringbuilder.append(m_127531_());
|
||||
stringbuilder.append(getErrorComment());
|
||||
stringbuilder.append("\n\n");
|
||||
@@ -4,35 +4,35 @@
|
||||
if (astacktraceelement.length <= 0) {
|
||||
return 0;
|
||||
} else {
|
||||
- this.f_128139_ = new StackTraceElement[astacktraceelement.length - 3 - p_128149_];
|
||||
- System.arraycopy(astacktraceelement, 3 + p_128149_, this.f_128139_, 0, this.f_128139_.length);
|
||||
- this.stackTrace = new StackTraceElement[astacktraceelement.length - 3 - p_128149_];
|
||||
- System.arraycopy(astacktraceelement, 3 + p_128149_, this.stackTrace, 0, this.stackTrace.length);
|
||||
+ int len = astacktraceelement.length - 3 - p_128149_;
|
||||
+ if (len <= 0) len = astacktraceelement.length;
|
||||
+ this.f_128139_ = new StackTraceElement[len];
|
||||
+ System.arraycopy(astacktraceelement, astacktraceelement.length - len, this.f_128139_, 0, this.f_128139_.length);
|
||||
return this.f_128139_.length;
|
||||
+ this.stackTrace = new StackTraceElement[len];
|
||||
+ System.arraycopy(astacktraceelement, astacktraceelement.length - len, this.stackTrace, 0, this.stackTrace.length);
|
||||
return this.stackTrace.length;
|
||||
}
|
||||
}
|
||||
@@ -147,17 +_,17 @@
|
||||
|
||||
if (this.f_128139_ != null && this.f_128139_.length > 0) {
|
||||
if (this.stackTrace != null && this.stackTrace.length > 0) {
|
||||
p_128169_.append("\nStacktrace:");
|
||||
-
|
||||
- for(StackTraceElement stacktraceelement : this.f_128139_) {
|
||||
- for(StackTraceElement stacktraceelement : this.stackTrace) {
|
||||
- p_128169_.append("\n\tat ");
|
||||
- p_128169_.append((Object)stacktraceelement);
|
||||
- }
|
||||
+ p_128169_.append(net.minecraftforge.logging.CrashReportExtender.generateEnhancedStackTrace(this.f_128139_));
|
||||
+ p_128169_.append(net.minecraftforge.logging.CrashReportExtender.generateEnhancedStackTrace(this.stackTrace));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public StackTraceElement[] m_128143_() {
|
||||
return this.f_128139_;
|
||||
public StackTraceElement[] getStacktrace() {
|
||||
return this.stackTrace;
|
||||
+ }
|
||||
+
|
||||
+ public void applyStackTrace(Throwable t) {
|
||||
+ this.f_128139_ = t.getStackTrace();
|
||||
+ this.stackTrace = t.getStackTrace();
|
||||
}
|
||||
|
||||
public static void m_178950_(CrashReportCategory p_178951_, LevelHeightAccessor p_178952_, BlockPos p_178953_, @Nullable BlockState p_178954_) {
|
||||
public static void populateBlockDetails(CrashReportCategory p_178951_, LevelHeightAccessor p_178952_, BlockPos p_178953_, @Nullable BlockState p_178954_) {
|
||||
@@ -5,6 +5,6 @@
|
||||
|
||||
static {
|
||||
+ if (System.getProperty("io.netty.leakDetection.level") == null) // Forge: allow level to be manually specified
|
||||
ResourceLeakDetector.setLevel(f_136180_);
|
||||
ResourceLeakDetector.setLevel(NETTY_LEAK_DETECTION);
|
||||
CommandSyntaxException.ENABLE_COMMAND_STACK_TRACES = false;
|
||||
CommandSyntaxException.BUILT_IN_EXCEPTIONS = new BrigadierExceptions();
|
||||
@@ -9,15 +9,15 @@
|
||||
+ @SuppressWarnings("unused") private static java.util.function.LongSupplier INNER_CLASS_SHIFT1 = new java.util.function.LongSupplier() { public long getAsLong() { return 0; } };
|
||||
+ @SuppressWarnings("unused") private static java.util.function.LongSupplier INNER_CLASS_SHIFT2 = new java.util.function.LongSupplier() { public long getAsLong() { return 0; } };
|
||||
+
|
||||
public static ExecutorService m_183991_() {
|
||||
return f_137444_;
|
||||
public static ExecutorService backgroundExecutor() {
|
||||
return BACKGROUND_EXECUTOR;
|
||||
}
|
||||
@@ -240,7 +_,7 @@
|
||||
try {
|
||||
type = DataFixers.m_14512_().getSchema(DataFixUtils.makeKey(SharedConstants.m_183709_().m_183476_().m_193006_())).getChoiceType(p_137552_, p_137553_);
|
||||
type = DataFixers.getDataFixer().getSchema(DataFixUtils.makeKey(SharedConstants.getCurrentVersion().getDataVersion().getVersion())).getChoiceType(p_137552_, p_137553_);
|
||||
} catch (IllegalArgumentException illegalargumentexception) {
|
||||
- f_137446_.error("No data fixer registered for {}", (Object)p_137553_);
|
||||
+ f_137446_.debug("No data fixer registered for {}", (Object)p_137553_);
|
||||
if (SharedConstants.f_136183_) {
|
||||
- LOGGER.error("No data fixer registered for {}", (Object)p_137553_);
|
||||
+ LOGGER.debug("No data fixer registered for {}", (Object)p_137553_);
|
||||
if (SharedConstants.IS_RUNNING_IN_IDE) {
|
||||
throw illegalargumentexception;
|
||||
}
|
||||
@@ -6,12 +6,12 @@
|
||||
|
||||
+ /** @deprecated Forge: use {@linkplain #fromJson(JsonObject, DeserializationContext, net.minecraftforge.common.crafting.conditions.ICondition.IContext) overload with context}. */
|
||||
+ @Deprecated
|
||||
public static Advancement m_294730_(JsonObject p_300691_, DeserializationContext p_300053_) {
|
||||
public static Advancement fromJson(JsonObject p_300691_, DeserializationContext p_300053_) {
|
||||
+ return fromJson(p_300691_, p_300053_, net.minecraftforge.common.crafting.conditions.ICondition.IContext.EMPTY);
|
||||
+ }
|
||||
+
|
||||
+ public static Advancement fromJson(JsonObject p_300691_, DeserializationContext p_300053_, net.minecraftforge.common.crafting.conditions.ICondition.IContext context) {
|
||||
+ //if ((p_300691_ = net.minecraftforge.common.crafting.ConditionalAdvancement.processConditional(p_300691_, context)) == null) return null;
|
||||
Optional<ResourceLocation> optional = p_300691_.has("parent") ? Optional.of(new ResourceLocation(GsonHelper.m_13906_(p_300691_, "parent"))) : Optional.empty();
|
||||
Optional<DisplayInfo> optional1 = p_300691_.has("display") ? Optional.of(DisplayInfo.m_14981_(GsonHelper.m_13930_(p_300691_, "display"))) : Optional.empty();
|
||||
AdvancementRewards advancementrewards = p_300691_.has("rewards") ? AdvancementRewards.m_9991_(GsonHelper.m_13930_(p_300691_, "rewards")) : AdvancementRewards.f_9978_;
|
||||
Optional<ResourceLocation> optional = p_300691_.has("parent") ? Optional.of(new ResourceLocation(GsonHelper.getAsString(p_300691_, "parent"))) : Optional.empty();
|
||||
Optional<DisplayInfo> optional1 = p_300691_.has("display") ? Optional.of(DisplayInfo.fromJson(GsonHelper.getAsJsonObject(p_300691_, "display"))) : Optional.empty();
|
||||
AdvancementRewards advancementrewards = p_300691_.has("rewards") ? AdvancementRewards.deserialize(GsonHelper.getAsJsonObject(p_300691_, "rewards")) : AdvancementRewards.EMPTY;
|
||||
@@ -2,10 +2,10 @@
|
||||
+++ b/net/minecraft/advancements/AdvancementRewards.java
|
||||
@@ -43,7 +_,7 @@
|
||||
|
||||
public void m_9989_(ServerPlayer p_9990_) {
|
||||
p_9990_.m_6756_(this.f_9979_);
|
||||
- LootParams lootparams = (new LootParams.Builder(p_9990_.m_284548_())).m_287286_(LootContextParams.f_81455_, p_9990_).m_287286_(LootContextParams.f_81460_, p_9990_.m_20182_()).m_287235_(LootContextParamSets.f_81418_);
|
||||
+ LootParams lootparams = (new LootParams.Builder(p_9990_.m_284548_())).m_287286_(LootContextParams.f_81455_, p_9990_).m_287286_(LootContextParams.f_81460_, p_9990_.m_20182_()).m_287239_(p_9990_.m_36336_()).m_287235_(LootContextParamSets.f_81418_); // Forge: Add luck to LootContext
|
||||
public void grant(ServerPlayer p_9990_) {
|
||||
p_9990_.giveExperiencePoints(this.experience);
|
||||
- LootParams lootparams = (new LootParams.Builder(p_9990_.serverLevel())).withParameter(LootContextParams.THIS_ENTITY, p_9990_).withParameter(LootContextParams.ORIGIN, p_9990_.position()).create(LootContextParamSets.ADVANCEMENT_REWARD);
|
||||
+ LootParams lootparams = (new LootParams.Builder(p_9990_.serverLevel())).withParameter(LootContextParams.THIS_ENTITY, p_9990_).withParameter(LootContextParams.ORIGIN, p_9990_.position()).withLuck(p_9990_.getLuck()).create(LootContextParamSets.ADVANCEMENT_REWARD); // Forge: Add luck to LootContext
|
||||
boolean flag = false;
|
||||
|
||||
for(ResourceLocation resourcelocation : this.f_9980_) {
|
||||
for(ResourceLocation resourcelocation : this.loot) {
|
||||
@@ -3,9 +3,9 @@
|
||||
@@ -50,7 +_,7 @@
|
||||
return false;
|
||||
} else {
|
||||
if (!this.f_45033_.isEmpty()) {
|
||||
- Map<Enchantment, Integer> map = EnchantmentHelper.m_44882_(p_45050_.m_41785_());
|
||||
if (!this.enchantments.isEmpty()) {
|
||||
- Map<Enchantment, Integer> map = EnchantmentHelper.deserializeEnchantments(p_45050_.getEnchantmentTags());
|
||||
+ Map<Enchantment, Integer> map = p_45050_.getAllEnchantments();
|
||||
|
||||
for(EnchantmentPredicate enchantmentpredicate : this.f_45033_) {
|
||||
if (!enchantmentpredicate.m_30476_(map)) {
|
||||
for(EnchantmentPredicate enchantmentpredicate : this.enchantments) {
|
||||
if (!enchantmentpredicate.containedIn(map)) {
|
||||
@@ -1,21 +1,21 @@
|
||||
--- a/net/minecraft/client/Camera.java
|
||||
+++ b/net/minecraft/client/Camera.java
|
||||
@@ -206,6 +_,18 @@
|
||||
this.f_90549_ = false;
|
||||
this.initialized = false;
|
||||
}
|
||||
|
||||
+ public void setAnglesInternal(float yaw, float pitch) {
|
||||
+ this.f_90558_ = yaw;
|
||||
+ this.f_90557_ = pitch;
|
||||
+ this.yRot = yaw;
|
||||
+ this.xRot = pitch;
|
||||
+ }
|
||||
+
|
||||
+ public net.minecraft.world.level.block.state.BlockState getBlockAtCamera() {
|
||||
+ if (!this.f_90549_)
|
||||
+ return net.minecraft.world.level.block.Blocks.f_50016_.m_49966_();
|
||||
+ if (!this.initialized)
|
||||
+ return net.minecraft.world.level.block.Blocks.AIR.defaultBlockState();
|
||||
+ else
|
||||
+ return this.f_90550_.m_8055_(this.f_90553_).getStateAtViewpoint(this.f_90550_, this.f_90553_, this.f_90552_);
|
||||
+ return this.level.getBlockState(this.blockPosition).getStateAtViewpoint(this.level, this.blockPosition, this.position);
|
||||
+ }
|
||||
+
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public static class NearPlane {
|
||||
final Vec3 f_167687_;
|
||||
final Vec3 forward;
|
||||
@@ -1,20 +1,20 @@
|
||||
--- a/net/minecraft/client/ClientRecipeBook.java
|
||||
+++ b/net/minecraft/client/ClientRecipeBook.java
|
||||
@@ -56,7 +_,7 @@
|
||||
Recipe<?> recipe = recipeholder.f_291008_();
|
||||
if (!recipe.m_5598_() && !recipe.m_142505_()) {
|
||||
RecipeBookCategories recipebookcategories = m_90646_(recipeholder);
|
||||
- String s = recipe.m_6076_();
|
||||
+ String s = recipe.m_6076_().isEmpty() ? recipeholder.f_291676_().toString() : recipe.m_6076_(); // FORGE: Group value defaults to the recipe's ID if the recipe's explicit group is empty.
|
||||
Recipe<?> recipe = recipeholder.value();
|
||||
if (!recipe.isSpecial() && !recipe.isIncomplete()) {
|
||||
RecipeBookCategories recipebookcategories = getCategory(recipeholder);
|
||||
- String s = recipe.getGroup();
|
||||
+ String s = recipe.getGroup().isEmpty() ? recipeholder.id().toString() : recipe.getGroup(); // FORGE: Group value defaults to the recipe's ID if the recipe's explicit group is empty.
|
||||
if (s.isEmpty()) {
|
||||
map.computeIfAbsent(recipebookcategories, (p_90645_) -> {
|
||||
return Lists.newArrayList();
|
||||
@@ -144,6 +_,8 @@
|
||||
} else if (recipetype == RecipeType.f_44113_) {
|
||||
} else if (recipetype == RecipeType.SMITHING) {
|
||||
return RecipeBookCategories.SMITHING;
|
||||
} else {
|
||||
+ RecipeBookCategories categories = net.minecraftforge.client.RecipeBookManager.findCategories((RecipeType) recipetype, p_299041_);
|
||||
+ if (categories != null) return categories;
|
||||
f_90618_.warn("Unknown recipe category: {}/{}", LogUtils.defer(() -> {
|
||||
return BuiltInRegistries.f_256990_.m_7981_(recipe.m_6671_());
|
||||
}), LogUtils.defer(p_299041_::f_291676_));
|
||||
LOGGER.warn("Unknown recipe category: {}/{}", LogUtils.defer(() -> {
|
||||
return BuiltInRegistries.RECIPE_TYPE.getKey(recipe.getType());
|
||||
}), LogUtils.defer(p_299041_::id));
|
||||
@@ -6,58 +6,58 @@
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
-public class KeyMapping implements Comparable<KeyMapping> {
|
||||
+public class KeyMapping implements Comparable<KeyMapping>, net.minecraftforge.client.extensions.IForgeKeyMapping {
|
||||
private static final Map<String, KeyMapping> f_90809_ = Maps.newHashMap();
|
||||
- private static final Map<InputConstants.Key, KeyMapping> f_90810_ = Maps.newHashMap();
|
||||
+ private static final net.minecraftforge.client.settings.KeyMappingLookup f_90810_ = new net.minecraftforge.client.settings.KeyMappingLookup();
|
||||
private static final Set<String> f_90811_ = Sets.newHashSet();
|
||||
public static final String f_167805_ = "key.categories.movement";
|
||||
public static final String f_167806_ = "key.categories.misc";
|
||||
private static final Map<String, KeyMapping> ALL = Maps.newHashMap();
|
||||
- private static final Map<InputConstants.Key, KeyMapping> MAP = Maps.newHashMap();
|
||||
+ private static final net.minecraftforge.client.settings.KeyMappingLookup MAP = new net.minecraftforge.client.settings.KeyMappingLookup();
|
||||
private static final Set<String> CATEGORIES = Sets.newHashSet();
|
||||
public static final String CATEGORY_MOVEMENT = "key.categories.movement";
|
||||
public static final String CATEGORY_MISC = "key.categories.misc";
|
||||
@@ -41,7 +_,7 @@
|
||||
private int f_90818_;
|
||||
private int clickCount;
|
||||
|
||||
public static void m_90835_(InputConstants.Key p_90836_) {
|
||||
- KeyMapping keymapping = f_90810_.get(p_90836_);
|
||||
+ for (KeyMapping keymapping : f_90810_.getAll(p_90836_))
|
||||
public static void click(InputConstants.Key p_90836_) {
|
||||
- KeyMapping keymapping = MAP.get(p_90836_);
|
||||
+ for (KeyMapping keymapping : MAP.getAll(p_90836_))
|
||||
if (keymapping != null) {
|
||||
++keymapping.f_90818_;
|
||||
++keymapping.clickCount;
|
||||
}
|
||||
@@ -49,7 +_,7 @@
|
||||
}
|
||||
|
||||
public static void m_90837_(InputConstants.Key p_90838_, boolean p_90839_) {
|
||||
- KeyMapping keymapping = f_90810_.get(p_90838_);
|
||||
+ for (KeyMapping keymapping : f_90810_.getAll(p_90838_))
|
||||
public static void set(InputConstants.Key p_90838_, boolean p_90839_) {
|
||||
- KeyMapping keymapping = MAP.get(p_90838_);
|
||||
+ for (KeyMapping keymapping : MAP.getAll(p_90838_))
|
||||
if (keymapping != null) {
|
||||
keymapping.m_7249_(p_90839_);
|
||||
keymapping.setDown(p_90839_);
|
||||
}
|
||||
@@ -105,7 +_,7 @@
|
||||
}
|
||||
|
||||
public boolean m_90857_() {
|
||||
- return this.f_90817_;
|
||||
+ return this.f_90817_ && isConflictContextAndModifierActive();
|
||||
public boolean isDown() {
|
||||
- return this.isDown;
|
||||
+ return this.isDown && isConflictContextAndModifierActive();
|
||||
}
|
||||
|
||||
public String m_90858_() {
|
||||
public String getCategory() {
|
||||
@@ -139,7 +_,13 @@
|
||||
}
|
||||
|
||||
public int compareTo(KeyMapping p_90841_) {
|
||||
- return this.f_90815_.equals(p_90841_.f_90815_) ? I18n.m_118938_(this.f_90813_).compareTo(I18n.m_118938_(p_90841_.f_90813_)) : f_90812_.get(this.f_90815_).compareTo(f_90812_.get(p_90841_.f_90815_));
|
||||
+ if (this.f_90815_.equals(p_90841_.f_90815_)) return I18n.m_118938_(this.f_90813_).compareTo(I18n.m_118938_(p_90841_.f_90813_));
|
||||
+ Integer tCat = f_90812_.get(this.f_90815_);
|
||||
+ Integer oCat = f_90812_.get(p_90841_.f_90815_);
|
||||
- return this.category.equals(p_90841_.category) ? I18n.get(this.name).compareTo(I18n.get(p_90841_.name)) : CATEGORY_SORT_ORDER.get(this.category).compareTo(CATEGORY_SORT_ORDER.get(p_90841_.category));
|
||||
+ if (this.category.equals(p_90841_.category)) return I18n.get(this.name).compareTo(I18n.get(p_90841_.name));
|
||||
+ Integer tCat = CATEGORY_SORT_ORDER.get(this.category);
|
||||
+ Integer oCat = CATEGORY_SORT_ORDER.get(p_90841_.category);
|
||||
+ if (tCat == null && oCat != null) return 1;
|
||||
+ if (tCat != null && oCat == null) return -1;
|
||||
+ if (tCat == null && oCat == null) return I18n.m_118938_(this.f_90815_).compareTo(I18n.m_118938_(p_90841_.f_90815_));
|
||||
+ if (tCat == null && oCat == null) return I18n.get(this.category).compareTo(I18n.get(p_90841_.category));
|
||||
+ return tCat.compareTo(oCat);
|
||||
}
|
||||
|
||||
public static Supplier<Component> m_90842_(String p_90843_) {
|
||||
public static Supplier<Component> createNameSupplier(String p_90843_) {
|
||||
@@ -150,6 +_,20 @@
|
||||
}
|
||||
|
||||
public boolean m_90850_(KeyMapping p_90851_) {
|
||||
public boolean same(KeyMapping p_90851_) {
|
||||
+ if (getKeyConflictContext().conflicts(p_90851_.getKeyConflictContext()) || p_90851_.getKeyConflictContext().conflicts(getKeyConflictContext())) {
|
||||
+ net.minecraftforge.client.settings.KeyModifier keyModifier = getKeyModifier();
|
||||
+ net.minecraftforge.client.settings.KeyModifier otherKeyModifier = p_90851_.getKeyModifier();
|
||||
@@ -72,27 +72,27 @@
|
||||
+ (keyModifier == net.minecraftforge.client.settings.KeyModifier.NONE || otherKeyModifier == net.minecraftforge.client.settings.KeyModifier.NONE));
|
||||
+ }
|
||||
+ }
|
||||
return this.f_90816_.equals(p_90851_.f_90816_);
|
||||
return this.key.equals(p_90851_.key);
|
||||
}
|
||||
|
||||
@@ -170,11 +_,13 @@
|
||||
}
|
||||
|
||||
public Component m_90863_() {
|
||||
+ return getKeyModifier().getCombinedName(f_90816_, () -> {
|
||||
return this.f_90816_.m_84875_();
|
||||
public Component getTranslatedKeyMessage() {
|
||||
+ return getKeyModifier().getCombinedName(key, () -> {
|
||||
return this.key.getDisplayName();
|
||||
+ });
|
||||
}
|
||||
|
||||
public boolean m_90864_() {
|
||||
- return this.f_90816_.equals(this.f_90814_);
|
||||
+ return this.f_90816_.equals(this.f_90814_) && getKeyModifier() == getDefaultKeyModifier();
|
||||
public boolean isDefault() {
|
||||
- return this.key.equals(this.defaultKey);
|
||||
+ return this.key.equals(this.defaultKey) && getKeyModifier() == getDefaultKeyModifier();
|
||||
}
|
||||
|
||||
public String m_90865_() {
|
||||
public String saveString() {
|
||||
@@ -184,4 +_,84 @@
|
||||
public void m_7249_(boolean p_90846_) {
|
||||
this.f_90817_ = p_90846_;
|
||||
public void setDown(boolean p_90846_) {
|
||||
this.isDown = p_90846_;
|
||||
}
|
||||
+
|
||||
+ /****************** Forge Start *****************************/
|
||||
@@ -104,7 +104,7 @@
|
||||
+ * Convenience constructor for creating KeyBindings with keyConflictContext set.
|
||||
+ */
|
||||
+ public KeyMapping(String description, net.minecraftforge.client.settings.IKeyConflictContext keyConflictContext, final InputConstants.Type inputType, final int keyCode, String category) {
|
||||
+ this(description, keyConflictContext, inputType.m_84895_(keyCode), category);
|
||||
+ this(description, keyConflictContext, inputType.getOrCreate(keyCode), category);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
@@ -118,30 +118,30 @@
|
||||
+ * Convenience constructor for creating KeyBindings with keyConflictContext and keyModifier set.
|
||||
+ */
|
||||
+ public KeyMapping(String description, net.minecraftforge.client.settings.IKeyConflictContext keyConflictContext, net.minecraftforge.client.settings.KeyModifier keyModifier, final InputConstants.Type inputType, final int keyCode, String category) {
|
||||
+ this(description, keyConflictContext, keyModifier, inputType.m_84895_(keyCode), category);
|
||||
+ this(description, keyConflictContext, keyModifier, inputType.getOrCreate(keyCode), category);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Convenience constructor for creating KeyBindings with keyConflictContext and keyModifier set.
|
||||
+ */
|
||||
+ public KeyMapping(String description, net.minecraftforge.client.settings.IKeyConflictContext keyConflictContext, net.minecraftforge.client.settings.KeyModifier keyModifier, InputConstants.Key keyCode, String category) {
|
||||
+ this.f_90813_ = description;
|
||||
+ this.f_90816_ = keyCode;
|
||||
+ this.f_90814_ = keyCode;
|
||||
+ this.f_90815_ = category;
|
||||
+ this.name = description;
|
||||
+ this.key = keyCode;
|
||||
+ this.defaultKey = keyCode;
|
||||
+ this.category = category;
|
||||
+ this.keyConflictContext = keyConflictContext;
|
||||
+ this.keyModifier = keyModifier;
|
||||
+ this.keyModifierDefault = keyModifier;
|
||||
+ if (this.keyModifier.matches(keyCode))
|
||||
+ this.keyModifier = net.minecraftforge.client.settings.KeyModifier.NONE;
|
||||
+ f_90809_.put(description, this);
|
||||
+ f_90810_.put(keyCode, this);
|
||||
+ f_90811_.add(category);
|
||||
+ ALL.put(description, this);
|
||||
+ MAP.put(keyCode, this);
|
||||
+ CATEGORIES.add(category);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public InputConstants.Key getKey() {
|
||||
+ return this.f_90816_;
|
||||
+ return this.key;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
@@ -166,12 +166,12 @@
|
||||
+
|
||||
+ @Override
|
||||
+ public void setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier keyModifier, InputConstants.Key keyCode) {
|
||||
+ this.f_90816_ = keyCode;
|
||||
+ this.key = keyCode;
|
||||
+ if (keyModifier.matches(keyCode))
|
||||
+ keyModifier = net.minecraftforge.client.settings.KeyModifier.NONE;
|
||||
+ f_90810_.remove(this);
|
||||
+ MAP.remove(this);
|
||||
+ this.keyModifier = keyModifier;
|
||||
+ f_90810_.put(keyCode, this);
|
||||
+ MAP.put(keyCode, this);
|
||||
+ }
|
||||
+ /****************** Forge End *****************************/
|
||||
}
|
||||
@@ -4,42 +4,42 @@
|
||||
}
|
||||
}
|
||||
|
||||
- if (p_90897_ == 1 && (!(this.f_90867_.f_91080_ instanceof KeyBindsScreen) || ((KeyBindsScreen)screen).f_193976_ <= Util.m_137550_() - 20L)) {
|
||||
- if (p_90897_ == 1 && (!(this.minecraft.screen instanceof KeyBindsScreen) || ((KeyBindsScreen)screen).lastKeySelection <= Util.getMillis() - 20L)) {
|
||||
+
|
||||
+ if ((!(this.f_90867_.f_91080_ instanceof KeyBindsScreen) || ((KeyBindsScreen)screen).f_193976_ <= Util.m_137550_() - 20L)) {
|
||||
+ if ((!(this.minecraft.screen instanceof KeyBindsScreen) || ((KeyBindsScreen)screen).lastKeySelection <= Util.getMillis() - 20L)) {
|
||||
+ if (p_90897_ == 1) {
|
||||
if (this.f_90867_.f_91066_.f_92105_.m_90832_(p_90895_, p_90896_)) {
|
||||
this.f_90867_.m_91268_().m_85438_();
|
||||
this.f_90867_.f_91066_.m_231829_().m_231514_(this.f_90867_.m_91268_().m_85440_());
|
||||
if (this.minecraft.options.keyFullscreen.matches(p_90895_, p_90896_)) {
|
||||
this.minecraft.getWindow().toggleFullScreen();
|
||||
this.minecraft.options.fullscreen().set(this.minecraft.getWindow().isFullscreen());
|
||||
@@ -358,6 +_,8 @@
|
||||
});
|
||||
return;
|
||||
}
|
||||
+ } else if (p_90897_ == 0 /*GLFW_RELEASE*/ && this.f_90867_.f_91080_ instanceof KeyBindsScreen)
|
||||
+ ((KeyBindsScreen)this.f_90867_.f_91080_).f_193975_ = null; //Forge: Unset pure modifiers.
|
||||
+ } else if (p_90897_ == 0 /*GLFW_RELEASE*/ && this.minecraft.screen instanceof KeyBindsScreen)
|
||||
+ ((KeyBindsScreen)this.minecraft.screen).selectedKey = null; //Forge: Unset pure modifiers.
|
||||
}
|
||||
|
||||
if (this.f_90867_.m_240477_().m_93316_() && this.f_90867_.f_91066_.m_292959_().m_231551_()) {
|
||||
if (this.minecraft.getNarrator().isActive() && this.minecraft.options.narratorHotkey().get()) {
|
||||
@@ -380,11 +_,15 @@
|
||||
Screen.m_96579_(() -> {
|
||||
Screen.wrapScreenError(() -> {
|
||||
if (p_90897_ != 1 && p_90897_ != 2) {
|
||||
if (p_90897_ == 0) {
|
||||
- aboolean[0] = screen.m_7920_(p_90895_, p_90896_, p_90898_);
|
||||
- aboolean[0] = screen.keyReleased(p_90895_, p_90896_, p_90898_);
|
||||
+ aboolean[0] = net.minecraftforge.client.ForgeHooksClient.onScreenKeyReleasedPre(screen, p_90895_, p_90896_, p_90898_);
|
||||
+ if (!aboolean[0]) aboolean[0] = screen.m_7920_(p_90895_, p_90896_, p_90898_);
|
||||
+ if (!aboolean[0]) aboolean[0] = screen.keyReleased(p_90895_, p_90896_, p_90898_);
|
||||
+ if (!aboolean[0]) aboolean[0] = net.minecraftforge.client.ForgeHooksClient.onScreenKeyReleasedPost(screen, p_90895_, p_90896_, p_90898_);
|
||||
}
|
||||
} else {
|
||||
screen.m_169416_();
|
||||
- aboolean[0] = screen.m_7933_(p_90895_, p_90896_, p_90898_);
|
||||
screen.afterKeyboardAction();
|
||||
- aboolean[0] = screen.keyPressed(p_90895_, p_90896_, p_90898_);
|
||||
+ aboolean[0] = net.minecraftforge.client.ForgeHooksClient.onScreenKeyPressedPre(screen, p_90895_, p_90896_, p_90898_);
|
||||
+ if (!aboolean[0]) aboolean[0] = screen.m_7933_(p_90895_, p_90896_, p_90898_);
|
||||
+ if (!aboolean[0]) aboolean[0] = screen.keyPressed(p_90895_, p_90896_, p_90898_);
|
||||
+ if (!aboolean[0]) aboolean[0] = net.minecraftforge.client.ForgeHooksClient.onScreenKeyPressedPost(screen, p_90895_, p_90896_, p_90898_);
|
||||
}
|
||||
|
||||
}, "keyPressed event handler", screen.getClass().getCanonicalName());
|
||||
@@ -443,22 +_,26 @@
|
||||
this.f_90867_.m_91111_(p_90895_ - 48);
|
||||
this.minecraft.debugFpsMeterKeyPress(p_90895_ - 48);
|
||||
}
|
||||
}
|
||||
-
|
||||
@@ -47,24 +47,24 @@
|
||||
}
|
||||
}
|
||||
|
||||
private void m_90889_(long p_90890_, int p_90891_, int p_90892_) {
|
||||
if (p_90890_ == this.f_90867_.m_91268_().m_85439_()) {
|
||||
- GuiEventListener guieventlistener = this.f_90867_.f_91080_;
|
||||
+ Screen guieventlistener = this.f_90867_.f_91080_;
|
||||
if (guieventlistener != null && this.f_90867_.m_91265_() == null) {
|
||||
private void charTyped(long p_90890_, int p_90891_, int p_90892_) {
|
||||
if (p_90890_ == this.minecraft.getWindow().getWindow()) {
|
||||
- GuiEventListener guieventlistener = this.minecraft.screen;
|
||||
+ Screen guieventlistener = this.minecraft.screen;
|
||||
if (guieventlistener != null && this.minecraft.getOverlay() == null) {
|
||||
if (Character.charCount(p_90891_) == 1) {
|
||||
Screen.m_96579_(() -> {
|
||||
- guieventlistener.m_5534_((char)p_90891_, p_90892_);
|
||||
Screen.wrapScreenError(() -> {
|
||||
- guieventlistener.charTyped((char)p_90891_, p_90892_);
|
||||
+ if (net.minecraftforge.client.ForgeHooksClient.onScreenCharTypedPre(guieventlistener, (char)p_90891_, p_90892_)) return;
|
||||
+ if (guieventlistener.m_5534_((char)p_90891_, p_90892_)) return;
|
||||
+ if (guieventlistener.charTyped((char)p_90891_, p_90892_)) return;
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onScreenCharTypedPost(guieventlistener, (char)p_90891_, p_90892_);
|
||||
}, "charTyped event handler", guieventlistener.getClass().getCanonicalName());
|
||||
} else {
|
||||
for(char c0 : Character.toChars(p_90891_)) {
|
||||
Screen.m_96579_(() -> {
|
||||
- guieventlistener.m_5534_(c0, p_90892_);
|
||||
Screen.wrapScreenError(() -> {
|
||||
- guieventlistener.charTyped(c0, p_90892_);
|
||||
+ if (net.minecraftforge.client.ForgeHooksClient.onScreenCharTypedPre(guieventlistener, c0, p_90892_)) return;
|
||||
+ if (guieventlistener.m_5534_(c0, p_90892_)) return;
|
||||
+ if (guieventlistener.charTyped(c0, p_90892_)) return;
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onScreenCharTypedPost(guieventlistener, c0, p_90892_);
|
||||
}, "charTyped event handler", guieventlistener.getClass().getCanonicalName());
|
||||
}
|
||||
|
||||
@@ -6,95 +6,95 @@
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
-public class Minecraft extends ReentrantBlockableEventLoop<Runnable> implements WindowEventHandler {
|
||||
+public class Minecraft extends ReentrantBlockableEventLoop<Runnable> implements WindowEventHandler, net.minecraftforge.client.extensions.IForgeMinecraft {
|
||||
static Minecraft f_90981_;
|
||||
private static final Logger f_90982_ = LogUtils.getLogger();
|
||||
public static final boolean f_91002_ = Util.m_137581_() == Util.OS.OSX;
|
||||
static Minecraft instance;
|
||||
private static final Logger LOGGER = LogUtils.getLogger();
|
||||
public static final boolean ON_OSX = Util.getPlatform() == Util.OS.OSX;
|
||||
@@ -421,7 +_,6 @@
|
||||
}, Util.m_183992_());
|
||||
this.f_193584_ = this.m_193585_(this.f_231338_, p_91084_);
|
||||
f_90982_.info("Setting user: {}", (Object)this.f_90998_.m_92546_());
|
||||
- f_90982_.debug("(Session ID is {})", (Object)this.f_90998_.m_92544_());
|
||||
this.f_91033_ = p_91084_.f_101908_.f_101926_;
|
||||
this.f_91034_ = !p_91084_.f_101908_.f_101929_;
|
||||
this.f_91035_ = !p_91084_.f_101908_.f_101930_;
|
||||
}, Util.ioPool());
|
||||
this.userApiService = this.createUserApiService(this.authenticationService, p_91084_);
|
||||
LOGGER.info("Setting user: {}", (Object)this.user.getName());
|
||||
- LOGGER.debug("(Session ID is {})", (Object)this.user.getSessionId());
|
||||
this.demo = p_91084_.game.demo;
|
||||
this.allowsMultiplayer = !p_91084_.game.disableMultiplayer;
|
||||
this.allowsChat = !p_91084_.game.disableChat;
|
||||
@@ -457,15 +_,15 @@
|
||||
}
|
||||
|
||||
this.f_90990_.m_85380_(this.f_91066_.m_232035_().m_231551_());
|
||||
this.window.setFramerateLimit(this.options.framerateLimit().get());
|
||||
+ // FORGE: Move mouse and keyboard handler setup further below
|
||||
this.f_91067_ = new MouseHandler(this);
|
||||
- this.f_91067_.m_91524_(this.f_90990_.m_85439_());
|
||||
this.f_91068_ = new KeyboardHandler(this);
|
||||
- this.f_91068_.m_90887_(this.f_90990_.m_85439_());
|
||||
RenderSystem.initRenderer(this.f_91066_.f_92035_, false);
|
||||
this.f_91042_ = new MainTarget(this.f_90990_.m_85441_(), this.f_90990_.m_85442_());
|
||||
this.f_91042_.m_83931_(0.0F, 0.0F, 0.0F, 0.0F);
|
||||
this.f_91042_.m_83954_(f_91002_);
|
||||
this.f_91036_ = new ReloadableResourceManager(PackType.CLIENT_RESOURCES);
|
||||
+ net.minecraftforge.client.loading.ClientModLoader.begin(this, this.f_91038_, this.f_91036_);
|
||||
this.f_91038_.m_10506_();
|
||||
this.f_91066_.m_92145_(this.f_91038_);
|
||||
this.f_91039_ = new LanguageManager(this.f_91066_.f_92075_);
|
||||
this.mouseHandler = new MouseHandler(this);
|
||||
- this.mouseHandler.setup(this.window.getWindow());
|
||||
this.keyboardHandler = new KeyboardHandler(this);
|
||||
- this.keyboardHandler.setup(this.window.getWindow());
|
||||
RenderSystem.initRenderer(this.options.glDebugVerbosity, false);
|
||||
this.mainRenderTarget = new MainTarget(this.window.getWidth(), this.window.getHeight());
|
||||
this.mainRenderTarget.setClearColor(0.0F, 0.0F, 0.0F, 0.0F);
|
||||
this.mainRenderTarget.clear(ON_OSX);
|
||||
this.resourceManager = new ReloadableResourceManager(PackType.CLIENT_RESOURCES);
|
||||
+ net.minecraftforge.client.loading.ClientModLoader.begin(this, this.resourcePackRepository, this.resourceManager);
|
||||
this.resourcePackRepository.reload();
|
||||
this.options.loadSelectedResourcePacks(this.resourcePackRepository);
|
||||
this.languageManager = new LanguageManager(this.options.languageCode);
|
||||
@@ -511,10 +_,13 @@
|
||||
this.f_91063_ = new GameRenderer(this, this.f_90994_.m_234586_(), this.f_91036_, this.f_90993_);
|
||||
this.f_91036_.m_7217_(this.f_91063_.m_247116_());
|
||||
this.f_91060_ = new LevelRenderer(this, this.f_90994_, this.f_167845_, this.f_90993_);
|
||||
this.gameRenderer = new GameRenderer(this, this.entityRenderDispatcher.getItemInHandRenderer(), this.resourceManager, this.renderBuffers);
|
||||
this.resourceManager.registerReloadListener(this.gameRenderer.createReloadListener());
|
||||
this.levelRenderer = new LevelRenderer(this, this.entityRenderDispatcher, this.blockEntityRenderDispatcher, this.renderBuffers);
|
||||
+ net.minecraftforge.fml.ModLoader.get().postEvent(new net.minecraftforge.client.event.RenderLevelStageEvent.RegisterStageEvent());
|
||||
this.f_91036_.m_7217_(this.f_91060_);
|
||||
- this.m_91271_();
|
||||
this.resourceManager.registerReloadListener(this.levelRenderer);
|
||||
- this.createSearchTrees();
|
||||
+ // Forge: We delay this to allow registration of modded creative mode tabs
|
||||
+ // this.createSearchTrees();
|
||||
this.f_91036_.m_7217_(this.f_90997_);
|
||||
this.f_91061_ = new ParticleEngine(this.f_91073_, this.f_90987_);
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onRegisterParticleProviders(this.f_91061_);
|
||||
this.f_91036_.m_7217_(this.f_91061_);
|
||||
this.f_91053_ = new PaintingTextureManager(this.f_90987_);
|
||||
this.f_91036_.m_7217_(this.f_91053_);
|
||||
this.resourceManager.registerReloadListener(this.searchRegistry);
|
||||
this.particleEngine = new ParticleEngine(this.level, this.textureManager);
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onRegisterParticleProviders(this.particleEngine);
|
||||
this.resourceManager.registerReloadListener(this.particleEngine);
|
||||
this.paintingTextures = new PaintingTextureManager(this.textureManager);
|
||||
this.resourceManager.registerReloadListener(this.paintingTextures);
|
||||
@@ -525,7 +_,10 @@
|
||||
this.f_91047_ = new GpuWarnlistManager();
|
||||
this.f_91036_.m_7217_(this.f_91047_);
|
||||
this.f_91036_.m_7217_(this.f_205120_);
|
||||
- this.f_91065_ = new Gui(this, this.f_90995_);
|
||||
+ this.f_91065_ = new net.minecraftforge.client.gui.overlay.ForgeGui(this);
|
||||
this.gpuWarnlistManager = new GpuWarnlistManager();
|
||||
this.resourceManager.registerReloadListener(this.gpuWarnlistManager);
|
||||
this.resourceManager.registerReloadListener(this.regionalCompliancies);
|
||||
- this.gui = new Gui(this, this.itemRenderer);
|
||||
+ this.gui = new net.minecraftforge.client.gui.overlay.ForgeGui(this);
|
||||
+ // FORGE: Moved keyboard and mouse handler setup below ingame gui creation to prevent NPEs in them.
|
||||
+ this.f_91067_.m_91524_(this.f_90990_.m_85439_());
|
||||
+ this.f_91068_.m_90887_(this.f_90990_.m_85439_());
|
||||
this.f_91064_ = new DebugRenderer(this);
|
||||
RealmsClient realmsclient = RealmsClient.m_239151_(this);
|
||||
this.f_238717_ = new RealmsDataFetcher(realmsclient);
|
||||
+ this.mouseHandler.setup(this.window.getWindow());
|
||||
+ this.keyboardHandler.setup(this.window.getWindow());
|
||||
this.debugRenderer = new DebugRenderer(this);
|
||||
RealmsClient realmsclient = RealmsClient.create(this);
|
||||
this.realmsDataFetcher = new RealmsDataFetcher(realmsclient);
|
||||
@@ -545,6 +_,7 @@
|
||||
TinyFileDialogs.tinyfd_messageBox("Minecraft", stringbuilder.toString(), "ok", "error", false);
|
||||
}
|
||||
|
||||
+ net.minecraftforge.client.ForgeHooksClient.initClientHooks(this, this.f_91036_);
|
||||
this.f_90990_.m_85409_(this.f_91066_.m_231817_().m_231551_());
|
||||
this.f_90990_.m_85424_(this.f_91066_.m_232123_().m_231551_());
|
||||
this.f_90990_.m_85426_();
|
||||
+ net.minecraftforge.client.ForgeHooksClient.initClientHooks(this, this.resourceManager);
|
||||
this.window.updateVsync(this.options.enableVsync().get());
|
||||
this.window.updateRawMouseInput(this.options.rawMouseInput().get());
|
||||
this.window.setDefaultErrorCallback();
|
||||
@@ -564,7 +_,7 @@
|
||||
ReloadInstance reloadinstance = this.f_91036_.m_142463_(Util.m_183991_(), this, f_90983_, list);
|
||||
GameLoadTimesEvent.f_285635_.m_285833_(TelemetryProperty.f_285629_);
|
||||
Minecraft.GameLoadCookie minecraft$gameloadcookie = new Minecraft.GameLoadCookie(realmsclient, p_91084_.f_278410_);
|
||||
- this.m_91150_(new LoadingOverlay(this, reloadinstance, (p_296164_) -> {
|
||||
+ this.m_91150_(net.minecraftforge.fml.loading.ImmediateWindowHandler.<LoadingOverlay>loadingOverlay(() -> this, () -> reloadinstance, (p_296164_) -> {
|
||||
Util.m_137521_(p_296164_, (p_296162_) -> {
|
||||
this.m_91239_(p_296162_, minecraft$gameloadcookie);
|
||||
ReloadInstance reloadinstance = this.resourceManager.createReload(Util.backgroundExecutor(), this, RESOURCE_RELOAD_INITIAL_TASK, list);
|
||||
GameLoadTimesEvent.INSTANCE.beginStep(TelemetryProperty.LOAD_TIME_LOADING_OVERLAY_MS);
|
||||
Minecraft.GameLoadCookie minecraft$gameloadcookie = new Minecraft.GameLoadCookie(realmsclient, p_91084_.quickPlay);
|
||||
- this.setOverlay(new LoadingOverlay(this, reloadinstance, (p_296164_) -> {
|
||||
+ this.setOverlay(net.minecraftforge.fml.loading.ImmediateWindowHandler.<LoadingOverlay>loadingOverlay(() -> this, () -> reloadinstance, (p_296164_) -> {
|
||||
Util.ifElse(p_296164_, (p_296162_) -> {
|
||||
this.rollbackResourcePacks(p_296162_, minecraft$gameloadcookie);
|
||||
}, () -> {
|
||||
@@ -574,8 +_,10 @@
|
||||
|
||||
this.f_167847_.m_168556_();
|
||||
this.m_293750_(minecraft$gameloadcookie);
|
||||
this.reloadStateTracker.finishReload();
|
||||
this.onResourceLoadFinished(minecraft$gameloadcookie);
|
||||
+ if (net.minecraftforge.client.loading.ClientModLoader.completeModLoading())
|
||||
+ return; // Do not overwrite the error screen if there are errors
|
||||
});
|
||||
- }, false));
|
||||
+ }, false).get());
|
||||
this.f_278504_ = QuickPlayLog.m_278648_(p_91084_.f_278410_.f_278493_());
|
||||
this.quickPlayLog = QuickPlayLog.of(p_91084_.quickPlay.path());
|
||||
}
|
||||
|
||||
@@ -673,7 +_,7 @@
|
||||
private String m_91270_() {
|
||||
private String createTitle() {
|
||||
StringBuilder stringbuilder = new StringBuilder("Minecraft");
|
||||
if (m_193589_().m_184597_()) {
|
||||
if (checkModStatus().shouldReportAsModified()) {
|
||||
- stringbuilder.append("*");
|
||||
+ stringbuilder.append(' ').append(net.minecraftforge.forge.snapshots.ForgeSnapshotsMod.BRANDING_NAME).append('*');
|
||||
}
|
||||
@@ -102,77 +102,77 @@
|
||||
stringbuilder.append(" ");
|
||||
@@ -698,6 +_,8 @@
|
||||
|
||||
private UserApiService m_193585_(YggdrasilAuthenticationService p_193586_, GameConfig p_193587_) {
|
||||
private UserApiService createUserApiService(YggdrasilAuthenticationService p_193586_, GameConfig p_193587_) {
|
||||
try {
|
||||
+ if ("0".equals(p_193587_.f_101905_.f_101942_.m_92547_())) // Forge: We use "0" in dev. Short circuit to stop exception spam.
|
||||
+ if ("0".equals(p_193587_.user.user.getAccessToken())) // Forge: We use "0" in dev. Short circuit to stop exception spam.
|
||||
+ return UserApiService.OFFLINE;
|
||||
return p_193586_.createUserApiService(p_193587_.f_101905_.f_101942_.m_92547_());
|
||||
return p_193586_.createUserApiService(p_193587_.user.user.getAccessToken());
|
||||
} catch (AuthenticationException authenticationexception) {
|
||||
f_90982_.error("Failed to verify authentication", (Throwable)authenticationexception);
|
||||
LOGGER.error("Failed to verify authentication", (Throwable)authenticationexception);
|
||||
@@ -710,7 +_,7 @@
|
||||
}
|
||||
|
||||
private void m_91239_(Throwable p_91240_, @Nullable Minecraft.GameLoadCookie p_299515_) {
|
||||
- if (this.f_91038_.m_10523_().size() > 1) {
|
||||
+ if (this.f_91038_.m_10524_().stream().anyMatch(e -> !e.m_10449_())) { //Forge: This caused infinite loop if any resource packs are forced. Such as mod resources. So check if we can disable any.
|
||||
this.m_91241_(p_91240_, (Component)null, p_299515_);
|
||||
private void rollbackResourcePacks(Throwable p_91240_, @Nullable Minecraft.GameLoadCookie p_299515_) {
|
||||
- if (this.resourcePackRepository.getSelectedIds().size() > 1) {
|
||||
+ if (this.resourcePackRepository.getSelectedPacks().stream().anyMatch(e -> !e.isRequired())) { //Forge: This caused infinite loop if any resource packs are forced. Such as mod resources. So check if we can disable any.
|
||||
this.clearResourcePacksOnError(p_91240_, (Component)null, p_299515_);
|
||||
} else {
|
||||
Util.m_137559_(p_91240_);
|
||||
Util.throwAsRuntime(p_91240_);
|
||||
@@ -802,7 +_,10 @@
|
||||
}
|
||||
|
||||
public void m_91271_() {
|
||||
- this.f_90997_.m_235232_(SearchRegistry.f_119941_, (p_231451_) -> {
|
||||
public void createSearchTrees() {
|
||||
- this.searchRegistry.register(SearchRegistry.CREATIVE_NAMES, (p_231451_) -> {
|
||||
+ var nameSearchKeys = net.minecraftforge.client.CreativeModeTabSearchRegistry.getNameSearchKeys();
|
||||
+ var tagSearchKeys = net.minecraftforge.client.CreativeModeTabSearchRegistry.getTagSearchKeys();
|
||||
+ for (var nameSearchKey : nameSearchKeys.values())
|
||||
+ this.f_90997_.m_235232_(nameSearchKey, (p_231451_) -> {
|
||||
+ this.searchRegistry.register(nameSearchKey, (p_231451_) -> {
|
||||
return new FullTextSearchTree<>((p_210797_) -> {
|
||||
return p_210797_.m_41651_((Player)null, TooltipFlag.Default.f_256752_.m_257777_()).stream().map((p_231455_) -> {
|
||||
return ChatFormatting.m_126649_(p_231455_.getString()).trim();
|
||||
return p_210797_.getTooltipLines((Player)null, TooltipFlag.Default.NORMAL.asCreative()).stream().map((p_231455_) -> {
|
||||
return ChatFormatting.stripFormatting(p_231455_.getString()).trim();
|
||||
@@ -813,7 +_,8 @@
|
||||
return Stream.of(BuiltInRegistries.f_257033_.m_7981_(p_91317_.m_41720_()));
|
||||
return Stream.of(BuiltInRegistries.ITEM.getKey(p_91317_.getItem()));
|
||||
}, p_231451_);
|
||||
});
|
||||
- this.f_90997_.m_235232_(SearchRegistry.f_119942_, (p_231430_) -> {
|
||||
- this.searchRegistry.register(SearchRegistry.CREATIVE_TAGS, (p_231430_) -> {
|
||||
+ for (var tagSearchKey : tagSearchKeys.values())
|
||||
+ this.f_90997_.m_235232_(tagSearchKey, (p_231430_) -> {
|
||||
+ this.searchRegistry.register(tagSearchKey, (p_231430_) -> {
|
||||
return new IdSearchTree<>((p_231353_) -> {
|
||||
return p_231353_.m_204131_().map(TagKey::f_203868_);
|
||||
return p_231353_.getTags().map(TagKey::location);
|
||||
}, p_231430_);
|
||||
@@ -833,9 +_,12 @@
|
||||
});
|
||||
}, p_301514_);
|
||||
});
|
||||
- CreativeModeTabs.m_258007_().m_257882_((p_255439_) -> {
|
||||
- this.m_231374_(SearchRegistry.f_119941_, p_255439_);
|
||||
- this.m_231374_(SearchRegistry.f_119942_, p_255439_);
|
||||
- CreativeModeTabs.searchTab().setSearchTreeBuilder((p_255439_) -> {
|
||||
- this.populateSearchTree(SearchRegistry.CREATIVE_NAMES, p_255439_);
|
||||
- this.populateSearchTree(SearchRegistry.CREATIVE_TAGS, p_255439_);
|
||||
+ nameSearchKeys.forEach((tab, nameSearchKey) -> {
|
||||
+ var tagSearchKey = tagSearchKeys.get(tab);
|
||||
+ tab.m_257882_(contents -> {
|
||||
+ this.m_231374_(nameSearchKey, contents);
|
||||
+ this.m_231374_(tagSearchKey, contents);
|
||||
+ tab.setSearchTreeBuilder(contents -> {
|
||||
+ this.populateSearchTree(nameSearchKey, contents);
|
||||
+ this.populateSearchTree(tagSearchKey, contents);
|
||||
+ });
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1018,10 +_,6 @@
|
||||
f_90982_.error("setScreen called from non-game thread");
|
||||
LOGGER.error("setScreen called from non-game thread");
|
||||
}
|
||||
|
||||
- if (this.f_91080_ != null) {
|
||||
- this.f_91080_.m_7861_();
|
||||
- if (this.screen != null) {
|
||||
- this.screen.removed();
|
||||
- }
|
||||
-
|
||||
if (p_91153_ == null && this.f_91073_ == null) {
|
||||
if (p_91153_ == null && this.level == null) {
|
||||
p_91153_ = new TitleScreen();
|
||||
} else if (p_91153_ == null && this.f_91074_.m_21224_()) {
|
||||
} else if (p_91153_ == null && this.player.isDeadOrDying()) {
|
||||
@@ -1032,6 +_,19 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ net.minecraftforge.client.ForgeHooksClient.clearGuiLayers(this);
|
||||
+ Screen old = this.f_91080_;
|
||||
+ Screen old = this.screen;
|
||||
+ if (p_91153_ != null) {
|
||||
+ var event = net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenOpening(old, p_91153_);
|
||||
+ if (event == null) return;
|
||||
@@ -181,241 +181,241 @@
|
||||
+
|
||||
+ if (old != null && p_91153_ != old) {
|
||||
+ net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenClose(old);
|
||||
+ old.m_7861_();
|
||||
+ old.removed();
|
||||
+ }
|
||||
+
|
||||
this.f_91080_ = p_91153_;
|
||||
if (this.f_91080_ != null) {
|
||||
this.f_91080_.m_274333_();
|
||||
this.screen = p_91153_;
|
||||
if (this.screen != null) {
|
||||
this.screen.added();
|
||||
@@ -1178,9 +_,12 @@
|
||||
RenderSystem.enableCull();
|
||||
this.f_91026_.m_7238_();
|
||||
if (!this.f_91079_) {
|
||||
+ this.realPartialTick = this.f_91012_ ? this.f_91013_ : this.f_90991_.f_92518_; // Cache this since pause is volatile
|
||||
this.profiler.pop();
|
||||
if (!this.noRender) {
|
||||
+ this.realPartialTick = this.pause ? this.pausePartialTick : this.timer.partialTick; // Cache this since pause is volatile
|
||||
+ net.minecraftforge.event.ForgeEventFactory.onRenderTickStart(this.realPartialTick);
|
||||
this.f_91026_.m_6182_("gameRenderer");
|
||||
this.f_91063_.m_109093_(this.f_91012_ ? this.f_91013_ : this.f_90991_.f_92518_, i, p_91384_);
|
||||
this.f_91026_.m_7238_();
|
||||
this.profiler.popPush("gameRenderer");
|
||||
this.gameRenderer.render(this.pause ? this.pausePartialTick : this.timer.partialTick, i, p_91384_);
|
||||
this.profiler.pop();
|
||||
+ net.minecraftforge.event.ForgeEventFactory.onRenderTickEnd(this.realPartialTick);
|
||||
}
|
||||
|
||||
if (this.f_91056_ != null) {
|
||||
if (this.fpsPieResults != null) {
|
||||
@@ -1301,10 +_,12 @@
|
||||
this.f_90990_.m_85378_((double)i);
|
||||
if (this.f_91080_ != null) {
|
||||
this.f_91080_.m_6574_(this, this.f_90990_.m_85445_(), this.f_90990_.m_85446_());
|
||||
+ net.minecraftforge.client.ForgeHooksClient.resizeGuiLayers(this, this.f_90990_.m_85445_(), this.f_90990_.m_85446_());
|
||||
this.window.setGuiScale((double)i);
|
||||
if (this.screen != null) {
|
||||
this.screen.resize(this, this.window.getGuiScaledWidth(), this.window.getGuiScaledHeight());
|
||||
+ net.minecraftforge.client.ForgeHooksClient.resizeGuiLayers(this, this.window.getGuiScaledWidth(), this.window.getGuiScaledHeight());
|
||||
}
|
||||
|
||||
RenderTarget rendertarget = this.m_91385_();
|
||||
rendertarget.m_83941_(this.f_90990_.m_85441_(), this.f_90990_.m_85442_(), f_91002_);
|
||||
+ if (this.f_91063_ != null)
|
||||
this.f_91063_.m_109097_(this.f_90990_.m_85441_(), this.f_90990_.m_85442_());
|
||||
this.f_91067_.m_91599_();
|
||||
RenderTarget rendertarget = this.getMainRenderTarget();
|
||||
rendertarget.resize(this.window.getWidth(), this.window.getHeight(), ON_OSX);
|
||||
+ if (this.gameRenderer != null)
|
||||
this.gameRenderer.resize(this.window.getWidth(), this.window.getHeight());
|
||||
this.mouseHandler.setIgnoreFirstMove();
|
||||
}
|
||||
@@ -1578,6 +_,7 @@
|
||||
}
|
||||
|
||||
public void m_91395_() {
|
||||
+ if (this.m_91396_()) net.minecraftforge.event.ForgeEventFactory.onGameShuttingDown();
|
||||
this.f_91019_ = false;
|
||||
public void stop() {
|
||||
+ if (this.isRunning()) net.minecraftforge.event.ForgeEventFactory.onGameShuttingDown();
|
||||
this.running = false;
|
||||
}
|
||||
|
||||
@@ -1607,10 +_,18 @@
|
||||
if (p_91387_ && this.f_91077_ != null && this.f_91077_.m_6662_() == HitResult.Type.BLOCK) {
|
||||
BlockHitResult blockhitresult = (BlockHitResult)this.f_91077_;
|
||||
BlockPos blockpos = blockhitresult.m_82425_();
|
||||
- if (!this.f_91073_.m_8055_(blockpos).m_60795_()) {
|
||||
+ if (!this.f_91073_.m_46859_(blockpos)) {
|
||||
+ var inputEvent = net.minecraftforge.client.ForgeHooksClient.onClickInput(0, this.f_91066_.f_92096_, InteractionHand.MAIN_HAND);
|
||||
if (p_91387_ && this.hitResult != null && this.hitResult.getType() == HitResult.Type.BLOCK) {
|
||||
BlockHitResult blockhitresult = (BlockHitResult)this.hitResult;
|
||||
BlockPos blockpos = blockhitresult.getBlockPos();
|
||||
- if (!this.level.getBlockState(blockpos).isAir()) {
|
||||
+ if (!this.level.isEmptyBlock(blockpos)) {
|
||||
+ var inputEvent = net.minecraftforge.client.ForgeHooksClient.onClickInput(0, this.options.keyAttack, InteractionHand.MAIN_HAND);
|
||||
+ if (inputEvent.isCanceled()) {
|
||||
+ if (inputEvent.shouldSwingHand()) {
|
||||
+ this.f_91061_.addBlockHitEffects(blockpos, blockhitresult);
|
||||
+ this.f_91074_.m_6674_(InteractionHand.MAIN_HAND);
|
||||
+ this.particleEngine.addBlockHitEffects(blockpos, blockhitresult);
|
||||
+ this.player.swing(InteractionHand.MAIN_HAND);
|
||||
+ }
|
||||
+ return;
|
||||
+ }
|
||||
Direction direction = blockhitresult.m_82434_();
|
||||
- if (this.f_91072_.m_105283_(blockpos, direction)) {
|
||||
- this.f_91061_.m_107367_(blockpos, direction);
|
||||
+ if (this.f_91072_.m_105283_(blockpos, direction) && inputEvent.shouldSwingHand()) {
|
||||
+ this.f_91061_.addBlockHitEffects(blockpos, blockhitresult);
|
||||
this.f_91074_.m_6674_(InteractionHand.MAIN_HAND);
|
||||
Direction direction = blockhitresult.getDirection();
|
||||
- if (this.gameMode.continueDestroyBlock(blockpos, direction)) {
|
||||
- this.particleEngine.crack(blockpos, direction);
|
||||
+ if (this.gameMode.continueDestroyBlock(blockpos, direction) && inputEvent.shouldSwingHand()) {
|
||||
+ this.particleEngine.addBlockHitEffects(blockpos, blockhitresult);
|
||||
this.player.swing(InteractionHand.MAIN_HAND);
|
||||
}
|
||||
}
|
||||
@@ -1639,6 +_,8 @@
|
||||
return false;
|
||||
} else {
|
||||
boolean flag = false;
|
||||
+ var inputEvent = net.minecraftforge.client.ForgeHooksClient.onClickInput(0, this.f_91066_.f_92096_, InteractionHand.MAIN_HAND);
|
||||
+ var inputEvent = net.minecraftforge.client.ForgeHooksClient.onClickInput(0, this.options.keyAttack, InteractionHand.MAIN_HAND);
|
||||
+ if (!inputEvent.isCanceled())
|
||||
switch (this.f_91077_.m_6662_()) {
|
||||
switch (this.hitResult.getType()) {
|
||||
case ENTITY:
|
||||
this.f_91072_.m_105223_(this.f_91074_, ((EntityHitResult)this.f_91077_).m_82443_());
|
||||
this.gameMode.attack(this.player, ((EntityHitResult)this.hitResult).getEntity());
|
||||
@@ -1646,7 +_,7 @@
|
||||
case BLOCK:
|
||||
BlockHitResult blockhitresult = (BlockHitResult)this.f_91077_;
|
||||
BlockPos blockpos = blockhitresult.m_82425_();
|
||||
- if (!this.f_91073_.m_8055_(blockpos).m_60795_()) {
|
||||
+ if (!this.f_91073_.m_46859_(blockpos)) {
|
||||
this.f_91072_.m_105269_(blockpos, blockhitresult.m_82434_());
|
||||
if (this.f_91073_.m_8055_(blockpos).m_60795_()) {
|
||||
BlockHitResult blockhitresult = (BlockHitResult)this.hitResult;
|
||||
BlockPos blockpos = blockhitresult.getBlockPos();
|
||||
- if (!this.level.getBlockState(blockpos).isAir()) {
|
||||
+ if (!this.level.isEmptyBlock(blockpos)) {
|
||||
this.gameMode.startDestroyBlock(blockpos, blockhitresult.getDirection());
|
||||
if (this.level.getBlockState(blockpos).isAir()) {
|
||||
flag = true;
|
||||
@@ -1659,8 +_,10 @@
|
||||
}
|
||||
|
||||
this.f_91074_.m_36334_();
|
||||
+ net.minecraftforge.common.ForgeHooks.onEmptyLeftClick(this.f_91074_);
|
||||
this.player.resetAttackStrengthTicker();
|
||||
+ net.minecraftforge.common.ForgeHooks.onEmptyLeftClick(this.player);
|
||||
}
|
||||
|
||||
+ if (inputEvent.shouldSwingHand())
|
||||
this.f_91074_.m_6674_(InteractionHand.MAIN_HAND);
|
||||
this.player.swing(InteractionHand.MAIN_HAND);
|
||||
return flag;
|
||||
}
|
||||
@@ -1676,6 +_,11 @@
|
||||
}
|
||||
|
||||
for(InteractionHand interactionhand : InteractionHand.values()) {
|
||||
+ var inputEvent = net.minecraftforge.client.ForgeHooksClient.onClickInput(1, this.f_91066_.f_92095_, interactionhand);
|
||||
+ var inputEvent = net.minecraftforge.client.ForgeHooksClient.onClickInput(1, this.options.keyUse, interactionhand);
|
||||
+ if (inputEvent.isCanceled()) {
|
||||
+ if (inputEvent.shouldSwingHand()) this.f_91074_.m_6674_(interactionhand);
|
||||
+ if (inputEvent.shouldSwingHand()) this.player.swing(interactionhand);
|
||||
+ return;
|
||||
+ }
|
||||
ItemStack itemstack = this.f_91074_.m_21120_(interactionhand);
|
||||
if (!itemstack.m_246617_(this.f_91073_.m_246046_())) {
|
||||
ItemStack itemstack = this.player.getItemInHand(interactionhand);
|
||||
if (!itemstack.isItemEnabled(this.level.enabledFeatures())) {
|
||||
return;
|
||||
@@ -1696,7 +_,7 @@
|
||||
}
|
||||
|
||||
if (interactionresult.m_19077_()) {
|
||||
- if (interactionresult.m_19080_()) {
|
||||
+ if (interactionresult.m_19080_() && inputEvent.shouldSwingHand()) {
|
||||
this.f_91074_.m_6674_(interactionhand);
|
||||
if (interactionresult.consumesAction()) {
|
||||
- if (interactionresult.shouldSwing()) {
|
||||
+ if (interactionresult.shouldSwing() && inputEvent.shouldSwingHand()) {
|
||||
this.player.swing(interactionhand);
|
||||
}
|
||||
|
||||
@@ -1708,7 +_,7 @@
|
||||
int i = itemstack.m_41613_();
|
||||
InteractionResult interactionresult1 = this.f_91072_.m_233732_(this.f_91074_, interactionhand, blockhitresult);
|
||||
if (interactionresult1.m_19077_()) {
|
||||
- if (interactionresult1.m_19080_()) {
|
||||
+ if (interactionresult1.m_19080_() && inputEvent.shouldSwingHand()) {
|
||||
this.f_91074_.m_6674_(interactionhand);
|
||||
if (!itemstack.m_41619_() && (itemstack.m_41613_() != i || this.f_91072_.m_105290_())) {
|
||||
this.f_91063_.f_109055_.m_109320_(interactionhand);
|
||||
int i = itemstack.getCount();
|
||||
InteractionResult interactionresult1 = this.gameMode.useItemOn(this.player, interactionhand, blockhitresult);
|
||||
if (interactionresult1.consumesAction()) {
|
||||
- if (interactionresult1.shouldSwing()) {
|
||||
+ if (interactionresult1.shouldSwing() && inputEvent.shouldSwingHand()) {
|
||||
this.player.swing(interactionhand);
|
||||
if (!itemstack.isEmpty() && (itemstack.getCount() != i || this.gameMode.hasInfiniteItems())) {
|
||||
this.gameRenderer.itemInHandRenderer.itemUsed(interactionhand);
|
||||
@@ -1724,6 +_,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ if (itemstack.m_41619_() && (this.f_91077_ == null || this.f_91077_.m_6662_() == HitResult.Type.MISS))
|
||||
+ net.minecraftforge.common.ForgeHooks.onEmptyClick(this.f_91074_, interactionhand);
|
||||
+ if (itemstack.isEmpty() && (this.hitResult == null || this.hitResult.getType() == HitResult.Type.MISS))
|
||||
+ net.minecraftforge.common.ForgeHooks.onEmptyClick(this.player, interactionhand);
|
||||
+
|
||||
if (!itemstack.m_41619_()) {
|
||||
InteractionResult interactionresult2 = this.f_91072_.m_233721_(this.f_91074_, interactionhand);
|
||||
if (interactionresult2.m_19077_()) {
|
||||
if (!itemstack.isEmpty()) {
|
||||
InteractionResult interactionresult2 = this.gameMode.useItem(this.player, interactionhand);
|
||||
if (interactionresult2.consumesAction()) {
|
||||
@@ -1750,6 +_,8 @@
|
||||
--this.f_91011_;
|
||||
--this.rightClickDelay;
|
||||
}
|
||||
|
||||
+ net.minecraftforge.event.ForgeEventFactory.onPreClientTick();
|
||||
+
|
||||
this.f_91026_.m_6180_("gui");
|
||||
this.f_240378_.m_240688_();
|
||||
this.f_91065_.m_193832_(this.f_91012_);
|
||||
this.profiler.push("gui");
|
||||
this.chatListener.tick();
|
||||
this.gui.tick(this.pause);
|
||||
@@ -1838,6 +_,7 @@
|
||||
|
||||
this.f_91005_.m_120596_();
|
||||
this.tutorial.tick();
|
||||
|
||||
+ net.minecraftforge.event.ForgeEventFactory.onPreLevelTick(this.f_91073_, () -> true);
|
||||
+ net.minecraftforge.event.ForgeEventFactory.onPreLevelTick(this.level, () -> true);
|
||||
try {
|
||||
this.f_91073_.m_104726_(() -> {
|
||||
this.level.tick(() -> {
|
||||
return true;
|
||||
@@ -1853,6 +_,7 @@
|
||||
|
||||
throw new ReportedException(crashreport);
|
||||
}
|
||||
+ net.minecraftforge.event.ForgeEventFactory.onPostLevelTick(this.f_91073_, () -> true);
|
||||
+ net.minecraftforge.event.ForgeEventFactory.onPostLevelTick(this.level, () -> true);
|
||||
}
|
||||
|
||||
this.f_91026_.m_6182_("animateTick");
|
||||
this.profiler.popPush("animateTick");
|
||||
@@ -1872,6 +_,8 @@
|
||||
this.f_91026_.m_6182_("keyboard");
|
||||
this.f_91068_.m_90931_();
|
||||
this.f_91026_.m_7238_();
|
||||
this.profiler.popPush("keyboard");
|
||||
this.keyboardHandler.tick();
|
||||
this.profiler.pop();
|
||||
+
|
||||
+ net.minecraftforge.event.ForgeEventFactory.onPostClientTick();
|
||||
}
|
||||
|
||||
private boolean m_91278_() {
|
||||
private boolean isMultiplayerServer() {
|
||||
@@ -2068,6 +_,7 @@
|
||||
}
|
||||
|
||||
public void m_91156_(ClientLevel p_91157_) {
|
||||
+ if (this.f_91073_ != null) net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.LevelEvent.Unload(this.f_91073_));
|
||||
public void setLevel(ClientLevel p_91157_) {
|
||||
+ if (this.level != null) net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.LevelEvent.Unload(this.level));
|
||||
ProgressScreen progressscreen = new ProgressScreen(true);
|
||||
progressscreen.m_6309_(Component.m_237115_("connect.joining"));
|
||||
this.m_91362_(progressscreen);
|
||||
progressscreen.progressStartNoAbort(Component.translatable("connect.joining"));
|
||||
this.updateScreenAndTick(progressscreen);
|
||||
@@ -2101,10 +_,12 @@
|
||||
IntegratedServer integratedserver = this.f_91007_;
|
||||
this.f_91007_ = null;
|
||||
this.f_91063_.m_109150_();
|
||||
+ net.minecraftforge.client.ForgeHooksClient.firePlayerLogout(this.f_91072_, this.f_91074_);
|
||||
this.f_91072_ = null;
|
||||
this.f_240365_.m_93328_();
|
||||
this.m_91362_(p_91321_);
|
||||
if (this.f_91073_ != null) {
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.LevelEvent.Unload(this.f_91073_));
|
||||
IntegratedServer integratedserver = this.singleplayerServer;
|
||||
this.singleplayerServer = null;
|
||||
this.gameRenderer.resetData();
|
||||
+ net.minecraftforge.client.ForgeHooksClient.firePlayerLogout(this.gameMode, this.player);
|
||||
this.gameMode = null;
|
||||
this.narrator.clear();
|
||||
this.updateScreenAndTick(p_91321_);
|
||||
if (this.level != null) {
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.LevelEvent.Unload(this.level));
|
||||
if (integratedserver != null) {
|
||||
this.f_91026_.m_6180_("waitForServer");
|
||||
this.profiler.push("waitForServer");
|
||||
|
||||
@@ -2118,6 +_,7 @@
|
||||
this.f_243981_.m_246151_();
|
||||
this.f_91065_.m_93089_();
|
||||
this.f_91010_ = false;
|
||||
+ net.minecraftforge.client.ForgeHooksClient.handleClientLevelClosing(this.f_91073_);
|
||||
this.downloadedPackSource.clearServerPack();
|
||||
this.gui.onDisconnected();
|
||||
this.isLocalServer = false;
|
||||
+ net.minecraftforge.client.ForgeHooksClient.handleClientLevelClosing(this.level);
|
||||
}
|
||||
|
||||
this.f_91073_ = null;
|
||||
this.level = null;
|
||||
@@ -2242,6 +_,7 @@
|
||||
|
||||
private void m_91280_() {
|
||||
if (this.f_91077_ != null && this.f_91077_.m_6662_() != HitResult.Type.MISS) {
|
||||
+ if (net.minecraftforge.client.ForgeHooksClient.onClickInput(2, this.f_91066_.f_92097_, InteractionHand.MAIN_HAND).isCanceled()) return;
|
||||
boolean flag = this.f_91074_.m_150110_().f_35937_;
|
||||
private void pickBlock() {
|
||||
if (this.hitResult != null && this.hitResult.getType() != HitResult.Type.MISS) {
|
||||
+ if (net.minecraftforge.client.ForgeHooksClient.onClickInput(2, this.options.keyPickItem, InteractionHand.MAIN_HAND).isCanceled()) return;
|
||||
boolean flag = this.player.getAbilities().instabuild;
|
||||
BlockEntity blockentity = null;
|
||||
HitResult.Type hitresult$type = this.f_91077_.m_6662_();
|
||||
HitResult.Type hitresult$type = this.hitResult.getType();
|
||||
@@ -2254,10 +_,7 @@
|
||||
}
|
||||
|
||||
Block block = blockstate.m_60734_();
|
||||
- itemstack = block.m_7397_(this.f_91073_, blockpos, blockstate);
|
||||
- if (itemstack.m_41619_()) {
|
||||
Block block = blockstate.getBlock();
|
||||
- itemstack = block.getCloneItemStack(this.level, blockpos, blockstate);
|
||||
- if (itemstack.isEmpty()) {
|
||||
- return;
|
||||
- }
|
||||
+ itemstack = blockstate.getCloneItemStack(this.f_91077_, this.f_91073_, blockpos, this.f_91074_);
|
||||
+ itemstack = blockstate.getCloneItemStack(this.hitResult, this.level, blockpos, this.player);
|
||||
|
||||
if (flag && Screen.m_96637_() && blockstate.m_155947_()) {
|
||||
blockentity = this.f_91073_.m_7702_(blockpos);
|
||||
if (flag && Screen.hasControlDown() && blockstate.hasBlockEntity()) {
|
||||
blockentity = this.level.getBlockEntity(blockpos);
|
||||
@@ -2268,7 +_,7 @@
|
||||
}
|
||||
|
||||
Entity entity = ((EntityHitResult)this.f_91077_).m_82443_();
|
||||
- itemstack = entity.m_142340_();
|
||||
+ itemstack = entity.getPickedResult(this.f_91077_);
|
||||
Entity entity = ((EntityHitResult)this.hitResult).getEntity();
|
||||
- itemstack = entity.getPickResult();
|
||||
+ itemstack = entity.getPickedResult(this.hitResult);
|
||||
if (itemstack == null) {
|
||||
return;
|
||||
}
|
||||
@@ -2804,6 +_,19 @@
|
||||
|
||||
public void m_91312_(int p_91313_) {
|
||||
this.f_91051_.m_119410_(p_91313_);
|
||||
public void updateMaxMipLevel(int p_91313_) {
|
||||
this.modelManager.updateMaxMipLevel(p_91313_);
|
||||
+ }
|
||||
+
|
||||
+ public ItemColors getItemColors() {
|
||||
+ return this.f_91041_;
|
||||
+ return this.itemColors;
|
||||
+ }
|
||||
+
|
||||
+ public SearchRegistry getSearchTreeManager() {
|
||||
+ return this.f_90997_;
|
||||
+ return this.searchRegistry;
|
||||
+ }
|
||||
+
|
||||
+ private float realPartialTick;
|
||||
@@ -423,4 +423,4 @@
|
||||
+ return this.realPartialTick;
|
||||
}
|
||||
|
||||
public EntityModelSet m_167973_() {
|
||||
public EntityModelSet getEntityModels() {
|
||||
@@ -1,30 +1,30 @@
|
||||
--- a/net/minecraft/client/MouseHandler.java
|
||||
+++ b/net/minecraft/client/MouseHandler.java
|
||||
@@ -74,6 +_,7 @@
|
||||
this.f_91510_ = -1;
|
||||
this.activeButton = -1;
|
||||
}
|
||||
|
||||
+ if (net.minecraftforge.client.event.ForgeEventFactoryClient.onMouseButtonPre(p_91532_, p_91533_, p_91534_)) return;
|
||||
boolean[] aboolean = new boolean[]{false};
|
||||
if (this.f_91503_.m_91265_() == null) {
|
||||
if (this.f_91503_.f_91080_ == null) {
|
||||
if (this.minecraft.getOverlay() == null) {
|
||||
if (this.minecraft.screen == null) {
|
||||
@@ -87,11 +_,19 @@
|
||||
if (flag) {
|
||||
screen.m_169415_();
|
||||
Screen.m_96579_(() -> {
|
||||
- aboolean[0] = screen.m_6375_(d0, d1, i);
|
||||
screen.afterMouseAction();
|
||||
Screen.wrapScreenError(() -> {
|
||||
- aboolean[0] = screen.mouseClicked(d0, d1, i);
|
||||
+ aboolean[0] = net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseClickedPre(screen, d0, d1, i);
|
||||
+ if (!aboolean[0]) {
|
||||
+ aboolean[0] = this.f_91503_.f_91080_.m_6375_(d0, d1, i);
|
||||
+ aboolean[0] = this.minecraft.screen.mouseClicked(d0, d1, i);
|
||||
+ aboolean[0] = net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseClickedPost(screen, d0, d1, i, aboolean[0]);
|
||||
+ }
|
||||
}, "mouseClicked event handler", screen.getClass().getCanonicalName());
|
||||
} else {
|
||||
Screen.m_96579_(() -> {
|
||||
- aboolean[0] = screen.m_6348_(d0, d1, i);
|
||||
Screen.wrapScreenError(() -> {
|
||||
- aboolean[0] = screen.mouseReleased(d0, d1, i);
|
||||
+ aboolean[0] = net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseReleasedPre(screen, d0, d1, i);
|
||||
+ if (!aboolean[0]) {
|
||||
+ aboolean[0] = this.f_91503_.f_91080_.m_6348_(d0, d1, i);
|
||||
+ aboolean[0] = this.minecraft.screen.mouseReleased(d0, d1, i);
|
||||
+ aboolean[0] = net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseReleasedPost(screen, d0, d1, i, aboolean[0]);
|
||||
+ }
|
||||
}, "mouseReleased event handler", screen.getClass().getCanonicalName());
|
||||
@@ -39,48 +39,48 @@
|
||||
}
|
||||
|
||||
@@ -129,8 +_,10 @@
|
||||
if (this.f_91503_.f_91080_ != null) {
|
||||
double d3 = this.f_91507_ * (double)this.f_91503_.m_91268_().m_85445_() / (double)this.f_91503_.m_91268_().m_85443_();
|
||||
double d4 = this.f_91508_ * (double)this.f_91503_.m_91268_().m_85446_() / (double)this.f_91503_.m_91268_().m_85444_();
|
||||
- this.f_91503_.f_91080_.m_6050_(d3, d4, d1, d2);
|
||||
this.f_91503_.f_91080_.m_169415_();
|
||||
+ if (net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseScrollPre(this.f_91503_.f_91080_, d3, d4, d1, d2)) return;
|
||||
+ if (this.f_91503_.f_91080_.m_6050_(d3, d4, d1, d2)) return;
|
||||
+ net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseScrollPost(this.f_91503_.f_91080_, d3, d4, d1, d2);
|
||||
} else if (this.f_91503_.f_91074_ != null) {
|
||||
if (this.f_291070_ != 0.0D && Math.signum(d1) != Math.signum(this.f_291070_)) {
|
||||
this.f_291070_ = 0.0D;
|
||||
if (this.minecraft.screen != null) {
|
||||
double d3 = this.xpos * (double)this.minecraft.getWindow().getGuiScaledWidth() / (double)this.minecraft.getWindow().getScreenWidth();
|
||||
double d4 = this.ypos * (double)this.minecraft.getWindow().getGuiScaledHeight() / (double)this.minecraft.getWindow().getScreenHeight();
|
||||
- this.minecraft.screen.mouseScrolled(d3, d4, d1, d2);
|
||||
this.minecraft.screen.afterMouseAction();
|
||||
+ if (net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseScrollPre(this.minecraft.screen, d3, d4, d1, d2)) return;
|
||||
+ if (this.minecraft.screen.mouseScrolled(d3, d4, d1, d2)) return;
|
||||
+ net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseScrollPost(this.minecraft.screen, d3, d4, d1, d2);
|
||||
} else if (this.minecraft.player != null) {
|
||||
if (this.accumulatedScrollX != 0.0D && Math.signum(d1) != Math.signum(this.accumulatedScrollX)) {
|
||||
this.accumulatedScrollX = 0.0D;
|
||||
@@ -151,6 +_,7 @@
|
||||
this.f_291070_ -= (double)j;
|
||||
this.f_291867_ -= (double)i;
|
||||
this.accumulatedScrollX -= (double)j;
|
||||
this.accumulatedScrollY -= (double)i;
|
||||
int k = i == 0 ? -j : i;
|
||||
+ if (net.minecraftforge.client.event.ForgeEventFactoryClient.onMouseScroll(this, d1, d2)) return;
|
||||
if (this.f_91503_.f_91074_.m_5833_()) {
|
||||
if (this.f_91503_.f_91065_.m_93085_().m_94768_()) {
|
||||
this.f_91503_.f_91065_.m_93085_().m_205380_(-k);
|
||||
if (this.minecraft.player.isSpectator()) {
|
||||
if (this.minecraft.gui.getSpectatorGui().isMenuActive()) {
|
||||
this.minecraft.gui.getSpectatorGui().onMouseScrolled(-k);
|
||||
@@ -219,7 +_,9 @@
|
||||
double d2 = (p_91563_ - this.f_91507_) * (double)this.f_91503_.m_91268_().m_85445_() / (double)this.f_91503_.m_91268_().m_85443_();
|
||||
double d3 = (p_91564_ - this.f_91508_) * (double)this.f_91503_.m_91268_().m_85446_() / (double)this.f_91503_.m_91268_().m_85444_();
|
||||
Screen.m_96579_(() -> {
|
||||
- screen.m_7979_(d0, d1, this.f_91510_, d2, d3);
|
||||
+ if (net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseDragPre(screen, d0, d1, this.f_91510_, d2, d3)) return;
|
||||
+ if (screen.m_7979_(d0, d1, this.f_91510_, d2, d3)) return;
|
||||
+ net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseDragPost(screen, d0, d1, this.f_91510_, d2, d3);
|
||||
double d2 = (p_91563_ - this.xpos) * (double)this.minecraft.getWindow().getGuiScaledWidth() / (double)this.minecraft.getWindow().getScreenWidth();
|
||||
double d3 = (p_91564_ - this.ypos) * (double)this.minecraft.getWindow().getGuiScaledHeight() / (double)this.minecraft.getWindow().getScreenHeight();
|
||||
Screen.wrapScreenError(() -> {
|
||||
- screen.mouseDragged(d0, d1, this.activeButton, d2, d3);
|
||||
+ if (net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseDragPre(screen, d0, d1, this.activeButton, d2, d3)) return;
|
||||
+ if (screen.mouseDragged(d0, d1, this.activeButton, d2, d3)) return;
|
||||
+ net.minecraftforge.client.event.ForgeEventFactoryClient.onScreenMouseDragPost(screen, d0, d1, this.activeButton, d2, d3);
|
||||
}, "mouseDragged event handler", screen.getClass().getCanonicalName());
|
||||
}
|
||||
|
||||
@@ -302,6 +_,14 @@
|
||||
|
||||
public double m_91594_() {
|
||||
return this.f_91508_;
|
||||
public double ypos() {
|
||||
return this.ypos;
|
||||
+ }
|
||||
+
|
||||
+ public double getXVelocity() {
|
||||
+ return this.f_91516_;
|
||||
+ return this.accumulatedDX;
|
||||
+ }
|
||||
+
|
||||
+ public double getYVelocity() {
|
||||
+ return this.f_91517_;
|
||||
+ return this.accumulatedDY;
|
||||
}
|
||||
|
||||
public void m_91599_() {
|
||||
public void setIgnoreFirstMove() {
|
||||
@@ -2,25 +2,25 @@
|
||||
+++ b/net/minecraft/client/Options.java
|
||||
@@ -507,7 +_,8 @@
|
||||
}, new OptionInstance.LazyEnum<>(() -> {
|
||||
return Stream.concat(Stream.of(""), Minecraft.m_91087_().m_91106_().m_194525_().stream()).toList();
|
||||
return Stream.concat(Stream.of(""), Minecraft.getInstance().getSoundManager().getAvailableSoundDevices().stream()).toList();
|
||||
}, (p_232011_) -> {
|
||||
- return Minecraft.m_91087_().m_91396_() && p_232011_ != "" && !Minecraft.m_91087_().m_91106_().m_194525_().contains(p_232011_) ? Optional.empty() : Optional.of(p_232011_);
|
||||
- return Minecraft.getInstance().isRunning() && p_232011_ != "" && !Minecraft.getInstance().getSoundManager().getAvailableSoundDevices().contains(p_232011_) ? Optional.empty() : Optional.of(p_232011_);
|
||||
+ // FORGE: fix incorrect string comparison - PR #8767
|
||||
+ return Minecraft.m_91087_().m_91396_() && (p_232011_ == null || !p_232011_.isEmpty()) && !Minecraft.m_91087_().m_91106_().m_194525_().contains(p_232011_) ? Optional.empty() : Optional.of(p_232011_);
|
||||
+ return Minecraft.getInstance().isRunning() && (p_232011_ == null || !p_232011_.isEmpty()) && !Minecraft.getInstance().getSoundManager().getAvailableSoundDevices().contains(p_232011_) ? Optional.empty() : Optional.of(p_232011_);
|
||||
}, Codec.STRING), "", (p_299350_) -> {
|
||||
SoundManager soundmanager = Minecraft.m_91087_().m_91106_();
|
||||
soundmanager.m_194526_();
|
||||
SoundManager soundmanager = Minecraft.getInstance().getSoundManager();
|
||||
soundmanager.reload();
|
||||
@@ -835,6 +_,7 @@
|
||||
}
|
||||
|
||||
public Options(Minecraft p_92138_, File p_92139_) {
|
||||
+ setForgeKeybindProperties();
|
||||
this.f_92060_ = p_92138_;
|
||||
this.f_92110_ = new File(p_92139_, "options.txt");
|
||||
boolean flag = p_92138_.m_91103_();
|
||||
this.minecraft = p_92138_;
|
||||
this.optionsFile = new File(p_92139_, "options.txt");
|
||||
boolean flag = p_92138_.is64Bit();
|
||||
@@ -957,11 +_,21 @@
|
||||
p_168428_.m_213982_("telemetryOptInExtra", this.f_260461_);
|
||||
this.f_263744_ = p_168428_.m_142682_("onboardAccessibility", this.f_263744_);
|
||||
p_168428_.process("telemetryOptInExtra", this.telemetryOptInExtra);
|
||||
this.onboardAccessibility = p_168428_.process("onboardAccessibility", this.onboardAccessibility);
|
||||
|
||||
+ net.minecraftforge.forge.snapshots.ForgeSnapshotsMod.processOptions(p_168428_);
|
||||
+ processOptionsForge(p_168428_);
|
||||
@@ -28,69 +28,69 @@
|
||||
+ // FORGE: split off to allow reloading options after mod loading is done
|
||||
+ private void processOptionsForge(Options.FieldAccess p_168428_)
|
||||
+ {
|
||||
for(KeyMapping keymapping : this.f_92059_) {
|
||||
- String s = keymapping.m_90865_();
|
||||
+ String s = keymapping.m_90865_() + (keymapping.getKeyModifier() != net.minecraftforge.client.settings.KeyModifier.NONE ? ":" + keymapping.getKeyModifier() : "");
|
||||
String s1 = p_168428_.m_141943_("key_" + keymapping.m_90860_(), s);
|
||||
for(KeyMapping keymapping : this.keyMappings) {
|
||||
- String s = keymapping.saveString();
|
||||
+ String s = keymapping.saveString() + (keymapping.getKeyModifier() != net.minecraftforge.client.settings.KeyModifier.NONE ? ":" + keymapping.getKeyModifier() : "");
|
||||
String s1 = p_168428_.process("key_" + keymapping.getName(), s);
|
||||
if (!s.equals(s1)) {
|
||||
- keymapping.m_90848_(InputConstants.m_84851_(s1));
|
||||
- keymapping.setKey(InputConstants.getKey(s1));
|
||||
+ if (s1.indexOf(':') != -1) {
|
||||
+ String[] pts = s1.split(":");
|
||||
+ keymapping.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.valueFromString(pts[1]), InputConstants.m_84851_(pts[0]));
|
||||
+ keymapping.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.valueFromString(pts[1]), InputConstants.getKey(pts[0]));
|
||||
+ } else
|
||||
+ keymapping.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.NONE, InputConstants.m_84851_(s1));
|
||||
+ keymapping.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.NONE, InputConstants.getKey(s1));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -980,6 +_,9 @@
|
||||
}
|
||||
|
||||
public void m_92140_() {
|
||||
public void load() {
|
||||
+ this.load(false);
|
||||
+ }
|
||||
+ public void load(boolean limited) {
|
||||
try {
|
||||
if (!this.f_92110_.exists()) {
|
||||
if (!this.optionsFile.exists()) {
|
||||
return;
|
||||
@@ -1008,7 +_,8 @@
|
||||
}
|
||||
}
|
||||
|
||||
- this.m_168427_(new Options.FieldAccess() {
|
||||
+ java.util.function.Consumer<FieldAccess> processor = limited ? this::processOptionsForge : this::m_168427_;
|
||||
- this.processOptions(new Options.FieldAccess() {
|
||||
+ java.util.function.Consumer<FieldAccess> processor = limited ? this::processOptionsForge : this::processOptions;
|
||||
+ processor.accept(new Options.FieldAccess() {
|
||||
@Nullable
|
||||
private String m_168458_(String p_168459_) {
|
||||
return compoundtag1.m_128441_(p_168459_) ? compoundtag1.m_128461_(p_168459_) : null;
|
||||
private String getValueOrNull(String p_168459_) {
|
||||
return compoundtag1.contains(p_168459_) ? compoundtag1.getString(p_168459_) : null;
|
||||
@@ -1181,6 +_,7 @@
|
||||
}
|
||||
|
||||
public void m_92172_() {
|
||||
public void broadcastOptions() {
|
||||
+ if (net.minecraftforge.client.loading.ClientModLoader.isLoading()) return; //Don't save settings before mods add keybindigns and the like to prevent them from being deleted.
|
||||
if (this.f_92060_.f_91074_ != null) {
|
||||
this.f_92060_.f_91074_.f_108617_.m_295327_(new ServerboundClientInformationPacket(this.m_294596_()));
|
||||
if (this.minecraft.player != null) {
|
||||
this.minecraft.player.connection.send(new ServerboundClientInformationPacket(this.buildPlayerInformation()));
|
||||
}
|
||||
@@ -1239,6 +_,23 @@
|
||||
}
|
||||
|
||||
p_92146_.m_10509_(set);
|
||||
p_92146_.setSelected(set);
|
||||
+ }
|
||||
+
|
||||
+ private void setForgeKeybindProperties() {
|
||||
+ net.minecraftforge.client.settings.KeyConflictContext inGame = net.minecraftforge.client.settings.KeyConflictContext.IN_GAME;
|
||||
+ f_92085_.setKeyConflictContext(inGame);
|
||||
+ f_92086_.setKeyConflictContext(inGame);
|
||||
+ f_92087_.setKeyConflictContext(inGame);
|
||||
+ f_92088_.setKeyConflictContext(inGame);
|
||||
+ f_92089_.setKeyConflictContext(inGame);
|
||||
+ f_92090_.setKeyConflictContext(inGame);
|
||||
+ f_92091_.setKeyConflictContext(inGame);
|
||||
+ f_92096_.setKeyConflictContext(inGame);
|
||||
+ f_92098_.setKeyConflictContext(inGame);
|
||||
+ f_92099_.setKeyConflictContext(inGame);
|
||||
+ f_92100_.setKeyConflictContext(inGame);
|
||||
+ f_92103_.setKeyConflictContext(inGame);
|
||||
+ f_92104_.setKeyConflictContext(inGame);
|
||||
+ keyUp.setKeyConflictContext(inGame);
|
||||
+ keyLeft.setKeyConflictContext(inGame);
|
||||
+ keyDown.setKeyConflictContext(inGame);
|
||||
+ keyRight.setKeyConflictContext(inGame);
|
||||
+ keyJump.setKeyConflictContext(inGame);
|
||||
+ keyShift.setKeyConflictContext(inGame);
|
||||
+ keySprint.setKeyConflictContext(inGame);
|
||||
+ keyAttack.setKeyConflictContext(inGame);
|
||||
+ keyChat.setKeyConflictContext(inGame);
|
||||
+ keyPlayerList.setKeyConflictContext(inGame);
|
||||
+ keyCommand.setKeyConflictContext(inGame);
|
||||
+ keyTogglePerspective.setKeyConflictContext(inGame);
|
||||
+ keySmoothCamera.setKeyConflictContext(inGame);
|
||||
}
|
||||
|
||||
public CameraType m_92176_() {
|
||||
public CameraType getCameraType() {
|
||||
@@ -6,20 +6,20 @@
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
-public enum RecipeBookCategories {
|
||||
+public enum RecipeBookCategories implements net.minecraftforge.common.IExtensibleEnum {
|
||||
CRAFTING_SEARCH(new ItemStack(Items.f_42522_)),
|
||||
CRAFTING_BUILDING_BLOCKS(new ItemStack(Blocks.f_50076_)),
|
||||
CRAFTING_REDSTONE(new ItemStack(Items.f_42451_)),
|
||||
CRAFTING_SEARCH(new ItemStack(Items.COMPASS)),
|
||||
CRAFTING_BUILDING_BLOCKS(new ItemStack(Blocks.BRICKS)),
|
||||
CRAFTING_REDSTONE(new ItemStack(Items.REDSTONE)),
|
||||
@@ -36,7 +_,7 @@
|
||||
public static final List<RecipeBookCategories> f_92257_ = ImmutableList.of(BLAST_FURNACE_SEARCH, BLAST_FURNACE_BLOCKS, BLAST_FURNACE_MISC);
|
||||
public static final List<RecipeBookCategories> f_92258_ = ImmutableList.of(FURNACE_SEARCH, FURNACE_FOOD, FURNACE_BLOCKS, FURNACE_MISC);
|
||||
public static final List<RecipeBookCategories> f_92259_ = ImmutableList.of(CRAFTING_SEARCH, CRAFTING_EQUIPMENT, CRAFTING_BUILDING_BLOCKS, CRAFTING_MISC, CRAFTING_REDSTONE);
|
||||
- public static final Map<RecipeBookCategories, List<RecipeBookCategories>> f_92260_ = ImmutableMap.of(CRAFTING_SEARCH, ImmutableList.of(CRAFTING_EQUIPMENT, CRAFTING_BUILDING_BLOCKS, CRAFTING_MISC, CRAFTING_REDSTONE), FURNACE_SEARCH, ImmutableList.of(FURNACE_FOOD, FURNACE_BLOCKS, FURNACE_MISC), BLAST_FURNACE_SEARCH, ImmutableList.of(BLAST_FURNACE_BLOCKS, BLAST_FURNACE_MISC), SMOKER_SEARCH, ImmutableList.of(SMOKER_FOOD));
|
||||
+ public static final Map<RecipeBookCategories, List<RecipeBookCategories>> f_92260_ = net.minecraftforge.client.RecipeBookManager.getAggregateCategories();
|
||||
private final List<ItemStack> f_92261_;
|
||||
public static final List<RecipeBookCategories> BLAST_FURNACE_CATEGORIES = ImmutableList.of(BLAST_FURNACE_SEARCH, BLAST_FURNACE_BLOCKS, BLAST_FURNACE_MISC);
|
||||
public static final List<RecipeBookCategories> FURNACE_CATEGORIES = ImmutableList.of(FURNACE_SEARCH, FURNACE_FOOD, FURNACE_BLOCKS, FURNACE_MISC);
|
||||
public static final List<RecipeBookCategories> CRAFTING_CATEGORIES = ImmutableList.of(CRAFTING_SEARCH, CRAFTING_EQUIPMENT, CRAFTING_BUILDING_BLOCKS, CRAFTING_MISC, CRAFTING_REDSTONE);
|
||||
- public static final Map<RecipeBookCategories, List<RecipeBookCategories>> AGGREGATE_CATEGORIES = ImmutableMap.of(CRAFTING_SEARCH, ImmutableList.of(CRAFTING_EQUIPMENT, CRAFTING_BUILDING_BLOCKS, CRAFTING_MISC, CRAFTING_REDSTONE), FURNACE_SEARCH, ImmutableList.of(FURNACE_FOOD, FURNACE_BLOCKS, FURNACE_MISC), BLAST_FURNACE_SEARCH, ImmutableList.of(BLAST_FURNACE_BLOCKS, BLAST_FURNACE_MISC), SMOKER_SEARCH, ImmutableList.of(SMOKER_FOOD));
|
||||
+ public static final Map<RecipeBookCategories, List<RecipeBookCategories>> AGGREGATE_CATEGORIES = net.minecraftforge.client.RecipeBookManager.getAggregateCategories();
|
||||
private final List<ItemStack> itemIcons;
|
||||
|
||||
private RecipeBookCategories(ItemStack... p_92267_) {
|
||||
@@ -59,7 +_,7 @@
|
||||
list = f_92256_;
|
||||
list = SMOKER_CATEGORIES;
|
||||
break;
|
||||
default:
|
||||
- throw new IncompatibleClassChangeError();
|
||||
@@ -29,8 +29,8 @@
|
||||
return list;
|
||||
@@ -67,5 +_,9 @@
|
||||
|
||||
public List<ItemStack> m_92268_() {
|
||||
return this.f_92261_;
|
||||
public List<ItemStack> getIconItems() {
|
||||
return this.itemIcons;
|
||||
+ }
|
||||
+
|
||||
+ public static RecipeBookCategories create(String name, ItemStack... icons) {
|
||||
|
||||
@@ -11,19 +11,19 @@
|
||||
+ }
|
||||
+ final File target = event.getScreenshotFile();
|
||||
+
|
||||
Util.m_183992_().execute(() -> {
|
||||
Util.ioPool().execute(() -> {
|
||||
try {
|
||||
- nativeimage.m_85056_(file2);
|
||||
+ nativeimage.m_85056_(target);
|
||||
Component component = Component.m_237113_(file2.getName()).m_130940_(ChatFormatting.UNDERLINE).m_130938_((p_168608_) -> {
|
||||
- return p_168608_.m_131142_(new ClickEvent(ClickEvent.Action.OPEN_FILE, file2.getAbsolutePath()));
|
||||
+ return p_168608_.m_131142_(new ClickEvent(ClickEvent.Action.OPEN_FILE, target.getAbsolutePath()));
|
||||
- nativeimage.writeToFile(file2);
|
||||
+ nativeimage.writeToFile(target);
|
||||
Component component = Component.literal(file2.getName()).withStyle(ChatFormatting.UNDERLINE).withStyle((p_168608_) -> {
|
||||
- return p_168608_.withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_FILE, file2.getAbsolutePath()));
|
||||
+ return p_168608_.withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_FILE, target.getAbsolutePath()));
|
||||
});
|
||||
- p_92311_.accept(Component.m_237110_("screenshot.success", component));
|
||||
- p_92311_.accept(Component.translatable("screenshot.success", component));
|
||||
+ if (event.getResultMessage() != null)
|
||||
+ p_92311_.accept(event.getResultMessage());
|
||||
+ else
|
||||
+ p_92311_.accept(Component.m_237110_("screenshot.success", component));
|
||||
+ p_92311_.accept(Component.translatable("screenshot.success", component));
|
||||
} catch (Exception exception) {
|
||||
f_92276_.warn("Couldn't save screenshot", (Throwable)exception);
|
||||
p_92311_.accept(Component.m_237110_("screenshot.failure", exception.getMessage()));
|
||||
LOGGER.warn("Couldn't save screenshot", (Throwable)exception);
|
||||
p_92311_.accept(Component.translatable("screenshot.failure", exception.getMessage()));
|
||||
@@ -2,18 +2,18 @@
|
||||
+++ b/net/minecraft/client/ToggleKeyMapping.java
|
||||
@@ -16,7 +_,7 @@
|
||||
|
||||
public void m_7249_(boolean p_92534_) {
|
||||
if (this.f_92527_.getAsBoolean()) {
|
||||
public void setDown(boolean p_92534_) {
|
||||
if (this.needsToggle.getAsBoolean()) {
|
||||
- if (p_92534_) {
|
||||
+ if (p_92534_ && isConflictContextAndModifierActive()) {
|
||||
super.m_7249_(!this.m_90857_());
|
||||
super.setDown(!this.isDown());
|
||||
}
|
||||
} else {
|
||||
@@ -24,6 +_,7 @@
|
||||
}
|
||||
|
||||
}
|
||||
+ @Override public boolean m_90857_() { return this.f_90817_ && (isConflictContextAndModifierActive() || f_92527_.getAsBoolean()); }
|
||||
+ @Override public boolean isDown() { return this.isDown && (isConflictContextAndModifierActive() || needsToggle.getAsBoolean()); }
|
||||
|
||||
protected void m_289748_() {
|
||||
super.m_7249_(false);
|
||||
protected void reset() {
|
||||
super.setDown(false);
|
||||
@@ -3,42 +3,42 @@
|
||||
@@ -28,7 +_,8 @@
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public class BlockColors {
|
||||
private static final int f_168640_ = -1;
|
||||
- private final IdMapper<BlockColor> f_92571_ = new IdMapper<>(32);
|
||||
private static final int DEFAULT = -1;
|
||||
- private final IdMapper<BlockColor> blockColors = new IdMapper<>(32);
|
||||
+ // FORGE: Use registry delegate as non-Vanilla block ids are not constant
|
||||
+ private final java.util.Map<net.minecraft.core.Holder.Reference<Block>, BlockColor> f_92571_ = new java.util.HashMap<>();
|
||||
private final Map<Block, Set<Property<?>>> f_92572_ = Maps.newHashMap();
|
||||
+ private final java.util.Map<net.minecraft.core.Holder.Reference<Block>, BlockColor> blockColors = new java.util.HashMap<>();
|
||||
private final Map<Block, Set<Property<?>>> coloringStates = Maps.newHashMap();
|
||||
|
||||
public static BlockColors m_92574_() {
|
||||
public static BlockColors createDefault() {
|
||||
@@ -80,11 +_,12 @@
|
||||
blockcolors.m_92589_((p_92596_, p_92597_, p_92598_, p_92599_) -> {
|
||||
blockcolors.register((p_92596_, p_92597_, p_92598_, p_92599_) -> {
|
||||
return p_92597_ != null && p_92598_ != null ? 2129968 : 7455580;
|
||||
}, Blocks.f_50196_);
|
||||
}, Blocks.LILY_PAD);
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onBlockColorsInit(blockcolors);
|
||||
return blockcolors;
|
||||
}
|
||||
|
||||
public int m_92582_(BlockState p_92583_, Level p_92584_, BlockPos p_92585_) {
|
||||
- BlockColor blockcolor = this.f_92571_.m_7942_(BuiltInRegistries.f_256975_.m_7447_(p_92583_.m_60734_()));
|
||||
+ BlockColor blockcolor = this.f_92571_.get(net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(p_92583_.m_60734_()));
|
||||
public int getColor(BlockState p_92583_, Level p_92584_, BlockPos p_92585_) {
|
||||
- BlockColor blockcolor = this.blockColors.byId(BuiltInRegistries.BLOCK.getId(p_92583_.getBlock()));
|
||||
+ BlockColor blockcolor = this.blockColors.get(net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(p_92583_.getBlock()));
|
||||
if (blockcolor != null) {
|
||||
return blockcolor.m_92566_(p_92583_, (BlockAndTintGetter)null, (BlockPos)null, 0);
|
||||
return blockcolor.getColor(p_92583_, (BlockAndTintGetter)null, (BlockPos)null, 0);
|
||||
} else {
|
||||
@@ -94,13 +_,15 @@
|
||||
}
|
||||
|
||||
public int m_92577_(BlockState p_92578_, @Nullable BlockAndTintGetter p_92579_, @Nullable BlockPos p_92580_, int p_92581_) {
|
||||
- BlockColor blockcolor = this.f_92571_.m_7942_(BuiltInRegistries.f_256975_.m_7447_(p_92578_.m_60734_()));
|
||||
+ BlockColor blockcolor = this.f_92571_.get(net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(p_92578_.m_60734_()));
|
||||
return blockcolor == null ? -1 : blockcolor.m_92566_(p_92578_, p_92579_, p_92580_, p_92581_);
|
||||
public int getColor(BlockState p_92578_, @Nullable BlockAndTintGetter p_92579_, @Nullable BlockPos p_92580_, int p_92581_) {
|
||||
- BlockColor blockcolor = this.blockColors.byId(BuiltInRegistries.BLOCK.getId(p_92578_.getBlock()));
|
||||
+ BlockColor blockcolor = this.blockColors.get(net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(p_92578_.getBlock()));
|
||||
return blockcolor == null ? -1 : blockcolor.getColor(p_92578_, p_92579_, p_92580_, p_92581_);
|
||||
}
|
||||
|
||||
+ /** @deprecated Register via {@link net.minecraftforge.client.event.RegisterColorHandlersEvent.Block} */
|
||||
+ @Deprecated
|
||||
public void m_92589_(BlockColor p_92590_, Block... p_92591_) {
|
||||
public void register(BlockColor p_92590_, Block... p_92591_) {
|
||||
for(Block block : p_92591_) {
|
||||
- this.f_92571_.m_122664_(p_92590_, BuiltInRegistries.f_256975_.m_7447_(block));
|
||||
+ this.f_92571_.put(net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(block), p_92590_);
|
||||
- this.blockColors.addMapping(p_92590_, BuiltInRegistries.BLOCK.getId(block));
|
||||
+ this.blockColors.put(net.minecraftforge.registries.ForgeRegistries.BLOCKS.getDelegateOrThrow(block), p_92590_);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,33 +3,33 @@
|
||||
@@ -25,7 +_,8 @@
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public class ItemColors {
|
||||
private static final int f_168642_ = -1;
|
||||
- private final IdMapper<ItemColor> f_92674_ = new IdMapper<>(32);
|
||||
private static final int DEFAULT = -1;
|
||||
- private final IdMapper<ItemColor> itemColors = new IdMapper<>(32);
|
||||
+ // FORGE: Use registry delegate as non-Vanilla item ids are not constant
|
||||
+ private final java.util.Map<net.minecraft.core.Holder.Reference<Item>, ItemColor> f_92674_ = new java.util.HashMap<>();
|
||||
+ private final java.util.Map<net.minecraft.core.Holder.Reference<Item>, ItemColor> itemColors = new java.util.HashMap<>();
|
||||
|
||||
public static ItemColors m_92683_(BlockColors p_92684_) {
|
||||
public static ItemColors createDefault(BlockColors p_92684_) {
|
||||
ItemColors itemcolors = new ItemColors();
|
||||
@@ -88,17 +_,20 @@
|
||||
itemcolors.m_92689_((p_232352_, p_232353_) -> {
|
||||
return p_232353_ == 0 ? -1 : MapItem.m_42918_(p_232352_);
|
||||
}, Items.f_42573_);
|
||||
itemcolors.register((p_232352_, p_232353_) -> {
|
||||
return p_232353_ == 0 ? -1 : MapItem.getColor(p_232352_);
|
||||
}, Items.FILLED_MAP);
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onItemColorsInit(itemcolors, p_92684_);
|
||||
return itemcolors;
|
||||
}
|
||||
|
||||
public int m_92676_(ItemStack p_92677_, int p_92678_) {
|
||||
- ItemColor itemcolor = this.f_92674_.m_7942_(BuiltInRegistries.f_257033_.m_7447_(p_92677_.m_41720_()));
|
||||
+ ItemColor itemcolor = this.f_92674_.get(net.minecraftforge.registries.ForgeRegistries.ITEMS.getDelegateOrThrow(p_92677_.m_41720_()));
|
||||
return itemcolor == null ? -1 : itemcolor.m_92671_(p_92677_, p_92678_);
|
||||
public int getColor(ItemStack p_92677_, int p_92678_) {
|
||||
- ItemColor itemcolor = this.itemColors.byId(BuiltInRegistries.ITEM.getId(p_92677_.getItem()));
|
||||
+ ItemColor itemcolor = this.itemColors.get(net.minecraftforge.registries.ForgeRegistries.ITEMS.getDelegateOrThrow(p_92677_.getItem()));
|
||||
return itemcolor == null ? -1 : itemcolor.getColor(p_92677_, p_92678_);
|
||||
}
|
||||
|
||||
+ /** @deprecated Register via {@link net.minecraftforge.client.event.RegisterColorHandlersEvent.Item} */
|
||||
+ @Deprecated
|
||||
public void m_92689_(ItemColor p_92690_, ItemLike... p_92691_) {
|
||||
public void register(ItemColor p_92690_, ItemLike... p_92691_) {
|
||||
for(ItemLike itemlike : p_92691_) {
|
||||
- this.f_92674_.m_122664_(p_92690_, Item.m_41393_(itemlike.m_5456_()));
|
||||
+ this.f_92674_.put(net.minecraftforge.registries.ForgeRegistries.ITEMS.getDelegateOrThrow(itemlike.m_5456_()), p_92690_);
|
||||
- this.itemColors.addMapping(p_92690_, Item.getId(itemlike.asItem()));
|
||||
+ this.itemColors.put(net.minecraftforge.registries.ForgeRegistries.ITEMS.getDelegateOrThrow(itemlike.asItem()), p_92690_);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,12 +6,12 @@
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
-public class Font {
|
||||
+public class Font implements net.minecraftforge.client.extensions.IForgeFont {
|
||||
private static final float f_168643_ = 0.01F;
|
||||
private static final Vector3f f_92712_ = new Vector3f(0.0F, 0.0F, 0.03F);
|
||||
public static final int f_193827_ = 8;
|
||||
private static final float EFFECT_DEPTH = 0.01F;
|
||||
private static final Vector3f SHADOW_OFFSET = new Vector3f(0.0F, 0.0F, 0.03F);
|
||||
public static final int ALPHA_CUTOFF = 8;
|
||||
@@ -202,6 +_,8 @@
|
||||
public StringSplitter m_92865_() {
|
||||
return this.f_92714_;
|
||||
public StringSplitter getSplitter() {
|
||||
return this.splitter;
|
||||
}
|
||||
+
|
||||
+ @Override public Font self() { return this; }
|
||||
|
||||
@@ -1,77 +1,77 @@
|
||||
--- a/net/minecraft/client/gui/Gui.java
|
||||
+++ b/net/minecraft/client/gui/Gui.java
|
||||
@@ -130,7 +_,7 @@
|
||||
public float f_92980_ = 1.0F;
|
||||
protected int f_92993_;
|
||||
protected ItemStack f_92994_ = ItemStack.f_41583_;
|
||||
- protected final DebugScreenOverlay f_291320_;
|
||||
+ protected DebugScreenOverlay f_291320_;
|
||||
protected final SubtitleOverlay f_92996_;
|
||||
protected final SpectatorGui f_92997_;
|
||||
protected final PlayerTabOverlay f_92998_;
|
||||
public float vignetteBrightness = 1.0F;
|
||||
protected int toolHighlightTimer;
|
||||
protected ItemStack lastToolHighlight = ItemStack.EMPTY;
|
||||
- protected final DebugScreenOverlay debugOverlay;
|
||||
+ protected DebugScreenOverlay debugOverlay;
|
||||
protected final SubtitleOverlay subtitleOverlay;
|
||||
protected final SpectatorGui spectatorGui;
|
||||
protected final PlayerTabOverlay tabList;
|
||||
@@ -453,6 +_,8 @@
|
||||
|
||||
for(MobEffectInstance mobeffectinstance : Ordering.natural().reverse().sortedCopy(collection)) {
|
||||
MobEffect mobeffect = mobeffectinstance.m_19544_();
|
||||
MobEffect mobeffect = mobeffectinstance.getEffect();
|
||||
+ var renderer = net.minecraftforge.client.extensions.common.IClientMobEffectExtensions.of(mobeffectinstance);
|
||||
+ if (!renderer.isVisibleInGui(mobeffectinstance)) continue;
|
||||
if (mobeffectinstance.m_19575_()) {
|
||||
int i = this.f_92977_;
|
||||
if (mobeffectinstance.showIcon()) {
|
||||
int i = this.screenWidth;
|
||||
int j = 1;
|
||||
@@ -481,6 +_,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ if (renderer.renderGuiIcon(mobeffectinstance, this, p_282812_, i, j, 0, f)) continue;
|
||||
TextureAtlasSprite textureatlassprite = mobeffecttexturemanager.m_118732_(mobeffect);
|
||||
TextureAtlasSprite textureatlassprite = mobeffecttexturemanager.get(mobeffect);
|
||||
int i1 = j;
|
||||
float f1 = f;
|
||||
@@ -601,16 +_,21 @@
|
||||
}
|
||||
|
||||
public void m_280295_(GuiGraphics p_283501_) {
|
||||
public void renderSelectedItemName(GuiGraphics p_283501_) {
|
||||
+ renderSelectedItemName(p_283501_, 0);
|
||||
+ }
|
||||
+
|
||||
+ public void renderSelectedItemName(GuiGraphics p_283501_, int yShift) {
|
||||
this.f_92986_.m_91307_().m_6180_("selectedItemName");
|
||||
if (this.f_92993_ > 0 && !this.f_92994_.m_41619_()) {
|
||||
- MutableComponent mutablecomponent = Component.m_237119_().m_7220_(this.f_92994_.m_41786_()).m_130940_(this.f_92994_.m_41791_().f_43022_);
|
||||
+ MutableComponent mutablecomponent = Component.m_237119_().m_7220_(this.f_92994_.m_41786_()).m_130938_(this.f_92994_.m_41791_().getStyleModifier());
|
||||
if (this.f_92994_.m_41788_()) {
|
||||
mutablecomponent.m_130940_(ChatFormatting.ITALIC);
|
||||
this.minecraft.getProfiler().push("selectedItemName");
|
||||
if (this.toolHighlightTimer > 0 && !this.lastToolHighlight.isEmpty()) {
|
||||
- MutableComponent mutablecomponent = Component.empty().append(this.lastToolHighlight.getHoverName()).withStyle(this.lastToolHighlight.getRarity().color);
|
||||
+ MutableComponent mutablecomponent = Component.empty().append(this.lastToolHighlight.getHoverName()).withStyle(this.lastToolHighlight.getRarity().getStyleModifier());
|
||||
if (this.lastToolHighlight.hasCustomHoverName()) {
|
||||
mutablecomponent.withStyle(ChatFormatting.ITALIC);
|
||||
}
|
||||
|
||||
- int i = this.m_93082_().m_92852_(mutablecomponent);
|
||||
+ Component highlightTip = this.f_92994_.getHighlightTip(mutablecomponent);
|
||||
+ int i = this.m_93082_().m_92852_(highlightTip);
|
||||
int j = (this.f_92977_ - i) / 2;
|
||||
- int k = this.f_92978_ - 59;
|
||||
+ int k = this.f_92978_ - Math.max(yShift, 59);
|
||||
if (!this.f_92986_.f_91072_.m_105205_()) {
|
||||
- int i = this.getFont().width(mutablecomponent);
|
||||
+ Component highlightTip = this.lastToolHighlight.getHighlightTip(mutablecomponent);
|
||||
+ int i = this.getFont().width(highlightTip);
|
||||
int j = (this.screenWidth - i) / 2;
|
||||
- int k = this.screenHeight - 59;
|
||||
+ int k = this.screenHeight - Math.max(yShift, 59);
|
||||
if (!this.minecraft.gameMode.canHurtPlayer()) {
|
||||
k += 14;
|
||||
}
|
||||
@@ -622,7 +_,13 @@
|
||||
|
||||
if (l > 0) {
|
||||
p_283501_.m_280509_(j - 2, k - 2, j + i + 2, k + 9 + 2, this.f_92986_.f_91066_.m_92143_(0));
|
||||
- p_283501_.m_280430_(this.m_93082_(), mutablecomponent, j, k, 16777215 + (l << 24));
|
||||
+ Font font = net.minecraftforge.client.extensions.common.IClientItemExtensions.of(f_92994_).getFont(f_92994_, net.minecraftforge.client.extensions.common.IClientItemExtensions.FontContext.SELECTED_ITEM_NAME);
|
||||
p_283501_.fill(j - 2, k - 2, j + i + 2, k + 9 + 2, this.minecraft.options.getBackgroundColor(0));
|
||||
- p_283501_.drawString(this.getFont(), mutablecomponent, j, k, 16777215 + (l << 24));
|
||||
+ Font font = net.minecraftforge.client.extensions.common.IClientItemExtensions.of(lastToolHighlight).getFont(lastToolHighlight, net.minecraftforge.client.extensions.common.IClientItemExtensions.FontContext.SELECTED_ITEM_NAME);
|
||||
+ if (font == null) {
|
||||
+ p_283501_.m_280430_(this.m_93082_(), highlightTip, j, k, 16777215 + (l << 24));
|
||||
+ p_283501_.drawString(this.getFont(), highlightTip, j, k, 16777215 + (l << 24));
|
||||
+ } else {
|
||||
+ j = (this.f_92977_ - font.m_92852_(highlightTip)) / 2;
|
||||
+ p_283501_.m_280430_(font, highlightTip, j, k, 16777215 + (l << 24));
|
||||
+ j = (this.screenWidth - font.width(highlightTip)) / 2;
|
||||
+ p_283501_.drawString(font, highlightTip, j, k, 16777215 + (l << 24));
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1069,7 +_,7 @@
|
||||
ItemStack itemstack = this.f_92986_.f_91074_.m_150109_().m_36056_();
|
||||
if (itemstack.m_41619_()) {
|
||||
this.f_92993_ = 0;
|
||||
- } else if (!this.f_92994_.m_41619_() && itemstack.m_150930_(this.f_92994_.m_41720_()) && itemstack.m_41786_().equals(this.f_92994_.m_41786_())) {
|
||||
+ } else if (!this.f_92994_.m_41619_() && itemstack.m_41720_() == this.f_92994_.m_41720_() && (itemstack.m_41786_().equals(this.f_92994_.m_41786_()) && itemstack.getHighlightTip(itemstack.m_41786_()).equals(f_92994_.getHighlightTip(f_92994_.m_41786_())))) {
|
||||
if (this.f_92993_ > 0) {
|
||||
--this.f_92993_;
|
||||
ItemStack itemstack = this.minecraft.player.getInventory().getSelected();
|
||||
if (itemstack.isEmpty()) {
|
||||
this.toolHighlightTimer = 0;
|
||||
- } else if (!this.lastToolHighlight.isEmpty() && itemstack.is(this.lastToolHighlight.getItem()) && itemstack.getHoverName().equals(this.lastToolHighlight.getHoverName())) {
|
||||
+ } else if (!this.lastToolHighlight.isEmpty() && itemstack.getItem() == this.lastToolHighlight.getItem() && (itemstack.getHoverName().equals(this.lastToolHighlight.getHoverName()) && itemstack.getHighlightTip(itemstack.getHoverName()).equals(lastToolHighlight.getHighlightTip(lastToolHighlight.getHoverName())))) {
|
||||
if (this.toolHighlightTimer > 0) {
|
||||
--this.toolHighlightTimer;
|
||||
}
|
||||
@@ -6,13 +6,13 @@
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
-public class GuiGraphics {
|
||||
+public class GuiGraphics implements net.minecraftforge.client.extensions.IForgeGuiGraphics {
|
||||
public static final float f_289044_ = 10000.0F;
|
||||
public static final float f_289038_ = -10000.0F;
|
||||
private static final int f_279564_ = 2;
|
||||
public static final float MAX_GUI_Z = 10000.0F;
|
||||
public static final float MIN_GUI_Z = -10000.0F;
|
||||
private static final int EXTRA_SPACE_AFTER_FIRST_TOOLTIP_LINE = 2;
|
||||
@@ -271,6 +_,11 @@
|
||||
}
|
||||
|
||||
public int m_280056_(Font p_283343_, @Nullable String p_281896_, int p_283569_, int p_283418_, int p_281560_, boolean p_282130_) {
|
||||
public int drawString(Font p_283343_, @Nullable String p_281896_, int p_283569_, int p_283418_, int p_281560_, boolean p_282130_) {
|
||||
+ return this.drawString(p_283343_, p_281896_, (float)p_283569_, (float)p_283418_, p_281560_, p_282130_);
|
||||
+ }
|
||||
+
|
||||
@@ -24,83 +24,83 @@
|
||||
@@ -285,6 +_,11 @@
|
||||
}
|
||||
|
||||
public int m_280649_(Font p_282636_, FormattedCharSequence p_281596_, int p_281586_, int p_282816_, int p_281743_, boolean p_282394_) {
|
||||
public int drawString(Font p_282636_, FormattedCharSequence p_281596_, int p_281586_, int p_282816_, int p_281743_, boolean p_282394_) {
|
||||
+ return this.drawString(p_282636_, p_281596_, (float)p_281586_, (float)p_282816_, p_281743_, p_282394_);
|
||||
+ }
|
||||
+
|
||||
+ // Forge: Add float variant for x,y coordinates
|
||||
+ public int drawString(Font p_282636_, FormattedCharSequence p_281596_, float p_281586_, float p_282816_, int p_281743_, boolean p_282394_) {
|
||||
int i = p_282636_.m_272191_(p_281596_, (float)p_281586_, (float)p_282816_, p_281743_, p_282394_, this.f_279612_.m_85850_().m_252922_(), this.f_279627_, Font.DisplayMode.NORMAL, 0, 15728880);
|
||||
this.m_286081_();
|
||||
int i = p_282636_.drawInBatch(p_281596_, (float)p_281586_, (float)p_282816_, p_281743_, p_282394_, this.pose.last().pose(), this.bufferSource, Font.DisplayMode.NORMAL, 0, 15728880);
|
||||
this.flushIfUnmanaged();
|
||||
return i;
|
||||
@@ -511,6 +_,7 @@
|
||||
crashreportcategory.m_128165_("Item Type", () -> {
|
||||
return String.valueOf((Object)p_281675_.m_41720_());
|
||||
crashreportcategory.setDetail("Item Type", () -> {
|
||||
return String.valueOf((Object)p_281675_.getItem());
|
||||
});
|
||||
+ crashreportcategory.m_128165_("Registry Name", () -> String.valueOf(net.minecraftforge.registries.ForgeRegistries.ITEMS.getKey(p_281675_.m_41720_())));
|
||||
crashreportcategory.m_128165_("Item Damage", () -> {
|
||||
return String.valueOf(p_281675_.m_41773_());
|
||||
+ crashreportcategory.setDetail("Registry Name", () -> String.valueOf(net.minecraftforge.registries.ForgeRegistries.ITEMS.getKey(p_281675_.getItem())));
|
||||
crashreportcategory.setDetail("Item Damage", () -> {
|
||||
return String.valueOf(p_281675_.getDamageValue());
|
||||
});
|
||||
@@ -558,18 +_,26 @@
|
||||
}
|
||||
|
||||
this.f_279612_.m_85849_();
|
||||
this.pose.popPose();
|
||||
+ net.minecraftforge.client.ItemDecoratorHandler.of(p_283349_).render(this, p_282005_, p_283349_, p_282641_, p_282146_);
|
||||
}
|
||||
}
|
||||
+
|
||||
+ private ItemStack tooltipStack = ItemStack.f_41583_;
|
||||
+ private ItemStack tooltipStack = ItemStack.EMPTY;
|
||||
|
||||
public void m_280153_(Font p_282308_, ItemStack p_282781_, int p_282687_, int p_282292_) {
|
||||
public void renderTooltip(Font p_282308_, ItemStack p_282781_, int p_282687_, int p_282292_) {
|
||||
+ this.tooltipStack = p_282781_;
|
||||
this.m_280677_(p_282308_, Screen.m_280152_(this.f_279544_, p_282781_), p_282781_.m_150921_(), p_282687_, p_282292_);
|
||||
+ this.tooltipStack = ItemStack.f_41583_;
|
||||
this.renderTooltip(p_282308_, Screen.getTooltipFromItem(this.minecraft, p_282781_), p_282781_.getTooltipImage(), p_282687_, p_282292_);
|
||||
+ this.tooltipStack = ItemStack.EMPTY;
|
||||
+ }
|
||||
+
|
||||
+ public void renderTooltip(Font font, List<Component> textComponents, Optional<TooltipComponent> tooltipComponent, ItemStack stack, int mouseX, int mouseY) {
|
||||
+ this.tooltipStack = stack;
|
||||
+ this.m_280677_(font, textComponents, tooltipComponent, mouseX, mouseY);
|
||||
+ this.tooltipStack = ItemStack.f_41583_;
|
||||
+ this.renderTooltip(font, textComponents, tooltipComponent, mouseX, mouseY);
|
||||
+ this.tooltipStack = ItemStack.EMPTY;
|
||||
}
|
||||
|
||||
public void m_280677_(Font p_283128_, List<Component> p_282716_, Optional<TooltipComponent> p_281682_, int p_283678_, int p_281696_) {
|
||||
- List<ClientTooltipComponent> list = p_282716_.stream().map(Component::m_7532_).map(ClientTooltipComponent::m_169948_).collect(Collectors.toList());
|
||||
public void renderTooltip(Font p_283128_, List<Component> p_282716_, Optional<TooltipComponent> p_281682_, int p_283678_, int p_281696_) {
|
||||
- List<ClientTooltipComponent> list = p_282716_.stream().map(Component::getVisualOrderText).map(ClientTooltipComponent::create).collect(Collectors.toList());
|
||||
- p_281682_.ifPresent((p_282969_) -> {
|
||||
- list.add(1, ClientTooltipComponent.m_169950_(p_282969_));
|
||||
- list.add(1, ClientTooltipComponent.create(p_282969_));
|
||||
- });
|
||||
+ List<ClientTooltipComponent> list = net.minecraftforge.client.ForgeHooksClient.gatherTooltipComponents(this.tooltipStack, p_282716_, p_281682_, p_283678_, m_280182_(), m_280206_(), p_283128_);
|
||||
this.m_280497_(p_283128_, list, p_283678_, p_281696_, DefaultTooltipPositioner.f_262752_);
|
||||
+ List<ClientTooltipComponent> list = net.minecraftforge.client.ForgeHooksClient.gatherTooltipComponents(this.tooltipStack, p_282716_, p_281682_, p_283678_, guiWidth(), guiHeight(), p_283128_);
|
||||
this.renderTooltipInternal(p_283128_, list, p_283678_, p_281696_, DefaultTooltipPositioner.INSTANCE);
|
||||
}
|
||||
|
||||
@@ -578,7 +_,15 @@
|
||||
}
|
||||
|
||||
public void m_280666_(Font p_282739_, List<Component> p_281832_, int p_282191_, int p_282446_) {
|
||||
- this.m_280245_(p_282739_, Lists.transform(p_281832_, Component::m_7532_), p_282191_, p_282446_);
|
||||
+ List<ClientTooltipComponent> components = net.minecraftforge.client.ForgeHooksClient.gatherTooltipComponents(this.tooltipStack, p_281832_, p_282191_, m_280182_(), m_280206_(), p_282739_);
|
||||
+ this.m_280497_(p_282739_, components, p_282191_, p_282446_, DefaultTooltipPositioner.f_262752_);
|
||||
public void renderComponentTooltip(Font p_282739_, List<Component> p_281832_, int p_282191_, int p_282446_) {
|
||||
- this.renderTooltip(p_282739_, Lists.transform(p_281832_, Component::getVisualOrderText), p_282191_, p_282446_);
|
||||
+ List<ClientTooltipComponent> components = net.minecraftforge.client.ForgeHooksClient.gatherTooltipComponents(this.tooltipStack, p_281832_, p_282191_, guiWidth(), guiHeight(), p_282739_);
|
||||
+ this.renderTooltipInternal(p_282739_, components, p_282191_, p_282446_, DefaultTooltipPositioner.INSTANCE);
|
||||
+ }
|
||||
+
|
||||
+ public void renderComponentTooltip(Font font, List<? extends net.minecraft.network.chat.FormattedText> tooltips, int mouseX, int mouseY, ItemStack stack) {
|
||||
+ this.tooltipStack = stack;
|
||||
+ List<ClientTooltipComponent> components = net.minecraftforge.client.ForgeHooksClient.gatherTooltipComponents(stack, tooltips, mouseX, m_280182_(), m_280206_(), font);
|
||||
+ this.m_280497_(font, components, mouseX, mouseY, DefaultTooltipPositioner.f_262752_);
|
||||
+ this.tooltipStack = ItemStack.f_41583_;
|
||||
+ List<ClientTooltipComponent> components = net.minecraftforge.client.ForgeHooksClient.gatherTooltipComponents(stack, tooltips, mouseX, guiWidth(), guiHeight(), font);
|
||||
+ this.renderTooltipInternal(font, components, mouseX, mouseY, DefaultTooltipPositioner.INSTANCE);
|
||||
+ this.tooltipStack = ItemStack.EMPTY;
|
||||
}
|
||||
|
||||
public void m_280245_(Font p_282192_, List<? extends FormattedCharSequence> p_282297_, int p_281680_, int p_283325_) {
|
||||
public void renderTooltip(Font p_282192_, List<? extends FormattedCharSequence> p_282297_, int p_281680_, int p_283325_) {
|
||||
@@ -591,11 +_,13 @@
|
||||
|
||||
private void m_280497_(Font p_282675_, List<ClientTooltipComponent> p_282615_, int p_283230_, int p_283417_, ClientTooltipPositioner p_282442_) {
|
||||
private void renderTooltipInternal(Font p_282675_, List<ClientTooltipComponent> p_282615_, int p_283230_, int p_283417_, ClientTooltipPositioner p_282442_) {
|
||||
if (!p_282615_.isEmpty()) {
|
||||
+ net.minecraftforge.client.event.RenderTooltipEvent.Pre preEvent = net.minecraftforge.client.ForgeHooksClient.onRenderTooltipPre(this.tooltipStack, this, p_283230_, p_283417_, m_280182_(), m_280206_(), p_282615_, p_282675_, p_282442_);
|
||||
+ net.minecraftforge.client.event.RenderTooltipEvent.Pre preEvent = net.minecraftforge.client.ForgeHooksClient.onRenderTooltipPre(this.tooltipStack, this, p_283230_, p_283417_, guiWidth(), guiHeight(), p_282615_, p_282675_, p_282442_);
|
||||
+ if (preEvent.isCanceled()) return;
|
||||
int i = 0;
|
||||
int j = p_282615_.size() == 1 ? -2 : 0;
|
||||
|
||||
for(ClientTooltipComponent clienttooltipcomponent : p_282615_) {
|
||||
- int k = clienttooltipcomponent.m_142069_(p_282675_);
|
||||
+ int k = clienttooltipcomponent.m_142069_(preEvent.getFont());
|
||||
- int k = clienttooltipcomponent.getWidth(p_282675_);
|
||||
+ int k = clienttooltipcomponent.getWidth(preEvent.getFont());
|
||||
if (k > i) {
|
||||
i = k;
|
||||
}
|
||||
@@ -108,33 +108,33 @@
|
||||
|
||||
int i2 = i;
|
||||
int j2 = j;
|
||||
- Vector2ic vector2ic = p_282442_.m_262814_(this.m_280182_(), this.m_280206_(), p_283230_, p_283417_, i2, j2);
|
||||
+ Vector2ic vector2ic = p_282442_.m_262814_(this.m_280182_(), this.m_280206_(), preEvent.getX(), preEvent.getY(), i2, j2);
|
||||
- Vector2ic vector2ic = p_282442_.positionTooltip(this.guiWidth(), this.guiHeight(), p_283230_, p_283417_, i2, j2);
|
||||
+ Vector2ic vector2ic = p_282442_.positionTooltip(this.guiWidth(), this.guiHeight(), preEvent.getX(), preEvent.getY(), i2, j2);
|
||||
int l = vector2ic.x();
|
||||
int i1 = vector2ic.y();
|
||||
this.f_279612_.m_85836_();
|
||||
this.pose.pushPose();
|
||||
int j1 = 400;
|
||||
this.m_286007_(() -> {
|
||||
- TooltipRenderUtil.m_280205_(this, l, i1, i2, j2, 400);
|
||||
this.drawManaged(() -> {
|
||||
- TooltipRenderUtil.renderTooltipBackground(this, l, i1, i2, j2, 400);
|
||||
+ net.minecraftforge.client.event.RenderTooltipEvent.Color colorEvent = net.minecraftforge.client.ForgeHooksClient.onRenderTooltipColor(this.tooltipStack, this, l, i1, preEvent.getFont(), p_282615_);
|
||||
+ TooltipRenderUtil.renderTooltipBackground(this, l, i1, i2, j2, 400, colorEvent.getBackgroundStart(), colorEvent.getBackgroundEnd(), colorEvent.getBorderStart(), colorEvent.getBorderEnd());
|
||||
});
|
||||
this.f_279612_.m_252880_(0.0F, 0.0F, 400.0F);
|
||||
this.pose.translate(0.0F, 0.0F, 400.0F);
|
||||
int k1 = i1;
|
||||
|
||||
for(int l1 = 0; l1 < p_282615_.size(); ++l1) {
|
||||
ClientTooltipComponent clienttooltipcomponent1 = p_282615_.get(l1);
|
||||
- clienttooltipcomponent1.m_142440_(p_282675_, l, k1, this.f_279612_.m_85850_().m_252922_(), this.f_279627_);
|
||||
+ clienttooltipcomponent1.m_142440_(preEvent.getFont(), l, k1, this.f_279612_.m_85850_().m_252922_(), this.f_279627_);
|
||||
k1 += clienttooltipcomponent1.m_142103_() + (l1 == 0 ? 2 : 0);
|
||||
- clienttooltipcomponent1.renderText(p_282675_, l, k1, this.pose.last().pose(), this.bufferSource);
|
||||
+ clienttooltipcomponent1.renderText(preEvent.getFont(), l, k1, this.pose.last().pose(), this.bufferSource);
|
||||
k1 += clienttooltipcomponent1.getHeight() + (l1 == 0 ? 2 : 0);
|
||||
}
|
||||
|
||||
@@ -626,7 +_,7 @@
|
||||
|
||||
for(int k2 = 0; k2 < p_282615_.size(); ++k2) {
|
||||
ClientTooltipComponent clienttooltipcomponent2 = p_282615_.get(k2);
|
||||
- clienttooltipcomponent2.m_183452_(p_282675_, l, k1, this);
|
||||
+ clienttooltipcomponent2.m_183452_(preEvent.getFont(), l, k1, this);
|
||||
k1 += clienttooltipcomponent2.m_142103_() + (k2 == 0 ? 2 : 0);
|
||||
- clienttooltipcomponent2.renderImage(p_282675_, l, k1, this);
|
||||
+ clienttooltipcomponent2.renderImage(preEvent.getFont(), l, k1, this);
|
||||
k1 += clienttooltipcomponent2.getHeight() + (k2 == 0 ? 2 : 0);
|
||||
}
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
+++ b/net/minecraft/client/gui/components/AbstractButton.java
|
||||
@@ -29,7 +_,7 @@
|
||||
RenderSystem.enableDepthTest();
|
||||
p_281670_.m_292816_(f_290895_.m_295557_(this.f_93623_, this.m_198029_()), this.m_252754_(), this.m_252907_(), this.m_5711_(), this.m_93694_());
|
||||
p_281670_.m_280246_(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
- int i = this.f_93623_ ? 16777215 : 10526880;
|
||||
p_281670_.blitSprite(SPRITES.get(this.active, this.isHoveredOrFocused()), this.getX(), this.getY(), this.getWidth(), this.getHeight());
|
||||
p_281670_.setColor(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
- int i = this.active ? 16777215 : 10526880;
|
||||
+ int i = getFGColor();
|
||||
this.m_280465_(p_281670_, minecraft.f_91062_, i | Mth.m_14167_(this.f_93625_ * 255.0F) << 24);
|
||||
this.renderString(p_281670_, minecraft.font, i | Mth.ceil(this.alpha * 255.0F) << 24);
|
||||
}
|
||||
|
||||
+7
-7
@@ -1,15 +1,15 @@
|
||||
--- a/net/minecraft/client/gui/components/AbstractSelectionList.java
|
||||
+++ b/net/minecraft/client/gui/components/AbstractSelectionList.java
|
||||
@@ -504,6 +_,13 @@
|
||||
return new ScreenRectangle(this.f_93393_, this.f_93390_, this.f_93392_ - this.f_93393_, this.f_93391_ - this.f_93390_);
|
||||
return new ScreenRectangle(this.x0, this.y0, this.x1 - this.x0, this.y1 - this.y0);
|
||||
}
|
||||
|
||||
+ public int getWidth() { return this.f_93388_; }
|
||||
+ public int getHeight() { return this.f_93389_; }
|
||||
+ public int getTop() { return this.f_93390_; }
|
||||
+ public int getBottom() { return this.f_93391_; }
|
||||
+ public int getLeft() { return this.f_93393_; }
|
||||
+ public int getRight() { return this.f_93392_; }
|
||||
+ public int getWidth() { return this.width; }
|
||||
+ public int getHeight() { return this.height; }
|
||||
+ public int getTop() { return this.y0; }
|
||||
+ public int getBottom() { return this.y1; }
|
||||
+ public int getLeft() { return this.x0; }
|
||||
+ public int getRight() { return this.x1; }
|
||||
+
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
protected abstract static class Entry<E extends AbstractSelectionList.Entry<E>> implements GuiEventListener {
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
--- a/net/minecraft/client/gui/components/AbstractWidget.java
|
||||
+++ b/net/minecraft/client/gui/components/AbstractWidget.java
|
||||
@@ -259,6 +_,19 @@
|
||||
this.f_93616_ = p_93693_;
|
||||
this.focused = p_93693_;
|
||||
}
|
||||
|
||||
+ public static final int UNSET_FG_COLOR = -1;
|
||||
+ protected int packedFGColor = UNSET_FG_COLOR;
|
||||
+ public int getFGColor() {
|
||||
+ if (packedFGColor != UNSET_FG_COLOR) return packedFGColor;
|
||||
+ return this.f_93623_ ? 16777215 : 10526880; // White : Light Grey
|
||||
+ return this.active ? 16777215 : 10526880; // White : Light Grey
|
||||
+ }
|
||||
+ public void setFGColor(int color) {
|
||||
+ this.packedFGColor = color;
|
||||
@@ -17,6 +17,6 @@
|
||||
+ this.packedFGColor = UNSET_FG_COLOR;
|
||||
+ }
|
||||
+
|
||||
public NarratableEntry.NarrationPriority m_142684_() {
|
||||
if (this.m_93696_()) {
|
||||
public NarratableEntry.NarrationPriority narrationPriority() {
|
||||
if (this.isFocused()) {
|
||||
return NarratableEntry.NarrationPriority.FOCUSED;
|
||||
@@ -2,19 +2,19 @@
|
||||
+++ b/net/minecraft/client/gui/components/BossHealthOverlay.java
|
||||
@@ -36,13 +_,16 @@
|
||||
|
||||
for(LerpingBossEvent lerpingbossevent : this.f_93699_.values()) {
|
||||
for(LerpingBossEvent lerpingbossevent : this.events.values()) {
|
||||
int k = i / 2 - 91;
|
||||
+ var event = net.minecraftforge.client.ForgeHooksClient.onCustomizeBossEventProgress(p_283175_, this.f_93698_.m_91268_(), lerpingbossevent, k, j, 10 + this.f_93698_.f_91062_.f_92710_);
|
||||
+ var event = net.minecraftforge.client.ForgeHooksClient.onCustomizeBossEventProgress(p_283175_, this.minecraft.getWindow(), lerpingbossevent, k, j, 10 + this.minecraft.font.lineHeight);
|
||||
+ if (!event.isCanceled()) {
|
||||
this.m_280106_(p_283175_, k, j, lerpingbossevent);
|
||||
Component component = lerpingbossevent.m_18861_();
|
||||
int l = this.f_93698_.f_91062_.m_92852_(component);
|
||||
this.drawBar(p_283175_, k, j, lerpingbossevent);
|
||||
Component component = lerpingbossevent.getName();
|
||||
int l = this.minecraft.font.width(component);
|
||||
int i1 = i / 2 - l / 2;
|
||||
int j1 = j - 9;
|
||||
p_283175_.m_280430_(this.f_93698_.f_91062_, component, i1, j1, 16777215);
|
||||
p_283175_.drawString(this.minecraft.font, component, i1, j1, 16777215);
|
||||
- j += 10 + 9;
|
||||
+ }
|
||||
+ j += event.getIncrement();
|
||||
if (j >= p_283175_.m_280206_() / 3) {
|
||||
if (j >= p_283175_.guiHeight() / 3) {
|
||||
break;
|
||||
}
|
||||
@@ -1,23 +1,23 @@
|
||||
--- a/net/minecraft/client/gui/components/Button.java
|
||||
+++ b/net/minecraft/client/gui/components/Button.java
|
||||
@@ -29,6 +_,11 @@
|
||||
this.f_252416_ = p_259552_;
|
||||
this.createNarration = p_259552_;
|
||||
}
|
||||
|
||||
+ protected Button(Builder builder) {
|
||||
+ this(builder.f_252538_, builder.f_252462_, builder.f_252510_, builder.f_252447_, builder.f_252401_, builder.f_252468_, builder.f_252431_);
|
||||
+ m_257544_(builder.f_256855_); // Forge: Make use of the Builder tooltip
|
||||
+ this(builder.x, builder.y, builder.width, builder.height, builder.message, builder.onPress, builder.createNarration);
|
||||
+ setTooltip(builder.tooltip); // Forge: Make use of the Builder tooltip
|
||||
+ }
|
||||
+
|
||||
public void m_5691_() {
|
||||
this.f_93717_.m_93750_(this);
|
||||
public void onPress() {
|
||||
this.onPress.onPress(this);
|
||||
}
|
||||
@@ -92,9 +_,11 @@
|
||||
}
|
||||
|
||||
public Button m_253136_() {
|
||||
- Button button = new Button(this.f_252538_, this.f_252462_, this.f_252510_, this.f_252447_, this.f_252401_, this.f_252468_, this.f_252431_);
|
||||
- button.m_257544_(this.f_256855_);
|
||||
public Button build() {
|
||||
- Button button = new Button(this.x, this.y, this.width, this.height, this.message, this.onPress, this.createNarration);
|
||||
- button.setTooltip(this.tooltip);
|
||||
- return button;
|
||||
+ return build(Button::new);
|
||||
+ }
|
||||
|
||||
+42
-42
@@ -2,91 +2,91 @@
|
||||
+++ b/net/minecraft/client/gui/components/DebugScreenOverlay.java
|
||||
@@ -93,9 +_,9 @@
|
||||
@Nullable
|
||||
private CompletableFuture<LevelChunk> f_94036_;
|
||||
private boolean f_291101_;
|
||||
- private boolean f_291871_;
|
||||
- private boolean f_290551_;
|
||||
- private boolean f_291005_;
|
||||
+ protected boolean f_291871_;
|
||||
+ protected boolean f_290551_;
|
||||
+ protected boolean f_291005_;
|
||||
private final SampleLogger f_291039_ = new SampleLogger();
|
||||
private final SampleLogger f_291524_ = new SampleLogger();
|
||||
private final SampleLogger f_290653_ = new SampleLogger();
|
||||
private CompletableFuture<LevelChunk> serverChunk;
|
||||
private boolean renderDebug;
|
||||
- private boolean renderProfilerChart;
|
||||
- private boolean renderFpsCharts;
|
||||
- private boolean renderNetworkCharts;
|
||||
+ protected boolean renderProfilerChart;
|
||||
+ protected boolean renderFpsCharts;
|
||||
+ protected boolean renderNetworkCharts;
|
||||
private final SampleLogger frameTimeLogger = new SampleLogger();
|
||||
private final SampleLogger tickTimeLogger = new SampleLogger();
|
||||
private final SampleLogger pingLogger = new SampleLogger();
|
||||
@@ -120,14 +_,18 @@
|
||||
this.f_94035_ = null;
|
||||
this.clientChunk = null;
|
||||
}
|
||||
|
||||
- public void m_94056_(GuiGraphics p_281427_) {
|
||||
- this.f_94030_.m_91307_().m_6180_("debug");
|
||||
- public void render(GuiGraphics p_281427_) {
|
||||
- this.minecraft.getProfiler().push("debug");
|
||||
+ protected void update() {
|
||||
Entity entity = this.f_94030_.m_91288_();
|
||||
this.f_94032_ = entity.m_19907_(20.0D, 0.0F, false);
|
||||
this.f_94033_ = entity.m_19907_(20.0D, 0.0F, true);
|
||||
- p_281427_.m_286007_(() -> {
|
||||
- this.m_280186_(p_281427_);
|
||||
- this.m_280532_(p_281427_);
|
||||
Entity entity = this.minecraft.getCameraEntity();
|
||||
this.block = entity.pick(20.0D, 0.0F, false);
|
||||
this.liquid = entity.pick(20.0D, 0.0F, true);
|
||||
- p_281427_.drawManaged(() -> {
|
||||
- this.drawGameInformation(p_281427_);
|
||||
- this.drawSystemInformation(p_281427_);
|
||||
+ }
|
||||
+
|
||||
+ protected void drawText(GuiGraphics p_281427_) {
|
||||
+ this.m_280186_(p_281427_);
|
||||
+ this.m_280532_(p_281427_);
|
||||
+ this.drawGameInformation(p_281427_);
|
||||
+ this.drawSystemInformation(p_281427_);
|
||||
+ }
|
||||
+
|
||||
+ protected void drawFPSCharts(GuiGraphics p_281427_) {
|
||||
if (this.f_290551_) {
|
||||
int i = p_281427_.m_280182_();
|
||||
if (this.renderFpsCharts) {
|
||||
int i = p_281427_.guiWidth();
|
||||
int j = i / 2;
|
||||
@@ -137,7 +_,9 @@
|
||||
this.f_291179_.m_293623_(p_281427_, i - k, k);
|
||||
this.tpsChart.drawChart(p_281427_, i - k, k);
|
||||
}
|
||||
}
|
||||
+ }
|
||||
|
||||
+ protected void drawNetworkCharts(GuiGraphics p_281427_) {
|
||||
if (this.f_291005_) {
|
||||
int l = p_281427_.m_280182_();
|
||||
if (this.renderNetworkCharts) {
|
||||
int l = p_281427_.guiWidth();
|
||||
int i1 = l / 2;
|
||||
@@ -148,17 +_,32 @@
|
||||
int j1 = this.f_291349_.m_295014_(i1);
|
||||
this.f_291349_.m_293623_(p_281427_, l - j1, j1);
|
||||
int j1 = this.pingChart.getWidth(i1);
|
||||
this.pingChart.drawChart(p_281427_, l - j1, j1);
|
||||
}
|
||||
+ }
|
||||
+
|
||||
+ public void m_94056_(GuiGraphics p_281427_) {
|
||||
+ this.f_94030_.m_91307_().m_6180_("debug");
|
||||
+ public void render(GuiGraphics p_281427_) {
|
||||
+ this.minecraft.getProfiler().push("debug");
|
||||
+ this.update();
|
||||
+ p_281427_.m_286007_(() -> {
|
||||
+ p_281427_.drawManaged(() -> {
|
||||
+ this.drawText(p_281427_);
|
||||
+ this.drawFPSCharts(p_281427_);
|
||||
+ this.drawNetworkCharts(p_281427_);
|
||||
|
||||
});
|
||||
this.f_94030_.m_91307_().m_7238_();
|
||||
this.minecraft.getProfiler().pop();
|
||||
}
|
||||
|
||||
- protected void m_280186_(GuiGraphics p_281525_) {
|
||||
- List<String> list = this.m_94075_();
|
||||
- protected void drawGameInformation(GuiGraphics p_281525_) {
|
||||
- List<String> list = this.getGameInformation();
|
||||
+ protected List<String> getOverlayHelp() {
|
||||
+ List<String> list = Lists.newArrayList();
|
||||
list.add("");
|
||||
boolean flag = this.f_94030_.m_91092_() != null;
|
||||
list.add("Debug charts: [F3+1] Profiler " + (this.f_291871_ ? "visible" : "hidden") + "; [F3+2] " + (flag ? "FPS + TPS " : "FPS ") + (this.f_290551_ ? "visible" : "hidden") + "; [F3+3] " + (!this.f_94030_.m_91090_() ? "Bandwidth + Ping" : "Ping") + (this.f_291005_ ? " visible" : " hidden"));
|
||||
boolean flag = this.minecraft.getSingleplayerServer() != null;
|
||||
list.add("Debug charts: [F3+1] Profiler " + (this.renderProfilerChart ? "visible" : "hidden") + "; [F3+2] " + (flag ? "FPS + TPS " : "FPS ") + (this.renderFpsCharts ? "visible" : "hidden") + "; [F3+3] " + (!this.minecraft.isLocalServer() ? "Bandwidth + Ping" : "Ping") + (this.renderNetworkCharts ? " visible" : " hidden"));
|
||||
list.add("For help: press F3 + Q");
|
||||
+ return list;
|
||||
+ }
|
||||
+
|
||||
+ protected void m_280186_(GuiGraphics p_281525_) {
|
||||
+ List<String> list = this.m_94075_();
|
||||
+ protected void drawGameInformation(GuiGraphics p_281525_) {
|
||||
+ List<String> list = this.getGameInformation();
|
||||
+ list.addAll(this.getOverlayHelp());
|
||||
this.m_286013_(p_281525_, list, true);
|
||||
this.renderLines(p_281525_, list, true);
|
||||
}
|
||||
|
||||
@@ -430,6 +_,7 @@
|
||||
list.add("");
|
||||
list.add(ChatFormatting.UNDERLINE + "Targeted Entity");
|
||||
list.add(String.valueOf((Object)BuiltInRegistries.f_256780_.m_7981_(entity.m_6095_())));
|
||||
+ entity.m_6095_().m_204041_().m_203616_().forEach(t -> list.add("#" + t.f_203868_()));
|
||||
list.add(String.valueOf((Object)BuiltInRegistries.ENTITY_TYPE.getKey(entity.getType())));
|
||||
+ entity.getType().builtInRegistryHolder().tags().forEach(t -> list.add("#" + t.location()));
|
||||
}
|
||||
|
||||
return list;
|
||||
+2
-2
@@ -3,8 +3,8 @@
|
||||
@@ -101,6 +_,7 @@
|
||||
}
|
||||
|
||||
public void m_94922_(Toast p_94923_) {
|
||||
public void addToast(Toast p_94923_) {
|
||||
+ if (net.minecraftforge.client.ForgeHooksClient.onToastAdd(p_94923_)) return;
|
||||
this.f_94916_.add(p_94923_);
|
||||
this.queued.add(p_94923_);
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
--- a/net/minecraft/client/gui/screens/ChatScreen.java
|
||||
+++ b/net/minecraft/client/gui/screens/ChatScreen.java
|
||||
@@ -225,7 +_,7 @@
|
||||
this.f_96541_.f_91074_.f_108617_.m_246175_(p_242400_);
|
||||
this.minecraft.player.connection.sendChat(p_242400_);
|
||||
}
|
||||
|
||||
- return true;
|
||||
+ return f_96541_.f_91080_ == this; // FORGE: Prevent closing the screen if another screen has been opened.
|
||||
+ return minecraft.screen == this; // FORGE: Prevent closing the screen if another screen has been opened.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
}
|
||||
|
||||
if (optional.isEmpty()) {
|
||||
+ ConnectScreen.f_95683_.error("Couldn't connect to server: Unknown host \"{}\"", p_249536_.m_171863_());
|
||||
+ ConnectScreen.LOGGER.error("Couldn't connect to server: Unknown host \"{}\"", p_249536_.getHost());
|
||||
+ net.minecraftforge.network.DualStackUtils.logInitialPreferences();
|
||||
p_251955_.execute(() -> {
|
||||
p_251955_.m_91152_(new DisconnectedScreen(ConnectScreen.this.f_95686_, ConnectScreen.this.f_278471_, ConnectScreen.f_169260_));
|
||||
p_251955_.setScreen(new DisconnectedScreen(ConnectScreen.this.parent, ConnectScreen.this.connectFailedTitle, ConnectScreen.UNKNOWN_HOST_MESSAGE));
|
||||
});
|
||||
@@ -3,16 +3,16 @@
|
||||
@@ -132,6 +_,7 @@
|
||||
}
|
||||
|
||||
if (this.f_96168_ == -1L && this.f_96164_.m_7746_() && (!this.f_96166_ || f1 >= 2.0F)) {
|
||||
+ this.f_96168_ = Util.m_137550_(); // Moved up to guard against inf loops caused by callback
|
||||
if (this.fadeOutStart == -1L && this.reload.isDone() && (!this.fadeIn || f1 >= 2.0F)) {
|
||||
+ this.fadeOutStart = Util.getMillis(); // Moved up to guard against inf loops caused by callback
|
||||
try {
|
||||
this.f_96164_.m_7748_();
|
||||
this.f_96165_.accept(Optional.empty());
|
||||
this.reload.checkExceptions();
|
||||
this.onFinish.accept(Optional.empty());
|
||||
@@ -139,7 +_,6 @@
|
||||
this.f_96165_.accept(Optional.of(throwable));
|
||||
this.onFinish.accept(Optional.of(throwable));
|
||||
}
|
||||
|
||||
- this.f_96168_ = Util.m_137550_();
|
||||
if (this.f_96163_.f_91080_ != null) {
|
||||
this.f_96163_.f_91080_.m_6575_(this.f_96163_, p_281839_.m_280182_(), p_281839_.m_280206_());
|
||||
- this.fadeOutStart = Util.getMillis();
|
||||
if (this.minecraft.screen != null) {
|
||||
this.minecraft.screen.init(this.minecraft, p_281839_.guiWidth(), p_281839_.guiHeight());
|
||||
}
|
||||
@@ -1,21 +1,21 @@
|
||||
--- a/net/minecraft/client/gui/screens/MenuScreens.java
|
||||
+++ b/net/minecraft/client/gui/screens/MenuScreens.java
|
||||
@@ -40,6 +_,10 @@
|
||||
private static final Map<MenuType<?>, MenuScreens.ScreenConstructor<?, ?>> f_96196_ = Maps.newHashMap();
|
||||
private static final Map<MenuType<?>, MenuScreens.ScreenConstructor<?, ?>> SCREENS = Maps.newHashMap();
|
||||
|
||||
public static <T extends AbstractContainerMenu> void m_96201_(@Nullable MenuType<T> p_96202_, Minecraft p_96203_, int p_96204_, Component p_96205_) {
|
||||
+ getScreenFactory(p_96202_, p_96203_, p_96204_, p_96205_).ifPresent(f -> f.m_96209_(p_96205_, p_96202_, p_96203_, p_96204_));
|
||||
public static <T extends AbstractContainerMenu> void create(@Nullable MenuType<T> p_96202_, Minecraft p_96203_, int p_96204_, Component p_96205_) {
|
||||
+ getScreenFactory(p_96202_, p_96203_, p_96204_, p_96205_).ifPresent(f -> f.fromPacket(p_96205_, p_96202_, p_96203_, p_96204_));
|
||||
+ }
|
||||
+
|
||||
+ public static <T extends AbstractContainerMenu> java.util.Optional<ScreenConstructor<T, ?>> getScreenFactory(@Nullable MenuType<T> p_96202_, Minecraft p_96203_, int p_96204_, Component p_96205_) {
|
||||
if (p_96202_ == null) {
|
||||
f_96195_.warn("Trying to open invalid screen with name: {}", (Object)p_96205_.getString());
|
||||
LOGGER.warn("Trying to open invalid screen with name: {}", (Object)p_96205_.getString());
|
||||
} else {
|
||||
@@ -47,9 +_,10 @@
|
||||
if (screenconstructor == null) {
|
||||
f_96195_.warn("Failed to create screen for menu type: {}", (Object)BuiltInRegistries.f_256818_.m_7981_(p_96202_));
|
||||
LOGGER.warn("Failed to create screen for menu type: {}", (Object)BuiltInRegistries.MENU.getKey(p_96202_));
|
||||
} else {
|
||||
- screenconstructor.m_96209_(p_96205_, p_96202_, p_96203_, p_96204_);
|
||||
- screenconstructor.fromPacket(p_96205_, p_96202_, p_96203_, p_96204_);
|
||||
+ return java.util.Optional.of(screenconstructor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
--- a/net/minecraft/client/gui/screens/OptionsScreen.java
|
||||
+++ b/net/minecraft/client/gui/screens/OptionsScreen.java
|
||||
@@ -150,6 +_,14 @@
|
||||
p_283520_.m_280653_(this.f_96547_, this.f_96539_, this.f_96543_ / 2, 15, 16777215);
|
||||
p_283520_.drawCenteredString(this.font, this.title, this.width / 2, 15, 16777215);
|
||||
}
|
||||
|
||||
+ @Override
|
||||
+ public void m_7379_() {
|
||||
+ public void onClose() {
|
||||
+ // We need to consider 2 potential parent screens here:
|
||||
+ // 1. From the main menu, in which case display the main menu
|
||||
+ // 2. From the pause menu, in which case exit back to game
|
||||
+ this.f_96541_.m_91152_(this.f_96235_ instanceof PauseScreen ? null : this.f_96235_);
|
||||
+ this.minecraft.setScreen(this.lastScreen instanceof PauseScreen ? null : this.lastScreen);
|
||||
+ }
|
||||
+
|
||||
private Button m_260993_(Component p_261565_, Supplier<Screen> p_262119_) {
|
||||
return Button.m_253074_(p_261565_, (p_280808_) -> {
|
||||
this.f_96541_.m_91152_(p_262119_.get());
|
||||
private Button openScreenButton(Component p_261565_, Supplier<Screen> p_262119_) {
|
||||
return Button.builder(p_261565_, (p_280808_) -> {
|
||||
this.minecraft.setScreen(p_262119_.get());
|
||||
@@ -2,9 +2,9 @@
|
||||
+++ b/net/minecraft/client/gui/screens/PauseScreen.java
|
||||
@@ -88,6 +_,7 @@
|
||||
} else {
|
||||
gridlayout$rowhelper.m_264139_(this.m_262456_(f_262254_, SocialInteractionsScreen::new));
|
||||
gridlayout$rowhelper.addChild(this.openScreenButton(PLAYER_REPORTING, SocialInteractionsScreen::new));
|
||||
}
|
||||
+ gridlayout$rowhelper.m_264108_(Button.m_253074_(Component.m_237115_("fml.menu.mods"), button -> this.f_96541_.m_91152_(new net.minecraftforge.client.gui.ModListScreen(this))).m_252780_(f_262268_).m_253136_(), 2);
|
||||
+ gridlayout$rowhelper.addChild(Button.builder(Component.translatable("fml.menu.mods"), button -> this.minecraft.setScreen(new net.minecraftforge.client.gui.ModListScreen(this))).width(BUTTON_WIDTH_FULL).build(), 2);
|
||||
|
||||
Component component = this.f_96541_.m_91090_() ? f_262217_ : CommonComponents.f_290546_;
|
||||
this.f_252482_ = gridlayout$rowhelper.m_264108_(Button.m_253074_(component, (p_280815_) -> {
|
||||
Component component = this.minecraft.isLocalServer() ? RETURN_TO_MENU : CommonComponents.GUI_DISCONNECT;
|
||||
this.disconnectButton = gridlayout$rowhelper.addChild(Button.builder(component, (p_280815_) -> {
|
||||
@@ -3,72 +3,72 @@
|
||||
@@ -207,7 +_,7 @@
|
||||
}
|
||||
|
||||
public void m_7379_() {
|
||||
- this.f_96541_.m_91152_((Screen)null);
|
||||
+ this.f_96541_.popGuiLayer();
|
||||
public void onClose() {
|
||||
- this.minecraft.setScreen((Screen)null);
|
||||
+ this.minecraft.popGuiLayer();
|
||||
}
|
||||
|
||||
protected <T extends GuiEventListener & Renderable & NarratableEntry> T m_142416_(T p_169406_) {
|
||||
protected <T extends GuiEventListener & Renderable & NarratableEntry> T addRenderableWidget(T p_169406_) {
|
||||
@@ -319,7 +_,10 @@
|
||||
this.f_96543_ = p_96608_;
|
||||
this.f_96544_ = p_96609_;
|
||||
if (!this.f_267454_) {
|
||||
+ if (!net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ScreenEvent.Init.Pre(this, this.f_96540_, this::addEventWidget, this::m_169411_))) {
|
||||
this.m_7856_();
|
||||
this.width = p_96608_;
|
||||
this.height = p_96609_;
|
||||
if (!this.initialized) {
|
||||
+ if (!net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ScreenEvent.Init.Pre(this, this.children, this::addEventWidget, this::removeWidget))) {
|
||||
this.init();
|
||||
+ }
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ScreenEvent.Init.Post(this, this.f_96540_, this::addEventWidget, this::m_169411_));
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ScreenEvent.Init.Post(this, this.children, this::addEventWidget, this::removeWidget));
|
||||
} else {
|
||||
this.m_267719_();
|
||||
this.repositionElements();
|
||||
}
|
||||
@@ -332,7 +_,10 @@
|
||||
protected void m_232761_() {
|
||||
this.m_169413_();
|
||||
this.m_264131_();
|
||||
+ if (!net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ScreenEvent.Init.Pre(this, this.f_96540_, this::addEventWidget, this::m_169411_))) {
|
||||
this.m_7856_();
|
||||
protected void rebuildWidgets() {
|
||||
this.clearWidgets();
|
||||
this.clearFocus();
|
||||
+ if (!net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ScreenEvent.Init.Pre(this, this.children, this::addEventWidget, this::removeWidget))) {
|
||||
this.init();
|
||||
+ }
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ScreenEvent.Init.Post(this, this.f_96540_, this::addEventWidget, this::m_169411_));
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ScreenEvent.Init.Post(this, this.children, this::addEventWidget, this::removeWidget));
|
||||
}
|
||||
|
||||
public List<? extends GuiEventListener> m_6702_() {
|
||||
public List<? extends GuiEventListener> children() {
|
||||
@@ -354,6 +_,7 @@
|
||||
public void m_280273_(GuiGraphics p_283688_, int p_299421_, int p_298679_, float p_297268_) {
|
||||
if (this.f_96541_.f_91073_ != null) {
|
||||
this.m_293900_(p_283688_);
|
||||
public void renderBackground(GuiGraphics p_283688_, int p_299421_, int p_298679_, float p_297268_) {
|
||||
if (this.minecraft.level != null) {
|
||||
this.renderTransparentBackground(p_283688_);
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ScreenEvent.BackgroundRendered(this, p_283688_));
|
||||
} else {
|
||||
this.m_280039_(p_283688_);
|
||||
this.renderDirtBackground(p_283688_);
|
||||
}
|
||||
@@ -369,6 +_,7 @@
|
||||
int i = 32;
|
||||
p_282281_.m_280398_(f_279548_, 0, 0, 0, 0.0F, 0.0F, this.f_96543_, this.f_96544_, 32, 32);
|
||||
p_282281_.m_280246_(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
p_282281_.blit(BACKGROUND_LOCATION, 0, 0, 0, 0.0F, 0.0F, this.width, this.height, 32, 32);
|
||||
p_282281_.setColor(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ScreenEvent.BackgroundRendered(this, p_282281_));
|
||||
}
|
||||
|
||||
public boolean m_7043_() {
|
||||
public boolean isPauseScreen() {
|
||||
@@ -462,6 +_,10 @@
|
||||
public void m_7400_(List<Path> p_96591_) {
|
||||
public void onFilesDrop(List<Path> p_96591_) {
|
||||
}
|
||||
|
||||
+ public Minecraft getMinecraft() {
|
||||
+ return this.f_96541_;
|
||||
+ return this.minecraft;
|
||||
+ }
|
||||
+
|
||||
private void m_169380_(long p_169381_, boolean p_169382_) {
|
||||
this.f_169377_ = Util.m_137550_() + p_169381_;
|
||||
private void scheduleNarration(long p_169381_, boolean p_169382_) {
|
||||
this.nextNarrationTime = Util.getMillis() + p_169381_;
|
||||
if (p_169382_) {
|
||||
@@ -632,5 +_,13 @@
|
||||
this.f_169421_ = p_169425_;
|
||||
this.f_169422_ = p_169426_;
|
||||
this.index = p_169425_;
|
||||
this.priority = p_169426_;
|
||||
}
|
||||
+ }
|
||||
+
|
||||
+ private void addEventWidget(GuiEventListener b) {
|
||||
+ if (b instanceof Renderable r)
|
||||
+ this.f_169369_.add(r);
|
||||
+ this.renderables.add(r);
|
||||
+ if (b instanceof NarratableEntry ne)
|
||||
+ this.f_169368_.add(ne);
|
||||
+ f_96540_.add(b);
|
||||
+ this.narratables.add(ne);
|
||||
+ children.add(b);
|
||||
}
|
||||
}
|
||||
@@ -2,66 +2,66 @@
|
||||
+++ b/net/minecraft/client/gui/screens/TitleScreen.java
|
||||
@@ -64,6 +_,7 @@
|
||||
@Nullable
|
||||
private TitleScreen.WarningLabel f_232768_;
|
||||
private final LogoRenderer f_263781_;
|
||||
private TitleScreen.WarningLabel warningLabel;
|
||||
private final LogoRenderer logoRenderer;
|
||||
+ private net.minecraftforge.client.gui.TitleScreenModUpdateIndicator modUpdateNotification;
|
||||
|
||||
public TitleScreen() {
|
||||
this(false);
|
||||
@@ -114,11 +_,15 @@
|
||||
int j = this.f_96543_ - i - 2;
|
||||
int j = this.width - i - 2;
|
||||
int k = 24;
|
||||
int l = this.f_96544_ / 4 + 48;
|
||||
int l = this.height / 4 + 48;
|
||||
+ Button modButton = null;
|
||||
if (this.f_96541_.m_91402_()) {
|
||||
this.m_96772_(l, 24);
|
||||
if (this.minecraft.isDemo()) {
|
||||
this.createDemoMenuOptions(l, 24);
|
||||
} else {
|
||||
this.m_96763_(l, 24);
|
||||
+ modButton = this.m_142416_(Button.m_253074_(Component.m_237115_("fml.menu.mods"), button -> this.f_96541_.m_91152_(new net.minecraftforge.client.gui.ModListScreen(this)))
|
||||
+ .m_252794_(this.f_96543_ / 2 - 100, l + 24 * 2).m_253046_(98, 20).m_253136_());
|
||||
this.createNormalMenuOptions(l, 24);
|
||||
+ modButton = this.addRenderableWidget(Button.builder(Component.translatable("fml.menu.mods"), button -> this.minecraft.setScreen(new net.minecraftforge.client.gui.ModListScreen(this)))
|
||||
+ .pos(this.width / 2 - 100, l + 24 * 2).size(98, 20).build());
|
||||
}
|
||||
+ modUpdateNotification = net.minecraftforge.client.gui.TitleScreenModUpdateIndicator.init(this, modButton);
|
||||
|
||||
SpriteIconButton spriteiconbutton = this.m_142416_(CommonButtons.m_292713_(20, (p_280830_) -> {
|
||||
this.f_96541_.m_91152_(new LanguageSelectScreen(this, this.f_96541_.f_91066_, this.f_96541_.m_91102_()));
|
||||
SpriteIconButton spriteiconbutton = this.addRenderableWidget(CommonButtons.language(20, (p_280830_) -> {
|
||||
this.minecraft.setScreen(new LanguageSelectScreen(this, this.minecraft.options, this.minecraft.getLanguageManager()));
|
||||
@@ -164,7 +_,7 @@
|
||||
}).m_252987_(this.f_96543_ / 2 - 100, p_96764_ + p_96765_ * 1, 200, 20).m_257505_(tooltip).m_253136_())).f_93623_ = flag;
|
||||
(this.m_142416_(Button.m_253074_(Component.m_237115_("menu.online"), (p_210872_) -> {
|
||||
this.m_96793_();
|
||||
- }).m_252987_(this.f_96543_ / 2 - 100, p_96764_ + p_96765_ * 2, 200, 20).m_257505_(tooltip).m_253136_())).f_93623_ = flag;
|
||||
+ }).m_252987_(this.f_96543_ / 2 + 2, p_96764_ + p_96765_ * 2, 98, 20).m_257505_(tooltip).m_253136_())).f_93623_ = flag;
|
||||
}).bounds(this.width / 2 - 100, p_96764_ + p_96765_ * 1, 200, 20).tooltip(tooltip).build())).active = flag;
|
||||
(this.addRenderableWidget(Button.builder(Component.translatable("menu.online"), (p_210872_) -> {
|
||||
this.realmsButtonClicked();
|
||||
- }).bounds(this.width / 2 - 100, p_96764_ + p_96765_ * 2, 200, 20).tooltip(tooltip).build())).active = flag;
|
||||
+ }).bounds(this.width / 2 + 2, p_96764_ + p_96765_ * 2, 98, 20).tooltip(tooltip).build())).active = flag;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -248,6 +_,7 @@
|
||||
this.f_232768_.m_280409_(p_282860_, i);
|
||||
this.warningLabel.render(p_282860_, i);
|
||||
}
|
||||
|
||||
+ net.minecraftforge.client.ForgeHooksClient.renderMainMenu(this, p_282860_, this.f_96547_, this.f_96543_, this.f_96544_, i);
|
||||
if (this.f_96721_ != null) {
|
||||
this.f_96721_.m_280672_(p_282860_, this.f_96543_, this.f_96547_, i);
|
||||
+ net.minecraftforge.client.ForgeHooksClient.renderMainMenu(this, p_282860_, this.font, this.width, this.height, i);
|
||||
if (this.splash != null) {
|
||||
this.splash.render(p_282860_, this.width, this.font, i);
|
||||
}
|
||||
@@ -263,7 +_,14 @@
|
||||
s = s + I18n.m_118938_("menu.modded");
|
||||
s = s + I18n.get("menu.modded");
|
||||
}
|
||||
|
||||
- p_282860_.m_280488_(this.f_96547_, s, 2, this.f_96544_ - 10, 16777215 | i);
|
||||
- p_282860_.drawString(this.font, s, 2, this.height - 10, 16777215 | i);
|
||||
+ net.minecraftforge.internal.BrandingControl.forEachLine(true, true, (brdline, brd) ->
|
||||
+ p_282860_.m_280488_(this.f_96547_, brd, 2, this.f_96544_ - ( 10 + brdline * (this.f_96547_.f_92710_ + 1)), 16777215 | i)
|
||||
+ p_282860_.drawString(this.font, brd, 2, this.height - ( 10 + brdline * (this.font.lineHeight + 1)), 16777215 | i)
|
||||
+ );
|
||||
+
|
||||
+ net.minecraftforge.internal.BrandingControl.forEachAboveCopyrightLine((brdline, brd) ->
|
||||
+ p_282860_.m_280488_(this.f_96547_, brd, this.f_96543_ - f_96547_.m_92895_(brd), this.f_96544_ - (10 + (brdline + 1) * ( this.f_96547_.f_92710_ + 1)), 16777215 | i)
|
||||
+ p_282860_.drawString(this.font, brd, this.width - font.width(brd), this.height - (10 + (brdline + 1) * ( this.font.lineHeight + 1)), 16777215 | i)
|
||||
+ );
|
||||
+
|
||||
|
||||
for(GuiEventListener guieventlistener : this.m_6702_()) {
|
||||
for(GuiEventListener guieventlistener : this.children()) {
|
||||
if (guieventlistener instanceof AbstractWidget) {
|
||||
@@ -276,6 +_,7 @@
|
||||
RenderSystem.enableDepthTest();
|
||||
this.f_96726_.m_88315_(p_282860_, p_281753_, p_283539_, p_282628_);
|
||||
this.realmsNotificationsScreen.render(p_282860_, p_281753_, p_283539_, p_282628_);
|
||||
}
|
||||
+ if (f1 >= 1.0f) modUpdateNotification.m_88315_(p_282860_, p_281753_, p_283539_, p_282628_);
|
||||
+ if (f1 >= 1.0f) modUpdateNotification.render(p_282860_, p_281753_, p_283539_, p_282628_);
|
||||
|
||||
}
|
||||
}
|
||||
+10
-10
@@ -1,15 +1,15 @@
|
||||
--- a/net/minecraft/client/gui/screens/advancements/AdvancementTab.java
|
||||
+++ b/net/minecraft/client/gui/screens/advancements/AdvancementTab.java
|
||||
@@ -38,6 +_,7 @@
|
||||
private int f_97141_ = Integer.MIN_VALUE;
|
||||
private float f_97142_;
|
||||
private boolean f_97143_;
|
||||
private int maxY = Integer.MIN_VALUE;
|
||||
private float fade;
|
||||
private boolean centered;
|
||||
+ private int page;
|
||||
|
||||
public AdvancementTab(Minecraft p_97145_, AdvancementsScreen p_97146_, AdvancementTabType p_97147_, int p_97148_, AdvancementNode p_297568_, DisplayInfo p_97150_) {
|
||||
this.f_97126_ = p_97145_;
|
||||
this.minecraft = p_97145_;
|
||||
@@ -52,6 +_,15 @@
|
||||
this.m_97175_(this.f_97134_, p_297568_.m_295246_());
|
||||
this.addWidget(this.root, p_297568_.holder());
|
||||
}
|
||||
|
||||
+ public AdvancementTab(Minecraft mc, AdvancementsScreen screen, AdvancementTabType type, int index, int page, AdvancementNode adv, DisplayInfo info) {
|
||||
@@ -21,17 +21,17 @@
|
||||
+ return page;
|
||||
+ }
|
||||
+
|
||||
public AdvancementTabType m_169538_() {
|
||||
return this.f_97128_;
|
||||
public AdvancementTabType getType() {
|
||||
return this.type;
|
||||
}
|
||||
@@ -146,8 +_,8 @@
|
||||
return null;
|
||||
} else {
|
||||
for(AdvancementTabType advancementtabtype : AdvancementTabType.values()) {
|
||||
- if (p_97173_ < advancementtabtype.m_97210_()) {
|
||||
- if (p_97173_ < advancementtabtype.getMax()) {
|
||||
- return new AdvancementTab(p_97171_, p_97172_, advancementtabtype, p_97173_, p_299876_, optional.get());
|
||||
+ if ((p_97173_ % AdvancementTabType.MAX_TABS) < advancementtabtype.m_97210_()) {
|
||||
+ if ((p_97173_ % AdvancementTabType.MAX_TABS) < advancementtabtype.getMax()) {
|
||||
+ return new AdvancementTab(p_97171_, p_97172_, advancementtabtype, p_97173_ % AdvancementTabType.MAX_TABS, p_97173_ / AdvancementTabType.MAX_TABS, p_299876_, optional.get());
|
||||
}
|
||||
|
||||
p_97173_ -= advancementtabtype.m_97210_();
|
||||
p_97173_ -= advancementtabtype.getMax();
|
||||
+4
-4
@@ -4,7 +4,7 @@
|
||||
LEFT(new AdvancementTabType.Sprites(new ResourceLocation("advancements/tab_left_top_selected"), new ResourceLocation("advancements/tab_left_middle_selected"), new ResourceLocation("advancements/tab_left_bottom_selected")), new AdvancementTabType.Sprites(new ResourceLocation("advancements/tab_left_top"), new ResourceLocation("advancements/tab_left_middle"), new ResourceLocation("advancements/tab_left_bottom")), 32, 28, 5),
|
||||
RIGHT(new AdvancementTabType.Sprites(new ResourceLocation("advancements/tab_right_top_selected"), new ResourceLocation("advancements/tab_right_middle_selected"), new ResourceLocation("advancements/tab_right_bottom_selected")), new AdvancementTabType.Sprites(new ResourceLocation("advancements/tab_right_top"), new ResourceLocation("advancements/tab_right_middle"), new ResourceLocation("advancements/tab_right_bottom")), 32, 28, 5);
|
||||
|
||||
+ public static final int MAX_TABS = java.util.Arrays.stream(values()).mapToInt(e -> e.f_97199_).sum();
|
||||
private final AdvancementTabType.Sprites f_291110_;
|
||||
private final AdvancementTabType.Sprites f_291777_;
|
||||
private final int f_97197_;
|
||||
+ public static final int MAX_TABS = java.util.Arrays.stream(values()).mapToInt(e -> e.max).sum();
|
||||
private final AdvancementTabType.Sprites selectedSprites;
|
||||
private final AdvancementTabType.Sprites unselectedSprites;
|
||||
private final int width;
|
||||
+40
-40
@@ -2,73 +2,73 @@
|
||||
+++ b/net/minecraft/client/gui/screens/advancements/AdvancementsScreen.java
|
||||
@@ -42,6 +_,7 @@
|
||||
@Nullable
|
||||
private AdvancementTab f_97336_;
|
||||
private boolean f_97337_;
|
||||
private AdvancementTab selectedTab;
|
||||
private boolean isScrolling;
|
||||
+ private static int tabPage, maxPages;
|
||||
|
||||
public AdvancementsScreen(ClientAdvancements p_97340_) {
|
||||
super(GameNarrator.f_93310_);
|
||||
super(GameNarrator.NO_TITLE);
|
||||
@@ -58,7 +_,15 @@
|
||||
} else {
|
||||
this.f_97334_.m_104401_(this.f_97336_ == null ? null : this.f_97336_.m_293004_().m_295246_(), true);
|
||||
this.advancements.setSelectedTab(this.selectedTab == null ? null : this.selectedTab.getRootNode().holder(), true);
|
||||
}
|
||||
-
|
||||
+ if (this.f_97335_.size() > AdvancementTabType.MAX_TABS) {
|
||||
+ int guiLeft = (this.f_96543_ - 252) / 2;
|
||||
+ int guiTop = (this.f_96544_ - 140) / 2;
|
||||
+ m_142416_(net.minecraft.client.gui.components.Button.m_253074_(Component.m_237113_("<"), b -> tabPage = Math.max(tabPage - 1, 0 ))
|
||||
+ .m_252794_(guiLeft, guiTop - 50).m_253046_(20, 20).m_253136_());
|
||||
+ m_142416_(net.minecraft.client.gui.components.Button.m_253074_(Component.m_237113_(">"), b -> tabPage = Math.min(tabPage + 1, maxPages))
|
||||
+ .m_252794_(guiLeft + f_169556_ - 20, guiTop - 50).m_253046_(20, 20).m_253136_());
|
||||
+ maxPages = this.f_97335_.size() / AdvancementTabType.MAX_TABS;
|
||||
+ if (this.tabs.size() > AdvancementTabType.MAX_TABS) {
|
||||
+ int guiLeft = (this.width - 252) / 2;
|
||||
+ int guiTop = (this.height - 140) / 2;
|
||||
+ addRenderableWidget(net.minecraft.client.gui.components.Button.builder(Component.literal("<"), b -> tabPage = Math.max(tabPage - 1, 0 ))
|
||||
+ .pos(guiLeft, guiTop - 50).size(20, 20).build());
|
||||
+ addRenderableWidget(net.minecraft.client.gui.components.Button.builder(Component.literal(">"), b -> tabPage = Math.min(tabPage + 1, maxPages))
|
||||
+ .pos(guiLeft + WINDOW_WIDTH - 20, guiTop - 50).size(20, 20).build());
|
||||
+ maxPages = this.tabs.size() / AdvancementTabType.MAX_TABS;
|
||||
+ }
|
||||
}
|
||||
|
||||
public void m_7861_() {
|
||||
public void removed() {
|
||||
@@ -76,7 +_,7 @@
|
||||
int j = (this.f_96544_ - 140) / 2;
|
||||
int j = (this.height - 140) / 2;
|
||||
|
||||
for(AdvancementTab advancementtab : this.f_97335_.values()) {
|
||||
- if (advancementtab.m_97154_(i, j, p_97343_, p_97344_)) {
|
||||
+ if (advancementtab.getPage() == tabPage && advancementtab.m_97154_(i, j, p_97343_, p_97344_)) {
|
||||
this.f_97334_.m_104401_(advancementtab.m_293004_().m_295246_(), true);
|
||||
for(AdvancementTab advancementtab : this.tabs.values()) {
|
||||
- if (advancementtab.isMouseOver(i, j, p_97343_, p_97344_)) {
|
||||
+ if (advancementtab.getPage() == tabPage && advancementtab.isMouseOver(i, j, p_97343_, p_97344_)) {
|
||||
this.advancements.setSelectedTab(advancementtab.getRootNode().holder(), true);
|
||||
break;
|
||||
}
|
||||
@@ -100,9 +_,15 @@
|
||||
int i = (this.f_96543_ - 252) / 2;
|
||||
int j = (this.f_96544_ - 140) / 2;
|
||||
this.m_280273_(p_282589_, p_282255_, p_283354_, p_283123_);
|
||||
int i = (this.width - 252) / 2;
|
||||
int j = (this.height - 140) / 2;
|
||||
this.renderBackground(p_282589_, p_282255_, p_283354_, p_283123_);
|
||||
+ if (maxPages != 0) {
|
||||
+ net.minecraft.network.chat.Component page = Component.m_237113_(String.format("%d / %d", tabPage + 1, maxPages + 1));
|
||||
+ int width = this.f_96547_.m_92852_(page);
|
||||
+ p_282589_.m_280648_(this.f_96547_, page.m_7532_(), i + (252 / 2) - (width / 2), j - 44, -1);
|
||||
+ net.minecraft.network.chat.Component page = Component.literal(String.format("%d / %d", tabPage + 1, maxPages + 1));
|
||||
+ int width = this.font.width(page);
|
||||
+ p_282589_.drawString(this.font, page.getVisualOrderText(), i + (252 / 2) - (width / 2), j - 44, -1);
|
||||
+ }
|
||||
this.m_97373_(p_282589_, p_282255_, p_283354_, i, j);
|
||||
this.m_280088_(p_282589_, i, j);
|
||||
this.m_280355_(p_282589_, p_282255_, p_283354_, i, j);
|
||||
+ super.m_88315_(p_282589_, p_282255_, p_283354_, p_283123_);
|
||||
this.renderInside(p_282589_, p_282255_, p_283354_, i, j);
|
||||
this.renderWindow(p_282589_, i, j);
|
||||
this.renderTooltips(p_282589_, p_282255_, p_283354_, i, j);
|
||||
+ super.render(p_282589_, p_282255_, p_283354_, p_283123_);
|
||||
}
|
||||
|
||||
public boolean m_7979_(double p_97347_, double p_97348_, int p_97349_, double p_97350_, double p_97351_) {
|
||||
public boolean mouseDragged(double p_97347_, double p_97348_, int p_97349_, double p_97350_, double p_97351_) {
|
||||
@@ -146,10 +_,12 @@
|
||||
p_283395_.m_280218_(f_97329_, p_281890_, p_282532_, 0, 0, 252, 140);
|
||||
if (this.f_97335_.size() > 1) {
|
||||
for(AdvancementTab advancementtab : this.f_97335_.values()) {
|
||||
p_283395_.blit(WINDOW_LOCATION, p_281890_, p_282532_, 0, 0, 252, 140);
|
||||
if (this.tabs.size() > 1) {
|
||||
for(AdvancementTab advancementtab : this.tabs.values()) {
|
||||
+ if (advancementtab.getPage() == tabPage)
|
||||
advancementtab.m_280105_(p_283395_, p_281890_, p_282532_, advancementtab == this.f_97336_);
|
||||
advancementtab.drawTab(p_283395_, p_281890_, p_282532_, advancementtab == this.selectedTab);
|
||||
}
|
||||
|
||||
for(AdvancementTab advancementtab1 : this.f_97335_.values()) {
|
||||
for(AdvancementTab advancementtab1 : this.tabs.values()) {
|
||||
+ if (advancementtab1.getPage() == tabPage)
|
||||
advancementtab1.m_280485_(p_283395_, p_281890_, p_282532_);
|
||||
advancementtab1.drawIcon(p_283395_, p_281890_, p_282532_);
|
||||
}
|
||||
}
|
||||
@@ -169,7 +_,7 @@
|
||||
|
||||
if (this.f_97335_.size() > 1) {
|
||||
for(AdvancementTab advancementtab : this.f_97335_.values()) {
|
||||
- if (advancementtab.m_97154_(p_281519_, p_283371_, (double)p_283556_, (double)p_282458_)) {
|
||||
+ if (advancementtab.getPage() == tabPage && advancementtab.m_97154_(p_281519_, p_283371_, (double)p_283556_, (double)p_282458_)) {
|
||||
p_282784_.m_280557_(this.f_96547_, advancementtab.m_97189_(), p_283556_, p_282458_);
|
||||
if (this.tabs.size() > 1) {
|
||||
for(AdvancementTab advancementtab : this.tabs.values()) {
|
||||
- if (advancementtab.isMouseOver(p_281519_, p_283371_, (double)p_283556_, (double)p_282458_)) {
|
||||
+ if (advancementtab.getPage() == tabPage && advancementtab.isMouseOver(p_281519_, p_283371_, (double)p_283556_, (double)p_282458_)) {
|
||||
p_282784_.renderTooltip(this.font, advancementtab.getTitle(), p_283556_, p_282458_);
|
||||
}
|
||||
}
|
||||
+31
-31
@@ -3,40 +3,40 @@
|
||||
@@ -64,7 +_,7 @@
|
||||
}
|
||||
|
||||
protected int m_5756_() {
|
||||
- return super.m_5756_() + 15;
|
||||
+ return super.m_5756_() + 15 + 20;
|
||||
protected int getScrollbarPosition() {
|
||||
- return super.getScrollbarPosition() + 15;
|
||||
+ return super.getScrollbarPosition() + 15 + 20;
|
||||
}
|
||||
|
||||
public int m_5759_() {
|
||||
public int getRowWidth() {
|
||||
@@ -129,10 +_,11 @@
|
||||
this.f_193912_ = Button.m_253074_(p_193917_, (p_269618_) -> {
|
||||
KeyBindsList.this.f_193858_.f_193975_ = p_193916_;
|
||||
KeyBindsList.this.m_269130_();
|
||||
- }).m_252987_(0, 0, 75, 20).m_252778_((p_253311_) -> {
|
||||
+ }).m_252987_(0, 0, 75 + 20 /* Forge: Add space */, 20).m_252778_((p_253311_) -> {
|
||||
return p_193916_.m_90862_() ? Component.m_237110_("narrator.controls.unbound", p_193917_) : Component.m_237110_("narrator.controls.bound", p_193917_, p_253311_.get());
|
||||
}).m_253136_();
|
||||
this.f_193913_ = Button.m_253074_(Component.m_237115_("controls.reset"), (p_269616_) -> {
|
||||
+ this.f_193910_.setToDefault();
|
||||
KeyBindsList.this.f_93386_.f_91066_.m_92159_(p_193916_, p_193916_.m_90861_());
|
||||
KeyBindsList.this.m_269130_();
|
||||
}).m_252987_(0, 0, 50, 20).m_252778_((p_253313_) -> {
|
||||
this.changeButton = Button.builder(p_193917_, (p_269618_) -> {
|
||||
KeyBindsList.this.keyBindsScreen.selectedKey = p_193916_;
|
||||
KeyBindsList.this.resetMappingAndUpdateButtons();
|
||||
- }).bounds(0, 0, 75, 20).createNarration((p_253311_) -> {
|
||||
+ }).bounds(0, 0, 75 + 20 /* Forge: Add space */, 20).createNarration((p_253311_) -> {
|
||||
return p_193916_.isUnbound() ? Component.translatable("narrator.controls.unbound", p_193917_) : Component.translatable("narrator.controls.bound", p_193917_, p_253311_.get());
|
||||
}).build();
|
||||
this.resetButton = Button.builder(Component.translatable("controls.reset"), (p_269616_) -> {
|
||||
+ this.key.setToDefault();
|
||||
KeyBindsList.this.minecraft.options.setKey(p_193916_, p_193916_.getDefaultKey());
|
||||
KeyBindsList.this.resetMappingAndUpdateButtons();
|
||||
}).bounds(0, 0, 50, 20).createNarration((p_253313_) -> {
|
||||
@@ -144,7 +_,7 @@
|
||||
public void m_6311_(GuiGraphics p_281805_, int p_281298_, int p_282357_, int p_281373_, int p_283433_, int p_281932_, int p_282224_, int p_282053_, boolean p_282605_, float p_281432_) {
|
||||
int k = p_281373_ + 90 - KeyBindsList.this.f_193859_;
|
||||
p_281805_.m_280614_(KeyBindsList.this.f_93386_.f_91062_, this.f_193911_, k, p_282357_ + p_281932_ / 2 - 9 / 2, 16777215, false);
|
||||
- this.f_193913_.m_252865_(p_281373_ + 190);
|
||||
+ this.f_193913_.m_252865_(p_281373_ + 190 + 20);
|
||||
this.f_193913_.m_253211_(p_282357_);
|
||||
this.f_193913_.m_88315_(p_281805_, p_282224_, p_282053_, p_281432_);
|
||||
this.f_193912_.m_252865_(p_281373_ + 105);
|
||||
public void render(GuiGraphics p_281805_, int p_281298_, int p_282357_, int p_281373_, int p_283433_, int p_281932_, int p_282224_, int p_282053_, boolean p_282605_, float p_281432_) {
|
||||
int k = p_281373_ + 90 - KeyBindsList.this.maxNameWidth;
|
||||
p_281805_.drawString(KeyBindsList.this.minecraft.font, this.name, k, p_282357_ + p_281932_ / 2 - 9 / 2, 16777215, false);
|
||||
- this.resetButton.setX(p_281373_ + 190);
|
||||
+ this.resetButton.setX(p_281373_ + 190 + 20);
|
||||
this.resetButton.setY(p_282357_);
|
||||
this.resetButton.render(p_281805_, p_282224_, p_282053_, p_281432_);
|
||||
this.changeButton.setX(p_281373_ + 105);
|
||||
@@ -173,7 +_,7 @@
|
||||
MutableComponent mutablecomponent = Component.m_237119_();
|
||||
if (!this.f_193910_.m_90862_()) {
|
||||
for(KeyMapping keymapping : KeyBindsList.this.f_93386_.f_91066_.f_92059_) {
|
||||
- if (keymapping != this.f_193910_ && this.f_193910_.m_90850_(keymapping)) {
|
||||
+ if ((keymapping != this.f_193910_ && this.f_193910_.m_90850_(keymapping)) || keymapping.hasKeyModifierConflict(this.f_193910_)) { // FORGE: gracefully handle conflicts like SHIFT vs SHIFT+G
|
||||
if (this.f_268447_) {
|
||||
mutablecomponent.m_130946_(", ");
|
||||
MutableComponent mutablecomponent = Component.empty();
|
||||
if (!this.key.isUnbound()) {
|
||||
for(KeyMapping keymapping : KeyBindsList.this.minecraft.options.keyMappings) {
|
||||
- if (keymapping != this.key && this.key.same(keymapping)) {
|
||||
+ if ((keymapping != this.key && this.key.same(keymapping)) || keymapping.hasKeyModifierConflict(this.key)) { // FORGE: gracefully handle conflicts like SHIFT vs SHIFT+G
|
||||
if (this.hasCollision) {
|
||||
mutablecomponent.append(", ");
|
||||
}
|
||||
+15
-15
@@ -1,26 +1,26 @@
|
||||
--- a/net/minecraft/client/gui/screens/controls/KeyBindsScreen.java
|
||||
+++ b/net/minecraft/client/gui/screens/controls/KeyBindsScreen.java
|
||||
@@ -31,7 +_,7 @@
|
||||
this.m_7787_(this.f_193977_);
|
||||
this.f_193978_ = this.m_142416_(Button.m_253074_(Component.m_237115_("controls.resetAll"), (p_269619_) -> {
|
||||
for(KeyMapping keymapping : this.f_96282_.f_92059_) {
|
||||
- keymapping.m_90848_(keymapping.m_90861_());
|
||||
this.addWidget(this.keyBindsList);
|
||||
this.resetButton = this.addRenderableWidget(Button.builder(Component.translatable("controls.resetAll"), (p_269619_) -> {
|
||||
for(KeyMapping keymapping : this.options.keyMappings) {
|
||||
- keymapping.setKey(keymapping.getDefaultKey());
|
||||
+ keymapping.setToDefault();
|
||||
}
|
||||
|
||||
this.f_193977_.m_269130_();
|
||||
this.keyBindsList.resetMappingAndUpdateButtons();
|
||||
@@ -55,11 +_,14 @@
|
||||
public boolean m_7933_(int p_193987_, int p_193988_, int p_193989_) {
|
||||
if (this.f_193975_ != null) {
|
||||
public boolean keyPressed(int p_193987_, int p_193988_, int p_193989_) {
|
||||
if (this.selectedKey != null) {
|
||||
if (p_193987_ == 256) {
|
||||
+ this.f_193975_.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.getActiveModifier(), InputConstants.f_84822_);
|
||||
this.f_96282_.m_92159_(this.f_193975_, InputConstants.f_84822_);
|
||||
+ this.selectedKey.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.getActiveModifier(), InputConstants.UNKNOWN);
|
||||
this.options.setKey(this.selectedKey, InputConstants.UNKNOWN);
|
||||
} else {
|
||||
+ this.f_193975_.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.getActiveModifier(), InputConstants.m_84827_(p_193987_, p_193988_));
|
||||
this.f_96282_.m_92159_(this.f_193975_, InputConstants.m_84827_(p_193987_, p_193988_));
|
||||
+ this.selectedKey.setKeyModifierAndCode(net.minecraftforge.client.settings.KeyModifier.getActiveModifier(), InputConstants.getKey(p_193987_, p_193988_));
|
||||
this.options.setKey(this.selectedKey, InputConstants.getKey(p_193987_, p_193988_));
|
||||
}
|
||||
|
||||
+ if(!net.minecraftforge.client.settings.KeyModifier.isKeyCodeModifier(this.f_193975_.getKey()))
|
||||
this.f_193975_ = null;
|
||||
this.f_193976_ = Util.m_137550_();
|
||||
this.f_193977_.m_269130_();
|
||||
+ if(!net.minecraftforge.client.settings.KeyModifier.isKeyCodeModifier(this.selectedKey.getKey()))
|
||||
this.selectedKey = null;
|
||||
this.lastKeySelection = Util.getMillis();
|
||||
this.keyBindsList.resetMappingAndUpdateButtons();
|
||||
+98
-98
@@ -1,150 +1,150 @@
|
||||
--- a/net/minecraft/client/gui/screens/inventory/AbstractContainerScreen.java
|
||||
+++ b/net/minecraft/client/gui/screens/inventory/AbstractContainerScreen.java
|
||||
@@ -90,6 +_,7 @@
|
||||
int i = this.f_97735_;
|
||||
int j = this.f_97736_;
|
||||
super.m_88315_(p_283479_, p_283661_, p_281248_, p_281886_);
|
||||
int i = this.leftPos;
|
||||
int j = this.topPos;
|
||||
super.render(p_283479_, p_283661_, p_281248_, p_281886_);
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ContainerScreenEvent.Render.Background(this, p_283479_, p_283661_, p_281248_));
|
||||
RenderSystem.disableDepthTest();
|
||||
p_283479_.m_280168_().m_85836_();
|
||||
p_283479_.m_280168_().m_252880_((float)i, (float)j, 0.0F);
|
||||
p_283479_.pose().pushPose();
|
||||
p_283479_.pose().translate((float)i, (float)j, 0.0F);
|
||||
@@ -106,12 +_,13 @@
|
||||
int l = slot.f_40220_;
|
||||
int i1 = slot.f_40221_;
|
||||
if (this.f_97734_.m_280329_()) {
|
||||
- m_280359_(p_283479_, l, i1, 0);
|
||||
int l = slot.x;
|
||||
int i1 = slot.y;
|
||||
if (this.hoveredSlot.isHighlightable()) {
|
||||
- renderSlotHighlight(p_283479_, l, i1, 0);
|
||||
+ renderSlotHighlight(p_283479_, l, i1, 0, getSlotColor(k));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.m_280003_(p_283479_, p_283661_, p_281248_);
|
||||
this.renderLabels(p_283479_, p_283661_, p_281248_);
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.ContainerScreenEvent.Render.Foreground(this, p_283479_, p_283661_, p_281248_));
|
||||
ItemStack itemstack = this.f_97711_.m_41619_() ? this.f_97732_.m_142621_() : this.f_97711_;
|
||||
if (!itemstack.m_41619_()) {
|
||||
ItemStack itemstack = this.draggingItem.isEmpty() ? this.menu.getCarried() : this.draggingItem;
|
||||
if (!itemstack.isEmpty()) {
|
||||
int l1 = 8;
|
||||
@@ -153,13 +_,16 @@
|
||||
}
|
||||
|
||||
public static void m_280359_(GuiGraphics p_283692_, int p_281453_, int p_281915_, int p_283504_) {
|
||||
- p_283692_.m_285978_(RenderType.m_286086_(), p_281453_, p_281915_, p_281453_ + 16, p_281915_ + 16, -2130706433, -2130706433, p_283504_);
|
||||
public static void renderSlotHighlight(GuiGraphics p_283692_, int p_281453_, int p_281915_, int p_283504_) {
|
||||
- p_283692_.fillGradient(RenderType.guiOverlay(), p_281453_, p_281915_, p_281453_ + 16, p_281915_ + 16, -2130706433, -2130706433, p_283504_);
|
||||
+ renderSlotHighlight(p_283692_, p_281453_, p_281915_, p_283504_, -2130706433);
|
||||
+ }
|
||||
+ public static void renderSlotHighlight(GuiGraphics p_283692_, int p_281453_, int p_281915_, int p_283504_, int color) {
|
||||
+ p_283692_.m_285978_(RenderType.m_286086_(), p_281453_, p_281915_, p_281453_ + 16, p_281915_ + 16, color, color, p_283504_);
|
||||
+ p_283692_.fillGradient(RenderType.guiOverlay(), p_281453_, p_281915_, p_281453_ + 16, p_281915_ + 16, color, color, p_283504_);
|
||||
}
|
||||
|
||||
protected void m_280072_(GuiGraphics p_283594_, int p_282171_, int p_281909_) {
|
||||
if (this.f_97732_.m_142621_().m_41619_() && this.f_97734_ != null && this.f_97734_.m_6657_()) {
|
||||
ItemStack itemstack = this.f_97734_.m_7993_();
|
||||
- p_283594_.m_280677_(this.f_96547_, this.m_280553_(itemstack), itemstack.m_150921_(), p_282171_, p_281909_);
|
||||
+ p_283594_.renderTooltip(this.f_96547_, this.m_280553_(itemstack), itemstack.m_150921_(), itemstack, p_282171_, p_281909_);
|
||||
protected void renderTooltip(GuiGraphics p_283594_, int p_282171_, int p_281909_) {
|
||||
if (this.menu.getCarried().isEmpty() && this.hoveredSlot != null && this.hoveredSlot.hasItem()) {
|
||||
ItemStack itemstack = this.hoveredSlot.getItem();
|
||||
- p_283594_.renderTooltip(this.font, this.getTooltipFromContainerItem(itemstack), itemstack.getTooltipImage(), p_282171_, p_281909_);
|
||||
+ p_283594_.renderTooltip(this.font, this.getTooltipFromContainerItem(itemstack), itemstack.getTooltipImage(), itemstack, p_282171_, p_281909_);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -172,7 +_,8 @@
|
||||
p_282567_.m_280168_().m_85836_();
|
||||
p_282567_.m_280168_().m_252880_(0.0F, 0.0F, 232.0F);
|
||||
p_282567_.m_280480_(p_281330_, p_281772_, p_281689_);
|
||||
- p_282567_.m_280302_(this.f_96547_, p_281330_, p_281772_, p_281689_ - (this.f_97711_.m_41619_() ? 0 : 8), p_282568_);
|
||||
p_282567_.pose().pushPose();
|
||||
p_282567_.pose().translate(0.0F, 0.0F, 232.0F);
|
||||
p_282567_.renderItem(p_281330_, p_281772_, p_281689_);
|
||||
- p_282567_.renderItemDecorations(this.font, p_281330_, p_281772_, p_281689_ - (this.draggingItem.isEmpty() ? 0 : 8), p_282568_);
|
||||
+ var font = net.minecraftforge.client.extensions.common.IClientItemExtensions.of(p_281330_).getFont(p_281330_, net.minecraftforge.client.extensions.common.IClientItemExtensions.FontContext.ITEM_COUNT);
|
||||
+ p_282567_.m_280302_(font == null ? this.f_96547_ : font, p_281330_, p_281772_, p_281689_ - (this.f_97711_.m_41619_() ? 0 : 8), p_282568_);
|
||||
p_282567_.m_280168_().m_85849_();
|
||||
+ p_282567_.renderItemDecorations(font == null ? this.font : font, p_281330_, p_281772_, p_281689_ - (this.draggingItem.isEmpty() ? 0 : 8), p_282568_);
|
||||
p_282567_.pose().popPose();
|
||||
}
|
||||
|
||||
@@ -274,7 +_,8 @@
|
||||
if (super.m_6375_(p_97748_, p_97749_, p_97750_)) {
|
||||
if (super.mouseClicked(p_97748_, p_97749_, p_97750_)) {
|
||||
return true;
|
||||
} else {
|
||||
- boolean flag = this.f_96541_.f_91066_.f_92097_.m_90830_(p_97750_) && this.f_96541_.f_91072_.m_105290_();
|
||||
+ InputConstants.Key mouseKey = InputConstants.Type.MOUSE.m_84895_(p_97750_);
|
||||
+ boolean flag = this.f_96541_.f_91066_.f_92097_.isActiveAndMatches(mouseKey);
|
||||
Slot slot = this.m_97744_(p_97748_, p_97749_);
|
||||
long i = Util.m_137550_();
|
||||
this.f_97723_ = this.f_97709_ == slot && i - this.f_97721_ < 250L && this.f_97722_ == p_97750_;
|
||||
- boolean flag = this.minecraft.options.keyPickItem.matchesMouse(p_97750_) && this.minecraft.gameMode.hasInfiniteItems();
|
||||
+ InputConstants.Key mouseKey = InputConstants.Type.MOUSE.getOrCreate(p_97750_);
|
||||
+ boolean flag = this.minecraft.options.keyPickItem.isActiveAndMatches(mouseKey);
|
||||
Slot slot = this.findSlot(p_97748_, p_97749_);
|
||||
long i = Util.getMillis();
|
||||
this.doubleclick = this.lastClickSlot == slot && i - this.lastClickTime < 250L && this.lastClickButton == p_97750_;
|
||||
@@ -285,6 +_,7 @@
|
||||
int j = this.f_97735_;
|
||||
int k = this.f_97736_;
|
||||
boolean flag1 = this.m_7467_(p_97748_, p_97749_, j, k, p_97750_);
|
||||
int j = this.leftPos;
|
||||
int k = this.topPos;
|
||||
boolean flag1 = this.hasClickedOutside(p_97748_, p_97749_, j, k, p_97750_);
|
||||
+ if (slot != null) flag1 = false; // Forge, prevent dropping of items through slots outside of GUI boundaries
|
||||
int l = -1;
|
||||
if (slot != null) {
|
||||
l = slot.f_40219_;
|
||||
l = slot.index;
|
||||
@@ -310,7 +_,7 @@
|
||||
}
|
||||
} else if (!this.f_97738_) {
|
||||
if (this.f_97732_.m_142621_().m_41619_()) {
|
||||
} else if (!this.isQuickCrafting) {
|
||||
if (this.menu.getCarried().isEmpty()) {
|
||||
- if (flag) {
|
||||
+ if (this.f_96541_.f_91066_.f_92097_.isActiveAndMatches(mouseKey)) {
|
||||
this.m_6597_(slot, l, p_97750_, ClickType.CLONE);
|
||||
+ if (this.minecraft.options.keyPickItem.isActiveAndMatches(mouseKey)) {
|
||||
this.slotClicked(slot, l, p_97750_, ClickType.CLONE);
|
||||
} else {
|
||||
boolean flag2 = l != -999 && (InputConstants.m_84830_(Minecraft.m_91087_().m_91268_().m_85439_(), 340) || InputConstants.m_84830_(Minecraft.m_91087_().m_91268_().m_85439_(), 344));
|
||||
boolean flag2 = l != -999 && (InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), 340) || InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), 344));
|
||||
@@ -334,7 +_,7 @@
|
||||
this.f_97717_ = 0;
|
||||
this.quickCraftingType = 0;
|
||||
} else if (p_97750_ == 1) {
|
||||
this.f_97717_ = 1;
|
||||
this.quickCraftingType = 1;
|
||||
- } else if (flag) {
|
||||
+ } else if (this.f_96541_.f_91066_.f_92097_.isActiveAndMatches(mouseKey)) {
|
||||
this.f_97717_ = 2;
|
||||
+ } else if (this.minecraft.options.keyPickItem.isActiveAndMatches(mouseKey)) {
|
||||
this.quickCraftingType = 2;
|
||||
}
|
||||
}
|
||||
@@ -403,10 +_,13 @@
|
||||
}
|
||||
|
||||
public boolean m_6348_(double p_97812_, double p_97813_, int p_97814_) {
|
||||
+ super.m_6348_(p_97812_, p_97813_, p_97814_); //Forge, Call parent to release buttons
|
||||
Slot slot = this.m_97744_(p_97812_, p_97813_);
|
||||
int i = this.f_97735_;
|
||||
int j = this.f_97736_;
|
||||
boolean flag = this.m_7467_(p_97812_, p_97813_, i, j, p_97814_);
|
||||
public boolean mouseReleased(double p_97812_, double p_97813_, int p_97814_) {
|
||||
+ super.mouseReleased(p_97812_, p_97813_, p_97814_); //Forge, Call parent to release buttons
|
||||
Slot slot = this.findSlot(p_97812_, p_97813_);
|
||||
int i = this.leftPos;
|
||||
int j = this.topPos;
|
||||
boolean flag = this.hasClickedOutside(p_97812_, p_97813_, i, j, p_97814_);
|
||||
+ if (slot != null) flag = false; // Forge, prevent dropping of items through slots outside of GUI boundaries
|
||||
+ InputConstants.Key mouseKey = InputConstants.Type.MOUSE.m_84895_(p_97814_);
|
||||
+ InputConstants.Key mouseKey = InputConstants.Type.MOUSE.getOrCreate(p_97814_);
|
||||
int k = -1;
|
||||
if (slot != null) {
|
||||
k = slot.f_40219_;
|
||||
k = slot.index;
|
||||
@@ -420,7 +_,7 @@
|
||||
if (m_96638_()) {
|
||||
if (!this.f_97724_.m_41619_()) {
|
||||
for(Slot slot2 : this.f_97732_.f_38839_) {
|
||||
- if (slot2 != null && slot2.m_8010_(this.f_96541_.f_91074_) && slot2.m_6657_() && slot2.f_40218_ == slot.f_40218_ && AbstractContainerMenu.m_38899_(slot2, this.f_97724_, true)) {
|
||||
+ if (slot2 != null && slot2.m_8010_(this.f_96541_.f_91074_) && slot2.m_6657_() && slot2.isSameInventory(slot) && AbstractContainerMenu.m_38899_(slot2, this.f_97724_, true)) {
|
||||
this.m_6597_(slot2, slot2.f_40219_, p_97814_, ClickType.QUICK_MOVE);
|
||||
if (hasShiftDown()) {
|
||||
if (!this.lastQuickMoved.isEmpty()) {
|
||||
for(Slot slot2 : this.menu.slots) {
|
||||
- if (slot2 != null && slot2.mayPickup(this.minecraft.player) && slot2.hasItem() && slot2.container == slot.container && AbstractContainerMenu.canItemQuickReplace(slot2, this.lastQuickMoved, true)) {
|
||||
+ if (slot2 != null && slot2.mayPickup(this.minecraft.player) && slot2.hasItem() && slot2.isSameInventory(slot) && AbstractContainerMenu.canItemQuickReplace(slot2, this.lastQuickMoved, true)) {
|
||||
this.slotClicked(slot2, slot2.index, p_97814_, ClickType.QUICK_MOVE);
|
||||
}
|
||||
}
|
||||
@@ -483,7 +_,7 @@
|
||||
|
||||
this.m_6597_((Slot)null, -999, AbstractContainerMenu.m_38930_(2, this.f_97717_), ClickType.QUICK_CRAFT);
|
||||
} else if (!this.f_97732_.m_142621_().m_41619_()) {
|
||||
- if (this.f_96541_.f_91066_.f_92097_.m_90830_(p_97814_)) {
|
||||
+ if (this.f_96541_.f_91066_.f_92097_.isActiveAndMatches(mouseKey)) {
|
||||
this.m_6597_(slot, k, p_97814_, ClickType.CLONE);
|
||||
this.slotClicked((Slot)null, -999, AbstractContainerMenu.getQuickcraftMask(2, this.quickCraftingType), ClickType.QUICK_CRAFT);
|
||||
} else if (!this.menu.getCarried().isEmpty()) {
|
||||
- if (this.minecraft.options.keyPickItem.matchesMouse(p_97814_)) {
|
||||
+ if (this.minecraft.options.keyPickItem.isActiveAndMatches(mouseKey)) {
|
||||
this.slotClicked(slot, k, p_97814_, ClickType.CLONE);
|
||||
} else {
|
||||
boolean flag1 = k != -999 && (InputConstants.m_84830_(Minecraft.m_91087_().m_91268_().m_85439_(), 340) || InputConstants.m_84830_(Minecraft.m_91087_().m_91268_().m_85439_(), 344));
|
||||
boolean flag1 = k != -999 && (InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), 340) || InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), 344));
|
||||
@@ -530,34 +_,39 @@
|
||||
}
|
||||
|
||||
public boolean m_7933_(int p_97765_, int p_97766_, int p_97767_) {
|
||||
+ InputConstants.Key mouseKey = InputConstants.m_84827_(p_97765_, p_97766_);
|
||||
if (super.m_7933_(p_97765_, p_97766_, p_97767_)) {
|
||||
public boolean keyPressed(int p_97765_, int p_97766_, int p_97767_) {
|
||||
+ InputConstants.Key mouseKey = InputConstants.getKey(p_97765_, p_97766_);
|
||||
if (super.keyPressed(p_97765_, p_97766_, p_97767_)) {
|
||||
return true;
|
||||
- } else if (this.f_96541_.f_91066_.f_92092_.m_90832_(p_97765_, p_97766_)) {
|
||||
+ } else if (this.f_96541_.f_91066_.f_92092_.isActiveAndMatches(mouseKey)) {
|
||||
this.m_7379_();
|
||||
- } else if (this.minecraft.options.keyInventory.matches(p_97765_, p_97766_)) {
|
||||
+ } else if (this.minecraft.options.keyInventory.isActiveAndMatches(mouseKey)) {
|
||||
this.onClose();
|
||||
return true;
|
||||
} else {
|
||||
- this.m_97805_(p_97765_, p_97766_);
|
||||
+ boolean handled = this.m_97805_(p_97765_, p_97766_);// Forge MC-146650: Needs to return true when the key is handled
|
||||
if (this.f_97734_ != null && this.f_97734_.m_6657_()) {
|
||||
- if (this.f_96541_.f_91066_.f_92097_.m_90832_(p_97765_, p_97766_)) {
|
||||
+ if (this.f_96541_.f_91066_.f_92097_.isActiveAndMatches(mouseKey)) {
|
||||
this.m_6597_(this.f_97734_, this.f_97734_.f_40219_, 0, ClickType.CLONE);
|
||||
- } else if (this.f_96541_.f_91066_.f_92094_.m_90832_(p_97765_, p_97766_)) {
|
||||
- this.checkHotbarKeyPressed(p_97765_, p_97766_);
|
||||
+ boolean handled = this.checkHotbarKeyPressed(p_97765_, p_97766_);// Forge MC-146650: Needs to return true when the key is handled
|
||||
if (this.hoveredSlot != null && this.hoveredSlot.hasItem()) {
|
||||
- if (this.minecraft.options.keyPickItem.matches(p_97765_, p_97766_)) {
|
||||
+ if (this.minecraft.options.keyPickItem.isActiveAndMatches(mouseKey)) {
|
||||
this.slotClicked(this.hoveredSlot, this.hoveredSlot.index, 0, ClickType.CLONE);
|
||||
- } else if (this.minecraft.options.keyDrop.matches(p_97765_, p_97766_)) {
|
||||
+ handled = true;
|
||||
+ } else if (this.f_96541_.f_91066_.f_92094_.isActiveAndMatches(mouseKey)) {
|
||||
this.m_6597_(this.f_97734_, this.f_97734_.f_40219_, m_96637_() ? 1 : 0, ClickType.THROW);
|
||||
+ } else if (this.minecraft.options.keyDrop.isActiveAndMatches(mouseKey)) {
|
||||
this.slotClicked(this.hoveredSlot, this.hoveredSlot.index, hasControlDown() ? 1 : 0, ClickType.THROW);
|
||||
+ handled = true;
|
||||
}
|
||||
+ } else if (this.f_96541_.f_91066_.f_92094_.isActiveAndMatches(mouseKey)) {
|
||||
+ } else if (this.minecraft.options.keyDrop.isActiveAndMatches(mouseKey)) {
|
||||
+ handled = true; // Forge MC-146650: Emulate MC bug, so we don't drop from hotbar when pressing drop without hovering over a item.
|
||||
}
|
||||
|
||||
@@ -153,36 +153,36 @@
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean m_97805_(int p_97806_, int p_97807_) {
|
||||
if (this.f_97732_.m_142621_().m_41619_() && this.f_97734_ != null) {
|
||||
- if (this.f_96541_.f_91066_.f_92093_.m_90832_(p_97806_, p_97807_)) {
|
||||
+ if (this.f_96541_.f_91066_.f_92093_.isActiveAndMatches(InputConstants.m_84827_(p_97806_, p_97807_))) {
|
||||
this.m_6597_(this.f_97734_, this.f_97734_.f_40219_, 40, ClickType.SWAP);
|
||||
protected boolean checkHotbarKeyPressed(int p_97806_, int p_97807_) {
|
||||
if (this.menu.getCarried().isEmpty() && this.hoveredSlot != null) {
|
||||
- if (this.minecraft.options.keySwapOffhand.matches(p_97806_, p_97807_)) {
|
||||
+ if (this.minecraft.options.keySwapOffhand.isActiveAndMatches(InputConstants.getKey(p_97806_, p_97807_))) {
|
||||
this.slotClicked(this.hoveredSlot, this.hoveredSlot.index, 40, ClickType.SWAP);
|
||||
return true;
|
||||
}
|
||||
|
||||
for(int i = 0; i < 9; ++i) {
|
||||
- if (this.f_96541_.f_91066_.f_92056_[i].m_90832_(p_97806_, p_97807_)) {
|
||||
+ if (this.f_96541_.f_91066_.f_92056_[i].isActiveAndMatches(InputConstants.m_84827_(p_97806_, p_97807_))) {
|
||||
this.m_6597_(this.f_97734_, this.f_97734_.f_40219_, i, ClickType.SWAP);
|
||||
- if (this.minecraft.options.keyHotbarSlots[i].matches(p_97806_, p_97807_)) {
|
||||
+ if (this.minecraft.options.keyHotbarSlots[i].isActiveAndMatches(InputConstants.getKey(p_97806_, p_97807_))) {
|
||||
this.slotClicked(this.hoveredSlot, this.hoveredSlot.index, i, ClickType.SWAP);
|
||||
return true;
|
||||
}
|
||||
@@ -592,6 +_,18 @@
|
||||
|
||||
public T m_6262_() {
|
||||
return this.f_97732_;
|
||||
public T getMenu() {
|
||||
return this.menu;
|
||||
+ }
|
||||
+
|
||||
+ @org.jetbrains.annotations.Nullable
|
||||
+ public Slot getSlotUnderMouse() { return this.f_97734_; }
|
||||
+ public int getGuiLeft() { return f_97735_; }
|
||||
+ public int getGuiTop() { return f_97736_; }
|
||||
+ public int getXSize() { return f_97726_; }
|
||||
+ public int getYSize() { return f_97727_; }
|
||||
+ public Slot getSlotUnderMouse() { return this.hoveredSlot; }
|
||||
+ public int getGuiLeft() { return leftPos; }
|
||||
+ public int getGuiTop() { return topPos; }
|
||||
+ public int getXSize() { return imageWidth; }
|
||||
+ public int getYSize() { return imageHeight; }
|
||||
+
|
||||
+ protected int slotColor = -2130706433;
|
||||
+ public int getSlotColor(int index) {
|
||||
+ return slotColor;
|
||||
}
|
||||
|
||||
public void m_7379_() {
|
||||
public void onClose() {
|
||||
+132
-132
@@ -1,27 +1,27 @@
|
||||
--- a/net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen.java
|
||||
+++ b/net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen.java
|
||||
@@ -79,6 +_,8 @@
|
||||
private boolean f_98515_;
|
||||
private final Set<TagKey<Item>> f_98516_ = new HashSet<>();
|
||||
private final boolean f_256872_;
|
||||
private boolean hasClickedOutside;
|
||||
private final Set<TagKey<Item>> visibleTags = new HashSet<>();
|
||||
private final boolean displayOperatorCreativeTab;
|
||||
+ private final List<net.minecraftforge.client.gui.CreativeTabsScreenPage> pages = new java.util.ArrayList<>();
|
||||
+ private net.minecraftforge.client.gui.CreativeTabsScreenPage currentPage = new net.minecraftforge.client.gui.CreativeTabsScreenPage(new java.util.ArrayList<>());
|
||||
|
||||
public CreativeModeInventoryScreen(Player p_259788_, FeatureFlagSet p_260074_, boolean p_259569_) {
|
||||
super(new CreativeModeInventoryScreen.ItemPickerMenu(p_259788_), p_259788_.m_150109_(), CommonComponents.f_237098_);
|
||||
super(new CreativeModeInventoryScreen.ItemPickerMenu(p_259788_), p_259788_.getInventory(), CommonComponents.EMPTY);
|
||||
@@ -112,7 +_,7 @@
|
||||
private void m_257687_(Collection<ItemStack> p_261591_) {
|
||||
int i = this.f_97732_.m_257485_(this.f_98508_);
|
||||
(this.f_97732_).f_98639_.clear();
|
||||
- if (f_98507_.m_257962_() == CreativeModeTab.Type.SEARCH) {
|
||||
+ if (f_98507_.hasSearchBar()) {
|
||||
this.m_98630_();
|
||||
private void refreshCurrentTabContents(Collection<ItemStack> p_261591_) {
|
||||
int i = this.menu.getRowIndexForScroll(this.scrollOffs);
|
||||
(this.menu).items.clear();
|
||||
- if (selectedTab.getType() == CreativeModeTab.Type.SEARCH) {
|
||||
+ if (selectedTab.hasSearchBar()) {
|
||||
this.refreshSearchResults();
|
||||
} else {
|
||||
(this.f_97732_).f_98639_.addAll(p_261591_);
|
||||
(this.menu).items.addAll(p_261591_);
|
||||
@@ -266,6 +_,34 @@
|
||||
protected void m_7856_() {
|
||||
if (this.f_96541_.f_91072_.m_105290_()) {
|
||||
super.m_7856_();
|
||||
protected void init() {
|
||||
if (this.minecraft.gameMode.hasInfiniteItems()) {
|
||||
super.init();
|
||||
+ this.pages.clear();
|
||||
+ int tabIndex = 0;
|
||||
+ List<CreativeModeTab> currentPage = new java.util.ArrayList<>();
|
||||
@@ -43,211 +43,211 @@
|
||||
+ this.currentPage = this.pages.get(0);
|
||||
+ }
|
||||
+ if (this.pages.size() > 1) {
|
||||
+ m_142416_(net.minecraft.client.gui.components.Button.m_253074_(Component.m_237113_("<"), b -> setCurrentPage(this.pages.get(Math.max(this.pages.indexOf(this.currentPage) - 1, 0)))).m_252794_(f_97735_, f_97736_ - 50).m_253046_(20, 20).m_253136_());
|
||||
+ m_142416_(net.minecraft.client.gui.components.Button.m_253074_(Component.m_237113_(">"), b -> setCurrentPage(this.pages.get(Math.min(this.pages.indexOf(this.currentPage) + 1, this.pages.size() - 1)))).m_252794_(f_97735_ + f_97726_ - 20, f_97736_ - 50).m_253046_(20, 20).m_253136_());
|
||||
+ addRenderableWidget(net.minecraft.client.gui.components.Button.builder(Component.literal("<"), b -> setCurrentPage(this.pages.get(Math.max(this.pages.indexOf(this.currentPage) - 1, 0)))).pos(leftPos, topPos - 50).size(20, 20).build());
|
||||
+ addRenderableWidget(net.minecraft.client.gui.components.Button.builder(Component.literal(">"), b -> setCurrentPage(this.pages.get(Math.min(this.pages.indexOf(this.currentPage) + 1, this.pages.size() - 1)))).pos(leftPos + imageWidth - 20, topPos - 50).size(20, 20).build());
|
||||
+ }
|
||||
+ this.currentPage = this.pages.stream().filter(page -> page.getVisibleTabs().contains(f_98507_)).findFirst().orElse(this.currentPage);
|
||||
+ if (!this.currentPage.getVisibleTabs().contains(f_98507_)) {
|
||||
+ f_98507_ = this.currentPage.getVisibleTabs().get(0);
|
||||
+ this.currentPage = this.pages.stream().filter(page -> page.getVisibleTabs().contains(selectedTab)).findFirst().orElse(this.currentPage);
|
||||
+ if (!this.currentPage.getVisibleTabs().contains(selectedTab)) {
|
||||
+ selectedTab = this.currentPage.getVisibleTabs().get(0);
|
||||
+ }
|
||||
this.f_98510_ = new EditBox(this.f_96547_, this.f_97735_ + 82, this.f_97736_ + 6, 80, 9, Component.m_237115_("itemGroup.search"));
|
||||
this.f_98510_.m_94199_(50);
|
||||
this.f_98510_.m_94182_(false);
|
||||
this.searchBox = new EditBox(this.font, this.leftPos + 82, this.topPos + 6, 80, 9, Component.translatable("itemGroup.search"));
|
||||
this.searchBox.setMaxLength(50);
|
||||
this.searchBox.setBordered(false);
|
||||
@@ -311,7 +_,7 @@
|
||||
public boolean m_5534_(char p_98521_, int p_98522_) {
|
||||
if (this.f_98514_) {
|
||||
public boolean charTyped(char p_98521_, int p_98522_) {
|
||||
if (this.ignoreTextInput) {
|
||||
return false;
|
||||
- } else if (f_98507_.m_257962_() != CreativeModeTab.Type.SEARCH) {
|
||||
+ } else if (!f_98507_.hasSearchBar()) {
|
||||
- } else if (selectedTab.getType() != CreativeModeTab.Type.SEARCH) {
|
||||
+ } else if (!selectedTab.hasSearchBar()) {
|
||||
return false;
|
||||
} else {
|
||||
String s = this.f_98510_.m_94155_();
|
||||
String s = this.searchBox.getValue();
|
||||
@@ -329,7 +_,7 @@
|
||||
|
||||
public boolean m_7933_(int p_98547_, int p_98548_, int p_98549_) {
|
||||
this.f_98514_ = false;
|
||||
- if (f_98507_.m_257962_() != CreativeModeTab.Type.SEARCH) {
|
||||
+ if (!f_98507_.hasSearchBar()) {
|
||||
if (this.f_96541_.f_91066_.f_92098_.m_90832_(p_98547_, p_98548_)) {
|
||||
this.f_98514_ = true;
|
||||
this.m_98560_(CreativeModeTabs.m_258007_());
|
||||
public boolean keyPressed(int p_98547_, int p_98548_, int p_98549_) {
|
||||
this.ignoreTextInput = false;
|
||||
- if (selectedTab.getType() != CreativeModeTab.Type.SEARCH) {
|
||||
+ if (!selectedTab.hasSearchBar()) {
|
||||
if (this.minecraft.options.keyChat.matches(p_98547_, p_98548_)) {
|
||||
this.ignoreTextInput = true;
|
||||
this.selectTab(CreativeModeTabs.searchTab());
|
||||
@@ -364,6 +_,7 @@
|
||||
}
|
||||
|
||||
private void m_98630_() {
|
||||
+ if (!f_98507_.hasSearchBar()) return;
|
||||
(this.f_97732_).f_98639_.clear();
|
||||
this.f_98516_.clear();
|
||||
String s = this.f_98510_.m_94155_();
|
||||
private void refreshSearchResults() {
|
||||
+ if (!selectedTab.hasSearchBar()) return;
|
||||
(this.menu).items.clear();
|
||||
this.visibleTags.clear();
|
||||
String s = this.searchBox.getValue();
|
||||
@@ -373,10 +_,10 @@
|
||||
SearchTree<ItemStack> searchtree;
|
||||
if (s.startsWith("#")) {
|
||||
s = s.substring(1);
|
||||
- searchtree = this.f_96541_.m_231372_(SearchRegistry.f_119942_);
|
||||
+ searchtree = this.f_96541_.m_231372_(net.minecraftforge.client.CreativeModeTabSearchRegistry.getTagSearchKey(f_98507_));
|
||||
this.m_98619_(s);
|
||||
- searchtree = this.minecraft.getSearchTree(SearchRegistry.CREATIVE_TAGS);
|
||||
+ searchtree = this.minecraft.getSearchTree(net.minecraftforge.client.CreativeModeTabSearchRegistry.getTagSearchKey(selectedTab));
|
||||
this.updateVisibleTags(s);
|
||||
} else {
|
||||
- searchtree = this.f_96541_.m_231372_(SearchRegistry.f_119941_);
|
||||
+ searchtree = this.f_96541_.m_231372_(net.minecraftforge.client.CreativeModeTabSearchRegistry.getNameSearchKey(f_98507_));
|
||||
- searchtree = this.minecraft.getSearchTree(SearchRegistry.CREATIVE_NAMES);
|
||||
+ searchtree = this.minecraft.getSearchTree(net.minecraftforge.client.CreativeModeTabSearchRegistry.getNameSearchKey(selectedTab));
|
||||
}
|
||||
|
||||
(this.f_97732_).f_98639_.addAll(searchtree.m_6293_(s.toLowerCase(Locale.ROOT)));
|
||||
(this.menu).items.addAll(searchtree.search(s.toLowerCase(Locale.ROOT)));
|
||||
@@ -408,7 +_,8 @@
|
||||
|
||||
protected void m_280003_(GuiGraphics p_283168_, int p_281774_, int p_281466_) {
|
||||
if (f_98507_.m_40789_()) {
|
||||
- p_283168_.m_280614_(this.f_96547_, f_98507_.m_40786_(), 8, 6, 4210752, false);
|
||||
protected void renderLabels(GuiGraphics p_283168_, int p_281774_, int p_281466_) {
|
||||
if (selectedTab.showTitle()) {
|
||||
- p_283168_.drawString(this.font, selectedTab.getDisplayName(), 8, 6, 4210752, false);
|
||||
+ com.mojang.blaze3d.systems.RenderSystem.disableBlend();
|
||||
+ p_283168_.m_280614_(this.f_96547_, f_98507_.m_40786_(), 8, 6, f_98507_.getLabelColor(), false);
|
||||
+ p_283168_.drawString(this.font, selectedTab.getDisplayName(), 8, 6, selectedTab.getLabelColor(), false);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -418,7 +_,7 @@
|
||||
double d0 = p_98531_ - (double)this.f_97735_;
|
||||
double d1 = p_98532_ - (double)this.f_97736_;
|
||||
double d0 = p_98531_ - (double)this.leftPos;
|
||||
double d1 = p_98532_ - (double)this.topPos;
|
||||
|
||||
- for(CreativeModeTab creativemodetab : CreativeModeTabs.m_257388_()) {
|
||||
- for(CreativeModeTab creativemodetab : CreativeModeTabs.tabs()) {
|
||||
+ for(CreativeModeTab creativemodetab : currentPage.getVisibleTabs()) {
|
||||
if (this.m_98562_(creativemodetab, d0, d1)) {
|
||||
if (this.checkTabClicked(creativemodetab, d0, d1)) {
|
||||
return true;
|
||||
}
|
||||
@@ -439,7 +_,7 @@
|
||||
double d1 = p_98623_ - (double)this.f_97736_;
|
||||
this.f_98509_ = false;
|
||||
double d1 = p_98623_ - (double)this.topPos;
|
||||
this.scrolling = false;
|
||||
|
||||
- for(CreativeModeTab creativemodetab : CreativeModeTabs.m_257388_()) {
|
||||
- for(CreativeModeTab creativemodetab : CreativeModeTabs.tabs()) {
|
||||
+ for(CreativeModeTab creativemodetab : currentPage.getVisibleTabs()) {
|
||||
if (this.m_98562_(creativemodetab, d0, d1)) {
|
||||
this.m_98560_(creativemodetab);
|
||||
if (this.checkTabClicked(creativemodetab, d0, d1)) {
|
||||
this.selectTab(creativemodetab);
|
||||
return true;
|
||||
@@ -457,6 +_,7 @@
|
||||
private void m_98560_(CreativeModeTab p_98561_) {
|
||||
CreativeModeTab creativemodetab = f_98507_;
|
||||
f_98507_ = p_98561_;
|
||||
private void selectTab(CreativeModeTab p_98561_) {
|
||||
CreativeModeTab creativemodetab = selectedTab;
|
||||
selectedTab = p_98561_;
|
||||
+ slotColor = p_98561_.getSlotColor();
|
||||
this.f_97737_.clear();
|
||||
(this.f_97732_).f_98639_.clear();
|
||||
this.m_238391_();
|
||||
this.quickCraftSlots.clear();
|
||||
(this.menu).items.clear();
|
||||
this.clearDraggingState();
|
||||
@@ -533,13 +_,15 @@
|
||||
this.f_98511_ = null;
|
||||
this.originalSlots = null;
|
||||
}
|
||||
|
||||
- if (f_98507_.m_257962_() == CreativeModeTab.Type.SEARCH) {
|
||||
+ if (f_98507_.hasSearchBar()) {
|
||||
this.f_98510_.m_94194_(true);
|
||||
this.f_98510_.m_94190_(false);
|
||||
this.f_98510_.m_93692_(true);
|
||||
- if (selectedTab.getType() == CreativeModeTab.Type.SEARCH) {
|
||||
+ if (selectedTab.hasSearchBar()) {
|
||||
this.searchBox.setVisible(true);
|
||||
this.searchBox.setCanLoseFocus(false);
|
||||
this.searchBox.setFocused(true);
|
||||
if (creativemodetab != p_98561_) {
|
||||
this.f_98510_.m_94144_("");
|
||||
this.searchBox.setValue("");
|
||||
}
|
||||
+ this.f_98510_.m_93674_(f_98507_.getSearchBarWidth());
|
||||
+ this.f_98510_.m_252865_(this.f_97735_ + (82 /*default left*/ + 89 /*default width*/) - this.f_98510_.m_5711_());
|
||||
+ this.searchBox.setWidth(selectedTab.getSearchBarWidth());
|
||||
+ this.searchBox.setX(this.leftPos + (82 /*default left*/ + 89 /*default width*/) - this.searchBox.getWidth());
|
||||
|
||||
this.m_98630_();
|
||||
this.refreshSearchResults();
|
||||
} else {
|
||||
@@ -595,7 +_,7 @@
|
||||
public void m_88315_(GuiGraphics p_283000_, int p_281317_, int p_282770_, float p_281295_) {
|
||||
super.m_88315_(p_283000_, p_281317_, p_282770_, p_281295_);
|
||||
public void render(GuiGraphics p_283000_, int p_281317_, int p_282770_, float p_281295_) {
|
||||
super.render(p_283000_, p_281317_, p_282770_, p_281295_);
|
||||
|
||||
- for(CreativeModeTab creativemodetab : CreativeModeTabs.m_257388_()) {
|
||||
- for(CreativeModeTab creativemodetab : CreativeModeTabs.tabs()) {
|
||||
+ for(CreativeModeTab creativemodetab : currentPage.getVisibleTabs()) {
|
||||
if (this.m_280537_(p_283000_, creativemodetab, p_281317_, p_282770_)) {
|
||||
if (this.checkTabHovering(p_283000_, creativemodetab, p_281317_, p_282770_)) {
|
||||
break;
|
||||
}
|
||||
@@ -605,13 +_,22 @@
|
||||
p_283000_.m_280557_(this.f_96547_, f_98506_, p_281317_, p_282770_);
|
||||
p_283000_.renderTooltip(this.font, TRASH_SLOT_TOOLTIP, p_281317_, p_282770_);
|
||||
}
|
||||
|
||||
+ if (this.pages.size() != 1) {
|
||||
+ Component page = Component.m_237113_(String.format("%d / %d", this.pages.indexOf(this.currentPage) + 1, this.pages.size()));
|
||||
+ p_283000_.m_280168_().m_85836_();
|
||||
+ p_283000_.m_280168_().m_252880_(0F, 0F, 300F);
|
||||
+ p_283000_.m_280648_(f_96547_, page.m_7532_(), f_97735_ + (f_97726_ / 2) - (f_96547_.m_92852_(page) / 2), f_97736_ - 44, -1);
|
||||
+ p_283000_.m_280168_().m_85849_();
|
||||
+ Component page = Component.literal(String.format("%d / %d", this.pages.indexOf(this.currentPage) + 1, this.pages.size()));
|
||||
+ p_283000_.pose().pushPose();
|
||||
+ p_283000_.pose().translate(0F, 0F, 300F);
|
||||
+ p_283000_.drawString(font, page.getVisualOrderText(), leftPos + (imageWidth / 2) - (font.width(page) / 2), topPos - 44, -1);
|
||||
+ p_283000_.pose().popPose();
|
||||
+ }
|
||||
+
|
||||
+ com.mojang.blaze3d.systems.RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.m_280072_(p_283000_, p_281317_, p_282770_);
|
||||
this.renderTooltip(p_283000_, p_281317_, p_282770_);
|
||||
}
|
||||
|
||||
public List<Component> m_280553_(ItemStack p_281769_) {
|
||||
boolean flag = this.f_97734_ != null && this.f_97734_ instanceof CreativeModeInventoryScreen.CustomCreativeSlot;
|
||||
boolean flag1 = f_98507_.m_257962_() == CreativeModeTab.Type.CATEGORY;
|
||||
- boolean flag2 = f_98507_.m_257962_() == CreativeModeTab.Type.SEARCH;
|
||||
+ boolean flag2 = f_98507_.hasSearchBar();
|
||||
TooltipFlag.Default tooltipflag$default = this.f_96541_.f_91066_.f_92125_ ? TooltipFlag.Default.f_256730_ : TooltipFlag.Default.f_256752_;
|
||||
TooltipFlag tooltipflag = flag ? tooltipflag$default.m_257777_() : tooltipflag$default;
|
||||
List<Component> list = p_281769_.m_41651_(this.f_96541_.f_91074_, tooltipflag);
|
||||
public List<Component> getTooltipFromContainerItem(ItemStack p_281769_) {
|
||||
boolean flag = this.hoveredSlot != null && this.hoveredSlot instanceof CreativeModeInventoryScreen.CustomCreativeSlot;
|
||||
boolean flag1 = selectedTab.getType() == CreativeModeTab.Type.CATEGORY;
|
||||
- boolean flag2 = selectedTab.getType() == CreativeModeTab.Type.SEARCH;
|
||||
+ boolean flag2 = selectedTab.hasSearchBar();
|
||||
TooltipFlag.Default tooltipflag$default = this.minecraft.options.advancedItemTooltips ? TooltipFlag.Default.ADVANCED : TooltipFlag.Default.NORMAL;
|
||||
TooltipFlag tooltipflag = flag ? tooltipflag$default.asCreative() : tooltipflag$default;
|
||||
List<Component> list = p_281769_.getTooltipLines(this.minecraft.player, tooltipflag);
|
||||
@@ -631,7 +_,7 @@
|
||||
int i = 1;
|
||||
|
||||
for(CreativeModeTab creativemodetab : CreativeModeTabs.m_257388_()) {
|
||||
- if (creativemodetab.m_257962_() != CreativeModeTab.Type.SEARCH && creativemodetab.m_257694_(p_281769_)) {
|
||||
+ if (!creativemodetab.hasSearchBar() && creativemodetab.m_257694_(p_281769_)) {
|
||||
list1.add(i++, creativemodetab.m_40786_().m_6881_().m_130940_(ChatFormatting.BLUE));
|
||||
for(CreativeModeTab creativemodetab : CreativeModeTabs.tabs()) {
|
||||
- if (creativemodetab.getType() != CreativeModeTab.Type.SEARCH && creativemodetab.contains(p_281769_)) {
|
||||
+ if (!creativemodetab.hasSearchBar() && creativemodetab.contains(p_281769_)) {
|
||||
list1.add(i++, creativemodetab.getDisplayName().copy().withStyle(ChatFormatting.BLUE));
|
||||
}
|
||||
}
|
||||
@@ -641,13 +_,13 @@
|
||||
}
|
||||
|
||||
protected void m_7286_(GuiGraphics p_282663_, float p_282504_, int p_282089_, int p_282249_) {
|
||||
- for(CreativeModeTab creativemodetab : CreativeModeTabs.m_257388_()) {
|
||||
protected void renderBg(GuiGraphics p_282663_, float p_282504_, int p_282089_, int p_282249_) {
|
||||
- for(CreativeModeTab creativemodetab : CreativeModeTabs.tabs()) {
|
||||
+ for(CreativeModeTab creativemodetab : currentPage.getVisibleTabs()) {
|
||||
if (creativemodetab != f_98507_) {
|
||||
this.m_280560_(p_282663_, creativemodetab);
|
||||
if (creativemodetab != selectedTab) {
|
||||
this.renderTabButton(p_282663_, creativemodetab);
|
||||
}
|
||||
}
|
||||
|
||||
- p_282663_.m_280218_(new ResourceLocation("textures/gui/container/creative_inventory/tab_" + f_98507_.m_40788_()), this.f_97735_, this.f_97736_, 0, 0, this.f_97726_, this.f_97727_);
|
||||
+ p_282663_.m_280218_(f_98507_.getBackgroundLocation(), this.f_97735_, this.f_97736_, 0, 0, this.f_97726_, this.f_97727_);
|
||||
this.f_98510_.m_88315_(p_282663_, p_282089_, p_282249_, p_282504_);
|
||||
int j = this.f_97735_ + 175;
|
||||
int k = this.f_97736_ + 18;
|
||||
- p_282663_.blit(new ResourceLocation("textures/gui/container/creative_inventory/tab_" + selectedTab.getBackgroundSuffix()), this.leftPos, this.topPos, 0, 0, this.imageWidth, this.imageHeight);
|
||||
+ p_282663_.blit(selectedTab.getBackgroundLocation(), this.leftPos, this.topPos, 0, 0, this.imageWidth, this.imageHeight);
|
||||
this.searchBox.render(p_282663_, p_282089_, p_282249_, p_282504_);
|
||||
int j = this.leftPos + 175;
|
||||
int k = this.topPos + 18;
|
||||
@@ -657,6 +_,7 @@
|
||||
p_282663_.m_292816_(resourcelocation, j, k + (int)((float)(i - k - 17) * this.f_98508_), 12, 15);
|
||||
p_282663_.blitSprite(resourcelocation, j, k + (int)((float)(i - k - 17) * this.scrollOffs), 12, 15);
|
||||
}
|
||||
|
||||
+ if (currentPage.getVisibleTabs().contains(f_98507_)) //Forge: only display tab selection when the selected tab is on the current page
|
||||
this.m_280560_(p_282663_, f_98507_);
|
||||
if (f_98507_.m_257962_() == CreativeModeTab.Type.INVENTORY) {
|
||||
InventoryScreen.m_274545_(p_282663_, this.f_97735_ + 73, this.f_97736_ + 6, this.f_97735_ + 105, this.f_97736_ + 49, 20, 0.0625F, (float)p_282089_, (float)p_282249_, this.f_96541_.f_91074_);
|
||||
+ if (currentPage.getVisibleTabs().contains(selectedTab)) //Forge: only display tab selection when the selected tab is on the current page
|
||||
this.renderTabButton(p_282663_, selectedTab);
|
||||
if (selectedTab.getType() == CreativeModeTab.Type.INVENTORY) {
|
||||
InventoryScreen.renderEntityInInventoryFollowsMouse(p_282663_, this.leftPos + 73, this.topPos + 6, this.leftPos + 105, this.topPos + 49, 20, 0.0625F, (float)p_282089_, (float)p_282249_, this.minecraft.player);
|
||||
@@ -665,7 +_,7 @@
|
||||
}
|
||||
|
||||
private int m_258094_(CreativeModeTab p_260136_) {
|
||||
- int i = p_260136_.m_257903_();
|
||||
private int getTabX(CreativeModeTab p_260136_) {
|
||||
- int i = p_260136_.column();
|
||||
+ int i = currentPage.getColumn(p_260136_);
|
||||
int j = 27;
|
||||
int k = 27 * i;
|
||||
if (p_260136_.m_6563_()) {
|
||||
if (p_260136_.isAlignedRight()) {
|
||||
@@ -677,7 +_,7 @@
|
||||
|
||||
private int m_257995_(CreativeModeTab p_260181_) {
|
||||
private int getTabY(CreativeModeTab p_260181_) {
|
||||
int i = 0;
|
||||
- if (p_260181_.m_258064_() == CreativeModeTab.Row.TOP) {
|
||||
- if (p_260181_.row() == CreativeModeTab.Row.TOP) {
|
||||
+ if (currentPage.isTop(p_260181_)) {
|
||||
i -= 32;
|
||||
} else {
|
||||
i += this.f_97727_;
|
||||
i += this.imageHeight;
|
||||
@@ -705,8 +_,8 @@
|
||||
|
||||
protected void m_280560_(GuiGraphics p_283590_, CreativeModeTab p_283489_) {
|
||||
boolean flag = p_283489_ == f_98507_;
|
||||
- boolean flag1 = p_283489_.m_258064_() == CreativeModeTab.Row.TOP;
|
||||
- int i = p_283489_.m_257903_();
|
||||
protected void renderTabButton(GuiGraphics p_283590_, CreativeModeTab p_283489_) {
|
||||
boolean flag = p_283489_ == selectedTab;
|
||||
- boolean flag1 = p_283489_.row() == CreativeModeTab.Row.TOP;
|
||||
- int i = p_283489_.column();
|
||||
+ boolean flag1 = currentPage.isTop(p_283489_);
|
||||
+ int i = currentPage.getColumn(p_283489_);
|
||||
int j = this.f_97735_ + this.m_258094_(p_283489_);
|
||||
int k = this.f_97736_ - (flag1 ? 28 : -(this.f_97727_ - 4));
|
||||
int j = this.leftPos + this.getTabX(p_283489_);
|
||||
int k = this.topPos - (flag1 ? 28 : -(this.imageHeight - 4));
|
||||
ResourceLocation[] aresourcelocation;
|
||||
@@ -716,6 +_,7 @@
|
||||
aresourcelocation = flag ? f_291557_ : f_291303_;
|
||||
aresourcelocation = flag ? SELECTED_BOTTOM_TABS : UNSELECTED_BOTTOM_TABS;
|
||||
}
|
||||
|
||||
+ com.mojang.blaze3d.systems.RenderSystem.enableBlend(); //Forge: Make sure blend is enabled else tabs show a white border.
|
||||
p_283590_.m_292816_(aresourcelocation[Mth.m_14045_(i, 0, aresourcelocation.length)], j, k, 26, 32);
|
||||
p_283590_.m_280168_().m_85836_();
|
||||
p_283590_.m_280168_().m_252880_(0.0F, 0.0F, 100.0F);
|
||||
p_283590_.blitSprite(aresourcelocation[Mth.clamp(i, 0, aresourcelocation.length)], j, k, 26, 32);
|
||||
p_283590_.pose().pushPose();
|
||||
p_283590_.pose().translate(0.0F, 0.0F, 100.0F);
|
||||
@@ -759,6 +_,14 @@
|
||||
|
||||
}
|
||||
@@ -265,23 +265,23 @@
|
||||
public CustomCreativeSlot(Container p_98633_, int p_98634_, int p_98635_, int p_98636_) {
|
||||
@@ -926,6 +_,22 @@
|
||||
|
||||
public boolean m_8010_(Player p_98665_) {
|
||||
return this.f_98655_.m_8010_(p_98665_);
|
||||
public boolean mayPickup(Player p_98665_) {
|
||||
return this.target.mayPickup(p_98665_);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getSlotIndex() {
|
||||
+ return this.f_98655_.getSlotIndex();
|
||||
+ return this.target.getSlotIndex();
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean isSameInventory(Slot other) {
|
||||
+ return this.f_98655_.isSameInventory(other);
|
||||
+ return this.target.isSameInventory(other);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public Slot setBackground(ResourceLocation atlas, ResourceLocation sprite) {
|
||||
+ this.f_98655_.setBackground(atlas, sprite);
|
||||
+ this.target.setBackground(atlas, sprite);
|
||||
+ return this;
|
||||
}
|
||||
}
|
||||
|
||||
+11
-11
@@ -1,7 +1,7 @@
|
||||
--- a/net/minecraft/client/gui/screens/inventory/EffectRenderingInventoryScreen.java
|
||||
+++ b/net/minecraft/client/gui/screens/inventory/EffectRenderingInventoryScreen.java
|
||||
@@ -45,12 +_,17 @@
|
||||
Collection<MobEffectInstance> collection = this.f_96541_.f_91074_.m_21220_();
|
||||
Collection<MobEffectInstance> collection = this.minecraft.player.getActiveEffects();
|
||||
if (!collection.isEmpty() && j >= 32) {
|
||||
boolean flag = j >= 120;
|
||||
+ var event = net.minecraftforge.client.ForgeHooksClient.onScreenPotionSize(this, j, !flag, i);
|
||||
@@ -16,11 +16,11 @@
|
||||
- Iterable<MobEffectInstance> iterable = Ordering.natural().sortedCopy(collection);
|
||||
+
|
||||
+ Iterable<MobEffectInstance> iterable = collection.stream().filter(net.minecraftforge.client.ForgeHooksClient::shouldRenderEffect).sorted().collect(java.util.stream.Collectors.toList());
|
||||
this.m_280172_(p_281945_, i, k, iterable, flag);
|
||||
this.m_280301_(p_281945_, i, k, iterable, flag);
|
||||
this.renderBackgrounds(p_281945_, i, k, iterable, flag);
|
||||
this.renderIcons(p_281945_, i, k, iterable, flag);
|
||||
if (flag) {
|
||||
@@ -96,6 +_,11 @@
|
||||
int i = this.f_97736_;
|
||||
int i = this.topPos;
|
||||
|
||||
for(MobEffectInstance mobeffectinstance : p_282642_) {
|
||||
+ var renderer = net.minecraftforge.client.extensions.common.IClientMobEffectExtensions.of(mobeffectinstance);
|
||||
@@ -28,11 +28,11 @@
|
||||
+ i += p_282291_;
|
||||
+ continue;
|
||||
+ }
|
||||
MobEffect mobeffect = mobeffectinstance.m_19544_();
|
||||
TextureAtlasSprite textureatlassprite = mobeffecttexturemanager.m_118732_(mobeffect);
|
||||
p_282745_.m_280159_(p_282521_ + (p_281536_ ? 6 : 7), i + 7, 0, 18, 18, textureatlassprite);
|
||||
MobEffect mobeffect = mobeffectinstance.getEffect();
|
||||
TextureAtlasSprite textureatlassprite = mobeffecttexturemanager.get(mobeffect);
|
||||
p_282745_.blit(p_282521_ + (p_281536_ ? 6 : 7), i + 7, 0, 18, 18, textureatlassprite);
|
||||
@@ -108,6 +_,11 @@
|
||||
int i = this.f_97736_;
|
||||
int i = this.topPos;
|
||||
|
||||
for(MobEffectInstance mobeffectinstance : p_281986_) {
|
||||
+ var renderer = net.minecraftforge.client.extensions.common.IClientMobEffectExtensions.of(mobeffectinstance);
|
||||
@@ -40,6 +40,6 @@
|
||||
+ i += p_282057_;
|
||||
+ continue;
|
||||
+ }
|
||||
Component component = this.m_194000_(mobeffectinstance);
|
||||
p_281462_.m_280430_(this.f_96547_, component, p_283484_ + 10 + 18, i + 6, 16777215);
|
||||
Component component1 = MobEffectUtil.m_267641_(mobeffectinstance, 1.0F);
|
||||
Component component = this.getEffectName(mobeffectinstance);
|
||||
p_281462_.drawString(this.font, component, p_283484_ + 10 + 18, i + 6, 16777215);
|
||||
Component component1 = MobEffectUtil.formatDuration(mobeffectinstance, 1.0F);
|
||||
+18
-18
@@ -1,28 +1,28 @@
|
||||
--- a/net/minecraft/client/gui/screens/inventory/EnchantmentScreen.java
|
||||
+++ b/net/minecraft/client/gui/screens/inventory/EnchantmentScreen.java
|
||||
@@ -93,7 +_,7 @@
|
||||
int l1 = 86 - this.f_96547_.m_92895_(s);
|
||||
FormattedText formattedtext = EnchantmentNames.m_98734_().m_98737_(this.f_96547_, l1);
|
||||
int l1 = 86 - this.font.width(s);
|
||||
FormattedText formattedtext = EnchantmentNames.getInstance().getRandomName(this.font, l1);
|
||||
int i2 = 6839882;
|
||||
- if ((k < l + 1 || this.f_96541_.f_91074_.f_36078_ < k1) && !this.f_96541_.f_91074_.m_150110_().f_35937_) {
|
||||
+ if (((k < l + 1 || this.f_96541_.f_91074_.f_36078_ < k1) && !this.f_96541_.f_91074_.m_150110_().f_35937_) || this.f_97732_.f_39447_[l] == -1) { // Forge: render buttons as disabled when enchantable but enchantability not met on lower levels
|
||||
p_282430_.m_292816_(f_291504_, i1, j + 14 + 19 * l, 108, 19);
|
||||
p_282430_.m_292816_(f_291094_[l], i1 + 1, j + 15 + 19 * l, 16, 16);
|
||||
p_282430_.m_280554_(this.f_96547_, formattedtext, j1, j + 16 + 19 * l, l1, (i2 & 16711422) >> 1);
|
||||
- if ((k < l + 1 || this.minecraft.player.experienceLevel < k1) && !this.minecraft.player.getAbilities().instabuild) {
|
||||
+ if (((k < l + 1 || this.minecraft.player.experienceLevel < k1) && !this.minecraft.player.getAbilities().instabuild) || this.menu.enchantClue[l] == -1) { // Forge: render buttons as disabled when enchantable but enchantability not met on lower levels
|
||||
p_282430_.blitSprite(ENCHANTMENT_SLOT_DISABLED_SPRITE, i1, j + 14 + 19 * l, 108, 19);
|
||||
p_282430_.blitSprite(DISABLED_LEVEL_SPRITES[l], i1 + 1, j + 15 + 19 * l, 16, 16);
|
||||
p_282430_.drawWordWrap(this.font, formattedtext, j1, j + 16 + 19 * l, l1, (i2 & 16711422) >> 1);
|
||||
@@ -154,10 +_,13 @@
|
||||
Enchantment enchantment = Enchantment.m_44697_((this.f_97732_).f_39447_[j]);
|
||||
int l = (this.f_97732_).f_39448_[j];
|
||||
Enchantment enchantment = Enchantment.byId((this.menu).enchantClue[j]);
|
||||
int l = (this.menu).levelClue[j];
|
||||
int i1 = j + 1;
|
||||
- if (this.m_6774_(60, 14 + 19 * j, 108, 17, (double)p_282491_, (double)p_281953_) && k > 0 && l >= 0 && enchantment != null) {
|
||||
+ if (this.m_6774_(60, 14 + 19 * j, 108, 17, (double)p_282491_, (double)p_281953_) && k > 0) {
|
||||
- if (this.isHovering(60, 14 + 19 * j, 108, 17, (double)p_282491_, (double)p_281953_) && k > 0 && l >= 0 && enchantment != null) {
|
||||
+ if (this.isHovering(60, 14 + 19 * j, 108, 17, (double)p_282491_, (double)p_281953_) && k > 0) {
|
||||
List<Component> list = Lists.newArrayList();
|
||||
- list.add(Component.m_237110_("container.enchant.clue", enchantment.m_44700_(l)).m_130940_(ChatFormatting.WHITE));
|
||||
- list.add(Component.translatable("container.enchant.clue", enchantment.getFullname(l)).withStyle(ChatFormatting.WHITE));
|
||||
- if (!flag) {
|
||||
+ list.add((Component.m_237110_("container.enchant.clue", enchantment == null ? "" : enchantment.m_44700_(l))).m_130940_(ChatFormatting.WHITE));
|
||||
+ list.add((Component.translatable("container.enchant.clue", enchantment == null ? "" : enchantment.getFullname(l))).withStyle(ChatFormatting.WHITE));
|
||||
+ if (enchantment == null) {
|
||||
+ list.add(Component.m_237113_(""));
|
||||
+ list.add(Component.m_237115_("forge.container.enchant.limitedEnchantability").m_130940_(ChatFormatting.RED));
|
||||
+ list.add(Component.literal(""));
|
||||
+ list.add(Component.translatable("forge.container.enchant.limitedEnchantability").withStyle(ChatFormatting.RED));
|
||||
+ } else if (!flag) {
|
||||
list.add(CommonComponents.f_237098_);
|
||||
if (this.f_96541_.f_91074_.f_36078_ < k) {
|
||||
list.add(Component.m_237110_("container.enchant.level.requirement", (this.f_97732_).f_39446_[j]).m_130940_(ChatFormatting.RED));
|
||||
list.add(CommonComponents.EMPTY);
|
||||
if (this.minecraft.player.experienceLevel < k) {
|
||||
list.add(Component.translatable("container.enchant.level.requirement", (this.menu).costs[j]).withStyle(ChatFormatting.RED));
|
||||
+6
-6
@@ -1,11 +1,11 @@
|
||||
--- a/net/minecraft/client/gui/screens/inventory/HangingSignEditScreen.java
|
||||
+++ b/net/minecraft/client/gui/screens/inventory/HangingSignEditScreen.java
|
||||
@@ -15,7 +_,7 @@
|
||||
private static final Vector3f f_243728_ = new Vector3f(1.0F, 1.0F, 1.0F);
|
||||
private static final int f_244604_ = 16;
|
||||
private static final int f_244207_ = 16;
|
||||
- private final ResourceLocation f_243720_ = new ResourceLocation("textures/gui/hanging_signs/" + this.f_244069_.f_61839_() + ".png");
|
||||
+ private final ResourceLocation f_243720_ = new ResourceLocation(this.f_244069_.f_61839_() + ".png").m_246208_("textures/gui/hanging_signs/");
|
||||
private static final Vector3f TEXT_SCALE = new Vector3f(1.0F, 1.0F, 1.0F);
|
||||
private static final int TEXTURE_WIDTH = 16;
|
||||
private static final int TEXTURE_HEIGHT = 16;
|
||||
- private final ResourceLocation texture = new ResourceLocation("textures/gui/hanging_signs/" + this.woodType.name() + ".png");
|
||||
+ private final ResourceLocation texture = new ResourceLocation(this.woodType.name() + ".png").withPrefix("textures/gui/hanging_signs/");
|
||||
|
||||
public HangingSignEditScreen(SignBlockEntity p_278017_, boolean p_277942_, boolean p_277778_) {
|
||||
super(p_278017_, p_277942_, p_277778_, Component.m_237115_("hanging_sign.edit"));
|
||||
super(p_278017_, p_277942_, p_277778_, Component.translatable("hanging_sign.edit"));
|
||||
+11
-11
@@ -1,16 +1,16 @@
|
||||
--- a/net/minecraft/client/gui/screens/inventory/MerchantScreen.java
|
||||
+++ b/net/minecraft/client/gui/screens/inventory/MerchantScreen.java
|
||||
@@ -236,7 +_,12 @@
|
||||
p_281357_.m_280370_(this.f_96547_, p_283466_, p_282403_, p_283601_);
|
||||
p_281357_.renderItemDecorations(this.font, p_283466_, p_282403_, p_283601_);
|
||||
} else {
|
||||
p_281357_.m_280302_(this.f_96547_, p_282046_, p_282403_, p_283601_, p_282046_.m_41613_() == 1 ? "1" : null);
|
||||
- p_281357_.m_280302_(this.f_96547_, p_283466_, p_282403_ + 14, p_283601_, p_283466_.m_41613_() == 1 ? "1" : null);
|
||||
p_281357_.renderItemDecorations(this.font, p_282046_, p_282403_, p_283601_, p_282046_.getCount() == 1 ? "1" : null);
|
||||
- p_281357_.renderItemDecorations(this.font, p_283466_, p_282403_ + 14, p_283601_, p_283466_.getCount() == 1 ? "1" : null);
|
||||
+ // Forge: fixes Forge-8806, code for count rendering taken from GuiGraphics#renderGuiItemDecorations
|
||||
+ p_281357_.m_280168_().m_85836_();
|
||||
+ p_281357_.m_280168_().m_252880_(0.0F, 0.0F, 200.0F);
|
||||
+ String count = p_283466_.m_41613_() == 1 ? "1" : String.valueOf(p_283466_.m_41613_());
|
||||
+ f_96547_.m_272078_(count, (float) (p_282403_ + 14) + 19 - 2 - f_96547_.m_92895_(count), (float)p_283601_ + 6 + 3, 0xFFFFFF, true, p_281357_.m_280168_().m_85850_().m_252922_(), p_281357_.m_280091_(), net.minecraft.client.gui.Font.DisplayMode.NORMAL, 0, 15728880, false);
|
||||
+ p_281357_.m_280168_().m_85849_();
|
||||
p_281357_.m_280168_().m_85836_();
|
||||
p_281357_.m_280168_().m_252880_(0.0F, 0.0F, 300.0F);
|
||||
p_281357_.m_295520_(f_291695_, p_282403_ + 7, p_283601_ + 12, 0, 9, 2);
|
||||
+ p_281357_.pose().pushPose();
|
||||
+ p_281357_.pose().translate(0.0F, 0.0F, 200.0F);
|
||||
+ String count = p_283466_.getCount() == 1 ? "1" : String.valueOf(p_283466_.getCount());
|
||||
+ font.drawInBatch(count, (float) (p_282403_ + 14) + 19 - 2 - font.width(count), (float)p_283601_ + 6 + 3, 0xFFFFFF, true, p_281357_.pose().last().pose(), p_281357_.bufferSource(), net.minecraft.client.gui.Font.DisplayMode.NORMAL, 0, 15728880, false);
|
||||
+ p_281357_.pose().popPose();
|
||||
p_281357_.pose().pushPose();
|
||||
p_281357_.pose().translate(0.0F, 0.0F, 300.0F);
|
||||
p_281357_.blitSprite(DISCOUNT_STRIKETHRUOGH_SPRITE, p_282403_ + 7, p_283601_ + 12, 0, 9, 2);
|
||||
+19
-19
@@ -1,10 +1,10 @@
|
||||
--- a/net/minecraft/client/gui/screens/inventory/tooltip/TooltipRenderUtil.java
|
||||
+++ b/net/minecraft/client/gui/screens/inventory/tooltip/TooltipRenderUtil.java
|
||||
@@ -17,16 +_,22 @@
|
||||
private static final int f_262743_ = 1344798847;
|
||||
private static final int BORDER_COLOR_BOTTOM = 1344798847;
|
||||
|
||||
public static void m_280205_(GuiGraphics p_282666_, int p_281901_, int p_281846_, int p_281559_, int p_283336_, int p_283422_) {
|
||||
+ renderTooltipBackground(p_282666_, p_281901_, p_281846_, p_281559_, p_283336_, p_283422_, f_262744_, f_262744_, f_262725_, f_262743_);
|
||||
public static void renderTooltipBackground(GuiGraphics p_282666_, int p_281901_, int p_281846_, int p_281559_, int p_283336_, int p_283422_) {
|
||||
+ renderTooltipBackground(p_282666_, p_281901_, p_281846_, p_281559_, p_283336_, p_283422_, BACKGROUND_COLOR, BACKGROUND_COLOR, BORDER_COLOR_TOP, BORDER_COLOR_BOTTOM);
|
||||
+ }
|
||||
+
|
||||
+ // Forge: Allow specifying colors for the inner border gradient and a gradient instead of a single color for the background and outer border
|
||||
@@ -14,36 +14,36 @@
|
||||
int j = p_281846_ - 3;
|
||||
int k = p_281559_ + 3 + 3;
|
||||
int l = p_283336_ + 3 + 3;
|
||||
- m_280217_(p_282666_, i, j - 1, k, p_283422_, -267386864);
|
||||
- m_280217_(p_282666_, i, j + l, k, p_283422_, -267386864);
|
||||
- m_280538_(p_282666_, i, j, k, l, p_283422_, -267386864);
|
||||
- m_280387_(p_282666_, i - 1, j, l, p_283422_, -267386864);
|
||||
- m_280387_(p_282666_, i + k, j, l, p_283422_, -267386864);
|
||||
- m_280115_(p_282666_, i, j + 1, k, l, p_283422_, 1347420415, 1344798847);
|
||||
+ m_280217_(p_282666_, i, j - 1, k, p_283422_, backgroundTop);
|
||||
+ m_280217_(p_282666_, i, j + l, k, p_283422_, backgroundBottom);
|
||||
- renderHorizontalLine(p_282666_, i, j - 1, k, p_283422_, -267386864);
|
||||
- renderHorizontalLine(p_282666_, i, j + l, k, p_283422_, -267386864);
|
||||
- renderRectangle(p_282666_, i, j, k, l, p_283422_, -267386864);
|
||||
- renderVerticalLine(p_282666_, i - 1, j, l, p_283422_, -267386864);
|
||||
- renderVerticalLine(p_282666_, i + k, j, l, p_283422_, -267386864);
|
||||
- renderFrameGradient(p_282666_, i, j + 1, k, l, p_283422_, 1347420415, 1344798847);
|
||||
+ renderHorizontalLine(p_282666_, i, j - 1, k, p_283422_, backgroundTop);
|
||||
+ renderHorizontalLine(p_282666_, i, j + l, k, p_283422_, backgroundBottom);
|
||||
+ renderRectangle(p_282666_, i, j, k, l, p_283422_, backgroundTop, backgroundBottom);
|
||||
+ m_280556_(p_282666_, i - 1, j, l, p_283422_, backgroundTop, backgroundBottom);
|
||||
+ m_280556_(p_282666_, i + k, j, l, p_283422_, backgroundTop, backgroundBottom);
|
||||
+ m_280115_(p_282666_, i, j + 1, k, l, p_283422_, borderTop, borderBottom);
|
||||
+ renderVerticalLineGradient(p_282666_, i - 1, j, l, p_283422_, backgroundTop, backgroundBottom);
|
||||
+ renderVerticalLineGradient(p_282666_, i + k, j, l, p_283422_, backgroundTop, backgroundBottom);
|
||||
+ renderFrameGradient(p_282666_, i, j + 1, k, l, p_283422_, borderTop, borderBottom);
|
||||
}
|
||||
|
||||
private static void m_280115_(GuiGraphics p_282000_, int p_282055_, int p_281580_, int p_283284_, int p_282599_, int p_283432_, int p_282907_, int p_283153_) {
|
||||
private static void renderFrameGradient(GuiGraphics p_282000_, int p_282055_, int p_281580_, int p_283284_, int p_282599_, int p_283432_, int p_282907_, int p_283153_) {
|
||||
@@ -48,7 +_,16 @@
|
||||
p_282981_.m_280046_(p_282028_, p_282141_, p_282028_ + p_281771_, p_282141_ + 1, p_282734_, p_281979_);
|
||||
p_282981_.fill(p_282028_, p_282141_, p_282028_ + p_281771_, p_282141_ + 1, p_282734_, p_281979_);
|
||||
}
|
||||
|
||||
+ /**
|
||||
+ * @deprecated Forge: Use gradient overload instead
|
||||
+ */
|
||||
+ @Deprecated
|
||||
private static void m_280538_(GuiGraphics p_281392_, int p_282294_, int p_283353_, int p_282640_, int p_281964_, int p_283211_, int p_282349_) {
|
||||
- p_281392_.m_280046_(p_282294_, p_283353_, p_282294_ + p_282640_, p_283353_ + p_281964_, p_283211_, p_282349_);
|
||||
private static void renderRectangle(GuiGraphics p_281392_, int p_282294_, int p_283353_, int p_282640_, int p_281964_, int p_283211_, int p_282349_) {
|
||||
- p_281392_.fill(p_282294_, p_283353_, p_282294_ + p_282640_, p_283353_ + p_281964_, p_283211_, p_282349_);
|
||||
+ renderRectangle(p_281392_, p_282294_, p_283353_, p_282640_, p_281964_, p_283211_, p_282349_, p_282349_);
|
||||
+ }
|
||||
+
|
||||
+ // Forge: Allow specifying a gradient instead of a single color for the background
|
||||
+ private static void renderRectangle(GuiGraphics p_281392_, int p_282294_, int p_283353_, int p_282640_, int p_281964_, int p_283211_, int p_282349_, int colorTo) {
|
||||
+ p_281392_.m_280120_(p_282294_, p_283353_, p_282294_ + p_282640_, p_283353_ + p_281964_, p_283211_, p_282349_, colorTo);
|
||||
+ p_281392_.fillGradient(p_282294_, p_283353_, p_282294_ + p_282640_, p_283353_ + p_281964_, p_283211_, p_282349_, colorTo);
|
||||
}
|
||||
}
|
||||
+4
-4
@@ -5,10 +5,10 @@
|
||||
}
|
||||
|
||||
+ @Override
|
||||
+ public void m_7379_() {
|
||||
+ this.f_96541_.m_91152_(this.f_99676_);
|
||||
+ public void onClose() {
|
||||
+ this.minecraft.setScreen(this.lastScreen);
|
||||
+ }
|
||||
+
|
||||
public ServerStatusPinger m_99731_() {
|
||||
return this.f_99675_;
|
||||
public ServerStatusPinger getPinger() {
|
||||
return this.pinger;
|
||||
}
|
||||
+4
-4
@@ -1,11 +1,11 @@
|
||||
--- a/net/minecraft/client/gui/screens/multiplayer/ServerSelectionList.java
|
||||
+++ b/net/minecraft/client/gui/screens/multiplayer/ServerSelectionList.java
|
||||
@@ -346,6 +_,8 @@
|
||||
this.f_99855_.m_99707_(list1);
|
||||
this.screen.setToolTip(list1);
|
||||
}
|
||||
|
||||
+ net.minecraftforge.client.ForgeHooksClient.drawForgePingInfo(this.f_99855_, f_99857_, p_281406_, p_281363_, p_282921_, p_283596_, l, i1);
|
||||
+ net.minecraftforge.client.ForgeHooksClient.drawForgePingInfo(this.screen, serverData, p_281406_, p_281363_, p_282921_, p_283596_, l, i1);
|
||||
+
|
||||
if (this.f_99856_.f_91066_.m_231828_().m_231551_() || p_282999_) {
|
||||
p_281406_.m_280509_(p_281363_, p_282921_, p_281363_ + 32, p_282921_ + 32, -1601138544);
|
||||
if (this.minecraft.options.touchscreen().get() || p_282999_) {
|
||||
p_281406_.fill(p_281363_, p_282921_, p_281363_ + 32, p_282921_ + 32, -1601138544);
|
||||
int j1 = p_283567_ - p_281363_;
|
||||
+5
-5
@@ -1,9 +1,9 @@
|
||||
--- a/net/minecraft/client/gui/screens/packs/PackSelectionModel.java
|
||||
+++ b/net/minecraft/client/gui/screens/packs/PackSelectionModel.java
|
||||
@@ -110,6 +_,8 @@
|
||||
boolean m_7802_();
|
||||
boolean canMoveUp();
|
||||
|
||||
boolean m_7803_();
|
||||
boolean canMoveDown();
|
||||
+
|
||||
+ default boolean notHidden() { return true; }
|
||||
}
|
||||
@@ -11,13 +11,13 @@
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@@ -198,6 +_,11 @@
|
||||
|
||||
public void m_7845_() {
|
||||
this.m_99938_(1);
|
||||
public void moveDown() {
|
||||
this.move(1);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean notHidden() {
|
||||
+ return !f_99933_.isHidden();
|
||||
+ return !pack.isHidden();
|
||||
}
|
||||
}
|
||||
|
||||
+9
-9
@@ -1,16 +1,16 @@
|
||||
--- a/net/minecraft/client/gui/screens/packs/PackSelectionScreen.java
|
||||
+++ b/net/minecraft/client/gui/screens/packs/PackSelectionScreen.java
|
||||
@@ -138,10 +_,10 @@
|
||||
TransferableSelectionList.PackEntry transferableselectionlist$packentry = p_100014_.m_93511_();
|
||||
String s = transferableselectionlist$packentry == null ? "" : transferableselectionlist$packentry.m_264411_();
|
||||
p_100014_.m_6987_((TransferableSelectionList.PackEntry)null);
|
||||
TransferableSelectionList.PackEntry transferableselectionlist$packentry = p_100014_.getSelected();
|
||||
String s = transferableselectionlist$packentry == null ? "" : transferableselectionlist$packentry.getPackId();
|
||||
p_100014_.setSelected((TransferableSelectionList.PackEntry)null);
|
||||
- p_100015_.forEach((p_280875_) -> {
|
||||
- TransferableSelectionList.PackEntry transferableselectionlist$packentry1 = new TransferableSelectionList.PackEntry(this.f_96541_, p_100014_, p_280875_);
|
||||
- TransferableSelectionList.PackEntry transferableselectionlist$packentry1 = new TransferableSelectionList.PackEntry(this.minecraft, p_100014_, p_280875_);
|
||||
+ p_100015_.filter(PackSelectionModel.Entry::notHidden).forEach((p_264692_) -> {
|
||||
+ TransferableSelectionList.PackEntry transferableselectionlist$packentry1 = new TransferableSelectionList.PackEntry(this.f_96541_, p_100014_, p_264692_);
|
||||
p_100014_.m_6702_().add(transferableselectionlist$packentry1);
|
||||
- if (p_280875_.m_264249_().equals(s)) {
|
||||
+ if (p_264692_.m_264249_().equals(s)) {
|
||||
p_100014_.m_6987_(transferableselectionlist$packentry1);
|
||||
+ TransferableSelectionList.PackEntry transferableselectionlist$packentry1 = new TransferableSelectionList.PackEntry(this.minecraft, p_100014_, p_264692_);
|
||||
p_100014_.children().add(transferableselectionlist$packentry1);
|
||||
- if (p_280875_.getId().equals(s)) {
|
||||
+ if (p_264692_.getId().equals(s)) {
|
||||
p_100014_.setSelected(transferableselectionlist$packentry1);
|
||||
}
|
||||
|
||||
+8
-8
@@ -1,20 +1,20 @@
|
||||
--- a/net/minecraft/client/gui/screens/recipebook/RecipeBookComponent.java
|
||||
+++ b/net/minecraft/client/gui/screens/recipebook/RecipeBookComponent.java
|
||||
@@ -107,7 +_,7 @@
|
||||
this.m_5674_();
|
||||
this.f_100279_.clear();
|
||||
this.initFilterButtonTextures();
|
||||
this.tabButtons.clear();
|
||||
|
||||
- for(RecipeBookCategories recipebookcategories : RecipeBookCategories.m_92269_(this.f_100271_.m_5867_())) {
|
||||
+ for(RecipeBookCategories recipebookcategories : this.f_100271_.getRecipeBookCategories()) {
|
||||
this.f_100279_.add(new RecipeBookTabButton(recipebookcategories));
|
||||
- for(RecipeBookCategories recipebookcategories : RecipeBookCategories.getCategories(this.menu.getRecipeBookType())) {
|
||||
+ for(RecipeBookCategories recipebookcategories : this.menu.getRecipeBookCategories()) {
|
||||
this.tabButtons.add(new RecipeBookTabButton(recipebookcategories));
|
||||
}
|
||||
|
||||
@@ -296,7 +_,7 @@
|
||||
}
|
||||
|
||||
if (itemstack != null && this.f_100272_.f_91080_ != null) {
|
||||
- p_282776_.m_280666_(this.f_100272_.f_91062_, Screen.m_280152_(this.f_100272_, itemstack), p_282948_, p_283050_);
|
||||
+ p_282776_.renderComponentTooltip(this.f_100272_.f_91062_, Screen.m_280152_(this.f_100272_, itemstack), p_282948_, p_283050_, itemstack);
|
||||
if (itemstack != null && this.minecraft.screen != null) {
|
||||
- p_282776_.renderComponentTooltip(this.minecraft.font, Screen.getTooltipFromItem(this.minecraft, itemstack), p_282948_, p_283050_);
|
||||
+ p_282776_.renderComponentTooltip(this.minecraft.font, Screen.getTooltipFromItem(this.minecraft, itemstack), p_282948_, p_283050_, itemstack);
|
||||
}
|
||||
|
||||
}
|
||||
+14
-14
@@ -1,27 +1,27 @@
|
||||
--- a/net/minecraft/client/gui/screens/worldselection/CreateWorldScreen.java
|
||||
+++ b/net/minecraft/client/gui/screens/worldselection/CreateWorldScreen.java
|
||||
@@ -121,6 +_,7 @@
|
||||
public static void m_232896_(Minecraft p_232897_, @Nullable Screen p_232898_) {
|
||||
m_232899_(p_232897_, f_232866_);
|
||||
PackRepository packrepository = new PackRepository(new ServerPacksSource(p_232897_.m_294312_()));
|
||||
public static void openFresh(Minecraft p_232897_, @Nullable Screen p_232898_) {
|
||||
queueLoadScreen(p_232897_, PREPARING_WORLD_DATA);
|
||||
PackRepository packrepository = new PackRepository(new ServerPacksSource(p_232897_.directoryValidator()));
|
||||
+ net.minecraftforge.fml.ModLoader.get().postEvent(new net.minecraftforge.event.AddPackFindersEvent(net.minecraft.server.packs.PackType.SERVER_DATA, packrepository::addPackFinder));
|
||||
WorldLoader.InitConfig worldloader$initconfig = m_245574_(packrepository, WorldDataConfiguration.f_244649_);
|
||||
CompletableFuture<WorldCreationContext> completablefuture = WorldLoader.m_214362_(worldloader$initconfig, (p_247792_) -> {
|
||||
return new WorldLoader.DataLoadOutput<>(new CreateWorldScreen.DataPackReloadCookie(new WorldGenSettings(WorldOptions.m_247394_(), WorldPresets.m_246552_(p_247792_.f_244104_())), p_247792_.f_244127_()), p_247792_.f_243759_());
|
||||
WorldLoader.InitConfig worldloader$initconfig = createDefaultLoadConfig(packrepository, WorldDataConfiguration.DEFAULT);
|
||||
CompletableFuture<WorldCreationContext> completablefuture = WorldLoader.load(worldloader$initconfig, (p_247792_) -> {
|
||||
return new WorldLoader.DataLoadOutput<>(new CreateWorldScreen.DataPackReloadCookie(new WorldGenSettings(WorldOptions.defaultWithRandomSeed(), WorldPresets.createNormalWorldDimensions(p_247792_.datapackWorldgen())), p_247792_.dataConfiguration()), p_247792_.datapackDimensions());
|
||||
@@ -364,7 +_,7 @@
|
||||
if (p_269627_) {
|
||||
p_270552_.accept(this.f_267389_.m_267573_().f_243842_());
|
||||
p_270552_.accept(this.uiState.getSettings().dataConfiguration());
|
||||
} else {
|
||||
- p_270552_.accept(WorldDataConfiguration.f_244649_);
|
||||
+ p_270552_.accept(new WorldDataConfiguration(new DataPackConfig(ImmutableList.of("vanilla"), ImmutableList.of()), FeatureFlags.f_244332_)); // FORGE: Revert to *actual* vanilla data
|
||||
- p_270552_.accept(WorldDataConfiguration.DEFAULT);
|
||||
+ p_270552_.accept(new WorldDataConfiguration(new DataPackConfig(ImmutableList.of("vanilla"), ImmutableList.of()), FeatureFlags.DEFAULT_FLAGS)); // FORGE: Revert to *actual* vanilla data
|
||||
}
|
||||
|
||||
}, Component.m_237115_("dataPack.validation.failed"), CommonComponents.f_237098_, Component.m_237115_("dataPack.validation.back"), Component.m_237115_("dataPack.validation.reset")));
|
||||
}, Component.translatable("dataPack.validation.failed"), CommonComponents.EMPTY, Component.translatable("dataPack.validation.back"), Component.translatable("dataPack.validation.reset")));
|
||||
@@ -478,6 +_,7 @@
|
||||
if (path != null) {
|
||||
if (this.f_100832_ == null) {
|
||||
this.f_100832_ = ServerPacksSource.m_245786_(path, this.f_291518_);
|
||||
+ net.minecraftforge.resource.ResourcePackLoader.loadResourcePacks(this.f_100832_, net.minecraftforge.server.ServerLifecycleHooks::buildPackFinder);
|
||||
this.f_100832_.m_10506_();
|
||||
if (this.tempDataPackRepository == null) {
|
||||
this.tempDataPackRepository = ServerPacksSource.createPackRepository(path, this.packValidator);
|
||||
+ net.minecraftforge.resource.ResourcePackLoader.loadResourcePacks(this.tempDataPackRepository, net.minecraftforge.server.ServerLifecycleHooks::buildPackFinder);
|
||||
this.tempDataPackRepository.reload();
|
||||
}
|
||||
|
||||
+3
-3
@@ -8,6 +8,6 @@
|
||||
+ * @deprecated Forge: Use {@link net.minecraftforge.client.PresetEditorManager#get(ResourceKey)} instead.
|
||||
+ */
|
||||
+ @Deprecated
|
||||
Map<Optional<ResourceKey<WorldPreset>>, PresetEditor> f_232950_ = Map.of(Optional.of(WorldPresets.f_226438_), (p_232974_, p_232975_) -> {
|
||||
ChunkGenerator chunkgenerator = p_232975_.f_243796_().m_246737_();
|
||||
RegistryAccess registryaccess = p_232975_.m_246480_();
|
||||
Map<Optional<ResourceKey<WorldPreset>>, PresetEditor> EDITORS = Map.of(Optional.of(WorldPresets.FLAT), (p_232974_, p_232975_) -> {
|
||||
ChunkGenerator chunkgenerator = p_232975_.selectedDimensions().overworld();
|
||||
RegistryAccess registryaccess = p_232975_.worldgenLoadContext();
|
||||
+4
-4
@@ -1,13 +1,13 @@
|
||||
--- a/net/minecraft/client/gui/screens/worldselection/WorldCreationContext.java
|
||||
+++ b/net/minecraft/client/gui/screens/worldselection/WorldCreationContext.java
|
||||
@@ -38,6 +_,10 @@
|
||||
return new WorldCreationContext(this.f_244272_, this.f_244375_, p_250676_.apply(this.m_246480_(), this.f_243796_), this.f_243708_, this.f_232990_, this.f_243842_);
|
||||
return new WorldCreationContext(this.options, this.datapackDimensions, p_250676_.apply(this.worldgenLoadContext(), this.selectedDimensions), this.worldgenRegistries, this.dataPackResources, this.dataConfiguration);
|
||||
}
|
||||
|
||||
+ public WorldCreationContext withDataConfiguration(WorldDataConfiguration dataConfiguration) {
|
||||
+ return new WorldCreationContext(this.f_244272_, this.f_244375_, this.f_243796_, this.f_243708_, this.f_232990_, dataConfiguration);
|
||||
+ return new WorldCreationContext(this.options, this.datapackDimensions, this.selectedDimensions, this.worldgenRegistries, this.dataPackResources, dataConfiguration);
|
||||
+ }
|
||||
+
|
||||
public RegistryAccess.Frozen m_246480_() {
|
||||
return this.f_243708_.m_247579_();
|
||||
public RegistryAccess.Frozen worldgenLoadContext() {
|
||||
return this.worldgenRegistries.compositeAccess();
|
||||
}
|
||||
+5
-5
@@ -2,10 +2,10 @@
|
||||
+++ b/net/minecraft/client/gui/screens/worldselection/WorldCreationUiState.java
|
||||
@@ -226,7 +_,7 @@
|
||||
@Nullable
|
||||
public PresetEditor m_267744_() {
|
||||
Holder<WorldPreset> holder = this.m_267828_().f_267398_();
|
||||
- return holder != null ? PresetEditor.f_232950_.get(holder.m_203543_()) : null;
|
||||
+ return holder != null ? holder.m_203543_().map(net.minecraftforge.client.PresetEditorManager::get).orElse(null) : null; // FORGE: redirect lookup to expanded map
|
||||
public PresetEditor getPresetEditor() {
|
||||
Holder<WorldPreset> holder = this.getWorldType().preset();
|
||||
- return holder != null ? PresetEditor.EDITORS.get(holder.unwrapKey()) : null;
|
||||
+ return holder != null ? holder.unwrapKey().map(net.minecraftforge.client.PresetEditorManager::get).orElse(null) : null; // FORGE: redirect lookup to expanded map
|
||||
}
|
||||
|
||||
public List<WorldCreationUiState.WorldTypeEntry> m_267815_() {
|
||||
public List<WorldCreationUiState.WorldTypeEntry> getNormalPresetList() {
|
||||
+13
-13
@@ -3,36 +3,36 @@
|
||||
@@ -165,13 +_,23 @@
|
||||
}
|
||||
|
||||
private void m_233145_(Screen p_233146_, String p_233147_, boolean p_233148_, boolean p_233149_) {
|
||||
private void doLoadLevel(Screen p_233146_, String p_233147_, boolean p_233148_, boolean p_233149_) {
|
||||
+ // FORGE: Patch in overload to reduce further patching
|
||||
+ this.doLoadLevel(p_233146_, p_233147_, p_233148_, p_233149_, false);
|
||||
+ }
|
||||
+
|
||||
+ // FORGE: Patch in confirmExperimentalWarning which confirms the experimental warning when true
|
||||
+ private void doLoadLevel(Screen p_233146_, String p_233147_, boolean p_233148_, boolean p_233149_, boolean confirmExperimentalWarning) {
|
||||
LevelStorageSource.LevelStorageAccess levelstoragesource$levelstorageaccess = this.m_233155_(p_233147_);
|
||||
LevelStorageSource.LevelStorageAccess levelstoragesource$levelstorageaccess = this.createWorldAccess(p_233147_);
|
||||
if (levelstoragesource$levelstorageaccess != null) {
|
||||
PackRepository packrepository = ServerPacksSource.m_247728_(levelstoragesource$levelstorageaccess);
|
||||
PackRepository packrepository = ServerPacksSource.createPackRepository(levelstoragesource$levelstorageaccess);
|
||||
|
||||
WorldStem worldstem;
|
||||
try {
|
||||
+ levelstoragesource$levelstorageaccess.readAdditionalLevelSaveData(); // Read extra (e.g. modded) data from the world before creating it
|
||||
worldstem = this.m_233122_(levelstoragesource$levelstorageaccess, p_233148_, packrepository);
|
||||
+ if (confirmExperimentalWarning && worldstem.f_206895_() instanceof PrimaryLevelData pld) {
|
||||
worldstem = this.loadWorldStem(levelstoragesource$levelstorageaccess, p_233148_, packrepository);
|
||||
+ if (confirmExperimentalWarning && worldstem.worldData() instanceof PrimaryLevelData pld) {
|
||||
+ pld.withConfirmedWarning(true);
|
||||
+ }
|
||||
} catch (Exception exception) {
|
||||
f_233088_.warn("Failed to load level data or datapacks, can't proceed with server load", (Throwable)exception);
|
||||
LOGGER.warn("Failed to load level data or datapacks, can't proceed with server load", (Throwable)exception);
|
||||
if (!p_233148_) {
|
||||
@@ -191,7 +_,9 @@
|
||||
WorldData worlddata = worldstem.f_206895_();
|
||||
boolean flag = worlddata.m_246337_().m_247070_();
|
||||
boolean flag1 = worlddata.m_5754_() != Lifecycle.stable();
|
||||
WorldData worlddata = worldstem.worldData();
|
||||
boolean flag = worlddata.worldGenOptions().isOldCustomizedWorld();
|
||||
boolean flag1 = worlddata.worldGenSettingsLifecycle() != Lifecycle.stable();
|
||||
- if (!p_233149_ || !flag && !flag1) {
|
||||
+ // Forge: Skip confirmation if it has been done already for this world
|
||||
+ boolean skipConfirmation = worlddata instanceof PrimaryLevelData pld && pld.hasConfirmedExperimentalWarning();
|
||||
+ if (skipConfirmation || !p_233149_ || !flag && !flag1) {
|
||||
this.f_233089_.m_247489_().m_247400_(levelstoragesource$levelstorageaccess).thenApply((p_233177_) -> {
|
||||
this.minecraft.getDownloadedPackSource().loadBundledResourcePack(levelstoragesource$levelstorageaccess).thenApply((p_233177_) -> {
|
||||
return true;
|
||||
}).exceptionallyComposeAsync((p_233183_) -> {
|
||||
@@ -213,9 +_,11 @@
|
||||
@@ -40,10 +40,10 @@
|
||||
});
|
||||
} else {
|
||||
+ if (flag) // Forge: For legacy world options, let vanilla handle it.
|
||||
this.m_233140_(p_233146_, p_233147_, flag, () -> {
|
||||
this.m_233145_(p_233146_, p_233147_, p_233148_, false);
|
||||
this.askForBackup(p_233146_, p_233147_, flag, () -> {
|
||||
this.doLoadLevel(p_233146_, p_233147_, p_233148_, false);
|
||||
});
|
||||
+ else net.minecraftforge.client.ForgeHooksClient.createWorldConfirmationScreen(() -> this.doLoadLevel(p_233146_, p_233147_, p_233148_, false, true));
|
||||
worldstem.close();
|
||||
m_233116_(levelstoragesource$levelstorageaccess, p_233147_);
|
||||
safeCloseAccess(levelstoragesource$levelstorageaccess, p_233147_);
|
||||
}
|
||||
+18
-18
@@ -1,36 +1,36 @@
|
||||
--- a/net/minecraft/client/gui/screens/worldselection/WorldSelectionList.java
|
||||
+++ b/net/minecraft/client/gui/screens/worldselection/WorldSelectionList.java
|
||||
@@ -74,6 +_,7 @@
|
||||
static final Logger f_101645_ = LogUtils.getLogger();
|
||||
static final DateFormat f_101646_ = new SimpleDateFormat();
|
||||
private static final ResourceLocation f_101647_ = new ResourceLocation("textures/misc/unknown_server.png");
|
||||
static final Logger LOGGER = LogUtils.getLogger();
|
||||
static final DateFormat DATE_FORMAT = new SimpleDateFormat();
|
||||
private static final ResourceLocation ICON_MISSING = new ResourceLocation("textures/misc/unknown_server.png");
|
||||
+ private static final ResourceLocation FORGE_EXPERIMENTAL_WARNING_ICON = new ResourceLocation("forge","textures/gui/experimental_warning.png");
|
||||
static final Component f_101649_ = Component.m_237115_("selectWorld.tooltip.fromNewerVersion1").m_130940_(ChatFormatting.RED);
|
||||
static final Component f_101650_ = Component.m_237115_("selectWorld.tooltip.fromNewerVersion2").m_130940_(ChatFormatting.RED);
|
||||
static final Component f_101651_ = Component.m_237115_("selectWorld.tooltip.snapshot1").m_130940_(ChatFormatting.GOLD);
|
||||
static final Component FROM_NEWER_TOOLTIP_1 = Component.translatable("selectWorld.tooltip.fromNewerVersion1").withStyle(ChatFormatting.RED);
|
||||
static final Component FROM_NEWER_TOOLTIP_2 = Component.translatable("selectWorld.tooltip.fromNewerVersion2").withStyle(ChatFormatting.RED);
|
||||
static final Component SNAPSHOT_TOOLTIP_1 = Component.translatable("selectWorld.tooltip.snapshot1").withStyle(ChatFormatting.GOLD);
|
||||
@@ -362,6 +_,7 @@
|
||||
RenderSystem.enableBlend();
|
||||
p_281612_.m_280163_(this.f_101698_.m_289196_(), p_282820_, p_283181_, 0.0F, 0.0F, 32, 32, 32, 32);
|
||||
p_281612_.blit(this.icon.textureLocation(), p_282820_, p_283181_, 0.0F, 0.0F, 32, 32, 32, 32);
|
||||
RenderSystem.disableBlend();
|
||||
+ renderExperimentalWarning(p_281612_, p_283204_, p_283025_, p_283181_, p_282820_);
|
||||
if (this.f_101693_.f_91066_.m_231828_().m_231551_() || p_283396_) {
|
||||
p_281612_.m_280509_(p_282820_, p_283181_, p_282820_ + 32, p_283181_ + 32, -1601138544);
|
||||
if (this.minecraft.options.touchscreen().get() || p_283396_) {
|
||||
p_281612_.fill(p_282820_, p_283181_, p_282820_ + 32, p_283181_ + 32, -1601138544);
|
||||
int j = p_283204_ - p_282820_;
|
||||
@@ -608,6 +_,19 @@
|
||||
|
||||
public boolean m_214209_() {
|
||||
return !this.f_101695_.m_164916_();
|
||||
public boolean isSelectable() {
|
||||
return !this.summary.isDisabled();
|
||||
+ }
|
||||
+
|
||||
+ // FORGE: Patch in experimental warning icon for worlds in the world selection screen
|
||||
+ private void renderExperimentalWarning(GuiGraphics guiGraphics, int mouseX, int mouseY, int top, int left) {
|
||||
+ if (this.f_101695_.isLifecycleExperimental()) {
|
||||
+ int leftStart = left + WorldSelectionList.this.m_5759_();
|
||||
+ guiGraphics.m_280163_(WorldSelectionList.FORGE_EXPERIMENTAL_WARNING_ICON, leftStart - 36, top, 0.0F, 0.0F, 32, 32, 32, 32);
|
||||
+ if (WorldSelectionList.this.m_93412_(mouseX, mouseY) == this && mouseX > leftStart - 36 && mouseX < leftStart) {
|
||||
+ var font = Minecraft.m_91087_().f_91062_;
|
||||
+ List<net.minecraft.util.FormattedCharSequence> tooltip = font.m_92923_(Component.m_237115_("forge.experimentalsettings.tooltip"), 200);
|
||||
+ guiGraphics.m_280245_(font, tooltip, mouseX, mouseY);
|
||||
+ if (this.summary.isLifecycleExperimental()) {
|
||||
+ int leftStart = left + WorldSelectionList.this.getRowWidth();
|
||||
+ guiGraphics.blit(WorldSelectionList.FORGE_EXPERIMENTAL_WARNING_ICON, leftStart - 36, top, 0.0F, 0.0F, 32, 32, 32, 32);
|
||||
+ if (WorldSelectionList.this.getEntryAtPosition(mouseX, mouseY) == this && mouseX > leftStart - 36 && mouseX < leftStart) {
|
||||
+ var font = Minecraft.getInstance().font;
|
||||
+ List<net.minecraft.util.FormattedCharSequence> tooltip = font.split(Component.translatable("forge.experimentalsettings.tooltip"), 200);
|
||||
+ guiGraphics.renderTooltip(font, tooltip, mouseX, mouseY);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
@@ -150,8 +_,8 @@
|
||||
}
|
||||
|
||||
CrashReport.m_127529_();
|
||||
- Bootstrap.m_135870_();
|
||||
GameLoadTimesEvent.f_285635_.m_286069_(Bootstrap.f_285608_.get());
|
||||
+ net.minecraftforge.fml.loading.BackgroundWaiter.runAndTick(()->Bootstrap.m_135870_(), net.minecraftforge.fml.loading.FMLLoader.progressWindowTick);
|
||||
Bootstrap.m_135889_();
|
||||
Util.m_137584_();
|
||||
CrashReport.preload();
|
||||
- Bootstrap.bootStrap();
|
||||
GameLoadTimesEvent.INSTANCE.setBootstrapTime(Bootstrap.bootstrapDuration.get());
|
||||
+ net.minecraftforge.fml.loading.BackgroundWaiter.runAndTick(()->Bootstrap.bootStrap(), net.minecraftforge.fml.loading.FMLLoader.progressWindowTick);
|
||||
Bootstrap.validate();
|
||||
Util.startTimerHackThread();
|
||||
String s12 = optionspec25.value(optionset);
|
||||
@@ -2,19 +2,19 @@
|
||||
+++ b/net/minecraft/client/model/HumanoidModel.java
|
||||
@@ -270,6 +_,8 @@
|
||||
case TOOT_HORN:
|
||||
this.f_102811_.f_104203_ = Mth.m_14036_(this.f_102808_.f_104203_, -1.2F, 1.2F) - 1.4835298F;
|
||||
this.f_102811_.f_104204_ = this.f_102808_.f_104204_ - ((float)Math.PI / 6F);
|
||||
this.rightArm.xRot = Mth.clamp(this.head.xRot, -1.2F, 1.2F) - 1.4835298F;
|
||||
this.rightArm.yRot = this.head.yRot - ((float)Math.PI / 6F);
|
||||
+ default:
|
||||
+ this.f_102816_.applyTransform(this, p_102876_, net.minecraft.world.entity.HumanoidArm.RIGHT);
|
||||
+ this.rightArmPose.applyTransform(this, p_102876_, net.minecraft.world.entity.HumanoidArm.RIGHT);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -314,6 +_,8 @@
|
||||
case TOOT_HORN:
|
||||
this.f_102812_.f_104203_ = Mth.m_14036_(this.f_102808_.f_104203_, -1.2F, 1.2F) - 1.4835298F;
|
||||
this.f_102812_.f_104204_ = this.f_102808_.f_104204_ + ((float)Math.PI / 6F);
|
||||
this.leftArm.xRot = Mth.clamp(this.head.xRot, -1.2F, 1.2F) - 1.4835298F;
|
||||
this.leftArm.yRot = this.head.yRot + ((float)Math.PI / 6F);
|
||||
+ default:
|
||||
+ this.f_102815_.applyTransform(this, p_102879_, net.minecraft.world.entity.HumanoidArm.LEFT);
|
||||
+ this.leftArmPose.applyTransform(this, p_102879_, net.minecraft.world.entity.HumanoidArm.LEFT);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -30,19 +30,19 @@
|
||||
@@ -422,10 +_,29 @@
|
||||
|
||||
private ArmPose(boolean p_102896_) {
|
||||
this.f_102890_ = p_102896_;
|
||||
this.twoHanded = p_102896_;
|
||||
+ this.forgeArmPose = null;
|
||||
}
|
||||
|
||||
public boolean m_102897_() {
|
||||
return this.f_102890_;
|
||||
public boolean isTwoHanded() {
|
||||
return this.twoHanded;
|
||||
}
|
||||
+ // FORGE START
|
||||
+ @javax.annotation.Nullable
|
||||
+ private final net.minecraftforge.client.IArmPoseTransformer forgeArmPose;
|
||||
+
|
||||
+ private ArmPose(boolean twoHanded, @javax.annotation.Nonnull net.minecraftforge.client.IArmPoseTransformer forgeArmPose) {
|
||||
+ this.f_102890_ = twoHanded;
|
||||
+ this.twoHanded = twoHanded;
|
||||
+ com.google.common.base.Preconditions.checkNotNull(forgeArmPose, "Cannot create new ArmPose with null transformer!");
|
||||
+ this.forgeArmPose = forgeArmPose;
|
||||
+ }
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
--- a/net/minecraft/client/model/geom/LayerDefinitions.java
|
||||
+++ b/net/minecraft/client/model/geom/LayerDefinitions.java
|
||||
@@ -319,6 +_,7 @@
|
||||
WoodType.m_61843_().forEach((p_247864_) -> {
|
||||
builder.put(ModelLayers.m_247439_(p_247864_), layerdefinition24);
|
||||
WoodType.values().forEach((p_247864_) -> {
|
||||
builder.put(ModelLayers.createHangingSignModelName(p_247864_), layerdefinition24);
|
||||
});
|
||||
+ net.minecraftforge.client.ForgeHooksClient.loadLayerDefinitions(builder);
|
||||
ImmutableMap<ModelLayerLocation, LayerDefinition> immutablemap = builder.build();
|
||||
List<ModelLayerLocation> list = ModelLayers.m_171288_().filter((p_171117_) -> {
|
||||
List<ModelLayerLocation> list = ModelLayers.getKnownLocations().filter((p_171117_) -> {
|
||||
return !immutablemap.containsKey(p_171117_);
|
||||
@@ -3,16 +3,16 @@
|
||||
@@ -220,11 +_,13 @@
|
||||
}
|
||||
|
||||
public static ModelLayerLocation m_171291_(WoodType p_171292_) {
|
||||
- return m_171300_("sign/" + p_171292_.f_61839_(), "main");
|
||||
+ ResourceLocation location = new ResourceLocation(p_171292_.f_61839_());
|
||||
+ return new ModelLayerLocation(new ResourceLocation(location.m_135827_(), "sign/" + location.m_135815_()), "main");
|
||||
public static ModelLayerLocation createSignModelName(WoodType p_171292_) {
|
||||
- return createLocation("sign/" + p_171292_.name(), "main");
|
||||
+ ResourceLocation location = new ResourceLocation(p_171292_.name());
|
||||
+ return new ModelLayerLocation(new ResourceLocation(location.getNamespace(), "sign/" + location.getPath()), "main");
|
||||
}
|
||||
|
||||
public static ModelLayerLocation m_247439_(WoodType p_252225_) {
|
||||
- return m_171300_("hanging_sign/" + p_252225_.f_61839_(), "main");
|
||||
+ ResourceLocation location = new ResourceLocation(p_252225_.f_61839_());
|
||||
+ return new ModelLayerLocation(new ResourceLocation(location.m_135827_(), "hanging_sign/" + location.m_135815_()), "main");
|
||||
public static ModelLayerLocation createHangingSignModelName(WoodType p_252225_) {
|
||||
- return createLocation("hanging_sign/" + p_252225_.name(), "main");
|
||||
+ ResourceLocation location = new ResourceLocation(p_252225_.name());
|
||||
+ return new ModelLayerLocation(new ResourceLocation(location.getNamespace(), "hanging_sign/" + location.getPath()), "main");
|
||||
}
|
||||
|
||||
public static Stream<ModelLayerLocation> m_171288_() {
|
||||
public static Stream<ModelLayerLocation> getKnownLocations() {
|
||||
+4
-4
@@ -1,11 +1,11 @@
|
||||
--- a/net/minecraft/client/multiplayer/AccountProfileKeyPairManager.java
|
||||
+++ b/net/minecraft/client/multiplayer/AccountProfileKeyPairManager.java
|
||||
@@ -75,6 +_,8 @@
|
||||
this.m_253216_(profilekeypair);
|
||||
this.writeProfileKeyPair(profilekeypair);
|
||||
return Optional.of(profilekeypair);
|
||||
} catch (CryptException | MinecraftClientException | IOException ioexception) {
|
||||
+ // Forge: The offline user api service always returns a null profile key pair, so let's hide this useless exception if in dev
|
||||
+ if (net.minecraftforge.fml.loading.FMLLoader.isProduction() || this.f_252526_ != UserApiService.OFFLINE)
|
||||
f_252448_.error("Failed to retrieve profile key pair", (Throwable)ioexception);
|
||||
this.m_253216_((ProfileKeyPair)null);
|
||||
+ if (net.minecraftforge.fml.loading.FMLLoader.isProduction() || this.userApiService != UserApiService.OFFLINE)
|
||||
LOGGER.error("Failed to retrieve profile key pair", (Throwable)ioexception);
|
||||
this.writeProfileKeyPair((ProfileKeyPair)null);
|
||||
return p_254074_;
|
||||
@@ -1,17 +1,17 @@
|
||||
--- a/net/minecraft/client/multiplayer/ClientChunkCache.java
|
||||
+++ b/net/minecraft/client/multiplayer/ClientChunkCache.java
|
||||
@@ -60,6 +_,7 @@
|
||||
int i = this.f_104410_.m_104481_(p_298665_.f_45578_, p_298665_.f_45579_);
|
||||
LevelChunk levelchunk = this.f_104410_.m_104479_(i);
|
||||
if (m_104438_(levelchunk, p_298665_.f_45578_, p_298665_.f_45579_)) {
|
||||
int i = this.storage.getIndex(p_298665_.x, p_298665_.z);
|
||||
LevelChunk levelchunk = this.storage.getChunk(i);
|
||||
if (isValidChunk(levelchunk, p_298665_.x, p_298665_.z)) {
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.ChunkEvent.Unload(levelchunk));
|
||||
this.f_104410_.m_104487_(i, levelchunk, (LevelChunk)null);
|
||||
this.storage.replace(i, levelchunk, (LevelChunk)null);
|
||||
}
|
||||
|
||||
@@ -115,6 +_,7 @@
|
||||
}
|
||||
|
||||
this.f_104411_.m_171649_(chunkpos);
|
||||
this.level.onChunkLoaded(chunkpos);
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.ChunkEvent.Load(levelchunk, false));
|
||||
return levelchunk;
|
||||
}
|
||||
|
||||
+4
-4
@@ -3,8 +3,8 @@
|
||||
@@ -89,6 +_,7 @@
|
||||
}
|
||||
|
||||
public void m_293213_(ClientboundCustomPayloadPacket p_298103_) {
|
||||
+ if (net.minecraftforge.common.ForgeHooks.onCustomPayload(p_298103_, this.f_290549_)) return;
|
||||
CustomPacketPayload custompacketpayload = p_298103_.f_291001_();
|
||||
public void handleCustomPayload(ClientboundCustomPayloadPacket p_298103_) {
|
||||
+ if (net.minecraftforge.common.ForgeHooks.onCustomPayload(p_298103_, this.connection)) return;
|
||||
CustomPacketPayload custompacketpayload = p_298103_.payload();
|
||||
if (!(custompacketpayload instanceof DiscardedPayload)) {
|
||||
PacketUtils.m_131363_(p_298103_, this, this.f_291812_);
|
||||
PacketUtils.ensureRunningOnSameThread(p_298103_, this, this.minecraft);
|
||||
+5
-5
@@ -1,10 +1,10 @@
|
||||
--- a/net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl.java
|
||||
+++ b/net/minecraft/client/multiplayer/ClientConfigurationPacketListenerImpl.java
|
||||
@@ -71,6 +_,7 @@
|
||||
this.f_290549_.m_129505_(new ClientPacketListener(this.f_291812_, this.f_290549_, new CommonListenerCookie(this.f_290697_, this.f_291019_, this.f_291454_, this.f_291167_, this.f_291180_, this.f_291024_, this.f_291028_)));
|
||||
this.f_290549_.m_294304_();
|
||||
this.f_290549_.m_129512_(new ServerboundFinishConfigurationPacket());
|
||||
+ net.minecraftforge.common.ForgeHooks.handleClientConfigurationComplete(this.f_290549_);
|
||||
this.connection.setListener(new ClientPacketListener(this.minecraft, this.connection, new CommonListenerCookie(this.localGameProfile, this.telemetryManager, this.receivedRegistries, this.enabledFeatures, this.serverBrand, this.serverData, this.postDisconnectScreen)));
|
||||
this.connection.resumeInboundAfterProtocolChange();
|
||||
this.connection.send(new ServerboundFinishConfigurationPacket());
|
||||
+ net.minecraftforge.common.ForgeHooks.handleClientConfigurationComplete(this.connection);
|
||||
}
|
||||
|
||||
public void m_9933_() {
|
||||
public void tick() {
|
||||
+9
-9
@@ -1,18 +1,18 @@
|
||||
--- a/net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl.java
|
||||
+++ b/net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl.java
|
||||
@@ -156,6 +_,7 @@
|
||||
public void m_7026_(Component p_104543_) {
|
||||
if (this.f_243717_ != null && this.f_243717_.m_295074_()) {
|
||||
this.f_104519_.m_91152_(new DisconnectedRealmsScreen(this.f_104520_, CommonComponents.f_130661_, p_104543_));
|
||||
+ } else if (net.minecraftforge.client.ForgeHooksClient.onClientDisconnect(this.f_104522_, this.f_104519_, this.f_104520_, p_104543_)) {
|
||||
public void onDisconnect(Component p_104543_) {
|
||||
if (this.serverData != null && this.serverData.isRealm()) {
|
||||
this.minecraft.setScreen(new DisconnectedRealmsScreen(this.parent, CommonComponents.CONNECT_FAILED, p_104543_));
|
||||
+ } else if (net.minecraftforge.client.ForgeHooksClient.onClientDisconnect(this.connection, this.minecraft, this.parent, p_104543_)) {
|
||||
} else {
|
||||
this.f_104519_.m_91152_(new DisconnectedScreen(this.f_104520_, CommonComponents.f_130661_, p_104543_));
|
||||
this.minecraft.setScreen(new DisconnectedScreen(this.parent, CommonComponents.CONNECT_FAILED, p_104543_));
|
||||
}
|
||||
@@ -178,6 +_,7 @@
|
||||
}
|
||||
|
||||
public void m_7254_(ClientboundCustomQueryPacket p_104545_) {
|
||||
+ if (net.minecraftforge.common.ForgeHooks.onCustomPayload(p_104545_, this.f_104522_)) return;
|
||||
this.f_104521_.accept(Component.m_237115_("connect.negotiating"));
|
||||
this.f_104522_.m_129512_(new ServerboundCustomQueryAnswerPacket(p_104545_.f_134745_(), (CustomQueryAnswerPayload)null));
|
||||
public void handleCustomQuery(ClientboundCustomQueryPacket p_104545_) {
|
||||
+ if (net.minecraftforge.common.ForgeHooks.onCustomPayload(p_104545_, this.connection)) return;
|
||||
this.updateStatus.accept(Component.translatable("connect.negotiating"));
|
||||
this.connection.send(new ServerboundCustomQueryAnswerPacket(p_104545_.transactionId(), (CustomQueryAnswerPayload)null));
|
||||
}
|
||||
@@ -1,109 +1,109 @@
|
||||
--- a/net/minecraft/client/multiplayer/ClientLevel.java
|
||||
+++ b/net/minecraft/client/multiplayer/ClientLevel.java
|
||||
@@ -116,12 +_,15 @@
|
||||
p_194170_.put(BiomeColors.f_108791_, new BlockTintCache((p_194168_) -> {
|
||||
return this.m_104762_(p_194168_, BiomeColors.f_108791_);
|
||||
p_194170_.put(BiomeColors.WATER_COLOR_RESOLVER, new BlockTintCache((p_194168_) -> {
|
||||
return this.calculateBlockTint(p_194168_, BiomeColors.WATER_COLOR_RESOLVER);
|
||||
}));
|
||||
+ net.minecraftforge.client.ColorResolverManager.registerBlockTintCaches(ClientLevel.this, p_194170_);
|
||||
});
|
||||
private final ClientChunkCache f_104559_;
|
||||
private final Deque<Runnable> f_194122_ = Queues.newArrayDeque();
|
||||
private int f_194123_;
|
||||
private final BlockStatePredictionHandler f_233599_ = new BlockStatePredictionHandler();
|
||||
private static final Set<Item> f_194124_ = Set.of(Items.f_42127_, Items.f_151033_);
|
||||
private final ClientChunkCache chunkSource;
|
||||
private final Deque<Runnable> lightUpdateQueue = Queues.newArrayDeque();
|
||||
private int serverSimulationDistance;
|
||||
private final BlockStatePredictionHandler blockStatePredictionHandler = new BlockStatePredictionHandler();
|
||||
private static final Set<Item> MARKER_PARTICLE_ITEMS = Set.of(Items.BARRIER, Items.LIGHT);
|
||||
+ private final it.unimi.dsi.fastutil.ints.Int2ObjectMap<net.minecraftforge.entity.PartEntity<?>> partEntities = new it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap<>();
|
||||
+ private final net.minecraftforge.client.model.data.ModelDataManager modelDataManager = new net.minecraftforge.client.model.data.ModelDataManager(this);
|
||||
|
||||
public void m_233651_(int p_233652_) {
|
||||
this.f_233599_.m_233856_(p_233652_, this);
|
||||
public void handleBlockChangedAck(int p_233652_) {
|
||||
this.blockStatePredictionHandler.endPredictionsUpTo(p_233652_, this);
|
||||
@@ -175,6 +_,8 @@
|
||||
this.f_194123_ = p_205510_;
|
||||
this.m_46465_();
|
||||
this.m_46466_();
|
||||
this.serverSimulationDistance = p_205510_;
|
||||
this.updateSkyBrightness();
|
||||
this.prepareWeather();
|
||||
+ this.gatherCapabilities();
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.level.LevelEvent.Load(this));
|
||||
}
|
||||
|
||||
public void m_194171_(Runnable p_194172_) {
|
||||
public void queueLightUpdate(Runnable p_194172_) {
|
||||
@@ -265,6 +_,7 @@
|
||||
this.m_46473_().m_6521_(() -> {
|
||||
return BuiltInRegistries.f_256780_.m_7981_(p_104640_.m_6095_()).toString();
|
||||
this.getProfiler().push(() -> {
|
||||
return BuiltInRegistries.ENTITY_TYPE.getKey(p_104640_.getType()).toString();
|
||||
});
|
||||
+ if (p_104640_.canUpdate())
|
||||
p_104640_.m_8119_();
|
||||
this.m_46473_().m_7238_();
|
||||
p_104640_.tick();
|
||||
this.getProfiler().pop();
|
||||
|
||||
@@ -320,8 +_,10 @@
|
||||
}
|
||||
|
||||
public void m_104739_(Entity p_104741_) {
|
||||
public void addEntity(Entity p_104741_) {
|
||||
+ if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.EntityJoinLevelEvent(p_104741_, this))) return;
|
||||
this.m_171642_(p_104741_.m_19879_(), Entity.RemovalReason.DISCARDED);
|
||||
this.f_171631_.m_157653_(p_104741_);
|
||||
this.removeEntity(p_104741_.getId(), Entity.RemovalReason.DISCARDED);
|
||||
this.entityStorage.addEntity(p_104741_);
|
||||
+ p_104741_.onAddedToWorld();
|
||||
}
|
||||
|
||||
public void m_171642_(int p_171643_, Entity.RemovalReason p_171644_) {
|
||||
public void removeEntity(int p_171643_, Entity.RemovalReason p_171644_) {
|
||||
@@ -448,6 +_,12 @@
|
||||
}
|
||||
|
||||
public void m_262808_(@Nullable Player p_263381_, double p_263372_, double p_263404_, double p_263365_, Holder<SoundEvent> p_263335_, SoundSource p_263417_, float p_263416_, float p_263349_, long p_263408_) {
|
||||
public void playSeededSound(@Nullable Player p_263381_, double p_263372_, double p_263404_, double p_263365_, Holder<SoundEvent> p_263335_, SoundSource p_263417_, float p_263416_, float p_263349_, long p_263408_) {
|
||||
+ net.minecraftforge.event.PlayLevelSoundEvent.AtPosition event = net.minecraftforge.event.ForgeEventFactory.onPlaySoundAtPosition(this, p_263372_, p_263404_, p_263365_, p_263335_, p_263417_, p_263416_, p_263349_);
|
||||
+ if (event.isCanceled() || event.getSound() == null) return;
|
||||
+ p_263335_ = event.getSound();
|
||||
+ p_263417_ = event.getSource();
|
||||
+ p_263416_ = event.getNewVolume();
|
||||
+ p_263349_ = event.getNewPitch();
|
||||
if (p_263381_ == this.f_104565_.f_91074_) {
|
||||
this.m_233602_(p_263372_, p_263404_, p_263365_, p_263335_.m_203334_(), p_263417_, p_263416_, p_263349_, false, p_263408_);
|
||||
if (p_263381_ == this.minecraft.player) {
|
||||
this.playSound(p_263372_, p_263404_, p_263365_, p_263335_.value(), p_263417_, p_263416_, p_263349_, false, p_263408_);
|
||||
}
|
||||
@@ -455,6 +_,12 @@
|
||||
}
|
||||
|
||||
public void m_213890_(@Nullable Player p_263514_, Entity p_263536_, Holder<SoundEvent> p_263518_, SoundSource p_263487_, float p_263538_, float p_263524_, long p_263509_) {
|
||||
public void playSeededSound(@Nullable Player p_263514_, Entity p_263536_, Holder<SoundEvent> p_263518_, SoundSource p_263487_, float p_263538_, float p_263524_, long p_263509_) {
|
||||
+ net.minecraftforge.event.PlayLevelSoundEvent.AtEntity event = net.minecraftforge.event.ForgeEventFactory.onPlaySoundAtEntity(p_263536_, p_263518_, p_263487_, p_263538_, p_263524_);
|
||||
+ if (event.isCanceled() || event.getSound() == null) return;
|
||||
+ p_263518_ = event.getSound();
|
||||
+ p_263487_ = event.getSource();
|
||||
+ p_263538_ = event.getNewVolume();
|
||||
+ p_263524_ = event.getNewPitch();
|
||||
if (p_263514_ == this.f_104565_.f_91074_) {
|
||||
this.f_104565_.m_91106_().m_120367_(new EntityBoundSoundInstance(p_263518_.m_203334_(), p_263487_, p_263538_, p_263524_, p_263536_, p_263509_));
|
||||
if (p_263514_ == this.minecraft.player) {
|
||||
this.minecraft.getSoundManager().play(new EntityBoundSoundInstance(p_263518_.value(), p_263487_, p_263538_, p_263524_, p_263536_, p_263509_));
|
||||
}
|
||||
@@ -892,6 +_,7 @@
|
||||
}
|
||||
|
||||
public void m_104851_(Difficulty p_104852_) {
|
||||
+ net.minecraftforge.common.ForgeHooks.onDifficultyChange(p_104852_, this.f_104840_);
|
||||
this.f_104840_ = p_104852_;
|
||||
public void setDifficulty(Difficulty p_104852_) {
|
||||
+ net.minecraftforge.common.ForgeHooks.onDifficultyChange(p_104852_, this.difficulty);
|
||||
this.difficulty = p_104852_;
|
||||
}
|
||||
|
||||
@@ -929,14 +_,46 @@
|
||||
ClientLevel.this.f_104566_.add((AbstractClientPlayer)p_171712_);
|
||||
ClientLevel.this.players.add((AbstractClientPlayer)p_171712_);
|
||||
}
|
||||
|
||||
+ if (p_171712_.isMultipartEntity()) {
|
||||
+ for (net.minecraftforge.entity.PartEntity<?> part : p_171712_.getParts()) {
|
||||
+ ClientLevel.this.partEntities.put(part.m_19879_(), part);
|
||||
+ ClientLevel.this.partEntities.put(part.getId(), part);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
public void m_141981_(Entity p_171716_) {
|
||||
p_171716_.m_19877_();
|
||||
ClientLevel.this.f_104566_.remove(p_171716_);
|
||||
public void onTrackingEnd(Entity p_171716_) {
|
||||
p_171716_.unRide();
|
||||
ClientLevel.this.players.remove(p_171716_);
|
||||
+
|
||||
+ p_171716_.onRemovedFromWorld();
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.EntityLeaveLevelEvent(p_171716_, ClientLevel.this));
|
||||
+
|
||||
+ if (p_171716_.isMultipartEntity()) {
|
||||
+ for (net.minecraftforge.entity.PartEntity<?> part : p_171716_.getParts()) {
|
||||
+ ClientLevel.this.partEntities.remove(part.m_19879_());
|
||||
+ ClientLevel.this.partEntities.remove(part.getId());
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
public void m_214006_(Entity p_233660_) {
|
||||
public void onSectionChange(Entity p_233660_) {
|
||||
}
|
||||
+ }
|
||||
+
|
||||
@@ -119,7 +119,7 @@
|
||||
+
|
||||
+ @Override
|
||||
+ public float getShade(float normalX, float normalY, float normalZ, boolean shade) {
|
||||
+ boolean constantAmbientLight = this.m_104583_().m_108885_();
|
||||
+ boolean constantAmbientLight = this.effects().constantAmbientLight();
|
||||
+ if (!shade)
|
||||
+ return constantAmbientLight ? 0.9F : 1.0F;
|
||||
+ return net.minecraftforge.client.model.lighting.QuadLighter.calculateShade(normalX, normalY, normalZ, constantAmbientLight);
|
||||
|
||||
+43
-43
@@ -2,77 +2,77 @@
|
||||
+++ b/net/minecraft/client/multiplayer/ClientPacketListener.java
|
||||
@@ -386,6 +_,7 @@
|
||||
|
||||
this.f_291812_.f_91064_.m_113434_();
|
||||
this.f_291812_.f_91074_.m_172530_();
|
||||
+ net.minecraftforge.client.ForgeHooksClient.firePlayerLogin(this.f_291812_.f_91072_, this.f_291812_.f_91074_, this.f_291812_.m_91403_().f_290549_);
|
||||
this.f_291812_.f_91074_.m_20234_(p_105030_.f_132360_());
|
||||
this.f_104889_.m_104739_(this.f_291812_.f_91074_);
|
||||
this.f_291812_.f_91074_.f_108618_ = new KeyboardInput(this.f_291812_.f_91066_);
|
||||
this.minecraft.debugRenderer.clear();
|
||||
this.minecraft.player.resetPos();
|
||||
+ net.minecraftforge.client.ForgeHooksClient.firePlayerLogin(this.minecraft.gameMode, this.minecraft.player, this.minecraft.getConnection().connection);
|
||||
this.minecraft.player.setId(p_105030_.playerId());
|
||||
this.level.addEntity(this.minecraft.player);
|
||||
this.minecraft.player.input = new KeyboardInput(this.minecraft.options);
|
||||
@@ -1017,7 +_,9 @@
|
||||
localplayer1.m_21204_().m_22159_(localplayer.m_21204_());
|
||||
localplayer1.getAttributes().assignValues(localplayer.getAttributes());
|
||||
}
|
||||
|
||||
+ localplayer1.updateSyncFields(localplayer); // Forge: fix MC-10657
|
||||
localplayer1.m_172530_();
|
||||
+ net.minecraftforge.client.ForgeHooksClient.firePlayerRespawn(this.f_291812_.f_91072_, localplayer, localplayer1, localplayer1.f_108617_.f_290549_);
|
||||
this.f_104889_.m_104739_(localplayer1);
|
||||
localplayer1.m_146922_(-180.0F);
|
||||
localplayer1.f_108618_ = new KeyboardInput(this.f_291812_.f_91066_);
|
||||
localplayer1.resetPos();
|
||||
+ net.minecraftforge.client.ForgeHooksClient.firePlayerRespawn(this.minecraft.gameMode, localplayer, localplayer1, localplayer1.connection.connection);
|
||||
this.level.addEntity(localplayer1);
|
||||
localplayer1.setYRot(-180.0F);
|
||||
localplayer1.input = new KeyboardInput(this.minecraft.options);
|
||||
@@ -1126,10 +_,7 @@
|
||||
PacketUtils.m_131363_(p_104976_, this, this.f_291812_);
|
||||
BlockPos blockpos = p_104976_.m_131704_();
|
||||
this.f_291812_.f_91073_.m_141902_(blockpos, p_104976_.m_195645_()).ifPresent((p_205557_) -> {
|
||||
- CompoundTag compoundtag = p_104976_.m_131708_();
|
||||
PacketUtils.ensureRunningOnSameThread(p_104976_, this, this.minecraft);
|
||||
BlockPos blockpos = p_104976_.getPos();
|
||||
this.minecraft.level.getBlockEntity(blockpos, p_104976_.getType()).ifPresent((p_205557_) -> {
|
||||
- CompoundTag compoundtag = p_104976_.getTag();
|
||||
- if (compoundtag != null) {
|
||||
- p_205557_.m_142466_(compoundtag);
|
||||
- p_205557_.load(compoundtag);
|
||||
- }
|
||||
+ p_205557_.onDataPacket(f_290549_, p_104976_);
|
||||
+ p_205557_.onDataPacket(connection, p_104976_);
|
||||
|
||||
if (p_205557_ instanceof CommandBlockEntity && this.f_291812_.f_91080_ instanceof CommandBlockEditScreen) {
|
||||
((CommandBlockEditScreen)this.f_291812_.f_91080_).m_98398_();
|
||||
if (p_205557_ instanceof CommandBlockEntity && this.minecraft.screen instanceof CommandBlockEditScreen) {
|
||||
((CommandBlockEditScreen)this.minecraft.screen).updateGui();
|
||||
@@ -1277,7 +_,9 @@
|
||||
|
||||
public void m_7443_(ClientboundCommandsPacket p_104990_) {
|
||||
PacketUtils.m_131363_(p_104990_, this, this.f_291812_);
|
||||
- this.f_104899_ = new CommandDispatcher<>(p_104990_.m_237624_(CommandBuildContext.m_255418_(this.f_104903_, this.f_244039_)));
|
||||
+ var context = CommandBuildContext.m_255418_(this.f_104903_, this.f_244039_);
|
||||
+ this.f_104899_ = new CommandDispatcher<>(p_104990_.m_237624_(context));
|
||||
+ this.f_104899_ = net.minecraftforge.client.ClientCommandHandler.mergeServerCommands(this.f_104899_, context);
|
||||
public void handleCommands(ClientboundCommandsPacket p_104990_) {
|
||||
PacketUtils.ensureRunningOnSameThread(p_104990_, this, this.minecraft);
|
||||
- this.commands = new CommandDispatcher<>(p_104990_.getRoot(CommandBuildContext.simple(this.registryAccess, this.enabledFeatures)));
|
||||
+ var context = CommandBuildContext.simple(this.registryAccess, this.enabledFeatures);
|
||||
+ this.commands = new CommandDispatcher<>(p_104990_.getRoot(context));
|
||||
+ this.commands = net.minecraftforge.client.ClientCommandHandler.mergeServerCommands(this.commands, context);
|
||||
}
|
||||
|
||||
public void m_7183_(ClientboundStopSoundPacket p_105116_) {
|
||||
public void handleStopSoundEvent(ClientboundStopSoundPacket p_105116_) {
|
||||
@@ -1296,6 +_,7 @@
|
||||
ClientRecipeBook clientrecipebook = this.f_291812_.f_91074_.m_108631_();
|
||||
clientrecipebook.m_266394_(this.f_104900_.m_44051_(), this.f_291812_.f_91073_.m_9598_());
|
||||
this.f_291812_.m_231374_(SearchRegistry.f_301428_, clientrecipebook.m_90639_());
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onRecipesUpdated(this.f_104900_);
|
||||
ClientRecipeBook clientrecipebook = this.minecraft.player.getRecipeBook();
|
||||
clientrecipebook.setupCollections(this.recipeManager.getRecipes(), this.minecraft.level.registryAccess());
|
||||
this.minecraft.populateSearchTree(SearchRegistry.RECIPE_COLLECTIONS, clientrecipebook.getCollections());
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onRecipesUpdated(this.recipeManager);
|
||||
}
|
||||
|
||||
public void m_7244_(ClientboundPlayerLookAtPacket p_105054_) {
|
||||
public void handleLookAt(ClientboundPlayerLookAtPacket p_105054_) {
|
||||
@@ -1394,7 +_,8 @@
|
||||
Blocks.m_50758_();
|
||||
Blocks.rebuildCache();
|
||||
}
|
||||
|
||||
- CreativeModeTabs.m_258007_().m_257466_();
|
||||
+ CreativeModeTabs.m_257478_().stream().filter(net.minecraft.world.item.CreativeModeTab::hasSearchBar).forEach(net.minecraft.world.item.CreativeModeTab::m_257466_);
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.TagsUpdatedEvent(this.f_104903_, true, f_290549_.m_129531_()));
|
||||
- CreativeModeTabs.searchTab().rebuildSearchTree();
|
||||
+ CreativeModeTabs.allTabs().stream().filter(net.minecraft.world.item.CreativeModeTab::hasSearchBar).forEach(net.minecraft.world.item.CreativeModeTab::rebuildSearchTree);
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.TagsUpdatedEvent(this.registryAccess, true, connection.isMemoryConnection()));
|
||||
}
|
||||
|
||||
public void m_142234_(ClientboundPlayerCombatEndPacket p_171771_) {
|
||||
public void handlePlayerCombatEnd(ClientboundPlayerCombatEndPacket p_171771_) {
|
||||
@@ -2087,6 +_,8 @@
|
||||
}
|
||||
|
||||
public void m_246175_(String p_249888_) {
|
||||
public void sendChat(String p_249888_) {
|
||||
+ p_249888_ = net.minecraftforge.client.ForgeHooksClient.onClientSendMessage(p_249888_);
|
||||
+ if (p_249888_.isEmpty()) return;
|
||||
Instant instant = Instant.now();
|
||||
long i = Crypt.SaltSupplier.m_216113_();
|
||||
LastSeenMessagesTracker.Update lastseenmessagestracker$update = this.f_244346_.m_246442_();
|
||||
long i = Crypt.SaltSupplier.getLong();
|
||||
LastSeenMessagesTracker.Update lastseenmessagestracker$update = this.lastSeenMessages.generateAndApplyUpdate();
|
||||
@@ -2095,6 +_,7 @@
|
||||
}
|
||||
|
||||
public void m_246623_(String p_250092_) {
|
||||
public void sendCommand(String p_250092_) {
|
||||
+ if (net.minecraftforge.client.ClientCommandHandler.runCommand(p_250092_)) return;
|
||||
Instant instant = Instant.now();
|
||||
long i = Crypt.SaltSupplier.m_216113_();
|
||||
LastSeenMessagesTracker.Update lastseenmessagestracker$update = this.f_244346_.m_246442_();
|
||||
long i = Crypt.SaltSupplier.getLong();
|
||||
LastSeenMessagesTracker.Update lastseenmessagestracker$update = this.lastSeenMessages.generateAndApplyUpdate();
|
||||
@@ -3,52 +3,52 @@
|
||||
@@ -104,6 +_,7 @@
|
||||
}
|
||||
|
||||
public boolean m_105267_(BlockPos p_105268_) {
|
||||
+ if (f_105189_.f_91074_.m_21205_().onBlockStartBreak(p_105268_, f_105189_.f_91074_)) return false;
|
||||
if (this.f_105189_.f_91074_.m_36187_(this.f_105189_.f_91073_, p_105268_, this.f_105197_)) {
|
||||
public boolean destroyBlock(BlockPos p_105268_) {
|
||||
+ if (minecraft.player.getMainHandItem().onBlockStartBreak(p_105268_, minecraft.player)) return false;
|
||||
if (this.minecraft.player.blockActionRestricted(this.minecraft.level, p_105268_, this.localPlayerMode)) {
|
||||
return false;
|
||||
} else {
|
||||
@@ -118,9 +_,8 @@
|
||||
} else if (blockstate.m_60795_()) {
|
||||
} else if (blockstate.isAir()) {
|
||||
return false;
|
||||
} else {
|
||||
- block.m_5707_(level, p_105268_, blockstate, this.f_105189_.f_91074_);
|
||||
FluidState fluidstate = level.m_6425_(p_105268_);
|
||||
- boolean flag = level.m_7731_(p_105268_, fluidstate.m_76188_(), 11);
|
||||
+ boolean flag = blockstate.onDestroyedByPlayer(level, p_105268_, f_105189_.f_91074_, false, fluidstate);
|
||||
- block.playerWillDestroy(level, p_105268_, blockstate, this.minecraft.player);
|
||||
FluidState fluidstate = level.getFluidState(p_105268_);
|
||||
- boolean flag = level.setBlock(p_105268_, fluidstate.createLegacyBlock(), 11);
|
||||
+ boolean flag = blockstate.onDestroyedByPlayer(level, p_105268_, minecraft.player, false, fluidstate);
|
||||
if (flag) {
|
||||
block.m_6786_(level, p_105268_, blockstate);
|
||||
block.destroy(level, p_105268_, blockstate);
|
||||
}
|
||||
@@ -141,6 +_,7 @@
|
||||
BlockState blockstate = this.f_105189_.f_91073_.m_8055_(p_105270_);
|
||||
this.f_105189_.m_91301_().m_120581_(this.f_105189_.f_91073_, p_105270_, blockstate, 1.0F);
|
||||
this.m_233729_(this.f_105189_.f_91073_, (p_233757_) -> {
|
||||
+ if (!net.minecraftforge.common.ForgeHooks.onLeftClickBlock(this.f_105189_.f_91074_, p_105270_, p_105271_, ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK).isCanceled())
|
||||
this.m_105267_(p_105270_);
|
||||
BlockState blockstate = this.minecraft.level.getBlockState(p_105270_);
|
||||
this.minecraft.getTutorial().onDestroyBlock(this.minecraft.level, p_105270_, blockstate, 1.0F);
|
||||
this.startPrediction(this.minecraft.level, (p_233757_) -> {
|
||||
+ if (!net.minecraftforge.common.ForgeHooks.onLeftClickBlock(this.minecraft.player, p_105270_, p_105271_, ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK).isCanceled())
|
||||
this.destroyBlock(p_105270_);
|
||||
return new ServerboundPlayerActionPacket(ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK, p_105270_, p_105271_, p_233757_);
|
||||
});
|
||||
@@ -149,15 +_,19 @@
|
||||
if (this.f_105196_) {
|
||||
this.f_105190_.m_295327_(new ServerboundPlayerActionPacket(ServerboundPlayerActionPacket.Action.ABORT_DESTROY_BLOCK, this.f_105191_, p_105271_));
|
||||
if (this.isDestroying) {
|
||||
this.connection.send(new ServerboundPlayerActionPacket(ServerboundPlayerActionPacket.Action.ABORT_DESTROY_BLOCK, this.destroyBlockPos, p_105271_));
|
||||
}
|
||||
+ net.minecraftforge.event.entity.player.PlayerInteractEvent.LeftClickBlock event = net.minecraftforge.common.ForgeHooks.onLeftClickBlock(this.f_105189_.f_91074_, p_105270_, p_105271_, ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK);
|
||||
+ net.minecraftforge.event.entity.player.PlayerInteractEvent.LeftClickBlock event = net.minecraftforge.common.ForgeHooks.onLeftClickBlock(this.minecraft.player, p_105270_, p_105271_, ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK);
|
||||
|
||||
BlockState blockstate1 = this.f_105189_.f_91073_.m_8055_(p_105270_);
|
||||
this.f_105189_.m_91301_().m_120581_(this.f_105189_.f_91073_, p_105270_, blockstate1, 0.0F);
|
||||
this.m_233729_(this.f_105189_.f_91073_, (p_233728_) -> {
|
||||
boolean flag = !blockstate1.m_60795_();
|
||||
if (flag && this.f_105193_ == 0.0F) {
|
||||
BlockState blockstate1 = this.minecraft.level.getBlockState(p_105270_);
|
||||
this.minecraft.getTutorial().onDestroyBlock(this.minecraft.level, p_105270_, blockstate1, 0.0F);
|
||||
this.startPrediction(this.minecraft.level, (p_233728_) -> {
|
||||
boolean flag = !blockstate1.isAir();
|
||||
if (flag && this.destroyProgress == 0.0F) {
|
||||
+ if (event.getUseBlock() != net.minecraftforge.eventbus.api.Event.Result.DENY)
|
||||
blockstate1.m_60686_(this.f_105189_.f_91073_, p_105270_, this.f_105189_.f_91074_);
|
||||
blockstate1.attack(this.minecraft.level, p_105270_, this.minecraft.player);
|
||||
}
|
||||
|
||||
+ ServerboundPlayerActionPacket packet = new ServerboundPlayerActionPacket(ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK, p_105270_, p_105271_, p_233728_);
|
||||
+ if (event.getUseItem() == net.minecraftforge.eventbus.api.Event.Result.DENY) return packet;
|
||||
if (flag && blockstate1.m_60625_(this.f_105189_.f_91074_, this.f_105189_.f_91074_.m_9236_(), p_105270_) >= 1.0F) {
|
||||
this.m_105267_(p_105270_);
|
||||
if (flag && blockstate1.getDestroyProgress(this.minecraft.player, this.minecraft.player.level(), p_105270_) >= 1.0F) {
|
||||
this.destroyBlock(p_105270_);
|
||||
} else {
|
||||
@@ -169,7 +_,7 @@
|
||||
this.f_105189_.f_91073_.m_6801_(this.f_105189_.f_91074_.m_19879_(), this.f_105191_, this.m_287167_());
|
||||
this.minecraft.level.destroyBlockProgress(this.minecraft.player.getId(), this.destroyBlockPos, this.getDestroyStage());
|
||||
}
|
||||
|
||||
- return new ServerboundPlayerActionPacket(ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK, p_105270_, p_105271_, p_233728_);
|
||||
@@ -57,58 +57,58 @@
|
||||
}
|
||||
|
||||
@@ -200,6 +_,7 @@
|
||||
BlockState blockstate1 = this.f_105189_.f_91073_.m_8055_(p_105284_);
|
||||
this.f_105189_.m_91301_().m_120581_(this.f_105189_.f_91073_, p_105284_, blockstate1, 1.0F);
|
||||
this.m_233729_(this.f_105189_.f_91073_, (p_233753_) -> {
|
||||
+ if (!net.minecraftforge.common.ForgeHooks.onLeftClickBlock(this.f_105189_.f_91074_, p_105284_, p_105285_, ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK).isCanceled())
|
||||
this.m_105267_(p_105284_);
|
||||
BlockState blockstate1 = this.minecraft.level.getBlockState(p_105284_);
|
||||
this.minecraft.getTutorial().onDestroyBlock(this.minecraft.level, p_105284_, blockstate1, 1.0F);
|
||||
this.startPrediction(this.minecraft.level, (p_233753_) -> {
|
||||
+ if (!net.minecraftforge.common.ForgeHooks.onLeftClickBlock(this.minecraft.player, p_105284_, p_105285_, ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK).isCanceled())
|
||||
this.destroyBlock(p_105284_);
|
||||
return new ServerboundPlayerActionPacket(ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK, p_105284_, p_105285_, p_233753_);
|
||||
});
|
||||
@@ -212,12 +_,13 @@
|
||||
} else {
|
||||
this.f_105193_ += blockstate.m_60625_(this.f_105189_.f_91074_, this.f_105189_.f_91074_.m_9236_(), p_105284_);
|
||||
if (this.f_105194_ % 4.0F == 0.0F) {
|
||||
- SoundType soundtype = blockstate.m_60827_();
|
||||
+ SoundType soundtype = blockstate.getSoundType(this.f_105189_.f_91073_, p_105284_, this.f_105189_.f_91074_);
|
||||
this.f_105189_.m_91106_().m_120367_(new SimpleSoundInstance(soundtype.m_56778_(), SoundSource.BLOCKS, (soundtype.m_56773_() + 1.0F) / 8.0F, soundtype.m_56774_() * 0.5F, SoundInstance.m_235150_(), p_105284_));
|
||||
this.destroyProgress += blockstate.getDestroyProgress(this.minecraft.player, this.minecraft.player.level(), p_105284_);
|
||||
if (this.destroyTicks % 4.0F == 0.0F) {
|
||||
- SoundType soundtype = blockstate.getSoundType();
|
||||
+ SoundType soundtype = blockstate.getSoundType(this.minecraft.level, p_105284_, this.minecraft.player);
|
||||
this.minecraft.getSoundManager().play(new SimpleSoundInstance(soundtype.getHitSound(), SoundSource.BLOCKS, (soundtype.getVolume() + 1.0F) / 8.0F, soundtype.getPitch() * 0.5F, SoundInstance.createUnseededRandom(), p_105284_));
|
||||
}
|
||||
|
||||
++this.f_105194_;
|
||||
this.f_105189_.m_91301_().m_120581_(this.f_105189_.f_91073_, p_105284_, blockstate, Mth.m_14036_(this.f_105193_, 0.0F, 1.0F));
|
||||
+ if (net.minecraftforge.common.ForgeHooks.onClientMineHold(this.f_105189_.f_91074_, p_105284_, p_105285_).getUseItem() == net.minecraftforge.eventbus.api.Event.Result.DENY) return true;
|
||||
if (this.f_105193_ >= 1.0F) {
|
||||
this.f_105196_ = false;
|
||||
this.m_233729_(this.f_105189_.f_91073_, (p_233739_) -> {
|
||||
++this.destroyTicks;
|
||||
this.minecraft.getTutorial().onDestroyBlock(this.minecraft.level, p_105284_, blockstate, Mth.clamp(this.destroyProgress, 0.0F, 1.0F));
|
||||
+ if (net.minecraftforge.common.ForgeHooks.onClientMineHold(this.minecraft.player, p_105284_, p_105285_).getUseItem() == net.minecraftforge.eventbus.api.Event.Result.DENY) return true;
|
||||
if (this.destroyProgress >= 1.0F) {
|
||||
this.isDestroying = false;
|
||||
this.startPrediction(this.minecraft.level, (p_233739_) -> {
|
||||
@@ -247,7 +_,7 @@
|
||||
}
|
||||
|
||||
public float m_105286_() {
|
||||
- return this.f_105197_.m_46408_() ? 5.0F : 4.5F;
|
||||
+ return (float) this.f_105189_.f_91074_.getBlockReach();
|
||||
public float getPickRange() {
|
||||
- return this.localPlayerMode.isCreative() ? 5.0F : 4.5F;
|
||||
+ return (float) this.minecraft.player.getBlockReach();
|
||||
}
|
||||
|
||||
public void m_105287_() {
|
||||
public void tick() {
|
||||
@@ -262,7 +_,7 @@
|
||||
|
||||
private boolean m_105281_(BlockPos p_105282_) {
|
||||
ItemStack itemstack = this.f_105189_.f_91074_.m_21205_();
|
||||
- return p_105282_.equals(this.f_105191_) && ItemStack.m_150942_(itemstack, this.f_105192_);
|
||||
+ return p_105282_.equals(this.f_105191_) && ItemStack.m_150942_(itemstack, this.f_105192_) && !f_105192_.shouldCauseBlockBreakReset(itemstack);
|
||||
private boolean sameDestroyTarget(BlockPos p_105282_) {
|
||||
ItemStack itemstack = this.minecraft.player.getMainHandItem();
|
||||
- return p_105282_.equals(this.destroyBlockPos) && ItemStack.isSameItemSameTags(itemstack, this.destroyingItem);
|
||||
+ return p_105282_.equals(this.destroyBlockPos) && ItemStack.isSameItemSameTags(itemstack, this.destroyingItem) && !destroyingItem.shouldCauseBlockBreakReset(itemstack);
|
||||
}
|
||||
|
||||
private void m_105297_() {
|
||||
private void ensureHasSentCarriedItem() {
|
||||
@@ -291,25 +_,38 @@
|
||||
private InteractionResult m_233746_(LocalPlayer p_233747_, InteractionHand p_233748_, BlockHitResult p_233749_) {
|
||||
BlockPos blockpos = p_233749_.m_82425_();
|
||||
ItemStack itemstack = p_233747_.m_21120_(p_233748_);
|
||||
private InteractionResult performUseItemOn(LocalPlayer p_233747_, InteractionHand p_233748_, BlockHitResult p_233749_) {
|
||||
BlockPos blockpos = p_233749_.getBlockPos();
|
||||
ItemStack itemstack = p_233747_.getItemInHand(p_233748_);
|
||||
+ net.minecraftforge.event.entity.player.PlayerInteractEvent.RightClickBlock event = net.minecraftforge.common.ForgeHooks.onRightClickBlock(p_233747_, p_233748_, blockpos, p_233749_);
|
||||
+ if (event.isCanceled()) {
|
||||
+ return event.getCancellationResult();
|
||||
+ }
|
||||
if (this.f_105197_ == GameType.SPECTATOR) {
|
||||
if (this.localPlayerMode == GameType.SPECTATOR) {
|
||||
return InteractionResult.SUCCESS;
|
||||
} else {
|
||||
- boolean flag = !p_233747_.m_21205_().m_41619_() || !p_233747_.m_21206_().m_41619_();
|
||||
- boolean flag = !p_233747_.getMainHandItem().isEmpty() || !p_233747_.getOffhandItem().isEmpty();
|
||||
+ UseOnContext useoncontext = new UseOnContext(p_233747_, p_233748_, p_233749_);
|
||||
+ if (event.getUseItem() != net.minecraftforge.eventbus.api.Event.Result.DENY) {
|
||||
+ InteractionResult result = itemstack.onItemUseFirst(useoncontext);
|
||||
@@ -116,30 +116,30 @@
|
||||
+ return result;
|
||||
+ }
|
||||
+ }
|
||||
+ boolean flag = !p_233747_.m_21205_().doesSneakBypassUse(p_233747_.m_9236_(), blockpos, p_233747_) || !p_233747_.m_21206_().doesSneakBypassUse(p_233747_.m_9236_(), blockpos, p_233747_);
|
||||
boolean flag1 = p_233747_.m_36341_() && flag;
|
||||
+ boolean flag = !p_233747_.getMainHandItem().doesSneakBypassUse(p_233747_.level(), blockpos, p_233747_) || !p_233747_.getOffhandItem().doesSneakBypassUse(p_233747_.level(), blockpos, p_233747_);
|
||||
boolean flag1 = p_233747_.isSecondaryUseActive() && flag;
|
||||
- if (!flag1) {
|
||||
BlockState blockstate = this.f_105189_.f_91073_.m_8055_(blockpos);
|
||||
if (!this.f_105190_.m_246351_(blockstate.m_60734_().m_245183_())) {
|
||||
BlockState blockstate = this.minecraft.level.getBlockState(blockpos);
|
||||
if (!this.connection.isFeatureEnabled(blockstate.getBlock().requiredFeatures())) {
|
||||
return InteractionResult.FAIL;
|
||||
}
|
||||
|
||||
+ if (event.getUseBlock() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || (event.getUseBlock() != net.minecraftforge.eventbus.api.Event.Result.DENY && !flag1)) {
|
||||
InteractionResult interactionresult = blockstate.m_60664_(this.f_105189_.f_91073_, p_233747_, p_233748_, p_233749_);
|
||||
if (interactionresult.m_19077_()) {
|
||||
InteractionResult interactionresult = blockstate.use(this.minecraft.level, p_233747_, p_233748_, p_233749_);
|
||||
if (interactionresult.consumesAction()) {
|
||||
return interactionresult;
|
||||
}
|
||||
}
|
||||
|
||||
- if (!itemstack.m_41619_() && !p_233747_.m_36335_().m_41519_(itemstack.m_41720_())) {
|
||||
- if (!itemstack.isEmpty() && !p_233747_.getCooldowns().isOnCooldown(itemstack.getItem())) {
|
||||
- UseOnContext useoncontext = new UseOnContext(p_233747_, p_233748_, p_233749_);
|
||||
+ if (event.getUseItem() == net.minecraftforge.eventbus.api.Event.Result.DENY) {
|
||||
+ return InteractionResult.PASS;
|
||||
+ }
|
||||
+ if (event.getUseItem() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || (!itemstack.m_41619_() && !p_233747_.m_36335_().m_41519_(itemstack.m_41720_()))) {
|
||||
+ if (event.getUseItem() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || (!itemstack.isEmpty() && !p_233747_.getCooldowns().isOnCooldown(itemstack.getItem()))) {
|
||||
InteractionResult interactionresult1;
|
||||
if (this.f_105197_.m_46408_()) {
|
||||
int i = itemstack.m_41613_();
|
||||
if (this.localPlayerMode.isCreative()) {
|
||||
int i = itemstack.getCount();
|
||||
@@ -340,10 +_,17 @@
|
||||
mutableobject.setValue(InteractionResult.PASS);
|
||||
return serverbounduseitempacket;
|
||||
@@ -149,22 +149,22 @@
|
||||
+ mutableobject.setValue(cancelResult);
|
||||
+ return serverbounduseitempacket;
|
||||
+ }
|
||||
InteractionResultHolder<ItemStack> interactionresultholder = itemstack.m_41682_(this.f_105189_.f_91073_, p_233722_, p_233723_);
|
||||
ItemStack itemstack1 = interactionresultholder.m_19095_();
|
||||
InteractionResultHolder<ItemStack> interactionresultholder = itemstack.use(this.minecraft.level, p_233722_, p_233723_);
|
||||
ItemStack itemstack1 = interactionresultholder.getObject();
|
||||
if (itemstack1 != itemstack) {
|
||||
p_233722_.m_21008_(p_233723_, itemstack1);
|
||||
+ if (itemstack1.m_41619_())
|
||||
p_233722_.setItemInHand(p_233723_, itemstack1);
|
||||
+ if (itemstack1.isEmpty())
|
||||
+ net.minecraftforge.event.ForgeEventFactory.onPlayerDestroyItem(p_233722_, itemstack, p_233723_);
|
||||
}
|
||||
|
||||
mutableobject.setValue(interactionresultholder.m_19089_());
|
||||
mutableobject.setValue(interactionresultholder.getResult());
|
||||
@@ -382,6 +_,9 @@
|
||||
this.m_105297_();
|
||||
Vec3 vec3 = p_105233_.m_82450_().m_82492_(p_105232_.m_20185_(), p_105232_.m_20186_(), p_105232_.m_20189_());
|
||||
this.f_105190_.m_295327_(ServerboundInteractPacket.m_179612_(p_105232_, p_105231_.m_6144_(), p_105234_, vec3));
|
||||
+ if (this.f_105197_ == GameType.SPECTATOR) return InteractionResult.PASS; // don't fire for spectators to match non-specific EntityInteract
|
||||
this.ensureHasSentCarriedItem();
|
||||
Vec3 vec3 = p_105233_.getLocation().subtract(p_105232_.getX(), p_105232_.getY(), p_105232_.getZ());
|
||||
this.connection.send(ServerboundInteractPacket.createInteractionPacket(p_105232_, p_105231_.isShiftKeyDown(), p_105234_, vec3));
|
||||
+ if (this.localPlayerMode == GameType.SPECTATOR) return InteractionResult.PASS; // don't fire for spectators to match non-specific EntityInteract
|
||||
+ InteractionResult cancelResult = net.minecraftforge.common.ForgeHooks.onInteractEntityAt(p_105231_, p_105232_, p_105233_, p_105234_);
|
||||
+ if(cancelResult != null) return cancelResult;
|
||||
return this.f_105197_ == GameType.SPECTATOR ? InteractionResult.PASS : p_105232_.m_7111_(p_105231_, vec3, p_105234_);
|
||||
return this.localPlayerMode == GameType.SPECTATOR ? InteractionResult.PASS : p_105232_.interactAt(p_105231_, vec3, p_105234_);
|
||||
}
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
@@ -89,6 +_,7 @@
|
||||
}
|
||||
|
||||
protected void m_105317_(GameType p_105318_) {
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onClientChangeGameType(this, this.f_105300_, p_105318_);
|
||||
this.f_105300_ = p_105318_;
|
||||
protected void setGameMode(GameType p_105318_) {
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onClientChangeGameType(this, this.gameMode, p_105318_);
|
||||
this.gameMode = p_105318_;
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
--- a/net/minecraft/client/multiplayer/ServerData.java
|
||||
+++ b/net/minecraft/client/multiplayer/ServerData.java
|
||||
@@ -32,6 +_,7 @@
|
||||
private byte[] f_271511_;
|
||||
private ServerData.Type f_291831_;
|
||||
private boolean f_242950_;
|
||||
private byte[] iconBytes;
|
||||
private ServerData.Type type;
|
||||
private boolean enforcesSecureChat;
|
||||
+ public net.minecraftforge.client.ExtendedServerListData forgeData = null;
|
||||
|
||||
public ServerData(String p_105375_, String p_105376_, ServerData.Type p_297678_) {
|
||||
this.f_105362_ = p_105375_;
|
||||
this.name = p_105375_;
|
||||
@@ -5,6 +5,6 @@
|
||||
|
||||
});
|
||||
+ net.minecraftforge.client.ForgeHooksClient.processForgeListPingData(serverstatus, p_105460_);
|
||||
this.f_105477_ = Util.m_137550_();
|
||||
connection.m_129512_(new ServerboundPingRequestPacket(this.f_105477_));
|
||||
this.f_105475_ = true;
|
||||
this.pingStart = Util.getMillis();
|
||||
connection.send(new ServerboundPingRequestPacket(this.pingStart));
|
||||
this.success = true;
|
||||
@@ -2,40 +2,40 @@
|
||||
+++ b/net/minecraft/client/multiplayer/chat/ChatListener.java
|
||||
@@ -119,7 +_,9 @@
|
||||
Instant instant = Instant.now();
|
||||
this.m_246163_((MessageSignature)null, () -> {
|
||||
Component component = p_251256_.m_240977_(p_250375_);
|
||||
- this.f_240348_.f_91065_.m_93076_().m_93785_(component);
|
||||
+ Component forgeComponent = net.minecraftforge.client.ForgeHooksClient.onClientChat(p_251256_, component, Util.f_137441_);
|
||||
this.handleMessage((MessageSignature)null, () -> {
|
||||
Component component = p_251256_.decorate(p_250375_);
|
||||
- this.minecraft.gui.getChat().addMessage(component);
|
||||
+ Component forgeComponent = net.minecraftforge.client.ForgeHooksClient.onClientChat(p_251256_, component, Util.NIL_UUID);
|
||||
+ if (forgeComponent == null) return false;
|
||||
+ this.f_240348_.f_91065_.m_93076_().m_93785_(forgeComponent);
|
||||
this.m_241119_(p_251256_, p_250375_);
|
||||
this.m_240498_(component, instant);
|
||||
this.f_240659_ = Util.m_137550_();
|
||||
+ this.minecraft.gui.getChat().addMessage(forgeComponent);
|
||||
this.narrateChatMessage(p_251256_, p_250375_);
|
||||
this.logSystemMessage(component, instant);
|
||||
this.previousMessageTime = Util.getMillis();
|
||||
@@ -136,12 +_,16 @@
|
||||
MessageSignature messagesignature = p_249430_.f_244279_();
|
||||
FilterMask filtermask = p_249430_.f_242992_();
|
||||
if (filtermask.m_243095_()) {
|
||||
- this.f_240348_.f_91065_.m_93076_().m_240964_(p_249231_, messagesignature, guimessagetag);
|
||||
+ Component forgeComponent = net.minecraftforge.client.ForgeHooksClient.onClientPlayerChat(p_251766_, p_249231_, p_249430_, p_249430_.m_245167_());
|
||||
MessageSignature messagesignature = p_249430_.signature();
|
||||
FilterMask filtermask = p_249430_.filterMask();
|
||||
if (filtermask.isEmpty()) {
|
||||
- this.minecraft.gui.getChat().addMessage(p_249231_, messagesignature, guimessagetag);
|
||||
+ Component forgeComponent = net.minecraftforge.client.ForgeHooksClient.onClientPlayerChat(p_251766_, p_249231_, p_249430_, p_249430_.sender());
|
||||
+ if (forgeComponent == null) return false;
|
||||
+ this.f_240348_.f_91065_.m_93076_().m_240964_(forgeComponent, messagesignature, guimessagetag);
|
||||
this.m_241119_(p_251766_, p_249430_.m_245692_());
|
||||
+ this.minecraft.gui.getChat().addMessage(forgeComponent, messagesignature, guimessagetag);
|
||||
this.narrateChatMessage(p_251766_, p_249430_.decoratedContent());
|
||||
} else {
|
||||
Component component = filtermask.m_246134_(p_249430_.m_245728_());
|
||||
Component component = filtermask.applyWithFormatting(p_249430_.signedContent());
|
||||
if (component != null) {
|
||||
- this.f_240348_.f_91065_.m_93076_().m_240964_(p_251766_.m_240977_(component), messagesignature, guimessagetag);
|
||||
+ Component forgeComponent = net.minecraftforge.client.ForgeHooksClient.onClientPlayerChat(p_251766_, p_251766_.m_240977_(component), p_249430_, p_249430_.m_245167_());
|
||||
- this.minecraft.gui.getChat().addMessage(p_251766_.decorate(component), messagesignature, guimessagetag);
|
||||
+ Component forgeComponent = net.minecraftforge.client.ForgeHooksClient.onClientPlayerChat(p_251766_, p_251766_.decorate(component), p_249430_, p_249430_.sender());
|
||||
+ if (forgeComponent == null) return false;
|
||||
+ this.f_240348_.f_91065_.m_93076_().m_240964_(forgeComponent, messagesignature, guimessagetag);
|
||||
this.m_241119_(p_251766_, component);
|
||||
+ this.minecraft.gui.getChat().addMessage(forgeComponent, messagesignature, guimessagetag);
|
||||
this.narrateChatMessage(p_251766_, component);
|
||||
}
|
||||
}
|
||||
@@ -174,6 +_,8 @@
|
||||
|
||||
public void m_240494_(Component p_240522_, boolean p_240642_) {
|
||||
if (!this.f_240348_.f_91066_.m_231833_().m_231551_() || !this.f_240348_.m_91246_(this.m_240473_(p_240522_))) {
|
||||
public void handleSystemMessage(Component p_240522_, boolean p_240642_) {
|
||||
if (!this.minecraft.options.hideMatchedNames().get() || !this.minecraft.isBlocked(this.guessChatUUID(p_240522_))) {
|
||||
+ p_240522_ = net.minecraftforge.client.ForgeHooksClient.onClientSystemChat(p_240522_, p_240642_);
|
||||
+ if (p_240522_ == null) return;
|
||||
if (p_240642_) {
|
||||
this.f_240348_.f_91065_.m_93063_(p_240522_, false);
|
||||
this.minecraft.gui.setOverlayMessage(p_240522_, false);
|
||||
} else {
|
||||
@@ -1,11 +1,11 @@
|
||||
--- a/net/minecraft/client/multiplayer/resolver/AddressCheck.java
|
||||
+++ b/net/minecraft/client/multiplayer/resolver/AddressCheck.java
|
||||
@@ -16,7 +_,7 @@
|
||||
boolean m_142408_(ServerAddress p_171830_);
|
||||
boolean isAllowed(ServerAddress p_171830_);
|
||||
|
||||
static AddressCheck m_171828_() {
|
||||
static AddressCheck createFromService() {
|
||||
- final ImmutableList<Predicate<String>> immutablelist = Streams.stream(ServiceLoader.load(BlockListSupplier.class)).map(BlockListSupplier::createBlockList).filter(Objects::nonNull).collect(ImmutableList.toImmutableList());
|
||||
+ final ImmutableList<Predicate<String>> immutablelist = Streams.stream(ServiceLoader.load(BlockListSupplier.class, net.minecraftforge.fml.loading.FMLLoader.class.getClassLoader())).map(BlockListSupplier::createBlockList).filter(Objects::nonNull).collect(ImmutableList.toImmutableList());
|
||||
return new AddressCheck() {
|
||||
public boolean m_142649_(ResolvedServerAddress p_171835_) {
|
||||
String s = p_171835_.m_142727_();
|
||||
public boolean isAllowed(ResolvedServerAddress p_171835_) {
|
||||
String s = p_171835_.getHostName();
|
||||
@@ -4,9 +4,9 @@
|
||||
|
||||
protected BreakingItemParticle(ClientLevel p_105665_, double p_105666_, double p_105667_, double p_105668_, ItemStack p_105669_) {
|
||||
super(p_105665_, p_105666_, p_105667_, p_105668_, 0.0D, 0.0D, 0.0D);
|
||||
- this.m_108337_(Minecraft.m_91087_().m_91291_().m_174264_(p_105669_, p_105665_, (LivingEntity)null, 0).m_6160_());
|
||||
+ var model = Minecraft.m_91087_().m_91291_().m_174264_(p_105669_, p_105665_, (LivingEntity)null, 0);
|
||||
+ this.m_108337_(model.m_7343_().m_173464_(model, p_105669_, p_105665_, null, 0).getParticleIcon(net.minecraftforge.client.model.data.ModelData.EMPTY));
|
||||
this.f_107226_ = 1.0F;
|
||||
this.f_107663_ /= 2.0F;
|
||||
this.f_105643_ = this.f_107223_.m_188501_() * 3.0F;
|
||||
- this.setSprite(Minecraft.getInstance().getItemRenderer().getModel(p_105669_, p_105665_, (LivingEntity)null, 0).getParticleIcon());
|
||||
+ var model = Minecraft.getInstance().getItemRenderer().getModel(p_105669_, p_105665_, (LivingEntity)null, 0);
|
||||
+ this.setSprite(model.getOverrides().resolve(model, p_105669_, p_105665_, null, 0).getParticleIcon(net.minecraftforge.client.model.data.ModelData.EMPTY));
|
||||
this.gravity = 1.0F;
|
||||
this.quadSize /= 2.0F;
|
||||
this.uo = this.random.nextFloat() * 3.0F;
|
||||
@@ -1,10 +1,10 @@
|
||||
--- a/net/minecraft/client/particle/EnchantmentTableParticle.java
|
||||
+++ b/net/minecraft/client/particle/EnchantmentTableParticle.java
|
||||
@@ -73,6 +_,7 @@
|
||||
this.f_107212_ = this.f_106461_ + this.f_107215_ * (double)f;
|
||||
this.f_107213_ = this.f_106462_ + this.f_107216_ * (double)f - (double)(f1 * 1.2F);
|
||||
this.f_107214_ = this.f_106460_ + this.f_107217_ * (double)f;
|
||||
+ this.m_107264_(this.f_107212_, this.f_107213_, this.f_107214_); // FORGE: update the particle's bounding box
|
||||
this.x = this.xStart + this.xd * (double)f;
|
||||
this.y = this.yStart + this.yd * (double)f - (double)(f1 * 1.2F);
|
||||
this.z = this.zStart + this.zd * (double)f;
|
||||
+ this.setPos(this.x, this.y, this.z); // FORGE: update the particle's bounding box
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,24 +2,24 @@
|
||||
+++ b/net/minecraft/client/particle/FireworkParticles.java
|
||||
@@ -172,7 +_,7 @@
|
||||
} else {
|
||||
for(int i = 0; i < this.f_106752_.size(); ++i) {
|
||||
CompoundTag compoundtag = this.f_106752_.m_128728_(i);
|
||||
- if (FireworkRocketItem.Shape.m_41237_(compoundtag.m_128445_("Type")) == FireworkRocketItem.Shape.LARGE_BALL) {
|
||||
for(int i = 0; i < this.explosions.size(); ++i) {
|
||||
CompoundTag compoundtag = this.explosions.getCompound(i);
|
||||
- if (FireworkRocketItem.Shape.byId(compoundtag.getByte("Type")) == FireworkRocketItem.Shape.LARGE_BALL) {
|
||||
+ if (FireworkRocketItem.Shape.getShape(compoundtag) == FireworkRocketItem.Shape.LARGE_BALL) {
|
||||
flag1 = true;
|
||||
break;
|
||||
}
|
||||
@@ -192,7 +_,7 @@
|
||||
if (this.f_106754_ % 2 == 0 && this.f_106752_ != null && this.f_106754_ / 2 < this.f_106752_.size()) {
|
||||
int k = this.f_106754_ / 2;
|
||||
CompoundTag compoundtag1 = this.f_106752_.m_128728_(k);
|
||||
- FireworkRocketItem.Shape fireworkrocketitem$shape = FireworkRocketItem.Shape.m_41237_(compoundtag1.m_128445_("Type"));
|
||||
if (this.life % 2 == 0 && this.explosions != null && this.life / 2 < this.explosions.size()) {
|
||||
int k = this.life / 2;
|
||||
CompoundTag compoundtag1 = this.explosions.getCompound(k);
|
||||
- FireworkRocketItem.Shape fireworkrocketitem$shape = FireworkRocketItem.Shape.byId(compoundtag1.getByte("Type"));
|
||||
+ FireworkRocketItem.Shape fireworkrocketitem$shape = FireworkRocketItem.Shape.getShape(compoundtag1);
|
||||
boolean flag4 = compoundtag1.m_128471_("Trail");
|
||||
boolean flag2 = compoundtag1.m_128471_("Flicker");
|
||||
int[] aint = compoundtag1.m_128465_("Colors");
|
||||
boolean flag4 = compoundtag1.getBoolean("Trail");
|
||||
boolean flag2 = compoundtag1.getBoolean("Flicker");
|
||||
int[] aint = compoundtag1.getIntArray("Colors");
|
||||
@@ -201,6 +_,10 @@
|
||||
aint = new int[]{DyeColor.BLACK.m_41070_()};
|
||||
aint = new int[]{DyeColor.BLACK.getFireworkColor()};
|
||||
}
|
||||
|
||||
+ var factory = net.minecraftforge.client.FireworkShapeFactoryRegistry.get(fireworkrocketitem$shape);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
--- a/net/minecraft/client/particle/Particle.java
|
||||
+++ b/net/minecraft/client/particle/Particle.java
|
||||
@@ -226,4 +_,16 @@
|
||||
public Optional<ParticleGroup> m_142654_() {
|
||||
public Optional<ParticleGroup> getParticleGroup() {
|
||||
return Optional.empty();
|
||||
}
|
||||
+
|
||||
@@ -14,6 +14,6 @@
|
||||
+ }
|
||||
+
|
||||
+ public net.minecraft.world.phys.Vec3 getPos() {
|
||||
+ return new net.minecraft.world.phys.Vec3(this.f_107212_, this.f_107213_, this.f_107214_);
|
||||
+ return new net.minecraft.world.phys.Vec3(this.x, this.y, this.z);
|
||||
+ }
|
||||
}
|
||||
@@ -1,34 +1,34 @@
|
||||
--- a/net/minecraft/client/particle/ParticleEngine.java
|
||||
+++ b/net/minecraft/client/particle/ParticleEngine.java
|
||||
@@ -74,11 +_,11 @@
|
||||
private static final int f_172264_ = 16384;
|
||||
private static final List<ParticleRenderType> f_107288_ = ImmutableList.of(ParticleRenderType.f_107429_, ParticleRenderType.f_107430_, ParticleRenderType.f_107432_, ParticleRenderType.f_107431_, ParticleRenderType.f_107433_);
|
||||
protected ClientLevel f_107287_;
|
||||
- private final Map<ParticleRenderType, Queue<Particle>> f_107289_ = Maps.newIdentityHashMap();
|
||||
+ private final Map<ParticleRenderType, Queue<Particle>> f_107289_ = Maps.newTreeMap(net.minecraftforge.client.ForgeHooksClient.makeParticleRenderTypeComparator(f_107288_));
|
||||
private final Queue<TrackingEmitter> f_107290_ = Queues.newArrayDeque();
|
||||
private final TextureManager f_107291_;
|
||||
private final RandomSource f_107292_ = RandomSource.m_216327_();
|
||||
- private final Int2ObjectMap<ParticleProvider<?>> f_107293_ = new Int2ObjectOpenHashMap<>();
|
||||
+ private final Map<ResourceLocation, ParticleProvider<?>> f_107293_ = new java.util.HashMap<>();
|
||||
private final Queue<Particle> f_107294_ = Queues.newArrayDeque();
|
||||
private final Map<ResourceLocation, ParticleEngine.MutableSpriteSet> f_107295_ = Maps.newHashMap();
|
||||
private final TextureAtlas f_107296_;
|
||||
private static final int MAX_PARTICLES_PER_LAYER = 16384;
|
||||
private static final List<ParticleRenderType> RENDER_ORDER = ImmutableList.of(ParticleRenderType.TERRAIN_SHEET, ParticleRenderType.PARTICLE_SHEET_OPAQUE, ParticleRenderType.PARTICLE_SHEET_LIT, ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT, ParticleRenderType.CUSTOM);
|
||||
protected ClientLevel level;
|
||||
- private final Map<ParticleRenderType, Queue<Particle>> particles = Maps.newIdentityHashMap();
|
||||
+ private final Map<ParticleRenderType, Queue<Particle>> particles = Maps.newTreeMap(net.minecraftforge.client.ForgeHooksClient.makeParticleRenderTypeComparator(RENDER_ORDER));
|
||||
private final Queue<TrackingEmitter> trackingEmitters = Queues.newArrayDeque();
|
||||
private final TextureManager textureManager;
|
||||
private final RandomSource random = RandomSource.create();
|
||||
- private final Int2ObjectMap<ParticleProvider<?>> providers = new Int2ObjectOpenHashMap<>();
|
||||
+ private final Map<ResourceLocation, ParticleProvider<?>> providers = new java.util.HashMap<>();
|
||||
private final Queue<Particle> particlesToAdd = Queues.newArrayDeque();
|
||||
private final Map<ResourceLocation, ParticleEngine.MutableSpriteSet> spriteSets = Maps.newHashMap();
|
||||
private final TextureAtlas textureAtlas;
|
||||
@@ -194,10 +_,14 @@
|
||||
this.m_107378_(ParticleTypes.f_276512_, SuspendedTownParticle.EggCrackProvider::new);
|
||||
this.register(ParticleTypes.EGG_CRACK, SuspendedTownParticle.EggCrackProvider::new);
|
||||
}
|
||||
|
||||
+ /** @deprecated Register via {@link net.minecraftforge.client.event.RegisterParticleProvidersEvent} */
|
||||
+ @Deprecated
|
||||
public <T extends ParticleOptions> void m_107381_(ParticleType<T> p_107382_, ParticleProvider<T> p_107383_) {
|
||||
- this.f_107293_.put(BuiltInRegistries.f_257034_.m_7447_(p_107382_), p_107383_);
|
||||
+ this.f_107293_.put(BuiltInRegistries.f_257034_.m_7981_(p_107382_), p_107383_);
|
||||
public <T extends ParticleOptions> void register(ParticleType<T> p_107382_, ParticleProvider<T> p_107383_) {
|
||||
- this.providers.put(BuiltInRegistries.PARTICLE_TYPE.getId(p_107382_), p_107383_);
|
||||
+ this.providers.put(BuiltInRegistries.PARTICLE_TYPE.getKey(p_107382_), p_107383_);
|
||||
}
|
||||
|
||||
+ /** @deprecated Register via {@link net.minecraftforge.client.event.RegisterParticleProvidersEvent} */
|
||||
+ @Deprecated
|
||||
public <T extends ParticleOptions> void m_272137_(ParticleType<T> p_273423_, ParticleProvider.Sprite<T> p_273134_) {
|
||||
this.m_107378_(p_273423_, (p_272320_) -> {
|
||||
public <T extends ParticleOptions> void register(ParticleType<T> p_273423_, ParticleProvider.Sprite<T> p_273134_) {
|
||||
this.register(p_273423_, (p_272320_) -> {
|
||||
return (p_272323_, p_272324_, p_272325_, p_272326_, p_272327_, p_272328_, p_272329_, p_272330_) -> {
|
||||
@@ -211,10 +_,12 @@
|
||||
});
|
||||
@@ -36,21 +36,21 @@
|
||||
|
||||
+ /** @deprecated Register via {@link net.minecraftforge.client.event.RegisterParticleProvidersEvent} */
|
||||
+ @Deprecated
|
||||
public <T extends ParticleOptions> void m_107378_(ParticleType<T> p_107379_, ParticleEngine.SpriteParticleRegistration<T> p_107380_) {
|
||||
public <T extends ParticleOptions> void register(ParticleType<T> p_107379_, ParticleEngine.SpriteParticleRegistration<T> p_107380_) {
|
||||
ParticleEngine.MutableSpriteSet particleengine$mutablespriteset = new ParticleEngine.MutableSpriteSet();
|
||||
this.f_107295_.put(BuiltInRegistries.f_257034_.m_7981_(p_107379_), particleengine$mutablespriteset);
|
||||
- this.f_107293_.put(BuiltInRegistries.f_257034_.m_7447_(p_107379_), p_107380_.m_107419_(particleengine$mutablespriteset));
|
||||
+ this.f_107293_.put(BuiltInRegistries.f_257034_.m_7981_(p_107379_), p_107380_.m_107419_(particleengine$mutablespriteset));
|
||||
this.spriteSets.put(BuiltInRegistries.PARTICLE_TYPE.getKey(p_107379_), particleengine$mutablespriteset);
|
||||
- this.providers.put(BuiltInRegistries.PARTICLE_TYPE.getId(p_107379_), p_107380_.create(particleengine$mutablespriteset));
|
||||
+ this.providers.put(BuiltInRegistries.PARTICLE_TYPE.getKey(p_107379_), p_107380_.create(particleengine$mutablespriteset));
|
||||
}
|
||||
|
||||
public CompletableFuture<Void> m_5540_(PreparableReloadListener.PreparationBarrier p_107305_, ResourceManager p_107306_, ProfilerFiller p_107307_, ProfilerFiller p_107308_, Executor p_107309_, Executor p_107310_) {
|
||||
public CompletableFuture<Void> reload(PreparableReloadListener.PreparationBarrier p_107305_, ResourceManager p_107306_, ProfilerFiller p_107307_, ProfilerFiller p_107308_, Executor p_107309_, Executor p_107310_) {
|
||||
@@ -313,7 +_,7 @@
|
||||
|
||||
@Nullable
|
||||
private <T extends ParticleOptions> Particle m_107395_(T p_107396_, double p_107397_, double p_107398_, double p_107399_, double p_107400_, double p_107401_, double p_107402_) {
|
||||
- ParticleProvider<T> particleprovider = (ParticleProvider<T>)this.f_107293_.get(BuiltInRegistries.f_257034_.m_7447_(p_107396_.m_6012_()));
|
||||
+ ParticleProvider<T> particleprovider = (ParticleProvider<T>)this.f_107293_.get(BuiltInRegistries.f_257034_.m_7981_(p_107396_.m_6012_()));
|
||||
return particleprovider == null ? null : particleprovider.m_6966_(p_107396_, this.f_107287_, p_107397_, p_107398_, p_107399_, p_107400_, p_107401_, p_107402_);
|
||||
private <T extends ParticleOptions> Particle makeParticle(T p_107396_, double p_107397_, double p_107398_, double p_107399_, double p_107400_, double p_107401_, double p_107402_) {
|
||||
- ParticleProvider<T> particleprovider = (ParticleProvider<T>)this.providers.get(BuiltInRegistries.PARTICLE_TYPE.getId(p_107396_.getType()));
|
||||
+ ParticleProvider<T> particleprovider = (ParticleProvider<T>)this.providers.get(BuiltInRegistries.PARTICLE_TYPE.getKey(p_107396_.getType()));
|
||||
return particleprovider == null ? null : particleprovider.createParticle(p_107396_, this.level, p_107397_, p_107398_, p_107399_, p_107400_, p_107401_, p_107402_);
|
||||
}
|
||||
|
||||
@@ -394,15 +_,24 @@
|
||||
@@ -59,69 +59,69 @@
|
||||
|
||||
+ /**@deprecated Forge: use {@link #render(PoseStack, MultiBufferSource.BufferSource, LightTexture, Camera, float, net.minecraft.client.renderer.culling.Frustum)} with Frustum as additional parameter*/
|
||||
+ @Deprecated
|
||||
public void m_107336_(PoseStack p_107337_, MultiBufferSource.BufferSource p_107338_, LightTexture p_107339_, Camera p_107340_, float p_107341_) {
|
||||
public void render(PoseStack p_107337_, MultiBufferSource.BufferSource p_107338_, LightTexture p_107339_, Camera p_107340_, float p_107341_) {
|
||||
+ render(p_107337_, p_107338_, p_107339_, p_107340_, p_107341_, null);
|
||||
+ }
|
||||
+
|
||||
+ public void render(PoseStack p_107337_, MultiBufferSource.BufferSource p_107338_, LightTexture p_107339_, Camera p_107340_, float p_107341_, @Nullable net.minecraft.client.renderer.culling.Frustum clippingHelper) {
|
||||
p_107339_.m_109896_();
|
||||
p_107339_.turnOnLightLayer();
|
||||
RenderSystem.enableDepthTest();
|
||||
+ RenderSystem.activeTexture(org.lwjgl.opengl.GL13.GL_TEXTURE2);
|
||||
+ RenderSystem.activeTexture(org.lwjgl.opengl.GL13.GL_TEXTURE0);
|
||||
PoseStack posestack = RenderSystem.getModelViewStack();
|
||||
posestack.m_85836_();
|
||||
posestack.m_252931_(p_107337_.m_85850_().m_252922_());
|
||||
posestack.pushPose();
|
||||
posestack.mulPoseMatrix(p_107337_.last().pose());
|
||||
RenderSystem.applyModelViewMatrix();
|
||||
|
||||
- for(ParticleRenderType particlerendertype : f_107288_) {
|
||||
+ for(ParticleRenderType particlerendertype : this.f_107289_.keySet()) { // Forge: allow custom IParticleRenderType's
|
||||
+ if (particlerendertype == ParticleRenderType.f_107434_) continue;
|
||||
Iterable<Particle> iterable = this.f_107289_.get(particlerendertype);
|
||||
- for(ParticleRenderType particlerendertype : RENDER_ORDER) {
|
||||
+ for(ParticleRenderType particlerendertype : this.particles.keySet()) { // Forge: allow custom IParticleRenderType's
|
||||
+ if (particlerendertype == ParticleRenderType.NO_RENDER) continue;
|
||||
Iterable<Particle> iterable = this.particles.get(particlerendertype);
|
||||
if (iterable != null) {
|
||||
RenderSystem.setShader(GameRenderer::m_172829_);
|
||||
RenderSystem.setShader(GameRenderer::getParticleShader);
|
||||
@@ -411,6 +_,7 @@
|
||||
particlerendertype.m_6505_(bufferbuilder, this.f_107291_);
|
||||
particlerendertype.begin(bufferbuilder, this.textureManager);
|
||||
|
||||
for(Particle particle : iterable) {
|
||||
+ if (clippingHelper != null && particle.shouldCull() && !clippingHelper.m_113029_(particle.m_107277_())) continue;
|
||||
+ if (clippingHelper != null && particle.shouldCull() && !clippingHelper.isVisible(particle.getBoundingBox())) continue;
|
||||
try {
|
||||
particle.m_5744_(bufferbuilder, p_107340_, p_107341_);
|
||||
particle.render(bufferbuilder, p_107340_, p_107341_);
|
||||
} catch (Throwable throwable) {
|
||||
@@ -440,7 +_,7 @@
|
||||
}
|
||||
|
||||
public void m_107355_(BlockPos p_107356_, BlockState p_107357_) {
|
||||
- if (!p_107357_.m_60795_() && p_107357_.m_295777_()) {
|
||||
+ if (!p_107357_.m_60795_() && !net.minecraftforge.client.extensions.common.IClientBlockExtensions.of(p_107357_).addDestroyEffects(p_107357_, this.f_107287_, p_107356_, this)) {
|
||||
VoxelShape voxelshape = p_107357_.m_60808_(this.f_107287_, p_107356_);
|
||||
public void destroy(BlockPos p_107356_, BlockState p_107357_) {
|
||||
- if (!p_107357_.isAir() && p_107357_.shouldSpawnTerrainParticles()) {
|
||||
+ if (!p_107357_.isAir() && !net.minecraftforge.client.extensions.common.IClientBlockExtensions.of(p_107357_).addDestroyEffects(p_107357_, this.level, p_107356_, this)) {
|
||||
VoxelShape voxelshape = p_107357_.getShape(this.level, p_107356_);
|
||||
double d0 = 0.25D;
|
||||
voxelshape.m_83286_((p_172273_, p_172274_, p_172275_, p_172276_, p_172277_, p_172278_) -> {
|
||||
voxelshape.forAllBoxes((p_172273_, p_172274_, p_172275_, p_172276_, p_172277_, p_172278_) -> {
|
||||
@@ -460,7 +_,7 @@
|
||||
double d7 = d4 * d1 + p_172273_;
|
||||
double d8 = d5 * d2 + p_172274_;
|
||||
double d9 = d6 * d3 + p_172275_;
|
||||
- this.m_107344_(new TerrainParticle(this.f_107287_, (double)p_107356_.m_123341_() + d7, (double)p_107356_.m_123342_() + d8, (double)p_107356_.m_123343_() + d9, d4 - 0.5D, d5 - 0.5D, d6 - 0.5D, p_107357_, p_107356_));
|
||||
+ this.m_107344_(new TerrainParticle(this.f_107287_, (double)p_107356_.m_123341_() + d7, (double)p_107356_.m_123342_() + d8, (double)p_107356_.m_123343_() + d9, d4 - 0.5D, d5 - 0.5D, d6 - 0.5D, p_107357_, p_107356_).updateSprite(p_107357_, p_107356_));
|
||||
- this.add(new TerrainParticle(this.level, (double)p_107356_.getX() + d7, (double)p_107356_.getY() + d8, (double)p_107356_.getZ() + d9, d4 - 0.5D, d5 - 0.5D, d6 - 0.5D, p_107357_, p_107356_));
|
||||
+ this.add(new TerrainParticle(this.level, (double)p_107356_.getX() + d7, (double)p_107356_.getY() + d8, (double)p_107356_.getZ() + d9, d4 - 0.5D, d5 - 0.5D, d6 - 0.5D, p_107357_, p_107356_).updateSprite(p_107357_, p_107356_));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -504,12 +_,18 @@
|
||||
d0 = (double)i + aabb.f_82291_ + (double)0.1F;
|
||||
d0 = (double)i + aabb.maxX + (double)0.1F;
|
||||
}
|
||||
|
||||
- this.m_107344_((new TerrainParticle(this.f_107287_, d0, d1, d2, 0.0D, 0.0D, 0.0D, blockstate, p_107368_)).m_107268_(0.2F).m_6569_(0.6F));
|
||||
+ this.m_107344_((new TerrainParticle(this.f_107287_, d0, d1, d2, 0.0D, 0.0D, 0.0D, blockstate, p_107368_).updateSprite(blockstate, p_107368_)).m_107268_(0.2F).m_6569_(0.6F));
|
||||
- this.add((new TerrainParticle(this.level, d0, d1, d2, 0.0D, 0.0D, 0.0D, blockstate, p_107368_)).setPower(0.2F).scale(0.6F));
|
||||
+ this.add((new TerrainParticle(this.level, d0, d1, d2, 0.0D, 0.0D, 0.0D, blockstate, p_107368_).updateSprite(blockstate, p_107368_)).setPower(0.2F).scale(0.6F));
|
||||
}
|
||||
}
|
||||
|
||||
public String m_107403_() {
|
||||
return String.valueOf(this.f_107289_.values().stream().mapToInt(Collection::size).sum());
|
||||
public String countParticles() {
|
||||
return String.valueOf(this.particles.values().stream().mapToInt(Collection::size).sum());
|
||||
+ }
|
||||
+
|
||||
+ public void addBlockHitEffects(BlockPos pos, net.minecraft.world.phys.BlockHitResult target) {
|
||||
+ BlockState state = f_107287_.m_8055_(pos);
|
||||
+ if (!net.minecraftforge.client.extensions.common.IClientBlockExtensions.of(state).addHitEffects(state, f_107287_, target, this))
|
||||
+ m_107367_(pos, target.m_82434_());
|
||||
+ BlockState state = level.getBlockState(pos);
|
||||
+ if (!net.minecraftforge.client.extensions.common.IClientBlockExtensions.of(state).addHitEffects(state, level, target, this))
|
||||
+ crack(pos, target.getDirection());
|
||||
}
|
||||
|
||||
private boolean m_172279_(ParticleGroup p_172280_) {
|
||||
private boolean hasSpaceInParticleLimit(ParticleGroup p_172280_) {
|
||||
@@ -1,10 +1,10 @@
|
||||
--- a/net/minecraft/client/particle/PortalParticle.java
|
||||
+++ b/net/minecraft/client/particle/PortalParticle.java
|
||||
@@ -75,6 +_,7 @@
|
||||
this.f_107212_ = this.f_107548_ + this.f_107215_ * (double)f2;
|
||||
this.f_107213_ = this.f_107549_ + this.f_107216_ * (double)f2 + (double)(1.0F - f);
|
||||
this.f_107214_ = this.f_107547_ + this.f_107217_ * (double)f2;
|
||||
+ this.m_107264_(this.f_107212_, this.f_107213_, this.f_107214_); // FORGE: update the particle's bounding box
|
||||
this.x = this.xStart + this.xd * (double)f2;
|
||||
this.y = this.yStart + this.yd * (double)f2 + (double)(1.0F - f);
|
||||
this.z = this.zStart + this.zd * (double)f2;
|
||||
+ this.setPos(this.x, this.y, this.z); // FORGE: update the particle's bounding box
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
--- a/net/minecraft/client/particle/ReversePortalParticle.java
|
||||
+++ b/net/minecraft/client/particle/ReversePortalParticle.java
|
||||
@@ -29,6 +_,7 @@
|
||||
this.f_107212_ += this.f_107215_ * (double)f;
|
||||
this.f_107213_ += this.f_107216_ * (double)f;
|
||||
this.f_107214_ += this.f_107217_ * (double)f;
|
||||
+ this.m_107264_(this.f_107212_, this.f_107213_, this.f_107214_); // FORGE: update the particle's bounding box
|
||||
this.x += this.xd * (double)f;
|
||||
this.y += this.yd * (double)f;
|
||||
this.z += this.zd * (double)f;
|
||||
+ this.setPos(this.x, this.y, this.z); // FORGE: update the particle's bounding box
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
--- a/net/minecraft/client/particle/TerrainParticle.java
|
||||
+++ b/net/minecraft/client/particle/TerrainParticle.java
|
||||
@@ -28,7 +_,7 @@
|
||||
this.f_107227_ = 0.6F;
|
||||
this.f_107228_ = 0.6F;
|
||||
this.f_107229_ = 0.6F;
|
||||
- if (!p_172458_.m_60713_(Blocks.f_50440_)) {
|
||||
this.rCol = 0.6F;
|
||||
this.gCol = 0.6F;
|
||||
this.bCol = 0.6F;
|
||||
- if (!p_172458_.is(Blocks.GRASS_BLOCK)) {
|
||||
+ if (net.minecraftforge.client.extensions.common.IClientBlockExtensions.of(p_172458_).areBreakingParticlesTinted(p_172458_, p_172451_, p_172459_)) {
|
||||
int i = Minecraft.m_91087_().m_91298_().m_92577_(p_172458_, p_172451_, p_172459_, 0);
|
||||
this.f_107227_ *= (float)(i >> 16 & 255) / 255.0F;
|
||||
this.f_107228_ *= (float)(i >> 8 & 255) / 255.0F;
|
||||
int i = Minecraft.getInstance().getBlockColors().getColor(p_172458_, p_172451_, p_172459_, 0);
|
||||
this.rCol *= (float)(i >> 16 & 255) / 255.0F;
|
||||
this.gCol *= (float)(i >> 8 & 255) / 255.0F;
|
||||
@@ -69,7 +_,13 @@
|
||||
public static class Provider implements ParticleProvider<BlockParticleOption> {
|
||||
public Particle m_6966_(BlockParticleOption p_108304_, ClientLevel p_108305_, double p_108306_, double p_108307_, double p_108308_, double p_108309_, double p_108310_, double p_108311_) {
|
||||
BlockState blockstate = p_108304_.m_123642_();
|
||||
- return !blockstate.m_60795_() && !blockstate.m_60713_(Blocks.f_50110_) && blockstate.m_295777_() ? new TerrainParticle(p_108305_, p_108306_, p_108307_, p_108308_, p_108309_, p_108310_, p_108311_, blockstate) : null;
|
||||
+ return !blockstate.m_60795_() && !blockstate.m_60713_(Blocks.f_50110_) ? (new TerrainParticle(p_108305_, p_108306_, p_108307_, p_108308_, p_108309_, p_108310_, p_108311_, blockstate)).updateSprite(blockstate, p_108304_.getPos()) : null;
|
||||
public Particle createParticle(BlockParticleOption p_108304_, ClientLevel p_108305_, double p_108306_, double p_108307_, double p_108308_, double p_108309_, double p_108310_, double p_108311_) {
|
||||
BlockState blockstate = p_108304_.getState();
|
||||
- return !blockstate.isAir() && !blockstate.is(Blocks.MOVING_PISTON) && blockstate.shouldSpawnTerrainParticles() ? new TerrainParticle(p_108305_, p_108306_, p_108307_, p_108308_, p_108309_, p_108310_, p_108311_, blockstate) : null;
|
||||
+ return !blockstate.isAir() && !blockstate.is(Blocks.MOVING_PISTON) ? (new TerrainParticle(p_108305_, p_108306_, p_108307_, p_108308_, p_108309_, p_108310_, p_108311_, blockstate)).updateSprite(blockstate, p_108304_.getPos()) : null;
|
||||
}
|
||||
+ }
|
||||
+
|
||||
+ public Particle updateSprite(BlockState state, BlockPos pos) { //FORGE: we cannot assume that the x y z of the particles match the block pos of the block.
|
||||
+ if (pos != null) // There are cases where we are not able to obtain the correct source pos, and need to fallback to the non-model data version
|
||||
+ this.m_108337_(Minecraft.m_91087_().m_91289_().m_110907_().getTexture(state, f_107208_, pos));
|
||||
+ this.setSprite(Minecraft.getInstance().getBlockRenderer().getBlockModelShaper().getTexture(state, level, pos));
|
||||
+ return this;
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
--- a/net/minecraft/client/particle/VibrationSignalParticle.java
|
||||
+++ b/net/minecraft/client/particle/VibrationSignalParticle.java
|
||||
@@ -105,6 +_,7 @@
|
||||
this.f_107212_ = Mth.m_14139_(d0, this.f_107212_, vec3.m_7096_());
|
||||
this.f_107213_ = Mth.m_14139_(d0, this.f_107213_, vec3.m_7098_());
|
||||
this.f_107214_ = Mth.m_14139_(d0, this.f_107214_, vec3.m_7094_());
|
||||
+ this.m_107264_(this.f_107212_, this.f_107213_, this.f_107214_); // FORGE: Update the particle's bounding box
|
||||
double d1 = this.f_107212_ - vec3.m_7096_();
|
||||
double d2 = this.f_107213_ - vec3.m_7098_();
|
||||
double d3 = this.f_107214_ - vec3.m_7094_();
|
||||
this.x = Mth.lerp(d0, this.x, vec3.x());
|
||||
this.y = Mth.lerp(d0, this.y, vec3.y());
|
||||
this.z = Mth.lerp(d0, this.z, vec3.z());
|
||||
+ this.setPos(this.x, this.y, this.z); // FORGE: Update the particle's bounding box
|
||||
double d1 = this.x - vec3.x();
|
||||
double d2 = this.y - vec3.y();
|
||||
double d3 = this.z - vec3.z();
|
||||
@@ -4,7 +4,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
- return Mth.m_14179_(Minecraft.m_91087_().f_91066_.m_231925_().m_231551_().floatValue(), 1.0F, f);
|
||||
- return Mth.lerp(Minecraft.getInstance().options.fovEffectScale().get().floatValue(), 1.0F, f);
|
||||
+ return net.minecraftforge.client.ForgeHooksClient.getFieldOfViewModifier(this, f);
|
||||
}
|
||||
}
|
||||
@@ -3,114 +3,114 @@
|
||||
@@ -150,6 +_,7 @@
|
||||
}
|
||||
|
||||
public boolean m_6469_(DamageSource p_108662_, float p_108663_) {
|
||||
public boolean hurt(DamageSource p_108662_, float p_108663_) {
|
||||
+ net.minecraftforge.common.ForgeHooks.onPlayerAttack(this, p_108662_, p_108663_);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -276,6 +_,7 @@
|
||||
|
||||
public boolean m_108700_(boolean p_108701_) {
|
||||
public boolean drop(boolean p_108701_) {
|
||||
ServerboundPlayerActionPacket.Action serverboundplayeractionpacket$action = p_108701_ ? ServerboundPlayerActionPacket.Action.DROP_ALL_ITEMS : ServerboundPlayerActionPacket.Action.DROP_ITEM;
|
||||
+ if (m_6117_() && m_7655_() == InteractionHand.MAIN_HAND && (p_108701_ || m_21211_().m_41613_() == 1)) m_5810_(); // Forge: fix MC-231097 on the clientside
|
||||
ItemStack itemstack = this.m_150109_().m_182403_(p_108701_);
|
||||
this.f_108617_.m_295327_(new ServerboundPlayerActionPacket(serverboundplayeractionpacket$action, BlockPos.f_121853_, Direction.DOWN));
|
||||
return !itemstack.m_41619_();
|
||||
+ if (isUsingItem() && getUsedItemHand() == InteractionHand.MAIN_HAND && (p_108701_ || getUseItem().getCount() == 1)) stopUsingItem(); // Forge: fix MC-231097 on the clientside
|
||||
ItemStack itemstack = this.getInventory().removeFromSelected(p_108701_);
|
||||
this.connection.send(new ServerboundPlayerActionPacket(serverboundplayeractionpacket$action, BlockPos.ZERO, Direction.DOWN));
|
||||
return !itemstack.isEmpty();
|
||||
@@ -457,7 +_,14 @@
|
||||
}
|
||||
|
||||
public void m_5496_(SoundEvent p_108651_, float p_108652_, float p_108653_) {
|
||||
- this.m_9236_().m_7785_(this.m_20185_(), this.m_20186_(), this.m_20189_(), p_108651_, this.m_5720_(), p_108652_, p_108653_, false);
|
||||
+ net.minecraft.core.Holder<SoundEvent> holder = net.minecraft.core.registries.BuiltInRegistries.f_256894_.m_263177_(p_108651_);
|
||||
+ net.minecraftforge.event.PlayLevelSoundEvent.AtEntity event = net.minecraftforge.event.ForgeEventFactory.onPlaySoundAtEntity(this, holder, this.m_5720_(), p_108652_, p_108653_);
|
||||
public void playSound(SoundEvent p_108651_, float p_108652_, float p_108653_) {
|
||||
- this.level().playLocalSound(this.getX(), this.getY(), this.getZ(), p_108651_, this.getSoundSource(), p_108652_, p_108653_, false);
|
||||
+ net.minecraft.core.Holder<SoundEvent> holder = net.minecraft.core.registries.BuiltInRegistries.SOUND_EVENT.wrapAsHolder(p_108651_);
|
||||
+ net.minecraftforge.event.PlayLevelSoundEvent.AtEntity event = net.minecraftforge.event.ForgeEventFactory.onPlaySoundAtEntity(this, holder, this.getSoundSource(), p_108652_, p_108653_);
|
||||
+ if (event.isCanceled() || event.getSound() == null) return;
|
||||
+ p_108651_ = event.getSound().get();
|
||||
+ SoundSource source = event.getSource();
|
||||
+ p_108652_ = event.getNewVolume();
|
||||
+ p_108653_ = event.getNewPitch();
|
||||
+ this.m_9236_().m_7785_(this.m_20185_(), this.m_20186_(), this.m_20189_(), p_108651_, source, p_108652_, p_108653_, false);
|
||||
+ this.level().playLocalSound(this.getX(), this.getY(), this.getZ(), p_108651_, source, p_108652_, p_108653_, false);
|
||||
}
|
||||
|
||||
public void m_6330_(SoundEvent p_108655_, SoundSource p_108656_, float p_108657_, float p_108658_) {
|
||||
public void playNotifySound(SoundEvent p_108655_, SoundSource p_108656_, float p_108657_, float p_108658_) {
|
||||
@@ -631,6 +_,7 @@
|
||||
this.f_108601_ = !this.m_150110_().f_35935_ && !this.m_6069_() && !this.m_20159_() && this.m_295652_(Pose.CROUCHING) && (this.m_6144_() || !this.m_5803_() && !this.m_295652_(Pose.STANDING));
|
||||
float f = Mth.m_14036_(0.3F + EnchantmentHelper.m_220302_(this), 0.0F, 1.0F);
|
||||
this.f_108618_.m_214106_(this.m_108635_(), f);
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onMovementInputUpdate(this, this.f_108618_);
|
||||
this.f_108619_.m_91301_().m_120586_(this.f_108618_);
|
||||
if (this.m_6117_() && !this.m_20159_()) {
|
||||
this.f_108618_.f_108566_ *= 0.2F;
|
||||
this.crouching = !this.getAbilities().flying && !this.isSwimming() && !this.isPassenger() && this.canPlayerFitWithinBlocksAndEntitiesWhen(Pose.CROUCHING) && (this.isShiftKeyDown() || !this.isSleeping() && !this.canPlayerFitWithinBlocksAndEntitiesWhen(Pose.STANDING));
|
||||
float f = Mth.clamp(0.3F + EnchantmentHelper.getSneakingSpeedBonus(this), 0.0F, 1.0F);
|
||||
this.input.tick(this.isMovingSlowly(), f);
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onMovementInputUpdate(this, this.input);
|
||||
this.minecraft.getTutorial().onInput(this.input);
|
||||
if (this.isUsingItem() && !this.isPassenger()) {
|
||||
this.input.leftImpulse *= 0.2F;
|
||||
@@ -659,7 +_,7 @@
|
||||
boolean flag4 = this.m_264082_();
|
||||
boolean flag5 = this.m_20159_() ? this.m_20202_().m_20096_() : this.m_20096_();
|
||||
boolean flag4 = this.canStartSprinting();
|
||||
boolean flag5 = this.isPassenger() ? this.getVehicle().onGround() : this.onGround();
|
||||
boolean flag6 = !flag1 && !flag2;
|
||||
- if ((flag5 || this.m_5842_()) && flag6 && flag4) {
|
||||
+ if ((flag5 || this.m_5842_() || this.canStartSwimming()) && flag6 && flag4) {
|
||||
if (this.f_108583_ <= 0 && !this.f_108619_.f_91066_.f_92091_.m_90857_()) {
|
||||
this.f_108583_ = 7;
|
||||
- if ((flag5 || this.isUnderWater()) && flag6 && flag4) {
|
||||
+ if ((flag5 || this.isUnderWater() || this.canStartSwimming()) && flag6 && flag4) {
|
||||
if (this.sprintTriggerTime <= 0 && !this.minecraft.options.keySprint.isDown()) {
|
||||
this.sprintTriggerTime = 7;
|
||||
} else {
|
||||
@@ -667,15 +_,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
- if ((!this.m_20069_() || this.m_5842_()) && flag4 && this.f_108619_.f_91066_.f_92091_.m_90857_()) {
|
||||
+ if (!this.m_20142_() && (!(this.m_20069_() || this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType))) || (this.m_5842_() || this.canStartSwimming())) && this.m_108733_() && flag4 && !this.m_6117_() && !this.m_21023_(MobEffects.f_19610_) && this.f_108619_.f_91066_.f_92091_.m_90857_()) {
|
||||
this.m_6858_(true);
|
||||
- if ((!this.isInWater() || this.isUnderWater()) && flag4 && this.minecraft.options.keySprint.isDown()) {
|
||||
+ if (!this.isSprinting() && (!(this.isInWater() || this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType))) || (this.isUnderWater() || this.canStartSwimming())) && this.hasEnoughImpulseToStartSprinting() && flag4 && !this.isUsingItem() && !this.hasEffect(MobEffects.BLINDNESS) && this.minecraft.options.keySprint.isDown()) {
|
||||
this.setSprinting(true);
|
||||
}
|
||||
|
||||
if (this.m_20142_()) {
|
||||
boolean flag7 = !this.f_108618_.m_108577_() || !this.m_255269_();
|
||||
- boolean flag8 = flag7 || this.f_19862_ && !this.f_185931_ || this.m_20069_() && !this.m_5842_();
|
||||
+ boolean flag8 = flag7 || this.f_19862_ && !this.f_185931_ || this.m_20069_() && !this.m_5842_() || (this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType)) && !this.canStartSwimming());
|
||||
if (this.m_6069_()) {
|
||||
- if (!this.m_20096_() && !this.f_108618_.f_108573_ && flag7 || !this.m_20069_()) {
|
||||
+ if (!this.m_20096_() && !this.f_108618_.f_108573_ && flag7 || !(this.m_20069_() || this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType)))) {
|
||||
this.m_6858_(false);
|
||||
if (this.isSprinting()) {
|
||||
boolean flag7 = !this.input.hasForwardImpulse() || !this.hasEnoughFoodToStartSprinting();
|
||||
- boolean flag8 = flag7 || this.horizontalCollision && !this.minorHorizontalCollision || this.isInWater() && !this.isUnderWater();
|
||||
+ boolean flag8 = flag7 || this.horizontalCollision && !this.minorHorizontalCollision || this.isInWater() && !this.isUnderWater() || (this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType)) && !this.canStartSwimming());
|
||||
if (this.isSwimming()) {
|
||||
- if (!this.onGround() && !this.input.shiftKeyDown && flag7 || !this.isInWater()) {
|
||||
+ if (!this.onGround() && !this.input.shiftKeyDown && flag7 || !(this.isInWater() || this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType)))) {
|
||||
this.setSprinting(false);
|
||||
}
|
||||
} else if (flag8) {
|
||||
@@ -705,14 +_,15 @@
|
||||
|
||||
if (this.f_108618_.f_108572_ && !flag9 && !flag && !this.m_150110_().f_35935_ && !this.m_20159_() && !this.m_6147_()) {
|
||||
ItemStack itemstack = this.m_6844_(EquipmentSlot.CHEST);
|
||||
- if (itemstack.m_150930_(Items.f_42741_) && ElytraItem.m_41140_(itemstack) && this.m_36319_()) {
|
||||
+ if (itemstack.canElytraFly(this) && this.m_36319_()) {
|
||||
this.f_108617_.m_295327_(new ServerboundPlayerCommandPacket(this, ServerboundPlayerCommandPacket.Action.START_FALL_FLYING));
|
||||
if (this.input.jumping && !flag9 && !flag && !this.getAbilities().flying && !this.isPassenger() && !this.onClimbable()) {
|
||||
ItemStack itemstack = this.getItemBySlot(EquipmentSlot.CHEST);
|
||||
- if (itemstack.is(Items.ELYTRA) && ElytraItem.isFlyEnabled(itemstack) && this.tryToStartFallFlying()) {
|
||||
+ if (itemstack.canElytraFly(this) && this.tryToStartFallFlying()) {
|
||||
this.connection.send(new ServerboundPlayerCommandPacket(this, ServerboundPlayerCommandPacket.Action.START_FALL_FLYING));
|
||||
}
|
||||
}
|
||||
|
||||
this.f_108614_ = this.m_21255_();
|
||||
- if (this.m_20069_() && this.f_108618_.f_108573_ && this.m_6129_()) {
|
||||
- this.m_21208_();
|
||||
this.wasFallFlying = this.isFallFlying();
|
||||
- if (this.isInWater() && this.input.shiftKeyDown && this.isAffectedByFluids()) {
|
||||
- this.goDownInWater();
|
||||
+ net.minecraftforge.fluids.FluidType fluidType = this.getMaxHeightFluidType();
|
||||
+ if ((this.m_20069_() || (!fluidType.isAir() && this.canSwimInFluidType(fluidType))) && this.f_108618_.f_108573_ && this.m_6129_()) {
|
||||
+ this.sinkInFluid(this.m_20069_() ? net.minecraftforge.common.ForgeMod.WATER_TYPE.get() : fluidType);
|
||||
+ if ((this.isInWater() || (!fluidType.isAir() && this.canSwimInFluidType(fluidType))) && this.input.shiftKeyDown && this.isAffectedByFluids()) {
|
||||
+ this.sinkInFluid(this.isInWater() ? net.minecraftforge.common.ForgeMod.WATER_TYPE.get() : fluidType);
|
||||
}
|
||||
|
||||
if (this.m_204029_(FluidTags.f_13131_)) {
|
||||
if (this.isEyeInFluid(FluidTags.WATER)) {
|
||||
@@ -812,6 +_,7 @@
|
||||
|
||||
public void m_6083_() {
|
||||
super.m_6083_();
|
||||
+ if (this.m_36342_() && this.m_20159_()) this.f_108618_.f_108573_ = false;
|
||||
this.f_108611_ = false;
|
||||
Entity entity = this.m_275832_();
|
||||
public void rideTick() {
|
||||
super.rideTick();
|
||||
+ if (this.wantsToStopRiding() && this.isPassenger()) this.input.shiftKeyDown = false;
|
||||
this.handsBusy = false;
|
||||
Entity entity = this.getControlledVehicle();
|
||||
if (entity instanceof Boat boat) {
|
||||
@@ -1044,6 +_,18 @@
|
||||
} else {
|
||||
return super.m_7398_(p_108758_);
|
||||
return super.getRopeHoldPosition(p_108758_);
|
||||
}
|
||||
+ }
|
||||
+
|
||||
+ public void updateSyncFields(LocalPlayer old) {
|
||||
+ this.f_108595_ = old.f_108595_;
|
||||
+ this.f_108596_ = old.f_108596_;
|
||||
+ this.f_108597_ = old.f_108597_;
|
||||
+ this.f_108598_ = old.f_108598_;
|
||||
+ this.f_108599_ = old.f_108599_;
|
||||
+ this.f_108600_ = old.f_108600_;
|
||||
+ this.f_108602_ = old.f_108602_;
|
||||
+ this.f_108603_ = old.f_108603_;
|
||||
+ this.f_108604_ = old.f_108604_;
|
||||
+ this.xLast = old.xLast;
|
||||
+ this.yLast1 = old.yLast1;
|
||||
+ this.zLast = old.zLast;
|
||||
+ this.yRotLast = old.yRotLast;
|
||||
+ this.xRotLast = old.xRotLast;
|
||||
+ this.lastOnGround = old.lastOnGround;
|
||||
+ this.wasShiftKeyDown = old.wasShiftKeyDown;
|
||||
+ this.wasSprinting = old.wasSprinting;
|
||||
+ this.positionReminder = old.positionReminder;
|
||||
}
|
||||
|
||||
public void m_141945_(ItemStack p_172532_, ItemStack p_172533_, ClickAction p_172534_) {
|
||||
public void updateTutorialInventoryAction(ItemStack p_172532_, ItemStack p_172533_, ClickAction p_172534_) {
|
||||
@@ -3,7 +3,7 @@
|
||||
@@ -32,6 +_,7 @@
|
||||
}
|
||||
|
||||
public boolean m_6469_(DamageSource p_108772_, float p_108773_) {
|
||||
public boolean hurt(DamageSource p_108772_, float p_108773_) {
|
||||
+ net.minecraftforge.common.ForgeHooks.onPlayerAttack(this, p_108772_, p_108773_);
|
||||
return true;
|
||||
}
|
||||
|
||||
Loaded 100 of 641 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user