Reapply more patches
This commit is contained in:
@@ -1,18 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: AlphaKR93 <dev@alpha93.kr>
|
||||
Date: Wed, 10 Jan 2024 18:11:03 +0900
|
||||
Subject: [PATCH] Improve SwingTime ticking
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
index e64ff857bf95436033baf38db1e6895f75856f9c..f029cdfe3d1e1b13a0cc3bf04e7285907c02a9a8 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -2832,6 +2832,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
}
|
||||
|
||||
protected void updateSwingTime() {
|
||||
+ if (!this.swinging && this.swingTime == 0) return; // Plazma - Improve SwingTime ticking
|
||||
int i = this.getCurrentSwingDuration();
|
||||
|
||||
if (this.swinging) {
|
||||
@@ -1,77 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: AlphaKR93 <dev@alpha93.kr>
|
||||
Date: Mon, 6 May 2024 13:40:48 +0900
|
||||
Subject: [PATCH] Use Plazma logo instead if server favicon doesn't exist
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index 82bded015da16ed2feae1161a31f916804c6fbbb..657f118713b2188cb2e7fe5ec3be455189b50623 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -1628,29 +1628,32 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
}
|
||||
|
||||
private Optional<ServerStatus.Favicon> loadStatusIcon() {
|
||||
- Optional<Path> optional = Optional.of(this.getFile("server-icon.png")).filter((path) -> {
|
||||
- return Files.isRegularFile(path, new LinkOption[0]);
|
||||
- }).or(() -> {
|
||||
- return this.storageSource.getIconFile().filter((path) -> {
|
||||
- return Files.isRegularFile(path, new LinkOption[0]);
|
||||
- });
|
||||
- });
|
||||
-
|
||||
- return optional.flatMap((path) -> {
|
||||
- try {
|
||||
- BufferedImage bufferedimage = ImageIO.read(path.toFile());
|
||||
-
|
||||
- Preconditions.checkState(bufferedimage.getWidth() == 64, "Must be 64 pixels wide");
|
||||
- Preconditions.checkState(bufferedimage.getHeight() == 64, "Must be 64 pixels high");
|
||||
- ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream();
|
||||
-
|
||||
- ImageIO.write(bufferedimage, "PNG", bytearrayoutputstream);
|
||||
- return Optional.of(new ServerStatus.Favicon(bytearrayoutputstream.toByteArray()));
|
||||
- } catch (Exception exception) {
|
||||
- MinecraftServer.LOGGER.error("Couldn't load server icon", exception);
|
||||
- return Optional.empty();
|
||||
- }
|
||||
- });
|
||||
+ // Plazma start - Use Plazma logo instead if server favicon doesn't exist
|
||||
+ @Nullable File file = Optional.of(this.getFile("server-icon.png").toAbsolutePath()).filter(Files::isRegularFile)
|
||||
+ .or(() -> this.storageSource.getIconFile().filter(Files::isRegularFile)).map(Path::toFile).orElse(null);
|
||||
+ try (
|
||||
+ java.io.InputStream stream = (file != null)
|
||||
+ ? new java.io.FileInputStream(file)
|
||||
+ : (
|
||||
+ org.plazmamc.plazma.Options.VANILLA_ICO
|
||||
+ ? null
|
||||
+ : MinecraftServer.class.getResourceAsStream("logo.png")
|
||||
+ )
|
||||
+ ) {
|
||||
+ if (stream == null) return Optional.empty();
|
||||
+ if (file == null && !org.plazmamc.plazma.Options.VANILLA_ICO)
|
||||
+ LOGGER.info("No server icon found, using the logo instead.");
|
||||
+ BufferedImage bufferedimage = ImageIO.read(stream);
|
||||
+ Preconditions.checkState(bufferedimage.getWidth() == 64, "Must be 64 pixels wide");
|
||||
+ Preconditions.checkState(bufferedimage.getHeight() == 64, "Must be 64 pixels high");
|
||||
+ ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream();
|
||||
+ ImageIO.write(bufferedimage, "PNG", bytearrayoutputstream);
|
||||
+ return Optional.of(new ServerStatus.Favicon(bytearrayoutputstream.toByteArray()));
|
||||
+ } catch (Exception exception) {
|
||||
+ MinecraftServer.LOGGER.error("Couldn't load server icon", exception);
|
||||
+ return Optional.empty();
|
||||
+ }
|
||||
+ // Plazma end - Use Plazma logo instead if server favicon doesn't exist
|
||||
}
|
||||
|
||||
public Optional<Path> getWorldScreenshotFile() {
|
||||
diff --git a/src/main/java/org/plazmamc/plazma/Options.java b/src/main/java/org/plazmamc/plazma/Options.java
|
||||
index 063b71b3043a69a90130a81686b6a5f1e5f22fd1..e7092aeb5abce5aa5f9bd434adc6acd4e43dec13 100644
|
||||
--- a/src/main/java/org/plazmamc/plazma/Options.java
|
||||
+++ b/src/main/java/org/plazmamc/plazma/Options.java
|
||||
@@ -10,5 +10,6 @@ public interface Options {
|
||||
boolean AGGRESSIVE = getBoolean("Plazma.aggressiveOptimize") && !NO_OPTIMIZE;
|
||||
boolean VANILLAIZE = getBoolean("Plazma.vanillaize") && !AGGRESSIVE;
|
||||
boolean USE_VANILLA = getBoolean("Plazma.useVanillaConfiguration") && !AGGRESSIVE && NO_OPTIMIZE;
|
||||
+ boolean VANILLA_ICO = getBoolean("Plazma.useVanillaFavicon");
|
||||
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: AlphaKR93 <dev@alpha93.kr>
|
||||
Date: Fri, 25 Oct 2024 19:26:15 +0900
|
||||
Subject: [PATCH] Suppress errors from dirty attributes
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
index f029cdfe3d1e1b13a0cc3bf04e7285907c02a9a8..684e747255472b85a573e004f85e0319e2145d8e 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -1390,7 +1390,8 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
}
|
||||
|
||||
private void refreshDirtyAttributes() {
|
||||
- Set<AttributeInstance> set = this.getAttributes().getAttributesToUpdate();
|
||||
+ Set<AttributeInstance> attr = this.getAttributes().getAttributesToUpdate(); // Plazma - Suppress errors from dirty attributes
|
||||
+ final Set<AttributeInstance> set = level().plazmaConfig().entity.suppressErrorsFromDirtyAttributes ? java.util.Collections.synchronizedSet(attr) : attr; // Plazma - Suppress errors from dirty attributes
|
||||
Iterator iterator = set.iterator();
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
@@ -1399,7 +1400,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
this.onAttributeUpdated(attributemodifiable.getAttribute());
|
||||
}
|
||||
|
||||
- set.clear();
|
||||
+ attr.clear(); // Plazma - Suppress errors from dirty attributes
|
||||
}
|
||||
|
||||
protected void onAttributeUpdated(Holder<Attribute> attribute) {
|
||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||
index f21ed3431fd8472c78c15578bbd12214c499ceea..9cfab16b9cdf40ccb709c0af66c406954560c0ef 100644
|
||||
--- a/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/WorldConfigurations.java
|
||||
@@ -29,6 +29,7 @@ public class WorldConfigurations extends ConfigurationPart {
|
||||
public class Entity extends ConfigurationPart {
|
||||
|
||||
public int sensorTick = 1;
|
||||
+ public boolean suppressErrorsFromDirtyAttributes = OPTIMIZE;
|
||||
|
||||
public Phantom phantom;
|
||||
public class Phantom extends ConfigurationPart {
|
||||
@@ -1,73 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: AlphaKR93 <dev@alpha93.kr>
|
||||
Date: Sun, 27 Oct 2024 00:16:25 +0900
|
||||
Subject: [PATCH] Optimize advancement criteria triggering
|
||||
|
||||
Based on bigenergy/achievements-optimizer
|
||||
Copyright (C) 2024 bigenergy, Licensed under MIT License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/advancements/critereon/InventoryChangeTrigger.java b/src/main/java/net/minecraft/advancements/critereon/InventoryChangeTrigger.java
|
||||
index ebbad97920df3d1645637e646a98e16cb04d361e..a149c949a042e1d1e504d9f5ce0bfa6df92db2fc 100644
|
||||
--- a/src/main/java/net/minecraft/advancements/critereon/InventoryChangeTrigger.java
|
||||
+++ b/src/main/java/net/minecraft/advancements/critereon/InventoryChangeTrigger.java
|
||||
@@ -22,7 +22,21 @@ public class InventoryChangeTrigger extends SimpleCriterionTrigger<InventoryChan
|
||||
return InventoryChangeTrigger.TriggerInstance.CODEC;
|
||||
}
|
||||
|
||||
+ // Plazma start - Optimize advancement criteria triggering
|
||||
+ public static int idleTick;
|
||||
+ private int ticksSkipped;
|
||||
+
|
||||
+ private boolean shouldTick() {
|
||||
+ if (++this.ticksSkipped <= idleTick) return false;
|
||||
+
|
||||
+ this.ticksSkipped = 0;
|
||||
+ return true;
|
||||
+ }
|
||||
+ // Plazma end - Optimize advancement criteria triggering
|
||||
+
|
||||
public void trigger(ServerPlayer player, Inventory inventory, ItemStack stack) {
|
||||
+ if (idleTick > 0 && !this.shouldTick()) return; // Plazma - Optimize advancement criteria triggering
|
||||
+
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
int k = 0;
|
||||
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||
index c2f3facf65aa2682306c64c3466357461a76f267..8914159c17b3c8b0114e88c5317df5f17b05e5d6 100644
|
||||
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
||||
@@ -145,4 +145,16 @@ public class GlobalConfiguration extends ConfigurationPart {
|
||||
|
||||
}
|
||||
|
||||
+ public Advancements advancements;
|
||||
+ public class Advancements extends ConfigurationPart {
|
||||
+
|
||||
+ int criteriaTriggerIdleTick = OPTIMIZE ? 5 : 0;
|
||||
+
|
||||
+ @PostProcess
|
||||
+ void post() {
|
||||
+ net.minecraft.advancements.critereon.InventoryChangeTrigger.idleTick = this.criteriaTriggerIdleTick;
|
||||
+ }
|
||||
+
|
||||
+ }
|
||||
+
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
--- a/net/minecraft/advancements/critereon/InventoryChangeTrigger.java
|
||||
+++ b/net/minecraft/advancements/critereon/InventoryChangeTrigger.java
|
||||
@@ -22,7 +_,22 @@
|
||||
return InventoryChangeTrigger.TriggerInstance.CODEC;
|
||||
}
|
||||
|
||||
+ // Plazma start - Optimize advancement criterion triggering (Based on https://github.com/bigenergy/achievement-optimizer/tree/1f956f1)
|
||||
+ public static int idleTick;
|
||||
+ private int ticksSkipped;
|
||||
+
|
||||
+ @org.jetbrains.annotations.Contract(mutates = "this")
|
||||
+ private boolean shouldTick() {
|
||||
+ if (++this.ticksSkipped <= idleTick) return false;
|
||||
+
|
||||
+ this.ticksSkipped = 0;
|
||||
+ return true;
|
||||
+ }
|
||||
+ // Plazma end - Optimize advancement criterion triggering
|
||||
+
|
||||
public void trigger(ServerPlayer player, Inventory inventory, ItemStack stack) {
|
||||
+ if (idleTick > 0 && !this.shouldTick()) return; // Plazma - Optimize advancement criterion triggering
|
||||
+
|
||||
int i = 0;
|
||||
int i1 = 0;
|
||||
int i2 = 0;
|
||||
@@ -1,5 +1,31 @@
|
||||
--- a/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -1309,13 +_,14 @@
|
||||
}
|
||||
|
||||
private void refreshDirtyAttributes() {
|
||||
- Set<AttributeInstance> attributesToUpdate = this.getAttributes().getAttributesToUpdate();
|
||||
+ final Set<AttributeInstance> attributeInstances = this.getAttributes().getAttributesToUpdate(); // Plazma - Suppress errors from drity attributes
|
||||
+ final Set<AttributeInstance> attributesToUpdate = this.level().plazmaConfig().entity.suppressErrorsFromDirtyAttributes ? java.util.Collections.synchronizedSet(attributeInstances) : attributeInstances; // Plazma - Suppress errors from drity attributes
|
||||
|
||||
for (AttributeInstance attributeInstance : attributesToUpdate) {
|
||||
this.onAttributeUpdated(attributeInstance.getAttribute());
|
||||
}
|
||||
|
||||
- attributesToUpdate.clear();
|
||||
+ attributeInstances.clear(); // Plazma - Suppress errors from drity attributes
|
||||
}
|
||||
|
||||
protected void onAttributeUpdated(Holder<Attribute> attribute) {
|
||||
@@ -2666,6 +_,8 @@
|
||||
}
|
||||
|
||||
protected void updateSwingTime() {
|
||||
+ if (!this.swinging && this.swingTime == 0) return; // Plazma - Improve swing time ticking
|
||||
+
|
||||
int currentSwingDuration = this.getCurrentSwingDuration();
|
||||
if (this.swinging) {
|
||||
this.swingTime++;
|
||||
@@ -4421,7 +_,7 @@
|
||||
|
||||
BlockState blockState = this.level().getBlockState(pos);
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
--- a/src/main/java/io/papermc/paper/configuration/ConfigurationPart.java
|
||||
+++ b/src/main/java/io/papermc/paper/configuration/ConfigurationPart.java
|
||||
@@ -4,4 +_,7 @@
|
||||
* Marker interface for unique sections of a configuration.
|
||||
*/
|
||||
public abstract class ConfigurationPart {
|
||||
+
|
||||
+ protected static final boolean OPTIMIZE = org.plazmamc.plazma.Options.OPTIMIZE; // Plazma - Configurable Plazma
|
||||
+
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
--- a/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java
|
||||
+++ b/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java
|
||||
@@ -36,14 +_,16 @@
|
||||
|
||||
// SimplePluginManager
|
||||
public void callEvent(@NotNull Event event) {
|
||||
+ // Plazma start - Skip event if no listener registered
|
||||
+ final RegisteredListener[] listeners = event.getHandlers().getRegisteredListeners();
|
||||
+ if (listeners.length == 0) return;
|
||||
+ // Plazma end - Skip event if no listener registered
|
||||
+
|
||||
if (event.isAsynchronous() && this.server.isPrimaryThread()) {
|
||||
throw new IllegalStateException(event.getEventName() + " may only be triggered asynchronously.");
|
||||
} else if (!event.isAsynchronous() && !this.server.isPrimaryThread() && !this.server.isStopping()) {
|
||||
throw new IllegalStateException(event.getEventName() + " may only be triggered synchronously.");
|
||||
}
|
||||
-
|
||||
- HandlerList handlers = event.getHandlers();
|
||||
- RegisteredListener[] listeners = handlers.getRegisteredListeners();
|
||||
|
||||
for (RegisteredListener registration : listeners) {
|
||||
if (!registration.getPlugin().isEnabled()) {
|
||||
@@ -4,6 +4,7 @@ import io.papermc.paper.configuration.ConfigurationPart;
|
||||
import io.papermc.paper.configuration.Configurations;
|
||||
import org.jetbrains.annotations.Contract;
|
||||
import org.jspecify.annotations.NonNull;
|
||||
import org.spongepowered.configurate.objectmapping.meta.PostProcess;
|
||||
import org.spongepowered.configurate.objectmapping.meta.Setting;
|
||||
|
||||
@SuppressWarnings({"unused", "InnerClassMayBeStatic"})
|
||||
@@ -20,6 +21,18 @@ public final class GlobalConfiguration extends ConfigurationPart {
|
||||
@Setting(Configurations.VERSION_FIELD)
|
||||
int version = VERSION;
|
||||
|
||||
public Player player;
|
||||
public class Player extends ConfigurationPart {
|
||||
|
||||
int advancementCriterionTriggerIdleTick = OPTIMIZE ? 5 : 0;
|
||||
|
||||
@PostProcess
|
||||
void postProcess() {
|
||||
net.minecraft.advancements.critereon.InventoryChangeTrigger.idleTick = this.advancementCriterionTriggerIdleTick;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public ConsoleLogs consoleLogs;
|
||||
public class ConsoleLogs extends ConfigurationPart {
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ public final class WorldConfiguration extends ConfigurationPart {
|
||||
public Entity entity;
|
||||
public class Entity extends ConfigurationPart {
|
||||
|
||||
public boolean suppressErrorsFromDirtyAttributes = OPTIMIZE;
|
||||
public boolean populateLootTableOnlyForPlayerInteraction = OPTIMIZE;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user