From b609896fc2c68ccc6e0eea4e98fcaec3cbe3795c Mon Sep 17 00:00:00 2001 From: CammiePone Date: Tue, 7 Sep 2021 14:32:21 -0400 Subject: [PATCH] fixed desync issue --- .../dev/cammiescorner/arcanus/Arcanus.java | 18 ++++++++++++++++++ .../arcanus/core/mixin/LivingEntityMixin.java | 14 +++----------- .../arcanus/core/mixin/PlayerEntityMixin.java | 18 ++---------------- 3 files changed, 23 insertions(+), 27 deletions(-) diff --git a/src/main/java/dev/cammiescorner/arcanus/Arcanus.java b/src/main/java/dev/cammiescorner/arcanus/Arcanus.java index 0bff8e1..ac33837 100644 --- a/src/main/java/dev/cammiescorner/arcanus/Arcanus.java +++ b/src/main/java/dev/cammiescorner/arcanus/Arcanus.java @@ -14,6 +14,11 @@ import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.data.DataTracker; +import net.minecraft.entity.data.TrackedData; +import net.minecraft.entity.data.TrackedDataHandlerRegistry; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.loot.function.LootFunctionType; @@ -56,6 +61,7 @@ public class Arcanus implements ModInitializer { @Override public void onInitialize() { + DataTrackers.MANA.getId(); AutoConfig.register(ArcanusConfig.class, JanksonConfigSerializer::new); config = AutoConfig.getConfigHolder(ArcanusConfig.class).getConfig(); @@ -84,4 +90,16 @@ private static Registry createRegistry(String name, Class clazz) { public static MutableText getSpellInputs(List pattern, int index) { return index >= pattern.size() || pattern.get(index) == null ? new LiteralText("?").formatted(Formatting.GRAY, Formatting.UNDERLINE) : new LiteralText(pattern.get(index).getSymbol()).formatted(Formatting.GREEN); } + + public static class DataTrackers { + public static final TrackedData IS_DISCOMBOBULATED = DataTracker.registerData(LivingEntity.class, TrackedDataHandlerRegistry.BOOLEAN); + public static final TrackedData DISCOMBOBULATED_TIMER = DataTracker.registerData(LivingEntity.class, TrackedDataHandlerRegistry.INTEGER); + + public static final TrackedData MANA = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.INTEGER); + public static final TrackedData MANA_RECHARGE_RATE = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.FLOAT); + public static final TrackedData BURNOUT = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.INTEGER); + public static final TrackedData BURNOUT_RECHARGE_RATE = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.FLOAT); + public static final TrackedData MANA_LOCK = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.INTEGER); + public static final TrackedData SHOW_MANA = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.BOOLEAN); + } } diff --git a/src/main/java/dev/cammiescorner/arcanus/core/mixin/LivingEntityMixin.java b/src/main/java/dev/cammiescorner/arcanus/core/mixin/LivingEntityMixin.java index aa77e01..4c6cc33 100644 --- a/src/main/java/dev/cammiescorner/arcanus/core/mixin/LivingEntityMixin.java +++ b/src/main/java/dev/cammiescorner/arcanus/core/mixin/LivingEntityMixin.java @@ -5,28 +5,20 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.data.DataTracker; -import net.minecraft.entity.data.TrackedData; -import net.minecraft.entity.data.TrackedDataHandlerRegistry; import net.minecraft.nbt.NbtCompound; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyVariable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import static dev.cammiescorner.arcanus.Arcanus.DataTrackers.DISCOMBOBULATED_TIMER; +import static dev.cammiescorner.arcanus.Arcanus.DataTrackers.IS_DISCOMBOBULATED; + @Mixin(LivingEntity.class) public abstract class LivingEntityMixin extends Entity implements CanBeDiscombobulated { - @Shadow private float movementSpeed; - @Unique - private static final TrackedData IS_DISCOMBOBULATED = DataTracker.registerData(LivingEntity.class, TrackedDataHandlerRegistry.BOOLEAN); - @Unique - private static final TrackedData DISCOMBOBULATED_TIMER = DataTracker.registerData(LivingEntity.class, TrackedDataHandlerRegistry.INTEGER); - public LivingEntityMixin(EntityType type, World world) { super(type, world); } diff --git a/src/main/java/dev/cammiescorner/arcanus/core/mixin/PlayerEntityMixin.java b/src/main/java/dev/cammiescorner/arcanus/core/mixin/PlayerEntityMixin.java index 14d3729..5a52ecf 100644 --- a/src/main/java/dev/cammiescorner/arcanus/core/mixin/PlayerEntityMixin.java +++ b/src/main/java/dev/cammiescorner/arcanus/core/mixin/PlayerEntityMixin.java @@ -18,9 +18,6 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.TntEntity; import net.minecraft.entity.damage.DamageSource; -import net.minecraft.entity.data.DataTracker; -import net.minecraft.entity.data.TrackedData; -import net.minecraft.entity.data.TrackedDataHandlerRegistry; import net.minecraft.entity.player.HungerManager; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.projectile.PersistentProjectileEntity; @@ -53,6 +50,7 @@ import java.util.List; import java.util.Optional; +import static dev.cammiescorner.arcanus.Arcanus.DataTrackers.*; import static dev.cammiescorner.arcanus.Arcanus.config; @Mixin(PlayerEntity.class) @@ -74,18 +72,6 @@ public abstract class PlayerEntityMixin extends LivingEntity implements MagicUse private int spellTimer = 0; @Unique private static final int MAX_MANA = 20; - @Unique - private static final TrackedData MANA = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.INTEGER); - @Unique - private static final TrackedData MANA_RECHARGE_RATE = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.FLOAT); - @Unique - private static final TrackedData BURNOUT = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.INTEGER); - @Unique - private static final TrackedData BURNOUT_RECHARGE_RATE = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.FLOAT); - @Unique - private static final TrackedData MANA_LOCK = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.INTEGER); - @Unique - private static final TrackedData SHOW_MANA = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.BOOLEAN); protected PlayerEntityMixin(EntityType entityType, World world) { super(entityType, world); @@ -169,7 +155,7 @@ public void writeNbt(NbtCompound tag, CallbackInfo info) { rootTag.putInt("SpellTimer", spellTimer); } - @Inject(method = "initDataTracker", at = @At("TAIL")) + @Inject(method = "initDataTracker", at = @At("HEAD")) public void initTracker(CallbackInfo info) { dataTracker.startTracking(MANA, MAX_MANA); dataTracker.startTracking(MANA_RECHARGE_RATE, 1F);