diff --git a/src/main/java/net/gensokyoreimagined/nitori/common/util/EquipmentSlotConstants.java b/src/main/java/net/gensokyoreimagined/nitori/common/util/EquipmentSlotConstants.java new file mode 100644 index 0000000..360fc23 --- /dev/null +++ b/src/main/java/net/gensokyoreimagined/nitori/common/util/EquipmentSlotConstants.java @@ -0,0 +1,12 @@ +package net.gensokyoreimagined.nitori.common.util; + +import net.minecraft.world.entity.EquipmentSlot; + +/** + * Pre-initialized constants to avoid unnecessary allocations. + */ +public final class EquipmentSlotConstants { + private EquipmentSlotConstants() {} + + public static final EquipmentSlot[] ALL = EquipmentSlot.values(); +} \ No newline at end of file diff --git a/src/main/java/net/gensokyoreimagined/nitori/mixin/alloc/enum_values/living_entity/LivingEntityMixin.java b/src/main/java/net/gensokyoreimagined/nitori/mixin/alloc/enum_values/living_entity/LivingEntityMixin.java new file mode 100644 index 0000000..e858d18 --- /dev/null +++ b/src/main/java/net/gensokyoreimagined/nitori/mixin/alloc/enum_values/living_entity/LivingEntityMixin.java @@ -0,0 +1,23 @@ +package net.gensokyoreimagined.nitori.mixin.alloc.enum_values.living_entity; + +//import net.gensokyoreimagined.nitori.common.util.EquipmentSlotConstants; +//import net.minecraft.world.entity.EquipmentSlot; +//import net.minecraft.world.entity.LivingEntity; +//import org.spongepowered.asm.mixin.Mixin; +//import org.spongepowered.asm.mixin.injection.At; +//import org.spongepowered.asm.mixin.injection.Redirect; +// +//@Mixin(LivingEntity.class) +//public class LivingEntityMixin { +// +// @Redirect( +// method = "collectEquipmentChanges()Ljava/util/Map;", +// at = @At( +// value = "INVOKE", +// target = "Lnet/minecraft/world/entity/LivingEntity;equipmentHasChanged(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/item/ItemStack;)Z" +// ) +// ) +// private EquipmentSlot[] removeAllocation() { +// return EquipmentSlotConstants.ALL; +// } +//} \ No newline at end of file diff --git a/src/main/java/net/gensokyoreimagined/nitori/mixin/alloc/nbt/NbtCompoundMixin.java b/src/main/java/net/gensokyoreimagined/nitori/mixin/alloc/nbt/NbtCompoundMixin.java new file mode 100644 index 0000000..712d7e0 --- /dev/null +++ b/src/main/java/net/gensokyoreimagined/nitori/mixin/alloc/nbt/NbtCompoundMixin.java @@ -0,0 +1,90 @@ +package net.gensokyoreimagined.nitori.mixin.alloc.nbt; + +//import com.google.common.collect.Maps; +//import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +//import net.minecraft.nbt.CompoundTag; +//import net.minecraft.nbt.Tag; +//import org.spongepowered.asm.mixin.Final; +//import org.spongepowered.asm.mixin.Mixin; +//import org.spongepowered.asm.mixin.Overwrite; +//import org.spongepowered.asm.mixin.Shadow; +//import org.spongepowered.asm.mixin.injection.At; +//import org.spongepowered.asm.mixin.injection.ModifyArg; +//import org.spongepowered.asm.mixin.injection.ModifyVariable; +//import org.spongepowered.asm.mixin.injection.Redirect; +// +//import java.util.HashMap; +//import java.util.Map; +// +///** +// * Use {@link Object2ObjectOpenHashMap} instead of {@link HashMap} to reduce NBT memory consumption and improve +// * iteration speed. +// * +// * @author Maity +// */ +//@Mixin(CompoundTag.class) +//public class CompoundTagMixin { +// +// @Shadow +// @Final +// private Map entries; +// +// @ModifyArg( +// method = "()V", +// at = @At(value = "INVOKE", target = "Lnet/minecraft/nbt/CompoundTag;(Ljava/util/Map;)V") +// ) +// private static Map useFasterCollection(Map oldMap) { +// return new Object2ObjectOpenHashMap<>(); +// } +// +// @Redirect( +// method = "()V", +// at = @At( +// value = "INVOKE", +// target = "Lcom/google/common/collect/Maps;newHashMap()Ljava/util/HashMap;", +// remap = false +// ) +// ) +// private static HashMap removeOldMapAlloc() { +// return null; +// } +// +// /** +// * @reason Use faster collection +// * @author Maity +// */ +// @Overwrite +// public CompoundTag copy() { +// // [VanillaCopy] HashMap is replaced with Object2ObjectOpenHashMap +// var map = new Object2ObjectOpenHashMap<>(Maps.transformValues(this.entries, Tag::copy)); +// return new CompoundTag(map); +// } +// +// @Mixin(targets = "net.minecraft.nbt.CompoundTag$1") +// static class Type { +// +// @ModifyVariable( +// method = "loadCompound", +// at = @At( +// value = "INVOKE_ASSIGN", +// target = "Lcom/google/common/collect/Maps;newHashMap()Ljava/util/HashMap;", +// remap = false +// ) +// ) +// private static Map useFasterCollection(Map map) { +// return new Object2ObjectOpenHashMap<>(); +// } +// +// @Redirect( +// method = "loadCompound", +// at = @At( +// value = "INVOKE", +// target = "Lcom/google/common/collect/Maps;newHashMap()Ljava/util/HashMap;", +// remap = false +// ) +// ) +// private static HashMap removeOldMapAlloc() { +// return null; +// } +// } +//} \ No newline at end of file diff --git a/src/main/java/net/gensokyoreimagined/nitori/mixin/MixinLevel.java b/src/main/java/net/gensokyoreimagined/nitori/mixin/needs_testing/MixinLevel.java similarity index 97% rename from src/main/java/net/gensokyoreimagined/nitori/mixin/MixinLevel.java rename to src/main/java/net/gensokyoreimagined/nitori/mixin/needs_testing/MixinLevel.java index bac3ad4..0bad6c1 100644 --- a/src/main/java/net/gensokyoreimagined/nitori/mixin/MixinLevel.java +++ b/src/main/java/net/gensokyoreimagined/nitori/mixin/needs_testing/MixinLevel.java @@ -12,7 +12,7 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . -package net.gensokyoreimagined.nitori.mixin; +package net.gensokyoreimagined.nitori.mixin.needs_testing; import com.google.common.collect.Lists; import net.gensokyoreimagined.nitori.common.util.collections.HashedReferenceList; diff --git a/src/main/resources/mixins.core.json b/src/main/resources/mixins.core.json index 98efe52..038501c 100755 --- a/src/main/resources/mixins.core.json +++ b/src/main/resources/mixins.core.json @@ -17,7 +17,6 @@ "MixinEntitySectionStorage", "MixinGameRules", "MixinIteratorSafeOrderedReferenceSet", - "MixinLevel", "MixinLevelStorageAccess", "MixinMob", "math.sine_lut.MixinMth",