diff --git a/build.gradle b/build.gradle index a398719..a0789ad 100644 --- a/build.gradle +++ b/build.gradle @@ -43,15 +43,11 @@ repositories { } loom { - splitEnvironmentSourceSets() - mods { "shylie-test-mod" { sourceSet sourceSets.main - sourceSet sourceSets.client } } - } fabricApi { diff --git a/src/client/java/info/shylie/testmod/client/mixin/ExampleClientMixin.java b/src/client/java/info/shylie/testmod/client/mixin/ExampleClientMixin.java deleted file mode 100644 index 8a35317..0000000 --- a/src/client/java/info/shylie/testmod/client/mixin/ExampleClientMixin.java +++ /dev/null @@ -1,15 +0,0 @@ -package info.shylie.testmod.client.mixin; - -import net.minecraft.client.Minecraft; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(Minecraft.class) -public class ExampleClientMixin { - @Inject(at = @At("HEAD"), method = "run") - private void init(CallbackInfo info) { - // This code is injected into the start of Minecraft.run()V - } -} \ No newline at end of file diff --git a/src/client/java/info/shylie/testmod/client/ShylieTestModClient.java b/src/main/java/info/shylie/testmod/client/ShylieTestModClient.java similarity index 100% rename from src/client/java/info/shylie/testmod/client/ShylieTestModClient.java rename to src/main/java/info/shylie/testmod/client/ShylieTestModClient.java diff --git a/src/client/java/info/shylie/testmod/client/ShylieTestModDataGenerator.java b/src/main/java/info/shylie/testmod/client/ShylieTestModDataGenerator.java similarity index 100% rename from src/client/java/info/shylie/testmod/client/ShylieTestModDataGenerator.java rename to src/main/java/info/shylie/testmod/client/ShylieTestModDataGenerator.java diff --git a/src/main/java/info/shylie/testmod/spell/blunder/UnknownSubLevelBlunder.java b/src/main/java/info/shylie/testmod/spell/blunder/UnknownSubLevelBlunder.java new file mode 100644 index 0000000..628fd41 --- /dev/null +++ b/src/main/java/info/shylie/testmod/spell/blunder/UnknownSubLevelBlunder.java @@ -0,0 +1,17 @@ +package info.shylie.testmod.spell.blunder; + +import dev.enjarai.trickster.spell.blunder.BlunderException; +import dev.enjarai.trickster.spell.blunder.TrickBlunderException; +import dev.enjarai.trickster.spell.trick.Trick; +import net.minecraft.network.chat.MutableComponent; + +public class UnknownSubLevelBlunder extends TrickBlunderException { + public UnknownSubLevelBlunder(Trick source) { + super(source); + } + + @Override + public MutableComponent createMessage() { + return super.createMessage().append("Unknown sublevel"); + } +} diff --git a/src/main/java/info/shylie/testmod/spell/fragment/FragmentTypes.java b/src/main/java/info/shylie/testmod/spell/fragment/FragmentTypes.java index 9d50872..45867fd 100644 --- a/src/main/java/info/shylie/testmod/spell/fragment/FragmentTypes.java +++ b/src/main/java/info/shylie/testmod/spell/fragment/FragmentTypes.java @@ -9,7 +9,7 @@ import net.minecraft.core.Registry; import java.util.OptionalInt; public final class FragmentTypes { - public static final FragmentType SUBLEVEL = register("sublevel", SublevelFragment.ENDEC); + public static final FragmentType SUBLEVEL = register("sublevel", SubLevelFragment.ENDEC); public static void register() { } diff --git a/src/main/java/info/shylie/testmod/spell/fragment/SublevelFragment.java b/src/main/java/info/shylie/testmod/spell/fragment/SubLevelFragment.java similarity index 51% rename from src/main/java/info/shylie/testmod/spell/fragment/SublevelFragment.java rename to src/main/java/info/shylie/testmod/spell/fragment/SubLevelFragment.java index 19ccab9..0e9ec0f 100644 --- a/src/main/java/info/shylie/testmod/spell/fragment/SublevelFragment.java +++ b/src/main/java/info/shylie/testmod/spell/fragment/SubLevelFragment.java @@ -3,16 +3,20 @@ package info.shylie.testmod.spell.fragment; import dev.enjarai.trickster.EndecTomfoolery; import dev.enjarai.trickster.spell.Fragment; import dev.enjarai.trickster.spell.fragment.FragmentType; +import dev.ryanhcode.sable.api.sublevel.SubLevelContainer; +import dev.ryanhcode.sable.sublevel.SubLevel; import io.wispforest.endec.StructEndec; import io.wispforest.endec.impl.StructEndecBuilder; import net.minecraft.network.chat.Component; +import net.minecraft.world.level.Level; +import java.util.Optional; import java.util.UUID; -public record SublevelFragment(UUID uuid) implements Fragment { - public static final StructEndec ENDEC = StructEndecBuilder.of( - EndecTomfoolery.UUID.fieldOf("uuid", SublevelFragment::uuid), - SublevelFragment::new +public record SubLevelFragment(UUID uuid) implements Fragment { + public static final StructEndec ENDEC = StructEndecBuilder.of( + EndecTomfoolery.UUID.fieldOf("uuid", SubLevelFragment::uuid), + SubLevelFragment::new ); public static final int WEIGHT = 8; @@ -33,6 +37,14 @@ public record SublevelFragment(UUID uuid) implements Fragment { @Override public boolean equals(Object obj) { - return obj instanceof SublevelFragment(UUID other) && uuid.equals(other); + return obj instanceof SubLevelFragment(UUID other) && uuid.equals(other); + } + + public Optional getSublevel(Level level) { + var container = SubLevelContainer.getContainer(level); + if (container == null) { + return Optional.empty(); + } + return Optional.ofNullable(container.getSubLevel(uuid)); } } diff --git a/src/main/java/info/shylie/testmod/spell/trick/TestTrick.java b/src/main/java/info/shylie/testmod/spell/trick/TestTrick.java index f6d8f5d..4a32532 100644 --- a/src/main/java/info/shylie/testmod/spell/trick/TestTrick.java +++ b/src/main/java/info/shylie/testmod/spell/trick/TestTrick.java @@ -10,11 +10,10 @@ import dev.enjarai.trickster.spell.fragment.FragmentType; import dev.enjarai.trickster.spell.fragment.VectorFragment; import dev.enjarai.trickster.spell.trick.Trick; import dev.enjarai.trickster.spell.type.Signature; -import dev.ryanhcode.sable.Sable; import dev.ryanhcode.sable.api.SubLevelAssemblyHelper; import dev.ryanhcode.sable.companion.math.BoundingBox3i; import info.shylie.testmod.spell.fragment.FragmentTypes; -import info.shylie.testmod.spell.fragment.SublevelFragment; +import info.shylie.testmod.spell.fragment.SubLevelFragment; import io.vavr.collection.Array; public class TestTrick extends Trick { @@ -22,7 +21,7 @@ public class TestTrick extends Trick { super(Pattern.of(3, 4, 5), Signature.of(FragmentType.VECTOR, TestTrick::run, FragmentTypes.SUBLEVEL)); } - public SublevelFragment run(SpellContext ctx, VectorFragment pos) { + public SubLevelFragment run(SpellContext ctx, VectorFragment pos) { var blockPos = pos.toBlockPos(); var world = ctx.source().getWorld(); @@ -44,7 +43,7 @@ public class TestTrick extends Trick { new BoundingBox3i(blockPos, blockPos) ); - return new SublevelFragment(level.getUniqueId()); + return new SubLevelFragment(level.getUniqueId()); } else { throw new BlockTooHardBlunder(this); diff --git a/src/main/java/info/shylie/testmod/spell/trick/TestTrick2.java b/src/main/java/info/shylie/testmod/spell/trick/TestTrick2.java new file mode 100644 index 0000000..c600967 --- /dev/null +++ b/src/main/java/info/shylie/testmod/spell/trick/TestTrick2.java @@ -0,0 +1,36 @@ +package info.shylie.testmod.spell.trick; + +import dev.enjarai.trickster.spell.Pattern; +import dev.enjarai.trickster.spell.SpellContext; +import dev.enjarai.trickster.spell.execution.TickData; +import dev.enjarai.trickster.spell.fragment.FragmentType; +import dev.enjarai.trickster.spell.fragment.VectorFragment; +import dev.enjarai.trickster.spell.fragment.VoidFragment; +import dev.enjarai.trickster.spell.trick.Trick; +import dev.enjarai.trickster.spell.type.Signature; +import dev.ryanhcode.sable.sublevel.ServerSubLevel; +import info.shylie.testmod.ShylieTestMod; +import info.shylie.testmod.spell.blunder.UnknownSubLevelBlunder; +import info.shylie.testmod.spell.fragment.FragmentTypes; +import info.shylie.testmod.spell.fragment.SubLevelFragment; + +import java.util.HashMap; + +public class TestTrick2 extends Trick { + private static final TickData.Key> COMPOUND_LEN = new TickData.Key<>( + ShylieTestMod.id("test_trick_2_compound_len"), null + ); + + public TestTrick2() { + super( + Pattern.of(3, 6, 4, 5), + Signature.of(FragmentTypes.SUBLEVEL, FragmentType.VECTOR, TestTrick2::run, FragmentType.VOID) + ); + } + + public VoidFragment run(SpellContext ctx, SubLevelFragment target, VectorFragment v) throws UnknownSubLevelBlunder { + var subLevel = target.getSublevel(ctx.source().getWorld()).orElseThrow(() -> new UnknownSubLevelBlunder(this)); + subLevel.markRemoved(); + return VoidFragment.INSTANCE; + } +} diff --git a/src/main/java/info/shylie/testmod/spell/trick/Tricks.java b/src/main/java/info/shylie/testmod/spell/trick/Tricks.java index 21fb225..efebfca 100644 --- a/src/main/java/info/shylie/testmod/spell/trick/Tricks.java +++ b/src/main/java/info/shylie/testmod/spell/trick/Tricks.java @@ -6,8 +6,10 @@ import net.minecraft.core.Registry; public class Tricks { public static final TestTrick TEST = register("test", new TestTrick()); + public static final TestTrick2 TEST_2 = register("test_2", new TestTrick2()); - public static void register() {} + public static void register() { + } private static > T register(String path, T trick) { return Registry.register(dev.enjarai.trickster.spell.trick.Tricks.REGISTRY, ShylieTestMod.id(path), trick); diff --git a/src/client/resources/shylie-test-mod.client.mixins.json b/src/main/resources/shylie-test-mod.client.mixins.json similarity index 89% rename from src/client/resources/shylie-test-mod.client.mixins.json rename to src/main/resources/shylie-test-mod.client.mixins.json index ac912c8..74b61b5 100644 --- a/src/client/resources/shylie-test-mod.client.mixins.json +++ b/src/main/resources/shylie-test-mod.client.mixins.json @@ -3,7 +3,6 @@ "package": "info.shylie.testmod.client.mixin", "compatibilityLevel": "JAVA_21", "client": [ - "ExampleClientMixin" ], "injectors": { "defaultRequire": 1