diff --git a/.idea/.name b/.idea/.name
index a1956cb..5ba058c 100644
--- a/.idea/.name
+++ b/.idea/.name
@@ -1 +1 @@
-vmodaddon
\ No newline at end of file
+vmodextras
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index c573697..bd5b376 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -9,7 +9,7 @@
-
+
diff --git a/.idea/modules.xml b/.idea/modules.xml
index 357a1f3..d8eb237 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -2,8 +2,8 @@
-
-
+
+
\ No newline at end of file
diff --git a/.idea/modules/vmodaddon.main.iml b/.idea/modules/vmodextras.main.iml
similarity index 69%
rename from .idea/modules/vmodaddon.main.iml
rename to .idea/modules/vmodextras.main.iml
index ca2af54..6173907 100644
--- a/.idea/modules/vmodaddon.main.iml
+++ b/.idea/modules/vmodextras.main.iml
@@ -11,17 +11,12 @@
FORGE
MIXIN
- MCP
1
-
-
-
-
-
+
\ No newline at end of file
diff --git a/.idea/modules/vmodaddon.test.iml b/.idea/modules/vmodextras.test.iml
similarity index 57%
rename from .idea/modules/vmodaddon.test.iml
rename to .idea/modules/vmodextras.test.iml
index fdc2e90..bf09ada 100644
--- a/.idea/modules/vmodaddon.test.iml
+++ b/.idea/modules/vmodextras.test.iml
@@ -6,17 +6,12 @@
FORGE
MIXIN
- MCP
1
-
-
-
-
-
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 5cf63a5..a37c2a5 100644
--- a/build.gradle
+++ b/build.gradle
@@ -180,6 +180,8 @@ dependencies {
implementation(fg.deobf(files("./libs/trackwork-1.20.1-1.1.1b.jar")))
implementation(fg.deobf("org.valkyrienskies:valkyrienskies-120:2.3.0-beta.7"))
+ implementation 'com.fasterxml.jackson.core:jackson-annotations:2.14.0'
+
implementation 'net.minecraftforge:modlauncher:10.1.1'
implementation 'net.minecraftforge:forgespi:7.1.0'
diff --git a/gradle.properties b/gradle.properties
index 208b349..0d9f368 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -5,24 +5,10 @@ minecraft_version_range=[1.20.1,1.21)
forge_version=47.4.1
forge_version_range=[47,)
loader_version_range=[47,)
-# The mapping channel to use for mappings.
-# The default set of supported mapping channels are ["official", "snapshot", "snapshot_nodoc", "stable", "stable_nodoc"].
-# Additional mapping channels can be registered through the "channelProviders" extension in a Gradle plugin.
-#
-# | Channel | Version | |
-# |-----------|----------------------|--------------------------------------------------------------------------------|
-# | official | MCVersion | Official field/method names from Mojang mapping files |
-# | parchment | YYYY.MM.DD-MCVersion | Open community-sourced parameter names and javadocs layered on top of official |
-#
-# You must be aware of the Mojang license when using the 'official' or 'parchment' mappings.
-# See more information here: https://github.com/MinecraftForge/MCPConfig/blob/master/Mojang.md
-#
-# Parchment is an unofficial project maintained by ParchmentMC, separate from Minecraft Forge.
-# Additional setup is needed to use their mappings, see https://parchmentmc.org/docs/getting-started
mapping_channel=official
mapping_version=1.20.1
-mod_id=vmodaddon
-mod_name=VModAddon
+mod_id=vmodextras
+mod_name=VModExtras
mod_license=MIT
mod_version=1.0-SNAPSHOT
mod_group_id=space.eptaproject
diff --git a/settings.gradle b/settings.gradle
index 1c3cc9f..a5ed67c 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -12,4 +12,4 @@ plugins {
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.7.0'
}
-rootProject.name = 'vmodaddon'
+rootProject.name = 'vmodextras'
diff --git a/src/main/java/space/eptaproject/vmodextras/Validator.java b/src/main/java/space/eptaproject/vmodextras/Validator.java
index cd247d4..8b5a50d 100644
--- a/src/main/java/space/eptaproject/vmodextras/Validator.java
+++ b/src/main/java/space/eptaproject/vmodextras/Validator.java
@@ -12,7 +12,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@ToString
public class Validator implements IValidator {
public static final Logger LOGGER = LoggerFactory.getLogger("Validator");
- public static ResourceLocation RB = ResourceLocation.fromNamespaceAndPath(Vmodaddon.MODID, "example_block");
+ public static ResourceLocation RB = ResourceLocation.fromNamespaceAndPath(VmodExtras.MODID, "example_block");
public Validator() {
diff --git a/src/main/java/space/eptaproject/vmodextras/Vmodaddon.java b/src/main/java/space/eptaproject/vmodextras/VmodExtras.java
similarity index 86%
rename from src/main/java/space/eptaproject/vmodextras/Vmodaddon.java
rename to src/main/java/space/eptaproject/vmodextras/VmodExtras.java
index 8bdccd0..23e4483 100644
--- a/src/main/java/space/eptaproject/vmodextras/Vmodaddon.java
+++ b/src/main/java/space/eptaproject/vmodextras/VmodExtras.java
@@ -1,6 +1,10 @@
package space.eptaproject.vmodextras;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
import com.mojang.logging.LogUtils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.*;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType;
@@ -16,7 +20,7 @@ import net.minecraftforge.fml.config.ModConfig;
import net.minecraftforge.fml.event.config.ModConfigEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
-import net.minecraftforge.registries.RegistryObject;
+import net.minecraftforge.registries.*;
import org.slf4j.Logger;
import space.eptaproject.vmodextras.block.CompactBackupBlock;
import space.eptaproject.vmodextras.block.CompactBackupBlockEntity;
@@ -24,10 +28,13 @@ import space.eptaproject.vmodextras.block.TrackBackupBlock;
import space.eptaproject.vmodextras.block.TrackBackupBlockEntity;
import space.eptaproject.vmodextras.util.ModRegistry;
-@Mod(Vmodaddon.MODID)
-public class Vmodaddon {
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.Map;
- public static final String MODID = "vmodaddon";
+@Mod(VmodExtras.MODID)
+public class VmodExtras {
+ public static final String MODID = "vmodextras";
private static final Logger LOGGER = LogUtils.getLogger();
@@ -51,7 +58,7 @@ public class Vmodaddon {
static {
REGISTRY = new ModRegistry(MODID);
- TRAK_BUK = REGISTRY.BLOCKS.register("track_b", () -> new TrackBackupBlock(BlockBehaviour.Properties.of().mapColor(MapColor.STONE)));
+ TRAK_BUK = REGISTRY.BLOCKS.register("track_backup", () -> new TrackBackupBlock(BlockBehaviour.Properties.of().mapColor(MapColor.STONE)));
SHIP_VOID_BLOCK = REGISTRY.BLOCKS.register("ship_void", () -> new Block(BlockBehaviour.Properties.of().mapColor(MapColor.STONE)));
COMPACT_BACKUP = REGISTRY.BLOCKS.register("compact_backup", () -> new CompactBackupBlock(BlockBehaviour.Properties.of().mapColor(MapColor.STONE)));
@@ -60,14 +67,14 @@ public class Vmodaddon {
EXAMPLE_TAB = REGISTRY.TabBuilder()
.push((registry) -> {
- MY_BLOCK_ITEM = registry.register("track_b", () -> new BlockItem(TRAK_BUK.get(), new Item.Properties()));
+ MY_BLOCK_ITEM = registry.register("track_backup", () -> new BlockItem(TRAK_BUK.get(), new Item.Properties()));
SHIP_VOID_ITEM = registry.register("ship_void", () -> new BlockItem(SHIP_VOID_BLOCK.get(), new Item.Properties()));
COMPACT_BACKUP_ITEM = registry.register("compact_backup", () -> new BlockItem(COMPACT_BACKUP.get(), new Item.Properties()));
})
- .build("vmodaddon", Items.BEDROCK.getDefaultInstance());
+ .build("vmodetras", Items.BEDROCK.getDefaultInstance());
}
- public Vmodaddon() {
+ public VmodExtras() {
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
modEventBus.addListener(this::commonSetup);
diff --git a/src/main/java/space/eptaproject/vmodextras/block/CompactBackupBlock.java b/src/main/java/space/eptaproject/vmodextras/block/CompactBackupBlock.java
index 66cea60..2222a61 100644
--- a/src/main/java/space/eptaproject/vmodextras/block/CompactBackupBlock.java
+++ b/src/main/java/space/eptaproject/vmodextras/block/CompactBackupBlock.java
@@ -3,7 +3,7 @@ package space.eptaproject.vmodextras.block;
import com.simibubi.create.foundation.block.IBE;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType;
-import space.eptaproject.vmodextras.Vmodaddon;
+import space.eptaproject.vmodextras.VmodExtras;
public class CompactBackupBlock extends Block implements IBE {
@@ -13,7 +13,7 @@ public class CompactBackupBlock extends Block implements IBE getBlockEntityType() {
- return Vmodaddon.COMPACT_BACKUP_BLOCK_ENTITY.get();
+ return VmodExtras.COMPACT_BACKUP_BLOCK_ENTITY.get();
}
@Override
diff --git a/src/main/java/space/eptaproject/vmodextras/block/CompactBackupBlockEntity.java b/src/main/java/space/eptaproject/vmodextras/block/CompactBackupBlockEntity.java
index 1789848..0126123 100644
--- a/src/main/java/space/eptaproject/vmodextras/block/CompactBackupBlockEntity.java
+++ b/src/main/java/space/eptaproject/vmodextras/block/CompactBackupBlockEntity.java
@@ -15,14 +15,14 @@ import org.valkyrienskies.core.api.ships.ServerShip;
import org.valkyrienskies.mod.common.VSGameUtilsKt;
import space.eptaproject.vmodextras.trackwork.IPhysicsTrackController;
import space.eptaproject.vmodextras.trackwork.ISimpleWheelController;
-import space.eptaproject.vmodextras.Vmodaddon;
+import space.eptaproject.vmodextras.VmodExtras;
public class CompactBackupBlockEntity extends BlockEntity {
private CompoundTag pendingBackupData;
public CompactBackupBlockEntity(BlockPos p_155229_, BlockState p_155230_) {
- super(Vmodaddon.COMPACT_BACKUP_BLOCK_ENTITY.get(), p_155229_, p_155230_);
+ super(VmodExtras.COMPACT_BACKUP_BLOCK_ENTITY.get(), p_155229_, p_155230_);
}
@Override
diff --git a/src/main/java/space/eptaproject/vmodextras/block/TrackBackupBlock.java b/src/main/java/space/eptaproject/vmodextras/block/TrackBackupBlock.java
index 45c710a..b01a08f 100644
--- a/src/main/java/space/eptaproject/vmodextras/block/TrackBackupBlock.java
+++ b/src/main/java/space/eptaproject/vmodextras/block/TrackBackupBlock.java
@@ -3,7 +3,7 @@ package space.eptaproject.vmodextras.block;
import com.simibubi.create.foundation.block.IBE;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType;
-import space.eptaproject.vmodextras.Vmodaddon;
+import space.eptaproject.vmodextras.VmodExtras;
public class TrackBackupBlock extends Block implements IBE {
@@ -13,7 +13,7 @@ public class TrackBackupBlock extends Block implements IBE getBlockEntityType() {
- return Vmodaddon.MY_BLOCK_ENTITY.get();
+ return VmodExtras.MY_BLOCK_ENTITY.get();
}
@Override
diff --git a/src/main/java/space/eptaproject/vmodextras/block/TrackBackupBlockEntity.java b/src/main/java/space/eptaproject/vmodextras/block/TrackBackupBlockEntity.java
index ca12231..8d4069f 100644
--- a/src/main/java/space/eptaproject/vmodextras/block/TrackBackupBlockEntity.java
+++ b/src/main/java/space/eptaproject/vmodextras/block/TrackBackupBlockEntity.java
@@ -4,20 +4,19 @@ import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController;
import edn.stratodonut.trackwork.tracks.forces.SimpleWheelController;
import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.Tag;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
-import org.joml.Vector3d;
-import org.joml.Vector3dc;
import org.valkyrienskies.core.api.ships.ServerShip;
import org.valkyrienskies.mod.common.VSGameUtilsKt;
import space.eptaproject.vmodextras.trackwork.IPhysicsTrackController;
import space.eptaproject.vmodextras.trackwork.ISimpleWheelController;
-import space.eptaproject.vmodextras.Vmodaddon;
+import space.eptaproject.vmodextras.VmodExtras;
import space.eptaproject.vmodextras.util.IBlockEntityClear;
public class TrackBackupBlockEntity extends BlockEntity implements IBlockEntityClear {
public TrackBackupBlockEntity(BlockPos p_155229_, BlockState p_155230_) {
- super(Vmodaddon.MY_BLOCK_ENTITY.get(), p_155229_, p_155230_);
+ super(VmodExtras.MY_BLOCK_ENTITY.get(), p_155229_, p_155230_);
}
public CompoundTag tag = new CompoundTag();
@@ -74,47 +73,25 @@ public class TrackBackupBlockEntity extends BlockEntity implements IBlockEntityC
if (ship != null) {
{
PhysicsTrackController physicsTrackController = ship.getAttachment(PhysicsTrackController.class);
- IPhysicsTrackController controller = (IPhysicsTrackController) physicsTrackController;
if (physicsTrackController != null) {
- CompoundTag PhysicsTrackControllerTag = new CompoundTag();
+ IPhysicsTrackController controller = (IPhysicsTrackController) physicsTrackController;
+ CompoundTag local = new CompoundTag();
- PhysicsTrackControllerTag.putFloat("SuspensionStiffness", controller.getSuspensionStiffness());
- {
- CompoundTag suspensionAdjust = new CompoundTag();
+ controller.encode(local);
- Vector3dc vec = controller.getSuspensionAdjust();
-
- suspensionAdjust.putDouble("x", vec.x());
- suspensionAdjust.putDouble("y", vec.y());
- suspensionAdjust.putDouble("z", vec.z());
-
- PhysicsTrackControllerTag.put("suspensionAdjust", suspensionAdjust);
- }
-
- tag.put("PhysicsTrackController", PhysicsTrackControllerTag);
+ tag.put("PhysicsTrackController", local);
}
}
{
SimpleWheelController simpleWheelController = ship.getAttachment(SimpleWheelController.class);
- ISimpleWheelController controller = (ISimpleWheelController) simpleWheelController;
if (simpleWheelController != null) {
- CompoundTag SimpleWheelControllerTag = new CompoundTag();
+ ISimpleWheelController controller = (ISimpleWheelController) simpleWheelController;
+ CompoundTag local = new CompoundTag();
- SimpleWheelControllerTag.putFloat("SuspensionStiffness", controller.getSuspensionStiffness());
- {
- CompoundTag suspensionAdjust = new CompoundTag();
+ controller.encode(local);
- Vector3dc vec = controller.getSuspensionAdjust();
-
- suspensionAdjust.putDouble("x", vec.x());
- suspensionAdjust.putDouble("y", vec.y());
- suspensionAdjust.putDouble("z", vec.z());
-
- SimpleWheelControllerTag.put("suspensionAdjust", suspensionAdjust);
- }
-
- tag.put("SimpleWheelController", SimpleWheelControllerTag);
+ tag.put("SimpleWheelController", local);
}
}
}
@@ -124,34 +101,14 @@ public class TrackBackupBlockEntity extends BlockEntity implements IBlockEntityC
public void load(CompoundTag tag) {
this.tag = tag;
super.load(tag);
-
ServerShip ship = (ServerShip) VSGameUtilsKt.getShipObjectManagingPos(this.level, getBlockPos());
if (ship != null) {
- if (tag.contains("SimpleWheelController")) {
- CompoundTag L = tag.getCompound("SimpleWheelController");
- SimpleWheelController controller2 = SimpleWheelController.getOrCreate(ship);
- if (L.contains("SuspensionStiffness")) {
- ((ISimpleWheelController) controller2).setSuspensionStiffness(L.getFloat("SuspensionStiffness"));
- }
- if (L.contains("suspensionAdjust")) {
- CompoundTag suspensionAdjust = L.getCompound("suspensionAdjust");
-
- ((ISimpleWheelController) controller2).setSuspensionAdjust(new Vector3d(new Vector3d(suspensionAdjust.getDouble("x"), suspensionAdjust.getDouble("y"), suspensionAdjust.getDouble("z"))));
- }
+ if (tag.contains("SimpleWheelController", Tag.TAG_COMPOUND)) {
+ ((ISimpleWheelController) SimpleWheelController.getOrCreate(ship)).decode(tag.getCompound("SimpleWheelController"));
}
- if (tag.contains("PhysicsTrackController")) {
- CompoundTag L = tag.getCompound("PhysicsTrackController");
- PhysicsTrackController controller = PhysicsTrackController.getOrCreate(ship);
- if (L.contains("SuspensionStiffness")) {
- ((IPhysicsTrackController) controller).setSuspensionStiffness(L.getFloat("SuspensionStiffness"));
- }
- if (L.contains("suspensionAdjust")) {
- CompoundTag suspensionAdjust = L.getCompound("suspensionAdjust");
-
-
- ((IPhysicsTrackController) controller).setSuspensionAdjust(new Vector3d(suspensionAdjust.getDouble("x"), suspensionAdjust.getDouble("y"), suspensionAdjust.getDouble("z")));
- }
+ if (tag.contains("PhysicsTrackController", Tag.TAG_COMPOUND)) {
+ ((IPhysicsTrackController) PhysicsTrackController.getOrCreate(ship)).decode(tag.getCompound("PhysicsTrackController"));
}
}
}
diff --git a/src/main/java/space/eptaproject/vmodextras/mixin/A.java b/src/main/java/space/eptaproject/vmodextras/mixin/A.java
deleted file mode 100644
index 0ec4681..0000000
--- a/src/main/java/space/eptaproject/vmodextras/mixin/A.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package space.eptaproject.vmodextras.mixin;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.TYPE)
-public @interface A {
- String[] value();
-}
diff --git a/src/main/java/space/eptaproject/vmodextras/mixin/ITransformer.java b/src/main/java/space/eptaproject/vmodextras/mixin/ITransformer.java
deleted file mode 100644
index 5fb22a9..0000000
--- a/src/main/java/space/eptaproject/vmodextras/mixin/ITransformer.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package space.eptaproject.vmodextras.mixin;
-
-import org.objectweb.asm.tree.ClassNode;
-import org.spongepowered.asm.mixin.extensibility.IMixinInfo;
-
-public interface ITransformer {
- void transform(String targetClassName, ClassNode classNode, String mixinClassName, IMixinInfo mixinInfo);
-}
diff --git a/src/main/java/space/eptaproject/vmodextras/mixin/InstanceHolder.java b/src/main/java/space/eptaproject/vmodextras/mixin/InstanceHolder.java
deleted file mode 100644
index 8b5f961..0000000
--- a/src/main/java/space/eptaproject/vmodextras/mixin/InstanceHolder.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package space.eptaproject.vmodextras.mixin;
-
-import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap;
-
-import java.util.Map;
-
-public class InstanceHolder {
- private final Map, T> instances = new Object2ObjectArrayMap<>();
-
- public InstanceHolder() {
-
- }
- public T get(String cls) {
- try {
- return get((Class extends T>) Class.forName(cls));
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
-
-
- public T get(Class extends T> cls) {
- if (instances.containsKey(cls)) {
- return instances.get(cls);
- }
-
- try {
- T instance = cls.getDeclaredConstructor().newInstance();
- instances.put(cls, instance);
- return instance;
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
-}
diff --git a/src/main/java/space/eptaproject/vmodextras/mixin/KotlinOptimizationTransformer.java b/src/main/java/space/eptaproject/vmodextras/mixin/KotlinOptimizationTransformer.java
deleted file mode 100644
index f28e8bb..0000000
--- a/src/main/java/space/eptaproject/vmodextras/mixin/KotlinOptimizationTransformer.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package space.eptaproject.vmodextras.mixin;
-
-import org.objectweb.asm.Opcodes;
-import org.objectweb.asm.tree.*;
-import org.spongepowered.asm.mixin.extensibility.IMixinInfo;
-
-import java.util.ListIterator;
-
-public class KotlinOptimizationTransformer implements ITransformer {
-
-
- @Override
- public void transform(String targetClassName, ClassNode classNode, String mixinClassName, IMixinInfo mixinInfo) {
- for (MethodNode method : classNode.methods) {
- ListIterator it = method.instructions.iterator();
-
- while (it.hasNext()) {
- AbstractInsnNode insn = it.next();
-
- if (insn.getOpcode() == Opcodes.INVOKESTATIC &&
- insn instanceof MethodInsnNode methodInsn &&
- methodInsn.owner.equals("kotlin/jvm/internal/Intrinsics") &&
- (methodInsn.name.equals("checkParameterIsNotNull") || methodInsn.name.equals("checkNotNullParameter") || methodInsn.name.equals("checkNotNullExpressionValue")) &&
- methodInsn.desc.equals("(Ljava/lang/Object;Ljava/lang/String;)V")) {
-
- AbstractInsnNode arg2Insn = methodInsn.getPrevious();
- AbstractInsnNode arg1Insn = arg2Insn != null ? arg2Insn.getPrevious() : null;
-
- method.instructions.remove(arg1Insn);
- method.instructions.remove(arg2Insn);
- method.instructions.remove(insn);
- }
- }
- }
- }
-}
diff --git a/src/main/java/space/eptaproject/vmodextras/mixin/MixinPlugin.java b/src/main/java/space/eptaproject/vmodextras/mixin/MixinPlugin.java
index 928a150..556d9eb 100644
--- a/src/main/java/space/eptaproject/vmodextras/mixin/MixinPlugin.java
+++ b/src/main/java/space/eptaproject/vmodextras/mixin/MixinPlugin.java
@@ -5,14 +5,10 @@ import org.spongepowered.asm.mixin.extensibility.IMixinInfo;
import org.objectweb.asm.tree.*;
-import java.util.ArrayList;
import java.util.List;
-import java.util.Objects;
import java.util.Set;
public class MixinPlugin implements IMixinConfigPlugin {
- public InstanceHolder transformerInstanceHolder = new InstanceHolder<>();
-
@Override
public void onLoad(String mixinPackage) {
@@ -49,43 +45,6 @@ public class MixinPlugin implements IMixinConfigPlugin {
@Override
public void postApply(String targetClassName, ClassNode classNode, String mixinClassName, IMixinInfo mixinInfo) {
- String annotationDesc = "Lspace/eptaproject/vmodaddon/mixin/A;";
- if (classNode.visibleAnnotations == null) {
- classNode.visibleAnnotations = new ArrayList<>();
- }
-
- AnnotationNode existing = null;
- for (AnnotationNode ann : classNode.visibleAnnotations) {
- if (Objects.equals(ann.desc, annotationDesc)) {
- existing = ann;
- break;
- }
- }
-
- if (existing != null) {
- List