From 9f8b8235dd60310aab9dcb511f389de476931d67 Mon Sep 17 00:00:00 2001 From: Andrew71 Date: Mon, 30 Jan 2023 17:51:51 +0300 Subject: [PATCH] My reward. --- .../a71/tardim_ic/tardim_ic/Registration.java | 3 +- .../command/CommandModemTransmit.java | 70 +++++++++++++++++++ .../tardim_ic/command/CommandSender.java | 40 +++++++++++ .../tardim_ic/tardim_ic/sonic/SonicProbe.java | 22 ++++++ .../recipes/digital_tardim_interface.json | 18 +++-- 5 files changed, 144 insertions(+), 9 deletions(-) create mode 100644 src/main/java/su/a71/tardim_ic/tardim_ic/command/CommandModemTransmit.java create mode 100644 src/main/java/su/a71/tardim_ic/tardim_ic/command/CommandSender.java create mode 100644 src/main/java/su/a71/tardim_ic/tardim_ic/sonic/SonicProbe.java diff --git a/src/main/java/su/a71/tardim_ic/tardim_ic/Registration.java b/src/main/java/su/a71/tardim_ic/tardim_ic/Registration.java index a6c036a..82d3c9d 100644 --- a/src/main/java/su/a71/tardim_ic/tardim_ic/Registration.java +++ b/src/main/java/su/a71/tardim_ic/tardim_ic/Registration.java @@ -29,13 +29,12 @@ public class Registration { }; // Blocks - public static final RegistryObject DIGITAL_TARDIM_INTERFACE = register("digital_tardim_interface", DigitalInterfaceBlock::new); - private static RegistryObject register(String name, Supplier block) { RegistryObject registryObject = BLOCKS.register(name, block); ITEMS.register(name, () -> new BlockItem(registryObject.get(), new Item.Properties().tab(TARDIM_IC_TAB))); return registryObject; } + public static final RegistryObject DIGITAL_TARDIM_INTERFACE = register("digital_tardim_interface", DigitalInterfaceBlock::new); // Tile Entities public static final RegistryObject> DIGITAL_TARDIM_INTERFACE_TILEENTITY = Registration.BLOCK_ENTITIES.register("digital_tardim_interface", () -> new BlockEntityType<>(DigitalInterfaceTileEntity::new, Sets.newHashSet(DIGITAL_TARDIM_INTERFACE.get()), null)); diff --git a/src/main/java/su/a71/tardim_ic/tardim_ic/command/CommandModemTransmit.java b/src/main/java/su/a71/tardim_ic/tardim_ic/command/CommandModemTransmit.java new file mode 100644 index 0000000..db29663 --- /dev/null +++ b/src/main/java/su/a71/tardim_ic/tardim_ic/command/CommandModemTransmit.java @@ -0,0 +1,70 @@ +package su.a71.tardim_ic.tardim_ic.command; + +// This will be added whenever I manage to convince TARDIM devs to make CommandManager.register public + +import com.mojang.brigadier.Command; +import com.swdteam.common.command.tardim.CommandTardimBase; +import com.swdteam.common.command.tardim.ICommand; +import com.swdteam.tardim.TardimData; +import com.swdteam.tardim.TardimManager; +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.player.Player; + +import dan200.computercraft.api.network.Packet; +import dan200.computercraft.api.ComputerCraftAPI; + +import static com.swdteam.common.command.tardim.CommandTardimBase.sendResponse; + +public class CommandModemTransmit implements ICommand { + @Override + public void execute(String[] args, Player player, BlockPos pos, CommandTardimBase.CommandSource source) { + if (args.length == 3) { + TardimData data = TardimManager.getFromPos(pos); + if (data != null) { + if (data.hasPermission(player)) { + try { + int sendChannel = Integer.parseInt(args[0]); + int replyChannel = Integer.parseInt(args[1]); + String message = args[2]; + boolean allDimensions = Boolean.parseBoolean(args[3]) || args[3].equals("true"); + + if (data.getTravelLocation() == null) { + data.setTravelLocation(new TardimData.Location(data.getCurrentLocation())); + } + + if (allDimensions) + { + ComputerCraftAPI.getWirelessNetwork().transmitInterdimensional(new Packet(sendChannel, replyChannel, message, new CommandSender(player, data.getTravelLocation().getPos()))); + } + else { + ComputerCraftAPI.getWirelessNetwork().transmitSameDimension(new Packet(sendChannel, replyChannel, message, + new CommandSender(player, data.getTravelLocation().getPos())), 300); + } + sendResponse(player, "Sent modem message", CommandTardimBase.ResponseType.COMPLETE, source); + } catch (Exception var9) { + sendResponse(player, "Invalid coordinates", CommandTardimBase.ResponseType.FAIL, source); + } + } else { + sendResponse(player, "You do not have permission", CommandTardimBase.ResponseType.FAIL, source); + } + } + } else { + sendResponse(player, this.getUsage(), CommandTardimBase.ResponseType.FAIL, source); + } + } + + @Override + public String getCommandName() { + return "ccModemTransmit"; + } + + @Override + public String getUsage() { + return "ccModemTransmit "; + } + + @Override + public CommandTardimBase.CommandSource allowedSource() { + return CommandTardimBase.CommandSource.BOTH; + } +} \ No newline at end of file diff --git a/src/main/java/su/a71/tardim_ic/tardim_ic/command/CommandSender.java b/src/main/java/su/a71/tardim_ic/tardim_ic/command/CommandSender.java new file mode 100644 index 0000000..aec340f --- /dev/null +++ b/src/main/java/su/a71/tardim_ic/tardim_ic/command/CommandSender.java @@ -0,0 +1,40 @@ +package su.a71.tardim_ic.tardim_ic.command; + +import dan200.computercraft.api.network.IPacketSender; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.NotNull; + +public class CommandSender implements IPacketSender { + + private final Player player; + private final Level level; + private final BlockPos pos; + + CommandSender(Player player, BlockPos pos) { + this.player = player; + this.level = player.level; + this.pos = pos; + } + + @NotNull + @Override + public Level getLevel() { + return this.level; + } + + @NotNull + @Override + public Vec3 getPosition() { + return new Vec3(this.pos.getX(), this.pos.getY(), this.pos.getZ()); + } + + @NotNull + @Override + public String getSenderID() { + return this.player.getName().getString(); + } +} diff --git a/src/main/java/su/a71/tardim_ic/tardim_ic/sonic/SonicProbe.java b/src/main/java/su/a71/tardim_ic/tardim_ic/sonic/SonicProbe.java new file mode 100644 index 0000000..2a3cfe5 --- /dev/null +++ b/src/main/java/su/a71/tardim_ic/tardim_ic/sonic/SonicProbe.java @@ -0,0 +1,22 @@ +package su.a71.tardim_ic.tardim_ic.sonic; + +import net.minecraft.world.item.Item; + +import com.swdteam.tardim.TardimData; +import com.swdteam.tardim.TardimManager; + +import com.swdteam.client.gui.GuiCommandScreen; + +public class SonicProbe extends Item { + private TardimData tardim; + public SonicProbe(Properties properties) { + super(properties.stacksTo(1)); + } + + public void setTardim(TardimData tardim) { + this.tardim = tardim; + } + + // Add tile entity + +} diff --git a/src/main/resources/data/tardim_ic/recipes/digital_tardim_interface.json b/src/main/resources/data/tardim_ic/recipes/digital_tardim_interface.json index 2bee8c3..2721c83 100644 --- a/src/main/resources/data/tardim_ic/recipes/digital_tardim_interface.json +++ b/src/main/resources/data/tardim_ic/recipes/digital_tardim_interface.json @@ -1,7 +1,7 @@ { "type": "minecraft:crafting_shaped", "pattern": [ - "GGG", + "DDD", "R0R", "GRG" ], @@ -14,13 +14,17 @@ "item": "minecraft:redstone", "count": 1 }, - "0": { - "item": "minecraft:ender_eye", - "count": 1 - } + "0": { + "item": "minecraft:ender_eye", + "count": 1 }, - "result": { - "item": "tardim_ic:digital_tardim_interface", + "D": { + "item": "minecraft:polished_deepslate", "count": 1 } + }, + "result": { + "item": "tardim_ic:digital_tardim_interface", + "count": 1 + } } \ No newline at end of file