Compare commits

...
Sign in to create a new pull request.

2 commits

Author SHA1 Message Date
9732ecb06e Tag, you're it 2023-04-17 22:27:44 +03:00
01a797b1e6 That's the only sad thing 2023-04-17 21:55:26 +03:00
11 changed files with 55 additions and 330 deletions

View file

@ -1,21 +1,10 @@
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;
@ -37,23 +26,11 @@ 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
public static final Block DIGITAL_TARDIM_INTERFACE = new DigitalInterfaceBlock();
public static final Block REDSTONE_TARDIM_INPUT = new RedstoneInputBlock();
public static final Block TARDIM_DOCK = new TardimDockBlock();
// Tile Entities
public static final BlockEntityType<RedstoneInputTileEntity> REDSTONE_TARDIM_INPUT_TILEENTITY = Registry.register(
@ -68,12 +45,6 @@ public class Registration {
FabricBlockEntityTypeBuilder.create(RedstoneInputTileEntity::new, DIGITAL_TARDIM_INTERFACE).build()
);
public static final BlockEntityType<TardimDockBlockEntity> TARDIM_DOCK_BLOCKENTITY = Registry.register(
Registry.BLOCK_ENTITY_TYPE,
new ResourceLocation("tardim_ic", "tardim_dock"),
FabricBlockEntityTypeBuilder.create(TardimDockBlockEntity::new, TARDIM_DOCK).build()
);
private static final CreativeModeTab TARDIM_IC_TAB = FabricItemGroupBuilder
.create(new ResourceLocation("tardim_ic"))
.icon(() -> new ItemStack(DIGITAL_TARDIM_INTERFACE))
@ -92,33 +63,9 @@ public class Registration {
Registry.register(Registry.BLOCK, new ResourceLocation(Constants.MOD_ID, "digital_tardim_interface"), DIGITAL_TARDIM_INTERFACE);
Registry.register(Registry.ITEM, new ResourceLocation(Constants.MOD_ID, "digital_tardim_interface"), new BlockItem(DIGITAL_TARDIM_INTERFACE, new FabricItemSettings().tab(TARDIM_IC_TAB)));
Registry.register(Registry.BLOCK, new ResourceLocation(Constants.MOD_ID, "tardim_dock"), TARDIM_DOCK);
Registry.register(Registry.ITEM, new ResourceLocation(Constants.MOD_ID, "tardim_dock"), new BlockItem(TARDIM_DOCK, new FabricItemSettings().tab(TARDIM_IC_TAB)));
Registry.register(Registry.SOUND_EVENT, CLOISTER_SOUND, CLOISTER_SOUND_EVENT);
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();
}
});
}
}

View file

@ -33,6 +33,7 @@ import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.levelgen.Heightmap;
import net.minecraft.world.phys.Vec3;
import su.a71.tardim_ic.tardim_ic.Registration;
import su.a71.tardim_ic.tardim_ic.utils.FakePlayer;
import javax.annotation.Nonnull;
@ -826,4 +827,29 @@ public class DigitalInterfacePeripheral implements IPeripheral {
return new ObjectLuaTable(skins);
}
/**
* Play cloister bell sound.
*/
@LuaFunction(mainThread = true)
public final void cloisterBell() throws LuaException {
if (this.tileEntity.getLevel().isClientSide()) {
return;
}
try {
Level lvl = this.tileEntity.getLevel();
if (!lvl.isClientSide) {
lvl.playSound(
null,
this.tileEntity.getPos(),
Registration.CLOISTER_SOUND_EVENT,
SoundSource.BLOCKS,
1.5f,
1f
);
}
} catch (Exception var9) {
throw new LuaException("There was an error trying to play the sound");
}
}
}

View file

@ -1,22 +0,0 @@
package su.a71.tardim_ic.tardim_ic.tardim_dock;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.Level;
public class DockData {
public String name;
public BlockPos blockPos;
public Level level;
public boolean active = true;
public boolean occupied = false;
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);
}
}

View file

