Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,23 @@
import interpreter.Interpreter;
import minescript.block.entity.TurtleBlockEntity;
import net.fabricmc.fabric.api.networking.v1.PacketSender;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.network.ServerPlayNetworkHandler;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.text.Text;
import net.minecraft.util.math.BlockPos;

import java.util.Arrays;

public class StartInterpreterC2SPacket {
public static void receive(MinecraftServer server, ServerPlayerEntity player, ServerPlayNetworkHandler handler, PacketByteBuf buf, PacketSender responseSender) {
BlockPos pos = buf.readBlockPos();
String program = buf.readString();

int length = buf.readInt();
String program = buf.readString(length);

server.executeSync(() -> {
ServerWorld world = player.getWorld();
TurtleBlockEntity entity = (TurtleBlockEntity) world.getBlockEntity(pos);
Expand Down
14 changes: 13 additions & 1 deletion src/main/java/minescript/screen/TextEditorScreen.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,23 @@
package minescript.screen;

import io.netty.buffer.ByteBuf;
import io.wispforest.owo.client.screens.ScreenInternals;
import io.wispforest.owo.ui.base.BaseUIModelHandledScreen;
import io.wispforest.owo.ui.base.BaseUIModelScreen;
import io.wispforest.owo.ui.component.ButtonComponent;
import io.wispforest.owo.ui.container.FlowLayout;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.networking.v1.PacketByteBufs;
import net.minecraft.client.gui.widget.EditBoxWidget;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

public class TextEditorScreen extends BaseUIModelHandledScreen<FlowLayout, TextEditorScreenHandler> {

Expand Down Expand Up @@ -54,7 +62,11 @@ protected void build(FlowLayout rootComponent) {
var runButton = rootComponent.childById(ButtonComponent.class, "run-button");
if (runButton == null) throw new NullPointerException("runButton is null");
runButton.onPress(button -> {
handler.sendMessage(new TextEditorScreenHandler.StartInterpreterMessage(editor.getText()));
String text = editor.getText();
PacketByteBuf buf = PacketByteBufs.create();
buf.writeString(text, text.length());

handler.sendMessage(new TextEditorScreenHandler.StartInterpreterMessage(text.length(), buf));
this.close();
});
}
Expand Down
16 changes: 12 additions & 4 deletions src/main/java/minescript/screen/TextEditorScreenHandler.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package minescript.screen;

import io.netty.buffer.ByteBuf;
import minescript.MineScript;
import minescript.block.entity.TurtleBlockEntity;
import minescript.network.MineScriptPackets;
Expand All @@ -8,10 +9,14 @@
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.screen.ScreenHandler;
import net.minecraft.text.Text;
import org.jetbrains.annotations.Nullable;

import java.util.Arrays;

public class TextEditorScreenHandler extends ScreenHandler {
private String inputText;
private final @Nullable TurtleBlockEntity entity;
Expand All @@ -35,18 +40,21 @@ public String getInputText() {
}

private void handleSetInputText(StartInterpreterMessage message) {
this.inputText = message.message;
int length = message.length;
String text = message.buf.readString(length);
this.inputText = text;
assert entity != null;
entity.setTurtleInput(message.message);
entity.setTurtleInput(text);

PacketByteBuf buf = PacketByteBufs.create();
buf.writeBlockPos(entity.getPos());
buf.writeString(message.message);
buf.writeInt(length);
buf.writeString(text, text.length());

ClientPlayNetworking.send(MineScriptPackets.START_INTERPRETER_ID, buf);
}

public record StartInterpreterMessage(String message) {}
public record StartInterpreterMessage(int length, PacketByteBuf buf) {}

@Override
public ItemStack quickMove(PlayerEntity player, int slot) {
Expand Down