From 2fdfa68fac2ec990e584479662125fcd38e6bd3b Mon Sep 17 00:00:00 2001 From: IzzelAliz Date: Sat, 31 Jul 2021 13:36:09 +0800 Subject: [PATCH] Apply and test optimizations --- .../dfu/BlockEntityTypeMixin_DFU.java | 17 ++++++++++++++++ ...n.java => CraftMagicNumbersMixin_DFU.java} | 2 +- .../optimization/dfu/DataFixerUpperMixin.java | 20 ------------------- ...in.java => DataFixesManagerMixin_DFU.java} | 2 +- .../dfu/EntityType_BuilderMixin_DFU.java | 15 ++++++++++++++ ...xin.java => MinecraftServerMixin_DFU.java} | 2 +- ...workRocketEntityMixin_ActivationRange.java | 5 ++++- .../VillagerEntityMixin_ActivationRange.java | 2 +- .../common/mod/ArclightConnector.java | 1 - ....arclight.impl.forge.optimization.dfu.json | 9 +++++---- 10 files changed, 45 insertions(+), 30 deletions(-) create mode 100644 arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/BlockEntityTypeMixin_DFU.java rename arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/{CraftMagicNumbersMixin.java => CraftMagicNumbersMixin_DFU.java} (95%) delete mode 100644 arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/DataFixerUpperMixin.java rename arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/{DataFixesManagerMixin.java => DataFixesManagerMixin_DFU.java} (94%) create mode 100644 arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/EntityType_BuilderMixin_DFU.java rename arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/{MinecraftServerMixin.java => MinecraftServerMixin_DFU.java} (94%) diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/BlockEntityTypeMixin_DFU.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/BlockEntityTypeMixin_DFU.java new file mode 100644 index 00000000..31a73c93 --- /dev/null +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/BlockEntityTypeMixin_DFU.java @@ -0,0 +1,17 @@ +package io.izzel.arclight.common.mixin.optimization.dfu; + +import com.mojang.datafixers.DSL; +import com.mojang.datafixers.types.Type; +import net.minecraft.world.level.block.entity.BlockEntityType; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(BlockEntityType.class) +public class BlockEntityTypeMixin_DFU { + + @Redirect(method = "register", at = @At(value = "INVOKE", target = "Lnet/minecraft/Util;fetchChoiceType(Lcom/mojang/datafixers/DSL$TypeReference;Ljava/lang/String;)Lcom/mojang/datafixers/types/Type;")) + private static Type arclight$noDfu(DSL.TypeReference p_137457_, String p_137458_) { + return null; + } +} diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/CraftMagicNumbersMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/CraftMagicNumbersMixin_DFU.java similarity index 95% rename from arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/CraftMagicNumbersMixin.java rename to arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/CraftMagicNumbersMixin_DFU.java index 4f4d62ee..35608c72 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/CraftMagicNumbersMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/CraftMagicNumbersMixin_DFU.java @@ -10,7 +10,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(value = CraftMagicNumbers.class, remap = false) -public class CraftMagicNumbersMixin { +public class CraftMagicNumbersMixin_DFU { @Inject(method = "checkSupported", at = @At("HEAD")) private void arclight$dfuDisabled(PluginDescriptionFile pdf, CallbackInfo ci) throws InvalidPluginException { diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/DataFixerUpperMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/DataFixerUpperMixin.java deleted file mode 100644 index ac364cd6..00000000 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/DataFixerUpperMixin.java +++ /dev/null @@ -1,20 +0,0 @@ -package io.izzel.arclight.common.mixin.optimization.dfu; - -import com.mojang.datafixers.DSL; -import com.mojang.datafixers.DataFixerUpper; -import com.mojang.serialization.Dynamic; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Overwrite; - -@Mixin(value = DataFixerUpper.class, remap = false) -public abstract class DataFixerUpperMixin { - - /** - * @author IzzelAliz - * @reason - */ - @Overwrite - public Dynamic update(DSL.TypeReference type, Dynamic input, int version, int newVersion) { - return input; - } -} diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/DataFixesManagerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/DataFixesManagerMixin_DFU.java similarity index 94% rename from arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/DataFixesManagerMixin.java rename to arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/DataFixesManagerMixin_DFU.java index 1362fc87..3119717c 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/DataFixesManagerMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/DataFixesManagerMixin_DFU.java @@ -10,7 +10,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(DataFixers.class) -public class DataFixesManagerMixin { +public class DataFixesManagerMixin_DFU { @Inject(method = "createFixerUpper", cancellable = true, at = @At("HEAD")) private static void arclight$disableDfu(CallbackInfoReturnable cir) { diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/EntityType_BuilderMixin_DFU.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/EntityType_BuilderMixin_DFU.java new file mode 100644 index 00000000..e90f835f --- /dev/null +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/EntityType_BuilderMixin_DFU.java @@ -0,0 +1,15 @@ +package io.izzel.arclight.common.mixin.optimization.dfu; + +import net.minecraft.world.entity.EntityType; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(EntityType.Builder.class) +public class EntityType_BuilderMixin_DFU { + + @Redirect(method = "build", at = @At(value = "FIELD", target = "Lnet/minecraft/world/entity/EntityType$Builder;serialize:Z")) + private boolean arclight$noDfu(EntityType.Builder builder) { + return false; + } +} diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/MinecraftServerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/MinecraftServerMixin_DFU.java similarity index 94% rename from arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/MinecraftServerMixin.java rename to arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/MinecraftServerMixin_DFU.java index b7779fad..6de3c878 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/MinecraftServerMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/dfu/MinecraftServerMixin_DFU.java @@ -9,7 +9,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(MinecraftServer.class) -public abstract class MinecraftServerMixin { +public abstract class MinecraftServerMixin_DFU { @Inject(method = "convertFromRegionFormatIfNeeded", cancellable = true, at = @At("HEAD")) private static void arclight$skipConvert(LevelStorageSource.LevelStorageAccess levelSave, CallbackInfo ci) { diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/general/activationrange/entity/FireworkRocketEntityMixin_ActivationRange.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/general/activationrange/entity/FireworkRocketEntityMixin_ActivationRange.java index d5f99ccc..38fe485f 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/general/activationrange/entity/FireworkRocketEntityMixin_ActivationRange.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/general/activationrange/entity/FireworkRocketEntityMixin_ActivationRange.java @@ -2,6 +2,7 @@ package io.izzel.arclight.common.mixin.optimization.general.activationrange.enti import io.izzel.arclight.common.mixin.optimization.general.activationrange.EntityMixin_ActivationRange; import net.minecraft.world.entity.projectile.FireworkRocketEntity; +import org.bukkit.craftbukkit.v.event.CraftEventFactory; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -19,7 +20,9 @@ public abstract class FireworkRocketEntityMixin_ActivationRange extends EntityMi super.inactiveTick(); ++this.life; if (!this.level.isClientSide && this.life > this.lifetime) { - this.explode(); + if (!CraftEventFactory.callFireworkExplodeEvent((FireworkRocketEntity)(Object) this).isCancelled()) { + this.explode(); + } } } } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/general/activationrange/entity/VillagerEntityMixin_ActivationRange.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/general/activationrange/entity/VillagerEntityMixin_ActivationRange.java index 6b6b6ac6..efd89da8 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/general/activationrange/entity/VillagerEntityMixin_ActivationRange.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/optimization/general/activationrange/entity/VillagerEntityMixin_ActivationRange.java @@ -15,10 +15,10 @@ public abstract class VillagerEntityMixin_ActivationRange extends EntityMixin_Ac @Override public void inactiveTick() { - super.inactiveTick(); if (((WorldBridge) this.level).bridge$spigotConfig().tickInactiveVillagers && ((Villager) (Object) this).isEffectiveAi()) { this.customServerAiStep(); } + super.inactiveTick(); } } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mod/ArclightConnector.java b/arclight-common/src/main/java/io/izzel/arclight/common/mod/ArclightConnector.java index 40d837ef..2241bb25 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mod/ArclightConnector.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mod/ArclightConnector.java @@ -20,7 +20,6 @@ public class ArclightConnector implements IMixinConnector { Mixins.addConfiguration("mixins.arclight.forge.json"); Mixins.addConfiguration("mixins.arclight.api.json"); LOGGER.info("mixin-load.core"); - if (true) return; Mixins.addConfiguration("mixins.arclight.impl.forge.optimization.json"); if (ArclightConfig.spec().getOptimization().isRemoveStream()) { Mixins.addConfiguration("mixins.arclight.impl.forge.optimization.stream.json"); diff --git a/arclight-common/src/main/resources/mixins.arclight.impl.forge.optimization.dfu.json b/arclight-common/src/main/resources/mixins.arclight.impl.forge.optimization.dfu.json index a8b0cd60..8159e8fe 100644 --- a/arclight-common/src/main/resources/mixins.arclight.impl.forge.optimization.dfu.json +++ b/arclight-common/src/main/resources/mixins.arclight.impl.forge.optimization.dfu.json @@ -5,9 +5,10 @@ "refmap": "mixins.arclight.refmap.json", "compatibilityLevel": "JAVA_11", "mixins": [ - "CraftMagicNumbersMixin", - "DataFixerUpperMixin", - "DataFixesManagerMixin", - "MinecraftServerMixin" + "BlockEntityTypeMixin_DFU", + "CraftMagicNumbersMixin_DFU", + "DataFixesManagerMixin_DFU", + "EntityType_BuilderMixin_DFU", + "MinecraftServerMixin_DFU" ] } \ No newline at end of file