Pain is pain leaving the pain

This commit is contained in:
Andrew-71 2023-04-17 21:51:54 +03:00
parent 9e9412e53e
commit 86331811a8
11 changed files with 114 additions and 87 deletions

View file

@ -1,10 +1,21 @@
package su.a71.tardim_ic.tardim_ic; 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 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.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.CreativeModeTab; 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.Constants;
import su.a71.tardim_ic.tardim_ic.registration.CommandInit; 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.TardimDockBlock;
import su.a71.tardim_ic.tardim_ic.tardim_dock.TardimDockBlockEntity; import su.a71.tardim_ic.tardim_ic.tardim_dock.TardimDockBlockEntity;
import com.swdteam.tardim.tileentity.TileEntityFuelStorage; import com.swdteam.tardim.tileentity.TileEntityFuelStorage;
import com.swdteam.tardim.common.block.BlockFuelStorage; import com.swdteam.tardim.common.block.BlockFuelStorage;
import java.util.Iterator;
import java.util.Map;
public class Registration { public class Registration {
// Blocks // Blocks
@ -41,7 +56,6 @@ public class Registration {
public static final Block TARDIM_DOCK = new TardimDockBlock(); public static final Block TARDIM_DOCK = new TardimDockBlock();
// Tile Entities // Tile Entities
//public static final RegistryObject<BlockEntityType<DigitalInterfaceTileEntity>> 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<RedstoneInputTileEntity> REDSTONE_TARDIM_INPUT_TILEENTITY = Registry.register( public static final BlockEntityType<RedstoneInputTileEntity> REDSTONE_TARDIM_INPUT_TILEENTITY = Registry.register(
Registry.BLOCK_ENTITY_TYPE, Registry.BLOCK_ENTITY_TYPE,
new ResourceLocation("tardim_ic", "redstone_tardim_input"), new ResourceLocation("tardim_ic", "redstone_tardim_input"),
@ -85,5 +99,26 @@ public class Registration {
ComputerCraftAPI.registerPeripheralProvider(new DigitalInterfacePeripheralProvider()); ComputerCraftAPI.registerPeripheralProvider(new DigitalInterfacePeripheralProvider());
CommandInit.init(); 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();
}
});
} }
} }

View file

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

View file

@ -8,14 +8,15 @@ public class DockData {
public BlockPos blockPos; public BlockPos blockPos;
public Level level; public Level level;
public boolean active = true; public boolean active = true;
public boolean occupied = false;
public DockData(int id, Level level, BlockPos blockPos) { public DockData(BlockPos blockPos) {
this.level = level;
this.blockPos = blockPos; this.blockPos = blockPos;
this.name = DockManager.addDock(this); this.name = DockManager.addDock(this);
} }
public void setActive(boolean setting) { public void setActive(boolean setting) {
this.active = setting; this.active = setting;
DockManager.updateDock(this.name, this);
} }
} }

View file

