diff --git a/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/Registration.java b/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/Registration.java index 9110a0b..0d2bf84 100644 --- a/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/Registration.java +++ b/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/Registration.java @@ -1,10 +1,21 @@ package su.a71.tardim_ic.tardim_ic; +import com.swdteam.tardim.common.command.*; +import com.swdteam.tardim.common.init.TRDDimensions; +import com.swdteam.tardim.main.Config; +import com.swdteam.tardim.tardim.TardimData; +import com.swdteam.tardim.tardim.TardimIDMap; +import com.swdteam.tardim.tardim.TardimManager; +import com.swdteam.tardim.tardim.TardimSaveHandler; +import com.swdteam.tardim.util.world.SchematicUtils; import dan200.computercraft.api.ComputerCraftAPI; +import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; +import net.fabricmc.fabric.api.event.lifecycle.v1.ServerWorldEvents; import net.fabricmc.fabric.api.item.v1.FabricItemSettings; import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvent; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.CreativeModeTab; @@ -26,12 +37,16 @@ import su.a71.tardim_ic.tardim_ic.redstone_input.RedstoneInputTileEntity; import su.a71.tardim_ic.tardim_ic.Constants; import su.a71.tardim_ic.tardim_ic.registration.CommandInit; +import su.a71.tardim_ic.tardim_ic.tardim_dock.DockManager; import su.a71.tardim_ic.tardim_ic.tardim_dock.TardimDockBlock; import su.a71.tardim_ic.tardim_ic.tardim_dock.TardimDockBlockEntity; import com.swdteam.tardim.tileentity.TileEntityFuelStorage; import com.swdteam.tardim.common.block.BlockFuelStorage; +import java.util.Iterator; +import java.util.Map; + public class Registration { // Blocks @@ -41,7 +56,6 @@ public class Registration { public static final Block TARDIM_DOCK = new TardimDockBlock(); // 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)); public static final BlockEntityType REDSTONE_TARDIM_INPUT_TILEENTITY = Registry.register( Registry.BLOCK_ENTITY_TYPE, new ResourceLocation("tardim_ic", "redstone_tardim_input"), @@ -85,5 +99,26 @@ public class Registration { ComputerCraftAPI.registerPeripheralProvider(new DigitalInterfacePeripheralProvider()); CommandInit.init(); + + ServerLifecycleEvents.SERVER_STARTING.register((server) -> { + DockManager.server = server; + DockManager.clearCahce(); + + try { + DockManager.load(); + } catch (Exception var2) { + var2.printStackTrace(); + } + }); + ServerWorldEvents.UNLOAD.register((server, world) -> { + try { + if (DockManager.server == null) { + return; + } + DockManager.save(); + } catch (Exception var5) { + var5.printStackTrace(); + } + }); } } \ No newline at end of file diff --git a/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/mixin/FuelTank.java b/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/mixin/FuelTank.java deleted file mode 100644 index 263794b..0000000 --- a/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/mixin/FuelTank.java +++ /dev/null @@ -1,34 +0,0 @@ -package su.a71.tardim_ic.tardim_ic.mixin; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.TitleScreen; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.block.ComparatorBlock; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.entity.ComparatorBlockEntity; -import net.minecraft.world.level.block.state.BlockState; -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 com.swdteam.tardim.tileentity.TileEntityFuelStorage; - -//@Mixin(TileEntityFuelStorage.class) -//public class FuelTank extends BlockEntity, ComparatorBlockEntity { -// -// public ExampleMixin(BlockEntityType blockEntityType, BlockPos blockPos, BlockState blockState) { -// super(blockEntityType, blockPos, blockState); -// } -// -// @Inject(at = @At("HEAD"), method = "init()V") -// private void init(CallbackInfo info) { -// -// Constants.LOG.info("This line is printed by an example mod mixin from Fabric!"); -// Constants.LOG.info("MC Version: {}", Minecraft.getInstance().getVersionType()); -// Constants.LOG.info("Classloader: {}", this.getClass().getClassLoader()); -// } -//} -//public class FuelTank { -//} diff --git a/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/DockData.java b/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/DockData.java index f140e20..3566ba8 100644 --- a/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/DockData.java +++ b/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/DockData.java @@ -8,14 +8,15 @@ public class DockData { public BlockPos blockPos; public Level level; public boolean active = true; + public boolean occupied = false; - public DockData(int id, Level level, BlockPos blockPos) { - this.level = level; + public DockData(BlockPos blockPos) { this.blockPos = blockPos; this.name = DockManager.addDock(this); } public void setActive(boolean setting) { this.active = setting; + DockManager.updateDock(this.name, this); } } diff --git a/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/DockManager.java b/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/DockManager.java index fc6c12f..84d27f0 100644 --- a/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/DockManager.java +++ b/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/DockManager.java @@ -9,6 +9,7 @@ import com.swdteam.tardim.main.Tardim; import com.swdteam.tardim.tardim.TardimData; import com.swdteam.tardim.tardim.TardimManager; import com.swdteam.tardim.tardim.TardimSaveHandler; +import com.swdteam.tardim.tardim.TardimIDMap; import net.minecraft.server.MinecraftServer; import net.minecraft.world.level.storage.LevelResource; @@ -21,7 +22,8 @@ import java.util.Map; public class DockManager { private static Map DOCK_DATA = new HashMap<>(); - Gson gson = new Gson(); + static Gson gson = new Gson(); + public static MinecraftServer server; public DockManager() { @@ -32,21 +34,26 @@ public class DockManager { } public static String addDock(DockData dockData) { - String new_id = Integer.toString(DOCK_DATA.size()); - DOCK_DATA.put(new_id, dockData); - return new_id; + int new_id = DOCK_DATA.size(); + while (DOCK_DATA.containsKey(Integer.toString(new_id))) { + System.out.println(new_id + "Was taken so we try another"); + new_id++; + } + System.out.println("PICKED ID: " + new_id); + + DOCK_DATA.put(Integer.toString(new_id), dockData); + return Integer.toString(new_id); } - public void toggleActive(String name, boolean active) { - DockData dockData = DOCK_DATA.get(name); - dockData.setActive(active); + public static void removeDock(String name) { + DOCK_DATA.remove(name); } - public void updateDock(String name, DockData dockData) { + public static void updateDock(String name, DockData dockData) { DOCK_DATA.put(name, dockData); } - public void load(MinecraftServer server) throws Exception { + public static void load() throws Exception { File file = new File(server.getWorldPath(LevelResource.ROOT) + "/tardim_ic/dock_map.json"); // Check if file exists @@ -68,7 +75,7 @@ public class DockManager { System.out.println("Loaded TARDIM: IC docks"); } - public void save(MinecraftServer server) throws Exception { + public static void save() throws Exception { File file = new File(server.getWorldPath(LevelResource.ROOT) + "/tardim_ic/dock_map.json"); // Check if file exists @@ -85,4 +92,8 @@ public class DockManager { System.out.println("Saved TARDIM: IC docks"); } + + public static void clearCahce() { + DOCK_DATA.clear(); + } } diff --git a/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/TardimDockBlock.java b/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/TardimDockBlock.java index 3168884..c17695c 100644 --- a/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/TardimDockBlock.java +++ b/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/TardimDockBlock.java @@ -7,6 +7,8 @@ import com.swdteam.tardim.network.PacketOpenEditGui; import com.swdteam.tardim.tardim.TardimData; import com.swdteam.tardim.tardim.TardimManager; import com.swdteam.tardim.tileentity.TileEntityBaseTardimPanel; +import com.swdteam.tardim.tileentity.TileEntityTardim; +import com.swdteam.tardim.tileentity.tardim.TardimType96TileEntity; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; @@ -32,6 +34,10 @@ import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import su.a71.tardim_ic.tardim_ic.Registration; +import su.a71.tardim_ic.tardim_ic.redstone_input.RedstoneInputTileEntity; +import su.a71.tardim_ic.tardim_ic.utils.FakePlayer; + +import net.minecraft.world.level.block.RedstoneLampBlock; public class TardimDockBlock extends Block implements EntityBlock { public TardimDockBlock() { @@ -45,7 +51,7 @@ public class TardimDockBlock extends Block implements EntityBlock { if (be instanceof TardimDockBlockEntity) { player.displayClientMessage( - Component.literal("Dock ID: " + ((TardimDockBlockEntity) be).dock_id).withStyle(ChatFormatting.BLUE).withStyle(ChatFormatting.BOLD), true + Component.literal("Dock name: '" + ((TardimDockBlockEntity) be).data.name + "'").withStyle(ChatFormatting.DARK_AQUA).withStyle(ChatFormatting.BOLD), true ); } } @@ -57,10 +63,14 @@ public class TardimDockBlock extends Block implements EntityBlock { return true; } - // Un-register the dock + // Un-register the dock when breaking @Override public void destroy(LevelAccessor levelAccessor, BlockPos blockPos, BlockState blockState) { super.destroy(levelAccessor, blockPos, blockState); + BlockEntity be = levelAccessor.getBlockEntity(blockPos); + if (be instanceof TardimDockBlockEntity) { + DockManager.removeDock(((TardimDockBlockEntity) be).data.name); + } } @Nullable @@ -68,4 +78,31 @@ public class TardimDockBlock extends Block implements EntityBlock { public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { return Registration.TARDIM_DOCK_BLOCKENTITY.create(blockPos, blockState); } + + + public void neighborChanged(BlockState blockState, Level level, BlockPos blockPos, Block block, BlockPos fromPos, boolean isMoving) { + DebugPackets.sendNeighborsUpdatePacket(level, blockPos); + + BlockEntity be = level.getBlockEntity(blockPos); + if (!(be instanceof TardimDockBlockEntity)) { + return; + } + + // get redstone signal + if (level.hasNeighborSignal(blockPos)) { + if (!((TardimDockBlockEntity) be).isPowered) { + ((TardimDockBlockEntity) be).isPowered = true; + } + } + else if (((TardimDockBlockEntity) be).isPowered) { + ((TardimDockBlockEntity) be).isPowered = false; + } + ((TardimDockBlockEntity) be).updateActive(); + + // Check stuff + ((TardimDockBlockEntity) be).data.occupied = (level.getBlockEntity(blockPos.above()) instanceof TileEntityTardim); + if ((level.getBlockEntity(blockPos.above()) instanceof TileEntityTardim)) { + System.out.println("Oooo TARDIM docked!!!!"); + } + } } diff --git a/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/TardimDockBlockEntity.java b/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/TardimDockBlockEntity.java index 46d8f90..30d3660 100644 --- a/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/TardimDockBlockEntity.java +++ b/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/TardimDockBlockEntity.java @@ -2,30 +2,40 @@ package su.a71.tardim_ic.tardim_ic.tardim_dock; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.world.level.block.ComparatorBlock; +import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.entity.ComparatorBlockEntity; import net.minecraft.world.level.block.state.BlockState; import su.a71.tardim_ic.tardim_ic.Registration; public class TardimDockBlockEntity extends BlockEntity { - public int dock_id; + public boolean isPowered = false; public DockData data; + private BlockPos blockPos; public TardimDockBlockEntity(BlockPos blockPos, BlockState blockState) { super(Registration.TARDIM_DOCK_BLOCKENTITY, blockPos, blockState); - this.dock_id = 123; + this.blockPos = blockPos; + this.data = new DockData(blockPos); + } + + public void updateActive() { + this.data.setActive(this.isPowered); } @Override public void saveAdditional(CompoundTag tag) { - tag.putInt("dock_id", dock_id); + tag.putString("data_name", data.name); + tag.putBoolean("data_active", data.active); super.saveAdditional(tag); } @Override public void load(CompoundTag tag) { super.load(tag); - dock_id = tag.getInt("dock_id"); } } diff --git a/Fabric/src/main/resources/fabric.mod.json b/Fabric/src/main/resources/fabric.mod.json index c4befe5..edd4ec9 100644 --- a/Fabric/src/main/resources/fabric.mod.json +++ b/Fabric/src/main/resources/fabric.mod.json @@ -21,9 +21,6 @@ "su.a71.tardim_ic.tardim_ic.TardimInControl" ] }, - "mixins": [ - "tardim_ic.mixins.json" - ], "depends": { "fabricloader": ">=0.14.10", diff --git a/Fabric/src/main/resources/tardim_ic.mixins.json b/Fabric/src/main/resources/tardim_ic.mixins.json deleted file mode 100644 index 22f1e80..0000000 --- a/Fabric/src/main/resources/tardim_ic.mixins.json +++ /dev/null @@ -1,14 +0,0 @@ - -"required": true, -"minVersion": "0.8", -"package": "su.a71.tardim_ic.mixin", -"compatibilityLevel": "JAVA_17", -"mixins": [ -], -"client": [ -"FuelTank" -], -"injectors": { -"defaultRequire": 1 -} -} \ No newline at end of file diff --git a/Forge/src/main/java/su/a71/tardim_ic/tardim_ic/command/CommandCloisterBell.java b/Forge/src/main/java/su/a71/tardim_ic/tardim_ic/command/CommandCloisterBell.java index 7af746f..4bfa48a 100644 --- a/Forge/src/main/java/su/a71/tardim_ic/tardim_ic/command/CommandCloisterBell.java +++ b/Forge/src/main/java/su/a71/tardim_ic/tardim_ic/command/CommandCloisterBell.java @@ -5,20 +5,12 @@ 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.core.Registry; -import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundSource; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import su.a71.tardim_ic.tardim_ic.Registration; -//import static com.swdteam.common.command.tardim.CommandTardimBase.sendResponse; - - public class CommandCloisterBell implements ICommand { @Override public void execute(String[] args, Player player, BlockPos pos, CommandTardimBase.CommandSource source) { diff --git a/Forge/src/main/java/su/a71/tardim_ic/tardim_ic/mixin/Commands.java b/Forge/src/main/java/su/a71/tardim_ic/tardim_ic/mixin/Commands.java index e290cd1..1e9262a 100644 --- a/Forge/src/main/java/su/a71/tardim_ic/tardim_ic/mixin/Commands.java +++ b/Forge/src/main/java/su/a71/tardim_ic/tardim_ic/mixin/Commands.java @@ -7,6 +7,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import su.a71.tardim_ic.tardim_ic.registration.CommandInit; +// TARDIM loads commands a bit later on Forge, so we have to use mixins for this :/ @Mixin(value = CommandManager.class, remap = false) public abstract class Commands { @Inject(method="init()V", at=@At("TAIL")) diff --git a/Forge/src/main/java/su/a71/tardim_ic/tardim_ic/mixin/FuelTank.java b/Forge/src/main/java/su/a71/tardim_ic/tardim_ic/mixin/FuelTank.java deleted file mode 100644 index f4b1190..0000000 --- a/Forge/src/main/java/su/a71/tardim_ic/tardim_ic/mixin/FuelTank.java +++ /dev/null @@ -1,9 +0,0 @@ -package su.a71.tardim_ic.tardim_ic.mixin; - -import com.swdteam.tileentity.TileEntityFuelStorage; -import org.spongepowered.asm.mixin.Mixin; - -@Mixin(TileEntityFuelStorage.class) -public abstract class FuelTank { - -}