@ -1,99 +0,0 @@
package su.a71.tardim_ic.tardim_ic.tardim_dock;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import com.swdteam.tardim.main.Config;
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;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;
public class DockManager {
private static Map<String, DockData> DOCK_DATA = new HashMap<>();
static Gson gson = new Gson();
public static MinecraftServer server;
public DockManager() {
}
public static DockData getDock(String name) {
return DOCK_DATA.get(name);
}
public static String addDock(DockData dockData) {
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 static void removeDock(String name) {
DOCK_DATA.remove(name);
}
public static void updateDock(String name, DockData dockData) {
DOCK_DATA.put(name, dockData);
}
public static void load() throws Exception {
File file = new File(server.getWorldPath(LevelResource.ROOT) + "/tardim_ic/dock_map.json");
// Check if file exists
if (!file.exists()) {
file.getParentFile().mkdirs();
file.createNewFile();
FileWriter writer = new FileWriter(file);
writer.write(gson.toJson(new HashMap<Integer, DockData>()));
writer.close();
return;
}
Type typeOfDockMap = new TypeToken<Map<Integer, DockData>>() { }.getType();
JsonReader reader = new JsonReader(new FileReader(file));
String json = gson.fromJson(reader, String.class);
DOCK_DATA = gson.fromJson(json, typeOfDockMap);
System.out.println("Loaded TARDIM: IC docks");
}
public static void save() throws Exception {
File file = new File(server.getWorldPath(LevelResource.ROOT) + "/tardim_ic/dock_map.json");
// Check if file exists
if (!file.exists()) {
file.getParentFile().mkdirs();
file.createNewFile();
}
Gson gson = new Gson();
String json = gson.toJson(DOCK_DATA);
JsonWriter writer = new JsonWriter(new FileWriter(file));
writer.jsonValue(json);
writer.close();
System.out.println("Saved TARDIM: IC docks");
}
public static void clearCahce() {
DOCK_DATA.clear();
}
}

View file

@ -1,108 +0,0 @@
package su.a71.tardim_ic.tardim_ic.tardim_dock;
import com.swdteam.tardim.common.init.TRDDimensions;
import com.swdteam.tardim.common.init.TRDSounds;
import com.swdteam.tardim.network.NetworkHandler;
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;
import net.minecraft.core.Direction;
import net.minecraft.network.chat.Component;
import net.minecraft.network.protocol.game.DebugPackets;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.EntityBlock;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.IntegerProperty;
import net.minecraft.world.level.material.Material;
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() {
super(FabricBlockSettings.of(Material.METAL).strength(2, 4).noOcclusion());
}
@Override
public InteractionResult use(BlockState blockState, Level w, BlockPos blockPos, Player player, InteractionHand hand, BlockHitResult p_60508_) {
if (!w.isClientSide) {
BlockEntity be = w.getBlockEntity(blockPos);
if (be instanceof TardimDockBlockEntity) {
player.displayClientMessage(
Component.literal("Dock name: '" + ((TardimDockBlockEntity) be).data.name + "'").withStyle(ChatFormatting.DARK_AQUA).withStyle(ChatFormatting.BOLD), true
);
}
}
return InteractionResult.CONSUME;
}
public boolean canSurvive(BlockState blockState, LevelReader levelReader, BlockPos blockPos) {
return true;
}
// 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
@Override
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!!!!");
}
}
}

View file

@ -1,41 +0,0 @@
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 boolean isPowered = false;
public DockData data;
private BlockPos blockPos;
public TardimDockBlockEntity(BlockPos blockPos, BlockState blockState) {
super(Registration.TARDIM_DOCK_BLOCKENTITY, blockPos, blockState);
this.blockPos = blockPos;
this.data = new DockData(blockPos);
}
public void updateActive() {
this.data.setActive(this.isPowered);
}
@Override
public void saveAdditional(CompoundTag tag) {
tag.putString("data_name", data.name);
tag.putBoolean("data_active", data.active);
super.saveAdditional(tag);
}
@Override
public void load(CompoundTag tag) {
super.load(tag);
}
}

View file

@ -1,7 +1,6 @@
package su.a71.tardim_ic.tardim_ic;
import com.google.common.collect.Sets;
import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.item.BlockItem;
@ -20,7 +19,6 @@ import su.a71.tardim_ic.tardim_ic.digital_interface.DigitalInterfaceBlock;
import su.a71.tardim_ic.tardim_ic.digital_interface.DigitalInterfaceTileEntity;
import su.a71.tardim_ic.tardim_ic.redstone_input.RedstoneInputBlock;
import su.a71.tardim_ic.tardim_ic.redstone_input.RedstoneInputTileEntity;
import su.a71.tardim_ic.tardim_ic.registration.CommandInit;
import java.util.function.Supplier;

View file

@ -3,9 +3,6 @@ package su.a71.tardim_ic.tardim_ic;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.Mod;
import su.a71.tardim_ic.tardim_ic.registration.CommandInit;
import com.swdteam.tardim.TardimSaveHandler;
// The value here should match an entry in the META-INF/mods.toml file
@Mod(Constants.MOD_ID)
public class TardimInControl {

View file

@ -1,6 +1,7 @@
package su.a71.tardim_ic.tardim_ic.digital_interface;
import com.mojang.datafixers.util.Pair;
import com.swdteam.common.command.tardim.CommandTardimBase;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Holder;
@ -34,6 +35,7 @@ import com.swdteam.common.init.TRDSounds;
import com.swdteam.common.item.ItemTardim;
import com.swdteam.main.Tardim;
import su.a71.tardim_ic.tardim_ic.Registration;
import su.a71.tardim_ic.tardim_ic.utils.FakePlayer;
import javax.annotation.Nonnull;
@ -813,4 +815,29 @@ public class DigitalInterfacePeripheral implements IPeripheral {
return new ObjectLuaTable(skins);
}
/**
* Play cloister bell sound.
*/
@LuaFunction(mainThread = true)
public final void cloisterBell() throws LuaException {
if (this.tileEntity.getLevel().isClientSide()) {
return;
}
try {
Level lvl = this.tileEntity.getLevel();
if (!lvl.isClientSide) {
lvl.playSound(
null,
this.tileEntity.getPos(),
Registration.CLOISTER_SOUND.get(),
SoundSource.BLOCKS,
1.5f,
1f
);
}
} catch (Exception var9) {
throw new LuaException("There was an error trying to play the sound");
}
}
}

View file

@ -5,7 +5,7 @@ license = "MIT"
[[mods]] #mandatory
# The modid of the mod
modId = "tardim_ic" #mandatory
version = "0.9" #mandatory
version = "1.0" #mandatory
# A display name for the mod
displayName = "TARDIM: In Control" #mandatory
# The description text for the mod (multi line!) (#mandatory)

View file

@ -1,5 +1,5 @@
# Project
version=0.9
version=1.0
group=su.a71.tardim_ic
# Common