@ -9,6 +9,7 @@ import com.swdteam.tardim.main.Tardim;
import com.swdteam.tardim.tardim.TardimData; import com.swdteam.tardim.tardim.TardimData;
import com.swdteam.tardim.tardim.TardimManager; import com.swdteam.tardim.tardim.TardimManager;
import com.swdteam.tardim.tardim.TardimSaveHandler; import com.swdteam.tardim.tardim.TardimSaveHandler;
import com.swdteam.tardim.tardim.TardimIDMap;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import net.minecraft.world.level.storage.LevelResource; import net.minecraft.world.level.storage.LevelResource;
@ -21,7 +22,8 @@ import java.util.Map;
public class DockManager { public class DockManager {
private static Map<String, DockData> DOCK_DATA = new HashMap<>(); private static Map<String, DockData> DOCK_DATA = new HashMap<>();
Gson gson = new Gson(); static Gson gson = new Gson();
public static MinecraftServer server;
public DockManager() { public DockManager() {
@ -32,21 +34,26 @@ public class DockManager {
} }
public static String addDock(DockData dockData) { public static String addDock(DockData dockData) {
String new_id = Integer.toString(DOCK_DATA.size()); int new_id = DOCK_DATA.size();
DOCK_DATA.put(new_id, dockData); while (DOCK_DATA.containsKey(Integer.toString(new_id))) {
return 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) { public static void removeDock(String name) {
DockData dockData = DOCK_DATA.get(name); DOCK_DATA.remove(name);
dockData.setActive(active);
} }
public void updateDock(String name, DockData dockData) { public static void updateDock(String name, DockData dockData) {
DOCK_DATA.put(name, 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"); File file = new File(server.getWorldPath(LevelResource.ROOT) + "/tardim_ic/dock_map.json");
// Check if file exists // Check if file exists
@ -68,7 +75,7 @@ public class DockManager {
System.out.println("Loaded TARDIM: IC docks"); 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"); File file = new File(server.getWorldPath(LevelResource.ROOT) + "/tardim_ic/dock_map.json");
// Check if file exists // Check if file exists
@ -85,4 +92,8 @@ public class DockManager {
System.out.println("Saved TARDIM: IC docks"); System.out.println("Saved TARDIM: IC docks");
} }
public static void clearCahce() {
DOCK_DATA.clear();
}
} }

View file

@ -7,6 +7,8 @@ import com.swdteam.tardim.network.PacketOpenEditGui;
import com.swdteam.tardim.tardim.TardimData; import com.swdteam.tardim.tardim.TardimData;
import com.swdteam.tardim.tardim.TardimManager; import com.swdteam.tardim.tardim.TardimManager;
import com.swdteam.tardim.tileentity.TileEntityBaseTardimPanel; 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.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
@ -32,6 +34,10 @@ import net.minecraft.world.phys.BlockHitResult;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import su.a71.tardim_ic.tardim_ic.Registration; 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 class TardimDockBlock extends Block implements EntityBlock {
public TardimDockBlock() { public TardimDockBlock() {
@ -45,7 +51,7 @@ public class TardimDockBlock extends Block implements EntityBlock {
if (be instanceof TardimDockBlockEntity) { if (be instanceof TardimDockBlockEntity) {
player.displayClientMessage( 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; return true;
} }
// Un-register the dock // Un-register the dock when breaking
@Override @Override
public void destroy(LevelAccessor levelAccessor, BlockPos blockPos, BlockState blockState) { public void destroy(LevelAccessor levelAccessor, BlockPos blockPos, BlockState blockState) {
super.destroy(levelAccessor, blockPos, blockState); super.destroy(levelAccessor, blockPos, blockState);
BlockEntity be = levelAccessor.getBlockEntity(blockPos);
if (be instanceof TardimDockBlockEntity) {
DockManager.removeDock(((TardimDockBlockEntity) be).data.name);
}
} }
@Nullable @Nullable
@ -68,4 +78,31 @@ public class TardimDockBlock extends Block implements EntityBlock {
public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) {
return Registration.TARDIM_DOCK_BLOCKENTITY.create(blockPos, 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!!!!");
}
}
} }

View file

@ -2,30 +2,40 @@ package su.a71.tardim_ic.tardim_ic.tardim_dock;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag; 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.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType; 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 net.minecraft.world.level.block.state.BlockState;
import su.a71.tardim_ic.tardim_ic.Registration; import su.a71.tardim_ic.tardim_ic.Registration;
public class TardimDockBlockEntity extends BlockEntity { public class TardimDockBlockEntity extends BlockEntity {
public int dock_id; public boolean isPowered = false;
public DockData data; public DockData data;
private BlockPos blockPos;
public TardimDockBlockEntity(BlockPos blockPos, BlockState blockState) { public TardimDockBlockEntity(BlockPos blockPos, BlockState blockState) {
super(Registration.TARDIM_DOCK_BLOCKENTITY, blockPos, 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 @Override
public void saveAdditional(CompoundTag tag) { 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); super.saveAdditional(tag);
} }
@Override @Override
public void load(CompoundTag tag) { public void load(CompoundTag tag) {
super.load(tag); super.load(tag);
dock_id = tag.getInt("dock_id");
} }
} }

View file

@ -21,9 +21,6 @@
"su.a71.tardim_ic.tardim_ic.TardimInControl" "su.a71.tardim_ic.tardim_ic.TardimInControl"
] ]
}, },
"mixins": [
"tardim_ic.mixins.json"
],
"depends": { "depends": {
"fabricloader": ">=0.14.10", "fabricloader": ">=0.14.10",

View file

@ -1,14 +0,0 @@
"required": true,
"minVersion": "0.8",
"package": "su.a71.tardim_ic.mixin",
"compatibilityLevel": "JAVA_17",
"mixins": [
],
"client": [
"FuelTank"
],
"injectors": {
"defaultRequire": 1
}
}

View file

@ -5,20 +5,12 @@ import com.swdteam.common.command.tardim.ICommand;
import com.swdteam.tardim.TardimData; import com.swdteam.tardim.TardimData;
import com.swdteam.tardim.TardimManager; import com.swdteam.tardim.TardimManager;
import net.minecraft.core.BlockPos; 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.sounds.SoundSource;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import su.a71.tardim_ic.tardim_ic.Registration; import su.a71.tardim_ic.tardim_ic.Registration;
//import static com.swdteam.common.command.tardim.CommandTardimBase.sendResponse;
public class CommandCloisterBell implements ICommand { public class CommandCloisterBell implements ICommand {
@Override @Override
public void execute(String[] args, Player player, BlockPos pos, CommandTardimBase.CommandSource source) { public void execute(String[] args, Player player, BlockPos pos, CommandTardimBase.CommandSource source) {

View file

@ -7,6 +7,7 @@ import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import su.a71.tardim_ic.tardim_ic.registration.CommandInit; 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) @Mixin(value = CommandManager.class, remap = false)
public abstract class Commands { public abstract class Commands {
@Inject(method="init()V", at=@At("TAIL")) @Inject(method="init()V", at=@At("TAIL"))

View file

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