From de5471b082b86d10717abeba4a984c31b8104d52 Mon Sep 17 00:00:00 2001 From: UserUNP <39243708+UserUNP@users.noreply.github.com> Date: Sun, 1 Jun 2025 23:37:14 +0000 Subject: [PATCH 1/4] some new nodes --- .gitignore | 2 ++ .../fireflow/code/CodeEvaluator.java | 8 +++++ .../fireflow/code/node/NodeList.java | 1 + .../impl/event/world/OnPlayerRespawnNode.java | 35 +++++++++++++++++++ .../movement/GetPlayerVelocityNode.java | 23 ++++++++++++ .../player/movement/SetPlayerGliding.java | 30 ++++++++++++++++ .../impl/player/visual/SetPlayerPose.java | 32 +++++++++++++++++ .../node/impl/string/MatchRegExpNode.java | 30 ++++++++++++++++ .../fireflow/mixin/PlayerManagerMixin.java | 18 +++++++--- 9 files changed, 175 insertions(+), 4 deletions(-) create mode 100644 src/main/java/de/blazemcworld/fireflow/code/node/impl/event/world/OnPlayerRespawnNode.java create mode 100644 src/main/java/de/blazemcworld/fireflow/code/node/impl/player/movement/GetPlayerVelocityNode.java create mode 100644 src/main/java/de/blazemcworld/fireflow/code/node/impl/player/movement/SetPlayerGliding.java create mode 100644 src/main/java/de/blazemcworld/fireflow/code/node/impl/player/visual/SetPlayerPose.java create mode 100644 src/main/java/de/blazemcworld/fireflow/code/node/impl/string/MatchRegExpNode.java diff --git a/.gitignore b/.gitignore index f4c0745..3e17adc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ run .idea +.vscode +.idx .gradle build bin \ No newline at end of file diff --git a/src/main/java/de/blazemcworld/fireflow/code/CodeEvaluator.java b/src/main/java/de/blazemcworld/fireflow/code/CodeEvaluator.java index 530e441..651e9e8 100644 --- a/src/main/java/de/blazemcworld/fireflow/code/CodeEvaluator.java +++ b/src/main/java/de/blazemcworld/fireflow/code/CodeEvaluator.java @@ -290,6 +290,14 @@ public boolean allowDeath(LivingEntity target, DamageSource source, float damage return !cancel; } + public void onRespawn(ServerPlayerEntity player) { + for (Node node : nodes) { + if (node instanceof OnPlayerRespawnNode n) { + n.onRespawn(this, player); + } + } + } + public void nextTick(Runnable r) { synchronized (tickTasks) { tickTasks.add(r); diff --git a/src/main/java/de/blazemcworld/fireflow/code/node/NodeList.java b/src/main/java/de/blazemcworld/fireflow/code/node/NodeList.java index 22e648d..b1eec8d 100644 --- a/src/main/java/de/blazemcworld/fireflow/code/node/NodeList.java +++ b/src/main/java/de/blazemcworld/fireflow/code/node/NodeList.java @@ -273,6 +273,7 @@ public static void init() { .add(new CharacterAtNode()) .add(new CombineStringsNode()) .add(new LowercaseNode()) + .add(new MatchRegExpNode()) .add(new ReplaceStringNode()) .add(new SplitStringNode()) .add(new StringContainsNode()) diff --git a/src/main/java/de/blazemcworld/fireflow/code/node/impl/event/world/OnPlayerRespawnNode.java b/src/main/java/de/blazemcworld/fireflow/code/node/impl/event/world/OnPlayerRespawnNode.java new file mode 100644 index 0000000..615d472 --- /dev/null +++ b/src/main/java/de/blazemcworld/fireflow/code/node/impl/event/world/OnPlayerRespawnNode.java @@ -0,0 +1,35 @@ +package de.blazemcworld.fireflow.code.node.impl.event.world; + +import de.blazemcworld.fireflow.code.CodeEvaluator; +import de.blazemcworld.fireflow.code.CodeThread; +import de.blazemcworld.fireflow.code.node.Node; +import de.blazemcworld.fireflow.code.type.PlayerType; +import de.blazemcworld.fireflow.code.type.SignalType; +import de.blazemcworld.fireflow.code.value.PlayerValue; +import net.minecraft.item.Items; +import net.minecraft.server.network.ServerPlayerEntity; + +public class OnPlayerRespawnNode extends Node { + private final Output signal; + private final Output player; + + public OnPlayerRespawnNode() { + super("on_player_respawn", "On Player Respawn", "Emits a signal when a player respawns.", Items.OAK_SAPLING); + + signal = new Output<>("signal", "Signal", SignalType.INSTANCE); + player = new Output<>("player", "Player", PlayerType.INSTANCE); + player.valueFromScope(); + } + + @Override + public Node copy() { + return new OnPlayerRespawnNode(); + } + + public void onRespawn(CodeEvaluator evaluator, ServerPlayerEntity p) { + CodeThread thread = evaluator.newCodeThread(); + thread.setScopeValue(player, new PlayerValue(p)); + thread.sendSignal(signal); + thread.clearQueue(); + } +} diff --git a/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/movement/GetPlayerVelocityNode.java b/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/movement/GetPlayerVelocityNode.java new file mode 100644 index 0000000..b68534b --- /dev/null +++ b/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/movement/GetPlayerVelocityNode.java @@ -0,0 +1,23 @@ +package de.blazemcworld.fireflow.code.node.impl.player.movement; + +import de.blazemcworld.fireflow.code.node.Node; +import de.blazemcworld.fireflow.code.type.PlayerType; +import de.blazemcworld.fireflow.code.type.VectorType; +import de.blazemcworld.fireflow.code.value.PlayerValue; +import net.minecraft.item.Items; +import net.minecraft.util.math.Vec3d; + +public class GetPlayerVelocityNode extends Node { + public GetPlayerVelocityNode() { + super("get_player_velocity", "Get Player Velocity", "Gets the player's velocity", Items.ARROW); + Input player = new Input<>("player", "Player", PlayerType.INSTANCE); + Output velocity = new Output<>("velocity", "Velocity", VectorType.INSTANCE); + + velocity.valueFrom(ctx -> player.getValue(ctx).tryGet(ctx, p -> p.getVelocity(), null)); + } + + @Override + public Node copy() { + return new GetPlayerVelocityNode(); + } +} diff --git a/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/movement/SetPlayerGliding.java b/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/movement/SetPlayerGliding.java new file mode 100644 index 0000000..186360a --- /dev/null +++ b/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/movement/SetPlayerGliding.java @@ -0,0 +1,30 @@ +package de.blazemcworld.fireflow.code.node.impl.player.movement; + +import de.blazemcworld.fireflow.code.node.Node; +import de.blazemcworld.fireflow.code.type.ConditionType; +import de.blazemcworld.fireflow.code.type.PlayerType; +import de.blazemcworld.fireflow.code.type.SignalType; +import de.blazemcworld.fireflow.code.value.PlayerValue; +import net.minecraft.item.Items; + +public class SetPlayerGliding extends Node { + public SetPlayerGliding() { + super("set_player_gliding", "Set Player Gliding", "", Items.ELYTRA); + Input signal = new Input<>("signal", "Signal", SignalType.INSTANCE); + Input player = new Input<>("player", "Player", PlayerType.INSTANCE); + Input allow = new Input<>("allow", "Allow", ConditionType.INSTANCE); + Output next = new Output<>("next", "Next", SignalType.INSTANCE); + signal.onSignal((ctx) -> { + player.getValue(ctx).tryUse(ctx, p -> { + if (allow.getValue(ctx)) p.startGliding(); + else p.stopGliding(); + }); + ctx.sendSignal(next); + }); + } + + @Override + public Node copy() { + return new SetPlayerGliding(); + } +} diff --git a/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/visual/SetPlayerPose.java b/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/visual/SetPlayerPose.java new file mode 100644 index 0000000..c03ba17 --- /dev/null +++ b/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/visual/SetPlayerPose.java @@ -0,0 +1,32 @@ +package de.blazemcworld.fireflow.code.node.impl.player.visual; + +import java.util.Arrays; + +import de.blazemcworld.fireflow.code.node.Node; +import de.blazemcworld.fireflow.code.type.PlayerType; +import de.blazemcworld.fireflow.code.type.SignalType; +import de.blazemcworld.fireflow.code.type.StringType; +import de.blazemcworld.fireflow.code.value.PlayerValue; +import net.minecraft.entity.EntityPose; +import net.minecraft.item.Items; + +public class SetPlayerPose extends Node { + public SetPlayerPose() { + super("send_message", "Send Message", "Sends a message to the player", Items.ARMOR_STAND); + + Input signal = new Input<>("signal", "Signal", SignalType.INSTANCE); + Input player = new Input<>("player", "Player", PlayerType.INSTANCE); + Input pose = new Input<>("pose", "Pose", StringType.INSTANCE).options(Arrays.stream(EntityPose.values()).map(s -> s.name().toLowerCase()).toArray(String[]::new)); + Output next = new Output<>("next", "Next", SignalType.INSTANCE); + + signal.onSignal((ctx) -> { + player.getValue(ctx).tryUse(ctx, p -> p.setPose(EntityPose.valueOf(pose.getValue(ctx).toUpperCase()))); + ctx.sendSignal(next); + }); + } + + @Override + public Node copy() { + return new SetPlayerPose(); + } +} diff --git a/src/main/java/de/blazemcworld/fireflow/code/node/impl/string/MatchRegExpNode.java b/src/main/java/de/blazemcworld/fireflow/code/node/impl/string/MatchRegExpNode.java new file mode 100644 index 0000000..62c10ea --- /dev/null +++ b/src/main/java/de/blazemcworld/fireflow/code/node/impl/string/MatchRegExpNode.java @@ -0,0 +1,30 @@ +package de.blazemcworld.fireflow.code.node.impl.string; + +import java.util.regex.MatchResult; +import java.util.regex.Pattern; + +import de.blazemcworld.fireflow.code.node.Node; +import de.blazemcworld.fireflow.code.type.ListType; +import de.blazemcworld.fireflow.code.type.StringType; +import de.blazemcworld.fireflow.code.value.ListValue; +import net.minecraft.item.Items; + +public class MatchRegExpNode extends Node { + public MatchRegExpNode() { + super("match_regexp", "Match RegExp", "Match a regular expression against a string.", Items.TRIPWIRE_HOOK); + + Input inputString = new Input<>("inputString", "Input String", StringType.INSTANCE); + Input exprString = new Input<>("exprString", "Expression", StringType.INSTANCE); + Output> result = new Output<>("result", "Result", ListType.of(StringType.INSTANCE)); + + result.valueFrom(ctx -> new ListValue<>(StringType.INSTANCE, Pattern.compile(exprString.getValue(ctx)) + .matcher(inputString.getValue(ctx)) + .results().map(MatchResult::group) + .toList())); + } + + @Override + public Node copy() { + return new MatchRegExpNode(); + } +} diff --git a/src/main/java/de/blazemcworld/fireflow/mixin/PlayerManagerMixin.java b/src/main/java/de/blazemcworld/fireflow/mixin/PlayerManagerMixin.java index 24418b8..fcbdfad 100644 --- a/src/main/java/de/blazemcworld/fireflow/mixin/PlayerManagerMixin.java +++ b/src/main/java/de/blazemcworld/fireflow/mixin/PlayerManagerMixin.java @@ -1,15 +1,19 @@ package de.blazemcworld.fireflow.mixin; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.server.PlayerManager; -import net.minecraft.server.network.ServerPlayerEntity; +import java.util.Optional; + 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; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import java.util.Optional; +import de.blazemcworld.fireflow.space.Space; +import de.blazemcworld.fireflow.space.SpaceManager; +import de.blazemcworld.fireflow.util.ModeManager; +import net.minecraft.nbt.NbtCompound; +import net.minecraft.server.PlayerManager; +import net.minecraft.server.network.ServerPlayerEntity; @Mixin(PlayerManager.class) public class PlayerManagerMixin { @@ -24,4 +28,10 @@ private void dontLoad(ServerPlayerEntity player, CallbackInfoReturnable cir) { + Space space = SpaceManager.getSpaceForPlayer(player); + if (space != null && ModeManager.getFor(player) == ModeManager.Mode.PLAY) space.evaluator.onRespawn(player);; + } + } From 6e9b81e5b929f14dcc276a4adc911a460d51523e Mon Sep 17 00:00:00 2001 From: UserUNP <39243708+UserUNP@users.noreply.github.com> Date: Sun, 8 Jun 2025 15:31:25 +0000 Subject: [PATCH 2/4] add the missing nodes in nodes list --- .../java/de/blazemcworld/fireflow/code/node/NodeList.java | 4 ++++ .../{SetPlayerGliding.java => SetPlayerGlidingNode.java} | 6 +++--- .../visual/{SetPlayerPose.java => SetPlayerPoseNode.java} | 6 +++--- 3 files changed, 10 insertions(+), 6 deletions(-) rename src/main/java/de/blazemcworld/fireflow/code/node/impl/player/movement/{SetPlayerGliding.java => SetPlayerGlidingNode.java} (89%) rename src/main/java/de/blazemcworld/fireflow/code/node/impl/player/visual/{SetPlayerPose.java => SetPlayerPoseNode.java} (91%) diff --git a/src/main/java/de/blazemcworld/fireflow/code/node/NodeList.java b/src/main/java/de/blazemcworld/fireflow/code/node/NodeList.java index b1eec8d..2acca20 100644 --- a/src/main/java/de/blazemcworld/fireflow/code/node/NodeList.java +++ b/src/main/java/de/blazemcworld/fireflow/code/node/NodeList.java @@ -120,6 +120,7 @@ public static void init() { .add(new OnPlayerDropItemNode()) .add(new OnPlayerInteractBlockNode()) .add(new OnPlayerPlaceBlockNode()) + .add(new OnPlayerRespawnNode()) ) .add(new OnPlayerLoseFoodNode()) .add(new OnPlayerLoseSaturationNode()) @@ -230,6 +231,7 @@ public static void init() { .add(new PlayerListNode()) ) .add(new Category("Movement", Items.FEATHER) + .add(new GetPlayerVelocityNode()) .add(new IsPlayerSneakingNode()) .add(new IsPlayerSprintingNode()) .add(new PlayerCanFlyNode()) @@ -239,6 +241,7 @@ public static void init() { .add(new PlayerStandingBlockNode()) .add(new SetAllowFlyingNode()) .add(new SetPlayerFlyingNode()) + .add(new SetPlayerGlidingNode()) .add(new SetPlayerVelocityNode()) .add(new TeleportPlayerNode()) ) @@ -259,6 +262,7 @@ public static void init() { .add(new SendBlockChangeNode()) .add(new SendMessageNode()) .add(new SendTitleNode()) + .add(new SetPlayerPoseNode()) .add(new SetPlayerSkinNode()) ) ) diff --git a/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/movement/SetPlayerGliding.java b/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/movement/SetPlayerGlidingNode.java similarity index 89% rename from src/main/java/de/blazemcworld/fireflow/code/node/impl/player/movement/SetPlayerGliding.java rename to src/main/java/de/blazemcworld/fireflow/code/node/impl/player/movement/SetPlayerGlidingNode.java index 186360a..8c899aa 100644 --- a/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/movement/SetPlayerGliding.java +++ b/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/movement/SetPlayerGlidingNode.java @@ -7,8 +7,8 @@ import de.blazemcworld.fireflow.code.value.PlayerValue; import net.minecraft.item.Items; -public class SetPlayerGliding extends Node { - public SetPlayerGliding() { +public class SetPlayerGlidingNode extends Node { + public SetPlayerGlidingNode() { super("set_player_gliding", "Set Player Gliding", "", Items.ELYTRA); Input signal = new Input<>("signal", "Signal", SignalType.INSTANCE); Input player = new Input<>("player", "Player", PlayerType.INSTANCE); @@ -25,6 +25,6 @@ public SetPlayerGliding() { @Override public Node copy() { - return new SetPlayerGliding(); + return new SetPlayerGlidingNode(); } } diff --git a/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/visual/SetPlayerPose.java b/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/visual/SetPlayerPoseNode.java similarity index 91% rename from src/main/java/de/blazemcworld/fireflow/code/node/impl/player/visual/SetPlayerPose.java rename to src/main/java/de/blazemcworld/fireflow/code/node/impl/player/visual/SetPlayerPoseNode.java index c03ba17..7586eb6 100644 --- a/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/visual/SetPlayerPose.java +++ b/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/visual/SetPlayerPoseNode.java @@ -10,8 +10,8 @@ import net.minecraft.entity.EntityPose; import net.minecraft.item.Items; -public class SetPlayerPose extends Node { - public SetPlayerPose() { +public class SetPlayerPoseNode extends Node { + public SetPlayerPoseNode() { super("send_message", "Send Message", "Sends a message to the player", Items.ARMOR_STAND); Input signal = new Input<>("signal", "Signal", SignalType.INSTANCE); @@ -27,6 +27,6 @@ public SetPlayerPose() { @Override public Node copy() { - return new SetPlayerPose(); + return new SetPlayerPoseNode(); } } From 137bc59236d2d5d777c95753c0fe808e457402e7 Mon Sep 17 00:00:00 2001 From: UserUNP <39243708+UserUNP@users.noreply.github.com> Date: Mon, 9 Jun 2025 07:06:40 +0000 Subject: [PATCH 3/4] node id & desc fixes --- .../player/movement/SetPlayerGlidingNode.java | 2 +- .../impl/player/visual/SetPlayerPoseNode.java | 2 +- .../fireflow/mixin/PlayerManagerMixin.java | 16 ++++++---------- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/movement/SetPlayerGlidingNode.java b/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/movement/SetPlayerGlidingNode.java index 8c899aa..b360f0a 100644 --- a/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/movement/SetPlayerGlidingNode.java +++ b/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/movement/SetPlayerGlidingNode.java @@ -9,7 +9,7 @@ public class SetPlayerGlidingNode extends Node { public SetPlayerGlidingNode() { - super("set_player_gliding", "Set Player Gliding", "", Items.ELYTRA); + super("set_player_gliding", "Set Player Gliding", "Sets the gliding state of the player", Items.ELYTRA); Input signal = new Input<>("signal", "Signal", SignalType.INSTANCE); Input player = new Input<>("player", "Player", PlayerType.INSTANCE); Input allow = new Input<>("allow", "Allow", ConditionType.INSTANCE); diff --git a/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/visual/SetPlayerPoseNode.java b/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/visual/SetPlayerPoseNode.java index 7586eb6..950bb3c 100644 --- a/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/visual/SetPlayerPoseNode.java +++ b/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/visual/SetPlayerPoseNode.java @@ -12,7 +12,7 @@ public class SetPlayerPoseNode extends Node { public SetPlayerPoseNode() { - super("send_message", "Send Message", "Sends a message to the player", Items.ARMOR_STAND); + super("set_player_pose", "Set Player Pose", "Updates the player's pose to the specified pose", Items.ARMOR_STAND); Input signal = new Input<>("signal", "Signal", SignalType.INSTANCE); Input player = new Input<>("player", "Player", PlayerType.INSTANCE); diff --git a/src/main/java/de/blazemcworld/fireflow/mixin/PlayerManagerMixin.java b/src/main/java/de/blazemcworld/fireflow/mixin/PlayerManagerMixin.java index fcbdfad..3cd22f0 100644 --- a/src/main/java/de/blazemcworld/fireflow/mixin/PlayerManagerMixin.java +++ b/src/main/java/de/blazemcworld/fireflow/mixin/PlayerManagerMixin.java @@ -1,19 +1,16 @@ package de.blazemcworld.fireflow.mixin; -import java.util.Optional; - +import de.blazemcworld.fireflow.space.PlayWorld; +import net.minecraft.nbt.NbtCompound; +import net.minecraft.server.PlayerManager; +import net.minecraft.server.network.ServerPlayerEntity; 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; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import de.blazemcworld.fireflow.space.Space; -import de.blazemcworld.fireflow.space.SpaceManager; -import de.blazemcworld.fireflow.util.ModeManager; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.server.PlayerManager; -import net.minecraft.server.network.ServerPlayerEntity; +import java.util.Optional; @Mixin(PlayerManager.class) public class PlayerManagerMixin { @@ -30,8 +27,7 @@ private void dontLoad(ServerPlayerEntity player, CallbackInfoReturnable cir) { - Space space = SpaceManager.getSpaceForPlayer(player); - if (space != null && ModeManager.getFor(player) == ModeManager.Mode.PLAY) space.evaluator.onRespawn(player);; + if (player.getWorld() instanceof PlayWorld playWorld) playWorld.space.evaluator.onRespawn(player); } } From 71e7b40ecfe3cfebc97e75ae0fb7141ddfe30e8d Mon Sep 17 00:00:00 2001 From: UserUNP <39243708+UserUNP@users.noreply.github.com> Date: Mon, 9 Jun 2025 20:05:25 +0000 Subject: [PATCH 4/4] remove set player node & mixin error fix --- .../fireflow/code/node/NodeList.java | 1 - .../impl/player/gameplay/SetGamemodeNode.java | 10 +++--- .../impl/player/visual/SetPlayerPoseNode.java | 32 ------------------- .../fireflow/mixin/PlayerManagerMixin.java | 3 +- 4 files changed, 7 insertions(+), 39 deletions(-) delete mode 100644 src/main/java/de/blazemcworld/fireflow/code/node/impl/player/visual/SetPlayerPoseNode.java diff --git a/src/main/java/de/blazemcworld/fireflow/code/node/NodeList.java b/src/main/java/de/blazemcworld/fireflow/code/node/NodeList.java index 2acca20..e979489 100644 --- a/src/main/java/de/blazemcworld/fireflow/code/node/NodeList.java +++ b/src/main/java/de/blazemcworld/fireflow/code/node/NodeList.java @@ -262,7 +262,6 @@ public static void init() { .add(new SendBlockChangeNode()) .add(new SendMessageNode()) .add(new SendTitleNode()) - .add(new SetPlayerPoseNode()) .add(new SetPlayerSkinNode()) ) ) diff --git a/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/gameplay/SetGamemodeNode.java b/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/gameplay/SetGamemodeNode.java index beb9b8c..0e9797a 100644 --- a/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/gameplay/SetGamemodeNode.java +++ b/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/gameplay/SetGamemodeNode.java @@ -20,11 +20,11 @@ public SetGamemodeNode() { signal.onSignal((ctx) -> { player.getValue(ctx).tryUse(ctx, p -> { - GameMode mode = switch (gamemode.getValue(ctx)) { - case "Creative" -> GameMode.CREATIVE; - case "Survival" -> GameMode.SURVIVAL; - case "Adventure" -> GameMode.ADVENTURE; - case "Spectator" -> GameMode.SPECTATOR; + GameMode mode = switch (gamemode.getValue(ctx).toLowerCase()) { + case "creative" -> GameMode.CREATIVE; + case "survival" -> GameMode.SURVIVAL; + case "adventure" -> GameMode.ADVENTURE; + case "spectator" -> GameMode.SPECTATOR; default -> null; }; if (mode != null) p.changeGameMode(mode); diff --git a/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/visual/SetPlayerPoseNode.java b/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/visual/SetPlayerPoseNode.java deleted file mode 100644 index 950bb3c..0000000 --- a/src/main/java/de/blazemcworld/fireflow/code/node/impl/player/visual/SetPlayerPoseNode.java +++ /dev/null @@ -1,32 +0,0 @@ -package de.blazemcworld.fireflow.code.node.impl.player.visual; - -import java.util.Arrays; - -import de.blazemcworld.fireflow.code.node.Node; -import de.blazemcworld.fireflow.code.type.PlayerType; -import de.blazemcworld.fireflow.code.type.SignalType; -import de.blazemcworld.fireflow.code.type.StringType; -import de.blazemcworld.fireflow.code.value.PlayerValue; -import net.minecraft.entity.EntityPose; -import net.minecraft.item.Items; - -public class SetPlayerPoseNode extends Node { - public SetPlayerPoseNode() { - super("set_player_pose", "Set Player Pose", "Updates the player's pose to the specified pose", Items.ARMOR_STAND); - - Input signal = new Input<>("signal", "Signal", SignalType.INSTANCE); - Input player = new Input<>("player", "Player", PlayerType.INSTANCE); - Input pose = new Input<>("pose", "Pose", StringType.INSTANCE).options(Arrays.stream(EntityPose.values()).map(s -> s.name().toLowerCase()).toArray(String[]::new)); - Output next = new Output<>("next", "Next", SignalType.INSTANCE); - - signal.onSignal((ctx) -> { - player.getValue(ctx).tryUse(ctx, p -> p.setPose(EntityPose.valueOf(pose.getValue(ctx).toUpperCase()))); - ctx.sendSignal(next); - }); - } - - @Override - public Node copy() { - return new SetPlayerPoseNode(); - } -} diff --git a/src/main/java/de/blazemcworld/fireflow/mixin/PlayerManagerMixin.java b/src/main/java/de/blazemcworld/fireflow/mixin/PlayerManagerMixin.java index 3cd22f0..0527b2c 100644 --- a/src/main/java/de/blazemcworld/fireflow/mixin/PlayerManagerMixin.java +++ b/src/main/java/de/blazemcworld/fireflow/mixin/PlayerManagerMixin.java @@ -1,6 +1,7 @@ package de.blazemcworld.fireflow.mixin; import de.blazemcworld.fireflow.space.PlayWorld; +import net.minecraft.entity.Entity.RemovalReason; import net.minecraft.nbt.NbtCompound; import net.minecraft.server.PlayerManager; import net.minecraft.server.network.ServerPlayerEntity; @@ -26,7 +27,7 @@ private void dontLoad(ServerPlayerEntity player, CallbackInfoReturnable cir) { + private void onRespawn(ServerPlayerEntity player, boolean alive, RemovalReason reason, CallbackInfoReturnable cir) { if (player.getWorld() instanceof PlayWorld playWorld) playWorld.space.evaluator.onRespawn(player); }