Add TestTrick2
Some checks are pending
build / build (push) Waiting to run

This commit is contained in:
shylie 2026-04-27 09:28:00 -04:00
parent 93429e36e6
commit 3f1422d5a0
11 changed files with 77 additions and 31 deletions

View File

@ -43,15 +43,11 @@ repositories {
}
loom {
splitEnvironmentSourceSets()
mods {
"shylie-test-mod" {
sourceSet sourceSets.main
sourceSet sourceSets.client
}
}
}
fabricApi {

View File

@ -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
}
}

View File

@ -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");
}
}

View File

@ -9,7 +9,7 @@ import net.minecraft.core.Registry;
import java.util.OptionalInt;
public final class FragmentTypes {
public static final FragmentType<SublevelFragment> SUBLEVEL = register("sublevel", SublevelFragment.ENDEC);
public static final FragmentType<SubLevelFragment> SUBLEVEL = register("sublevel", SubLevelFragment.ENDEC);
public static void register() {
}

View File

@ -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<SublevelFragment> ENDEC = StructEndecBuilder.of(
EndecTomfoolery.UUID.fieldOf("uuid", SublevelFragment::uuid),
SublevelFragment::new
public record SubLevelFragment(UUID uuid) implements Fragment {
public static final StructEndec<SubLevelFragment> 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<SubLevel> getSublevel(Level level) {
var container = SubLevelContainer.getContainer(level);
if (container == null) {
return Optional.empty();
}
return Optional.ofNullable(container.getSubLevel(uuid));
}
}

View File

@ -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<TestTrick> {
@ -22,7 +21,7 @@ public class TestTrick extends Trick<TestTrick> {
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<TestTrick> {
new BoundingBox3i(blockPos, blockPos)
);
return new SublevelFragment(level.getUniqueId());
return new SubLevelFragment(level.getUniqueId());
}
else {
throw new BlockTooHardBlunder(this);

View File

@ -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<TestTrick2> {
private static final TickData.Key<HashMap<SubLevelFragment, Float>> 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;
}
}

View File

@ -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 extends Trick<?>> T register(String path, T trick) {
return Registry.register(dev.enjarai.trickster.spell.trick.Tricks.REGISTRY, ShylieTestMod.id(path), trick);

View File

@ -3,7 +3,6 @@
"package": "info.shylie.testmod.client.mixin",
"compatibilityLevel": "JAVA_21",
"client": [
"ExampleClientMixin"
],
"injectors": {
"defaultRequire": 1