This commit is contained in:
p2vman 2025-05-26 23:49:19 +03:00
parent 053a0e038c
commit 8b9e20be2c
10 changed files with 247 additions and 70 deletions

View File

@ -153,6 +153,8 @@ repositories {
maven {
url = uri("https://maven.tterrag.com/releases")
}
maven { url 'https://squiddev.cc/maven/' }
}
dependencies {
@ -206,6 +208,8 @@ dependencies {
compileOnly 'org.projectlombok:lombok:1.18.20'
annotationProcessor 'org.projectlombok:lombok:1.18.20'
implementation fg.deobf("org.squiddev:cc-tweaked-1.19.2:1.101.3")
}

View File

@ -1,10 +1,6 @@
package space.eptaproject.vmodextras;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.mojang.logging.LogUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.*;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType;
@ -22,16 +18,10 @@ import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.*;
import org.slf4j.Logger;
import space.eptaproject.vmodextras.block.CompactBackupBlock;
import space.eptaproject.vmodextras.block.CompactBackupBlockEntity;
import space.eptaproject.vmodextras.block.TrackBackupBlock;
import space.eptaproject.vmodextras.block.TrackBackupBlockEntity;
import space.eptaproject.vmodextras.block.*;
import space.eptaproject.vmodextras.compact.Compact;
import space.eptaproject.vmodextras.util.ModRegistry;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Map;
@Mod(VmodExtras.MODID)
public class VmodExtras {
public static final String MODID = "vmodextras";
@ -42,13 +32,16 @@ public class VmodExtras {
public static final RegistryObject<Block> SHIP_VOID_BLOCK;
public static final RegistryObject<Block> TRAK_BUK;
public static final RegistryObject<Block> COMPACT_BACKUP;
public static final RegistryObject<Block> ENTITY_BACKUP;
public static final RegistryObject<BlockEntityType<TrackBackupBlockEntity>> MY_BLOCK_ENTITY;
public static final RegistryObject<BlockEntityType<CompactBackupBlockEntity>> COMPACT_BACKUP_BLOCK_ENTITY;
public static final RegistryObject<BlockEntityType<EntityBackupBlockEntity>> ENTITY_BACKUP_BLOCK_ENTITY;
public static RegistryObject<Item> MY_BLOCK_ITEM;
public static RegistryObject<Item> SHIP_VOID_ITEM;
public static RegistryObject<Item> COMPACT_BACKUP_ITEM;
public static RegistryObject<Item> ENTITY_BACKUP_ITEM;
public static final ModRegistry REGISTRY;
@ -61,24 +54,28 @@ public class VmodExtras {
TRAK_BUK = REGISTRY.BLOCKS.register("track_backup", () -> new TrackBackupBlock(BlockBehaviour.Properties.of().mapColor(MapColor.STONE)));
SHIP_VOID_BLOCK = REGISTRY.BLOCKS.register("ship_void", () -> new Block(BlockBehaviour.Properties.of().mapColor(MapColor.STONE)));
COMPACT_BACKUP = REGISTRY.BLOCKS.register("compact_backup", () -> new CompactBackupBlock(BlockBehaviour.Properties.of().mapColor(MapColor.STONE)));
ENTITY_BACKUP = REGISTRY.BLOCKS.register("entity_backup", () -> new EntityBackupBlock(BlockBehaviour.Properties.of().mapColor(MapColor.STONE)));
MY_BLOCK_ENTITY = REGISTRY.BLOCK_ENTITIES.register("track_backup", () -> BlockEntityType.Builder.of(TrackBackupBlockEntity::new, TRAK_BUK.get()).build(null));
COMPACT_BACKUP_BLOCK_ENTITY = REGISTRY.BLOCK_ENTITIES.register("compact_backup", () -> BlockEntityType.Builder.of(CompactBackupBlockEntity::new, COMPACT_BACKUP.get()).build(null));
ENTITY_BACKUP_BLOCK_ENTITY = REGISTRY.BLOCK_ENTITIES.register("entity_backup", () -> BlockEntityType.Builder.of(EntityBackupBlockEntity::new, ENTITY_BACKUP.get()).build(null));
EXAMPLE_TAB = REGISTRY.TabBuilder()
.push((registry) -> {
MY_BLOCK_ITEM = registry.register("track_backup", () -> new BlockItem(TRAK_BUK.get(), new Item.Properties()));
MY_BLOCK_ITEM = registry.register("track_backup", () -> new BlockItem(TRAK_BUK.get(), new Item.Properties().rarity(Rarity.EPIC)));
SHIP_VOID_ITEM = registry.register("ship_void", () -> new BlockItem(SHIP_VOID_BLOCK.get(), new Item.Properties()));
COMPACT_BACKUP_ITEM = registry.register("compact_backup", () -> new BlockItem(COMPACT_BACKUP.get(), new Item.Properties()));
COMPACT_BACKUP_ITEM = registry.register("compact_backup", () -> new BlockItem(COMPACT_BACKUP.get(), new Item.Properties().rarity(Rarity.EPIC)));
ENTITY_BACKUP_ITEM = registry.register("entity_backup", () -> new BlockItem(ENTITY_BACKUP.get(), new Item.Properties().rarity(Rarity.EPIC)));
})
.build("vmodetras", Items.BEDROCK.getDefaultInstance());
new Compact();
}
public VmodExtras() {
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
modEventBus.addListener(this::commonSetup);
REGISTRY.register(modEventBus);
MinecraftForge.EVENT_BUS.register(this);

View File

@ -5,12 +5,11 @@ import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController;
import edn.stratodonut.trackwork.tracks.forces.SimpleWheelController;
import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.Tag;
import net.minecraft.world.level.block.Rotation;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import org.joml.Vector3d;
import org.joml.Vector3dc;
import org.valkyrienskies.core.api.ships.ServerShip;
import org.valkyrienskies.mod.common.VSGameUtilsKt;
import space.eptaproject.vmodextras.trackwork.IPhysicsTrackController;
@ -32,46 +31,25 @@ public class CompactBackupBlockEntity extends BlockEntity {
if (ship != null) {
{
PhysicsTrackController physicsTrackController = ship.getAttachment(PhysicsTrackController.class);
IPhysicsTrackController controller = (IPhysicsTrackController) physicsTrackController;
if (physicsTrackController != null) {
CompoundTag PhysicsTrackControllerTag = new CompoundTag();
IPhysicsTrackController controller = (IPhysicsTrackController) physicsTrackController;
CompoundTag local = new CompoundTag();
PhysicsTrackControllerTag.putFloat("SuspensionStiffness", controller.getSuspensionStiffness());
{
CompoundTag suspensionAdjust = new CompoundTag();
controller.encode(local);
Vector3dc vec = controller.getSuspensionAdjust();
suspensionAdjust.putDouble("x", vec.x());
suspensionAdjust.putDouble("y", vec.y());
suspensionAdjust.putDouble("z", vec.z());
PhysicsTrackControllerTag.put("suspensionAdjust", suspensionAdjust);
}
tag.put("PhysicsTrackController", PhysicsTrackControllerTag);
tag.put("PhysicsTrackController", local);
}
}
{
SimpleWheelController simpleWheelController = ship.getAttachment(SimpleWheelController.class);
ISimpleWheelController controller = (ISimpleWheelController) simpleWheelController;
if (simpleWheelController != null) {
CompoundTag SimpleWheelControllerTag = new CompoundTag();
ISimpleWheelController controller = (ISimpleWheelController) simpleWheelController;
CompoundTag local = new CompoundTag();
SimpleWheelControllerTag.putFloat("SuspensionStiffness", controller.getSuspensionStiffness());
{
CompoundTag suspensionAdjust = new CompoundTag();
controller.encode(local);
Vector3dc vec = controller.getSuspensionAdjust();
suspensionAdjust.putDouble("x", vec.x());
suspensionAdjust.putDouble("y", vec.y());
suspensionAdjust.putDouble("z", vec.z());
SimpleWheelControllerTag.put("suspensionAdjust", suspensionAdjust);
}
tag.put("SimpleWheelController", SimpleWheelControllerTag);
tag.put("SimpleWheelController", local);
}
}
}
@ -98,31 +76,12 @@ public class CompactBackupBlockEntity extends BlockEntity {
ServerShip ship = (ServerShip) VSGameUtilsKt.getShipObjectManagingPos(this.level, getBlockPos());
if (ship != null) {
if (tag.contains("SimpleWheelController")) {
CompoundTag L = tag.getCompound("SimpleWheelController");
SimpleWheelController controller2 = SimpleWheelController.getOrCreate(ship);
if (L.contains("SuspensionStiffness")) {
((ISimpleWheelController) controller2).setSuspensionStiffness(L.getFloat("SuspensionStiffness"));
}
if (L.contains("suspensionAdjust")) {
CompoundTag suspensionAdjust = L.getCompound("suspensionAdjust");
((ISimpleWheelController) controller2).setSuspensionAdjust(new Vector3d(new Vector3d(suspensionAdjust.getDouble("x"), suspensionAdjust.getDouble("y"), suspensionAdjust.getDouble("z"))));
}
if (tag.contains("SimpleWheelController", Tag.TAG_COMPOUND)) {
((ISimpleWheelController) SimpleWheelController.getOrCreate(ship)).decode(tag.getCompound("SimpleWheelController"));
}
if (tag.contains("PhysicsTrackController")) {
CompoundTag L = tag.getCompound("PhysicsTrackController");
PhysicsTrackController controller = PhysicsTrackController.getOrCreate(ship);
if (L.contains("SuspensionStiffness")) {
((IPhysicsTrackController) controller).setSuspensionStiffness(L.getFloat("SuspensionStiffness"));
}
if (L.contains("suspensionAdjust")) {
CompoundTag suspensionAdjust = L.getCompound("suspensionAdjust");
((IPhysicsTrackController) controller).setSuspensionAdjust(new Vector3d(suspensionAdjust.getDouble("x"), suspensionAdjust.getDouble("y"), suspensionAdjust.getDouble("z")));
}
if (tag.contains("PhysicsTrackController", Tag.TAG_COMPOUND)) {
((IPhysicsTrackController) PhysicsTrackController.getOrCreate(ship)).decode(tag.getCompound("PhysicsTrackController"));
}
}

View File

@ -0,0 +1,23 @@
package space.eptaproject.vmodextras.block;
import com.simibubi.create.foundation.block.IBE;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockBehaviour;
import space.eptaproject.vmodextras.VmodExtras;
public class EntityBackupBlock extends Block implements IBE<EntityBackupBlockEntity> {
public EntityBackupBlock(BlockBehaviour.Properties properties) {
super(properties);
}
@Override
public BlockEntityType<? extends EntityBackupBlockEntity> getBlockEntityType() {
return VmodExtras.ENTITY_BACKUP_BLOCK_ENTITY.get();
}
@Override
public Class<EntityBackupBlockEntity> getBlockEntityClass() {
return EntityBackupBlockEntity.class;
}
}

View File

@ -0,0 +1,29 @@
package space.eptaproject.vmodextras.block;
import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import org.valkyrienskies.core.api.ships.ServerShip;
import org.valkyrienskies.mod.common.VSGameUtilsKt;
import space.eptaproject.vmodextras.VmodExtras;
public class EntityBackupBlockEntity extends BlockEntity {
public EntityBackupBlockEntity(BlockPos p_155229_, BlockState p_155230_) {
super(VmodExtras.ENTITY_BACKUP_BLOCK_ENTITY.get(), p_155229_, p_155230_);
}
@Override
public void load(CompoundTag tag) {
super.load(tag);
}
@Override
public void saveAdditional(CompoundTag tag) {
super.saveAdditional(tag);
ServerShip ship = (ServerShip) VSGameUtilsKt.getShipManagingPos(this.level, this.getBlockPos());
}
}

View File

@ -0,0 +1,19 @@
package space.eptaproject.vmodextras.compact;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Items;
import net.minecraftforge.registries.RegistryObject;
import space.eptaproject.vmodextras.VmodExtras;
import space.eptaproject.vmodextras.compact.computercraft.ComputerCraftCompact;
import space.eptaproject.vmodextras.util.ModRegistry;
public class Compact {
public static RegistryObject<CreativeModeTab> COMPACT_TAB;
public Compact() {
ModRegistry REGISTRY = VmodExtras.REGISTRY;
ModRegistry.TabBuilder builder = REGISTRY.TabBuilder();
new ComputerCraftCompact(REGISTRY, builder);
COMPACT_TAB = builder.build("compact", Items.PAPER.getDefaultInstance());
}
}

View File

@ -0,0 +1,30 @@
package space.eptaproject.vmodextras.compact.computercraft;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.Rarity;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.material.MapColor;
import net.minecraftforge.registries.RegistryObject;
import space.eptaproject.vmodextras.util.ModRegistry;
public class ComputerCraftCompact {
public static RegistryObject<BlockEntityType<TrackWorkControllerEntity>> TRACK_WORK_CONTROLLER_BLOCK_ENTITY;
public static RegistryObject<Block> TRACK_WORK_CONTROLLER_BLOCK;
public static RegistryObject<Item> TRACK_WORK_CONTROLLER_ITEM;
public ComputerCraftCompact(ModRegistry REGISTRY, ModRegistry.TabBuilder builder) {
TRACK_WORK_CONTROLLER_BLOCK = REGISTRY.BLOCKS.register("track_work_controller", () -> new TrackWorkController(BlockBehaviour.Properties.of().mapColor(MapColor.STONE)));
TRACK_WORK_CONTROLLER_BLOCK_ENTITY = REGISTRY.BLOCK_ENTITIES.register("track_work_controller", () -> BlockEntityType.Builder.of(TrackWorkControllerEntity::new, TRACK_WORK_CONTROLLER_BLOCK.get()).build(null));
builder.push((registry) -> {
TRACK_WORK_CONTROLLER_ITEM = registry.register("track_work_controller", () -> new BlockItem(TRACK_WORK_CONTROLLER_BLOCK.get(), new Item.Properties().rarity(Rarity.EPIC)));
});
}
}

View File

@ -0,0 +1,22 @@
package space.eptaproject.vmodextras.compact.computercraft;
import com.simibubi.create.foundation.block.IBE;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType;
public class TrackWorkController extends Block implements IBE<TrackWorkControllerEntity> {
public TrackWorkController(Properties properties) {
super(properties);
}
@Override
public BlockEntityType<? extends TrackWorkControllerEntity> getBlockEntityType() {
return ComputerCraftCompact.TRACK_WORK_CONTROLLER_BLOCK_ENTITY.get();
}
@Override
public Class<TrackWorkControllerEntity> getBlockEntityClass() {
return TrackWorkControllerEntity.class;
}
}

View File

@ -0,0 +1,33 @@
package space.eptaproject.vmodextras.compact.computercraft;
import dan200.computercraft.api.peripheral.IPeripheral;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.LazyOptional;
import org.jetbrains.annotations.NotNull;
import static dan200.computercraft.shared.Capabilities.CAPABILITY_PERIPHERAL;
public class TrackWorkControllerEntity extends BlockEntity {
public TrackWorkControllerEntity(BlockPos p_155229_, BlockState p_155230_) {
super(ComputerCraftCompact.TRACK_WORK_CONTROLLER_BLOCK_ENTITY.get(), p_155229_, p_155230_);
}
protected TrackWorkControllerPeripheral peripheral = new TrackWorkControllerPeripheral(this);
private LazyOptional<IPeripheral> peripheralCap;
@Override
@NotNull
public <T> LazyOptional<T> getCapability(@NotNull Capability<T> cap, Direction direction) {
if (cap == CAPABILITY_PERIPHERAL) {
if (peripheralCap == null) {
peripheralCap = LazyOptional.of(() -> peripheral);
}
return peripheralCap.cast();
}
return super.getCapability(cap, direction);
}
}

View File

@ -0,0 +1,61 @@
package space.eptaproject.vmodextras.compact.computercraft;
import dan200.computercraft.api.lua.IArguments;
import dan200.computercraft.api.lua.LuaException;
import dan200.computercraft.api.lua.LuaFunction;
import dan200.computercraft.api.peripheral.IComputerAccess;
import dan200.computercraft.api.peripheral.IPeripheral;
import edn.stratodonut.trackwork.tracks.forces.SimpleWheelController;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import lombok.AllArgsConstructor;
import org.joml.Vector3d;
import org.joml.Vector3dc;
import org.valkyrienskies.core.api.ships.ServerShip;
import org.valkyrienskies.mod.common.VSGameUtilsKt;
import space.eptaproject.vmodextras.trackwork.ISimpleWheelController;
import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@AllArgsConstructor
public class TrackWorkControllerPeripheral implements IPeripheral {
private final List<IComputerAccess> connectedComputers = new ObjectArrayList<>();
private TrackWorkControllerEntity entity;
@Override
public @Nonnull String getType() {
return "track_work_controller";
}
public boolean equals(IPeripheral iPeripheral) {
return this == iPeripheral;
}
@Override
public void detach(@Nullable IComputerAccess computer) {
connectedComputers.remove(computer);
}
@Override
public void attach(@Nonnull IComputerAccess computer) {
connectedComputers.add(computer);
}
@LuaFunction
public final void SetSuspensionAdjust(IArguments arguments) throws LuaException {
Vector3dc vec = new Vector3d(arguments.getDouble(0),arguments.getDouble(1),arguments.getDouble(2));
ServerShip ship = (ServerShip) VSGameUtilsKt.getShipObjectManagingPos(this.entity.getLevel(), this.entity.getBlockPos());
if (ship != null) {
((ISimpleWheelController) SimpleWheelController.getOrCreate(ship)).setSuspensionAdjust(vec);
}
}
@LuaFunction
public final void GetSuspensionAdjust(IArguments arguments) throws LuaException {
}
}