diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 7377ba3..77eb69c 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -36,5 +36,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules/vmodextras.main.iml b/.idea/modules/vmodextras.main.iml
index ca2af54..0c8d696 100644
--- a/.idea/modules/vmodextras.main.iml
+++ b/.idea/modules/vmodextras.main.iml
@@ -21,7 +21,7 @@
-
+
\ No newline at end of file
diff --git a/.idea/modules/vmodextras.test.iml b/.idea/modules/vmodextras.test.iml
index fdc2e90..af127c2 100644
--- a/.idea/modules/vmodextras.test.iml
+++ b/.idea/modules/vmodextras.test.iml
@@ -16,7 +16,7 @@
-
+
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index a9a98b6..7fcb011 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx3G
org.gradle.daemon=false
minecraft_version=1.20.1
minecraft_version_range=[1.20.1,1.21)
-forge_version=47.4.1
+forge_version=47.3.5
forge_version_range=[47,)
loader_version_range=[47,)
mapping_channel=official
diff --git a/src/main/java/space/eptaproject/vmodextras/Config.java b/src/main/java/space/eptaproject/vmodextras/Config.java
index 2d6ef31..cfc6352 100644
--- a/src/main/java/space/eptaproject/vmodextras/Config.java
+++ b/src/main/java/space/eptaproject/vmodextras/Config.java
@@ -18,9 +18,14 @@ public class Config {
public static final ForgeConfigSpec.ConfigValue Suspension_Stiffness_LIMIT;
public static final ForgeConfigSpec.ConfigValue Suspension_Stiffness_delta;
+ public static final ForgeConfigSpec.ConfigValue Schematic_Blocked_Blocks;
+ public static final ForgeConfigSpec.ConfigValue Inventory_Blocked_Blocks;
+
public static List parsedList = new ObjectArrayList<>();
private static List> ITEM = new ObjectImmutableList<>(new ArrayList<>());
public static ResourceLocation replace = Validator.RB;
+ public static boolean Inventory_Blocked_Blocks_Enable = false;
+ public static boolean Schematic_Blocked_Blocks_Enable = false;
static {
ForgeConfigSpec.Builder builder = new ForgeConfigSpec.Builder();
@@ -42,6 +47,9 @@ public class Config {
Validator.RB.toString()
);
+ Schematic_Blocked_Blocks = builder
+ .define("enable", false);
+
builder.pop();
@@ -55,6 +63,9 @@ public class Config {
obj -> obj instanceof String && ResourceLocation.isValidResourceLocation((String) obj)
);
+ Inventory_Blocked_Blocks = builder
+ .define("enable", false);
+
builder.pop();
builder.push("TrackWork");
@@ -74,20 +85,14 @@ public class Config {
public static void bake() {
parsedList = RESOURCE_LOCATION_LIST.get().stream()
- .map(s -> {
- try {
- return ResourceLocation.parse(s);
- } catch (Exception e) {
- return null;
- }
- })
+ .map(ResourceLocation::tryParse)
.filter(Objects::nonNull)
.toList();
ITEM = new ObjectImmutableList(ITEM_BLACK_LIST.get().stream()
.map(s -> {
try {
- ResourceLocation location = ResourceLocation.parse(s);
+ ResourceLocation location = ResourceLocation.tryParse(s);
return new AbstractMap.SimpleEntry(location.hashCode(), location);
} catch (Exception e) {
return null;
@@ -96,15 +101,17 @@ public class Config {
.filter(Objects::nonNull)
.toList());
try {
- replace = ResourceLocation.parse(RESOURCE_LOCATION.get());
+ replace = new ResourceLocation(RESOURCE_LOCATION.get());
} catch (Exception e) {
replace = Validator.RB;
}
+ Inventory_Blocked_Blocks_Enable = Inventory_Blocked_Blocks.get();
+ Schematic_Blocked_Blocks_Enable = Schematic_Blocked_Blocks.get();
}
public static boolean contains(ItemStack stack) {
- if (stack.isEmpty()) return false;
+ if (stack.isEmpty() || !Inventory_Blocked_Blocks_Enable) return false;
ResourceLocation id = ForgeRegistries.ITEMS.getKey(stack.getItem());
if (id == null) return false;
diff --git a/src/main/java/space/eptaproject/vmodextras/Validator.java b/src/main/java/space/eptaproject/vmodextras/Validator.java
index 8b5a50d..78bc522 100644
--- a/src/main/java/space/eptaproject/vmodextras/Validator.java
+++ b/src/main/java/space/eptaproject/vmodextras/Validator.java
@@ -8,11 +8,12 @@ import net.minecraftforge.registries.ForgeRegistries;
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
+import space.eptaproject.vmodextras.util.ResourceLocationUtil;
@ToString
public class Validator implements IValidator {
public static final Logger LOGGER = LoggerFactory.getLogger("Validator");
- public static ResourceLocation RB = ResourceLocation.fromNamespaceAndPath(VmodExtras.MODID, "example_block");
+ public static ResourceLocation RB = ResourceLocationUtil.fromNamespaceAndPath(VmodExtras.MODID, "example_block");
public Validator() {
@@ -20,8 +21,7 @@ public class Validator implements IValidator {
@Override
public void valid(Block block, ResourceLocation location, CallbackInfoReturnable info) {
- LOGGER.info(location.toString());
- if (Config.parsedList.contains(location)) {
+ if (Config.parsedList.contains(location) && Config.Schematic_Blocked_Blocks_Enable) {
Block replacement = ForgeRegistries.BLOCKS.getValue(Config.replace);
if (replacement != null) {
info.setReturnValue(replacement.defaultBlockState());
diff --git a/src/main/java/space/eptaproject/vmodextras/VmodExtras.java b/src/main/java/space/eptaproject/vmodextras/VmodExtras.java
index 766b121..20939f2 100644
--- a/src/main/java/space/eptaproject/vmodextras/VmodExtras.java
+++ b/src/main/java/space/eptaproject/vmodextras/VmodExtras.java
@@ -1,22 +1,27 @@
package space.eptaproject.vmodextras;
+import com.google.common.base.VerifyException;
import com.mojang.logging.LogUtils;
import net.minecraft.world.item.*;
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.api.distmarker.Dist;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.ModLoadingContext;
+import net.minecraftforge.fml.ModLoadingException;
+import net.minecraftforge.fml.ModLoadingStage;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.config.ModConfig;
import net.minecraftforge.fml.event.config.ModConfigEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.*;
+import net.minecraftforge.versions.forge.ForgeVersion;
import org.slf4j.Logger;
import space.eptaproject.vmodextras.block.*;
import space.eptaproject.vmodextras.compact.Compact;
@@ -28,50 +33,27 @@ public class VmodExtras {
private static final Logger LOGGER = LogUtils.getLogger();
-
- public static final RegistryObject SHIP_VOID_BLOCK;
- public static final RegistryObject TRAK_BUK;
- public static final RegistryObject COMPACT_BACKUP;
- public static final RegistryObject ENTITY_BACKUP;
-
- public static final RegistryObject> MY_BLOCK_ENTITY;
- public static final RegistryObject> COMPACT_BACKUP_BLOCK_ENTITY;
- public static final RegistryObject> ENTITY_BACKUP_BLOCK_ENTITY;
-
- public static RegistryObject- MY_BLOCK_ITEM;
- public static RegistryObject
- SHIP_VOID_ITEM;
- public static RegistryObject
- COMPACT_BACKUP_ITEM;
+ public static RegistryObject> ENTITY_BACKUP_BLOCK_ENTITY;
+ public static RegistryObject ENTITY_BACKUP;
public static RegistryObject
- ENTITY_BACKUP_ITEM;
-
public static final ModRegistry REGISTRY;
- public static final RegistryObject EXAMPLE_TAB;
-
static {
REGISTRY = new ModRegistry(MODID);
- 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().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().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();
+ new Compact((REGISTRY, builder) -> {
+ builder.push((registry) -> {
+ ENTITY_BACKUP_ITEM = registry.register("entity_backup", () -> new BlockItem(ENTITY_BACKUP.get(), new Item.Properties().rarity(Rarity.EPIC)));
+ });
+ });
}
+ private static final String MIN_FORGE_VERSION = "47.3.5";
+
public VmodExtras() {
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
@@ -84,6 +66,46 @@ public class VmodExtras {
private void commonSetup(final FMLCommonSetupEvent event) {
+ String currentVersion = ForgeVersion.getVersion();
+ if (compareVersion(currentVersion, MIN_FORGE_VERSION) < 0) {
+ throw new ModLoadingException(
+ ModLoadingContext.get().getActiveContainer().getModInfo(),
+ ModLoadingStage.ERROR,
+ "VModExras requires Forge " + MIN_FORGE_VERSION + " or higher, but found " + currentVersion,
+ new VerifyException("VModExras requires Forge " + MIN_FORGE_VERSION + " or higher, but found " + currentVersion)
+ );
+ }
+ }
+
+
+ public static int compareVersion(String v1, String v2) {
+ if (v1 == null || v2 == null) {
+ throw new IllegalArgumentException("Version strings must not be null");
+ }
+
+ String[] parts1 = v1.split("[.-]");
+ String[] parts2 = v2.split("[.-]");
+
+ int maxLength = Math.max(parts1.length, parts2.length);
+
+ for (int i = 0; i < maxLength; i++) {
+ String s1 = i < parts1.length ? parts1[i] : "0";
+ String s2 = i < parts2.length ? parts2[i] : "0";
+ try {
+ int n1 = Integer.parseInt(s1);
+ int n2 = Integer.parseInt(s2);
+ if (n1 != n2) {
+ return Integer.compare(n1, n2);
+ }
+ } catch (NumberFormatException e) {
+ int cmp = s1.compareTo(s2);
+ if (cmp != 0) {
+ return cmp;
+ }
+ }
+ }
+
+ return 0;
}
@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
@@ -96,7 +118,7 @@ public class VmodExtras {
}
}
- @Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.FORGE)
+ @Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.DEDICATED_SERVER)
public static class InteractionHandler {
@SubscribeEvent
diff --git a/src/main/java/space/eptaproject/vmodextras/compact/Compact.java b/src/main/java/space/eptaproject/vmodextras/compact/Compact.java
index 3db56a3..c281b29 100644
--- a/src/main/java/space/eptaproject/vmodextras/compact/Compact.java
+++ b/src/main/java/space/eptaproject/vmodextras/compact/Compact.java
@@ -5,15 +5,29 @@ 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.compact.trackwork.TrackWorkCompact;
import space.eptaproject.vmodextras.util.ModRegistry;
+import space.eptaproject.vmodextras.util.Utils;
+
+import java.util.function.BiConsumer;
public class Compact {
public static RegistryObject COMPACT_TAB;
- public Compact() {
+ public Compact(BiConsumer consumer) {
ModRegistry REGISTRY = VmodExtras.REGISTRY;
ModRegistry.TabBuilder builder = REGISTRY.TabBuilder();
- new ComputerCraftCompact(REGISTRY, builder);
- COMPACT_TAB = builder.build("compact", Items.PAPER.getDefaultInstance());
+
+ Utils.executeIsModEnable("computercraft", () -> {
+ ComputerCraftCompact.init(REGISTRY, builder);
+ });
+
+ Utils.executeIsModEnable("trackwork", () -> {
+ TrackWorkCompact.init(REGISTRY, builder);
+ });
+
+ consumer.accept(REGISTRY, builder);
+
+ COMPACT_TAB = builder.build("vmodextras", Items.PAPER.getDefaultInstance());
}
}
diff --git a/src/main/java/space/eptaproject/vmodextras/compact/computercraft/ComputerCraftCompact.java b/src/main/java/space/eptaproject/vmodextras/compact/computercraft/ComputerCraftCompact.java
index 44cdbf0..92522e2 100644
--- a/src/main/java/space/eptaproject/vmodextras/compact/computercraft/ComputerCraftCompact.java
+++ b/src/main/java/space/eptaproject/vmodextras/compact/computercraft/ComputerCraftCompact.java
@@ -8,23 +8,27 @@ 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.compact.computercraft.block.TrackWorkController;
+import space.eptaproject.vmodextras.compact.computercraft.block.entity.TrackWorkControllerEntity;
import space.eptaproject.vmodextras.util.ModRegistry;
+import space.eptaproject.vmodextras.util.Utils;
public class ComputerCraftCompact {
public static RegistryObject> TRACK_WORK_CONTROLLER_BLOCK_ENTITY;
-
public static RegistryObject TRACK_WORK_CONTROLLER_BLOCK;
-
public static RegistryObject
- 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));
+ public static void init(ModRegistry REGISTRY, ModRegistry.TabBuilder builder) {
+ Utils.executeIsModEnable("trackwork", () -> {
+ 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)));
+ Utils.executeIsModEnable("trackwork", () -> {
+ TRACK_WORK_CONTROLLER_ITEM = registry.register("track_work_controller", () -> new BlockItem(TRACK_WORK_CONTROLLER_BLOCK.get(), new Item.Properties().rarity(Rarity.EPIC)));
+ });
});
}
}
diff --git a/src/main/java/space/eptaproject/vmodextras/compact/computercraft/TrackWorkControllerPeripheral.java b/src/main/java/space/eptaproject/vmodextras/compact/computercraft/TrackWorkControllerPeripheral.java
deleted file mode 100644
index bcf9e07..0000000
--- a/src/main/java/space/eptaproject/vmodextras/compact/computercraft/TrackWorkControllerPeripheral.java
+++ /dev/null
@@ -1,61 +0,0 @@
-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 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 {
-
- }
-}
diff --git a/src/main/java/space/eptaproject/vmodextras/compact/computercraft/TrackWorkController.java b/src/main/java/space/eptaproject/vmodextras/compact/computercraft/block/TrackWorkController.java
similarity index 73%
rename from src/main/java/space/eptaproject/vmodextras/compact/computercraft/TrackWorkController.java
rename to src/main/java/space/eptaproject/vmodextras/compact/computercraft/block/TrackWorkController.java
index 755fe63..402128a 100644
--- a/src/main/java/space/eptaproject/vmodextras/compact/computercraft/TrackWorkController.java
+++ b/src/main/java/space/eptaproject/vmodextras/compact/computercraft/block/TrackWorkController.java
@@ -1,8 +1,10 @@
-package space.eptaproject.vmodextras.compact.computercraft;
+package space.eptaproject.vmodextras.compact.computercraft.block;
import com.simibubi.create.foundation.block.IBE;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType;
+import space.eptaproject.vmodextras.compact.computercraft.ComputerCraftCompact;
+import space.eptaproject.vmodextras.compact.computercraft.block.entity.TrackWorkControllerEntity;
public class TrackWorkController extends Block implements IBE {
public TrackWorkController(Properties properties) {
diff --git a/src/main/java/space/eptaproject/vmodextras/compact/computercraft/TrackWorkControllerEntity.java b/src/main/java/space/eptaproject/vmodextras/compact/computercraft/block/entity/TrackWorkControllerEntity.java
similarity index 77%
rename from src/main/java/space/eptaproject/vmodextras/compact/computercraft/TrackWorkControllerEntity.java
rename to src/main/java/space/eptaproject/vmodextras/compact/computercraft/block/entity/TrackWorkControllerEntity.java
index 1787aa9..d32e3be 100644
--- a/src/main/java/space/eptaproject/vmodextras/compact/computercraft/TrackWorkControllerEntity.java
+++ b/src/main/java/space/eptaproject/vmodextras/compact/computercraft/block/entity/TrackWorkControllerEntity.java
@@ -1,4 +1,4 @@
-package space.eptaproject.vmodextras.compact.computercraft;
+package space.eptaproject.vmodextras.compact.computercraft.block.entity;
import dan200.computercraft.api.peripheral.IPeripheral;
import net.minecraft.core.BlockPos;
@@ -8,6 +8,8 @@ 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 space.eptaproject.vmodextras.compact.computercraft.ComputerCraftCompact;
+import space.eptaproject.vmodextras.compact.computercraft.peripheral.TrackWorkControllerPeripheral;
import static dan200.computercraft.shared.Capabilities.CAPABILITY_PERIPHERAL;
@@ -30,4 +32,10 @@ public class TrackWorkControllerEntity extends BlockEntity {
}
return super.getCapability(cap, direction);
}
+
+ @Override
+ public void invalidateCaps() {
+ super.invalidateCaps();
+ peripheralCap.invalidate();
+ }
}
diff --git a/src/main/java/space/eptaproject/vmodextras/compact/computercraft/peripheral/PeripheralBase.java b/src/main/java/space/eptaproject/vmodextras/compact/computercraft/peripheral/PeripheralBase.java
new file mode 100644
index 0000000..5b1325b
--- /dev/null
+++ b/src/main/java/space/eptaproject/vmodextras/compact/computercraft/peripheral/PeripheralBase.java
@@ -0,0 +1,37 @@
+package space.eptaproject.vmodextras.compact.computercraft.peripheral;
+
+import dan200.computercraft.api.peripheral.IComputerAccess;
+import dan200.computercraft.api.peripheral.IPeripheral;
+import it.unimi.dsi.fastutil.objects.ObjectArrayList;
+import org.jetbrains.annotations.NotNull;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import java.util.List;
+
+public class PeripheralBase implements IPeripheral {
+ protected final List connectedComputers = new ObjectArrayList<>();
+ protected final String type;
+ public PeripheralBase(String type) {
+ this.type = type;
+ }
+
+ @Override
+ public void detach(@Nullable IComputerAccess computer) {
+ connectedComputers.remove(computer);
+ }
+
+ @Override
+ public void attach(@Nonnull IComputerAccess computer) {
+ connectedComputers.add(computer);
+ }
+
+ @Override
+ public @NotNull String getType() {
+ return this.type;
+ }
+
+ public boolean equals(IPeripheral iPeripheral) {
+ return this == iPeripheral;
+ }
+}
diff --git a/src/main/java/space/eptaproject/vmodextras/compact/computercraft/peripheral/TrackWorkControllerPeripheral.java b/src/main/java/space/eptaproject/vmodextras/compact/computercraft/peripheral/TrackWorkControllerPeripheral.java
new file mode 100644
index 0000000..ffe700c
--- /dev/null
+++ b/src/main/java/space/eptaproject/vmodextras/compact/computercraft/peripheral/TrackWorkControllerPeripheral.java
@@ -0,0 +1,84 @@
+package space.eptaproject.vmodextras.compact.computercraft.peripheral;
+
+import dan200.computercraft.api.lua.*;
+import edn.stratodonut.trackwork.tracks.forces.SimpleWheelController;
+import it.unimi.dsi.fastutil.ints.Int2DoubleArrayMap;
+import it.unimi.dsi.fastutil.ints.Int2DoubleMap;
+import it.unimi.dsi.fastutil.objects.ObjectArrayList;
+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.compact.computercraft.block.entity.TrackWorkControllerEntity;
+import space.eptaproject.vmodextras.compact.trackwork.ISimpleWheelController;
+
+import java.util.List;
+import java.util.Objects;
+
+public class TrackWorkControllerPeripheral extends PeripheralBase {
+ private TrackWorkControllerEntity entity;
+
+ public static class Controller {
+ private final Class contoller;
+ private Controller(Class contoller) {
+ this.contoller = contoller;
+ }
+
+ public Class getContoller() {
+ return contoller;
+ }
+
+ public T get(ServerShip ship) {
+ Objects.requireNonNull(ship);
+ T t = ship.getAttachment(contoller);
+ if (t == null) {
+ try {
+ t = contoller.getDeclaredConstructor().newInstance();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ Objects.requireNonNull(t);
+ return t;
+ }
+
+ public static final List> DEFS = new ObjectArrayList<>();
+ }
+
+ public TrackWorkControllerPeripheral(TrackWorkControllerEntity entity) {
+ super("track_work_controller");
+ this.entity = entity;
+ }
+
+ @LuaFunction
+ public final void SetSuspensionAdjust(IArguments arguments) throws LuaException {
+ ServerShip ship = (ServerShip) VSGameUtilsKt.getShipObjectManagingPos(this.entity.getLevel(), this.entity.getBlockPos());
+ if (ship != null) {
+ ((ISimpleWheelController) SimpleWheelController.getOrCreate(ship)).setSuspensionAdjust(new Vector3d(
+ Math.max(Math.min(arguments.getDouble(0), 1d), 0d),
+ Math.max(Math.min(arguments.getDouble(1), 1.3d), 0.5d),
+ Math.max(Math.min(arguments.getDouble(2), 1d), 0d)
+ ));
+ }
+ }
+
+ @LuaFunction
+ public final MethodResult GetSuspensionAdjust(IArguments arguments) throws LuaException {
+ ServerShip ship = (ServerShip) VSGameUtilsKt.getShipObjectManagingPos(this.entity.getLevel(), this.entity.getBlockPos());
+ if (ship != null) {
+ Vector3dc vec =((ISimpleWheelController) SimpleWheelController.getOrCreate(ship)).getSuspensionAdjust();
+ Int2DoubleMap map = new Int2DoubleArrayMap();
+ map.put(1, vec.x());
+ map.put(2, vec.y());
+ map.put(3, vec.z());
+ return MethodResult.of(new ObjectLuaTable(map));
+ }
+
+ return MethodResult.of();
+ }
+
+ @LuaFunction
+ public final MethodResult GetMeta(IArguments arguments) throws LuaException {
+ return MethodResult.of();
+ }
+}
diff --git a/src/main/java/space/eptaproject/vmodextras/util/IBlockEntityClear.java b/src/main/java/space/eptaproject/vmodextras/compact/trackwork/IBlockEntityClear.java
similarity index 68%
rename from src/main/java/space/eptaproject/vmodextras/util/IBlockEntityClear.java
rename to src/main/java/space/eptaproject/vmodextras/compact/trackwork/IBlockEntityClear.java
index a9c134f..ea4702e 100644
--- a/src/main/java/space/eptaproject/vmodextras/util/IBlockEntityClear.java
+++ b/src/main/java/space/eptaproject/vmodextras/compact/trackwork/IBlockEntityClear.java
@@ -1,4 +1,4 @@
-package space.eptaproject.vmodextras.util;
+package space.eptaproject.vmodextras.compact.trackwork;
public interface IBlockEntityClear {
boolean clear();
diff --git a/src/main/java/space/eptaproject/vmodextras/trackwork/IController.java b/src/main/java/space/eptaproject/vmodextras/compact/trackwork/IController.java
similarity index 95%
rename from src/main/java/space/eptaproject/vmodextras/trackwork/IController.java
rename to src/main/java/space/eptaproject/vmodextras/compact/trackwork/IController.java
index 3edbb1c..3c512c2 100644
--- a/src/main/java/space/eptaproject/vmodextras/trackwork/IController.java
+++ b/src/main/java/space/eptaproject/vmodextras/compact/trackwork/IController.java
@@ -1,4 +1,4 @@
-package space.eptaproject.vmodextras.trackwork;
+package space.eptaproject.vmodextras.compact.trackwork;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.Tag;
diff --git a/src/main/java/space/eptaproject/vmodextras/compact/trackwork/IPhysicsTrackController.java b/src/main/java/space/eptaproject/vmodextras/compact/trackwork/IPhysicsTrackController.java
new file mode 100644
index 0000000..38a270a
--- /dev/null
+++ b/src/main/java/space/eptaproject/vmodextras/compact/trackwork/IPhysicsTrackController.java
@@ -0,0 +1,7 @@
+package space.eptaproject.vmodextras.compact.trackwork;
+
+import space.eptaproject.vmodextras.mixins.trackwork.PhysicsTrackControllerAccessor;
+
+public interface IPhysicsTrackController extends PhysicsTrackControllerAccessor, IController {
+
+}
diff --git a/src/main/java/space/eptaproject/vmodextras/compact/trackwork/ISimpleWheelController.java b/src/main/java/space/eptaproject/vmodextras/compact/trackwork/ISimpleWheelController.java
new file mode 100644
index 0000000..7041d19
--- /dev/null
+++ b/src/main/java/space/eptaproject/vmodextras/compact/trackwork/ISimpleWheelController.java
@@ -0,0 +1,6 @@
+package space.eptaproject.vmodextras.compact.trackwork;
+
+import space.eptaproject.vmodextras.mixins.trackwork.SimpleWheelControllerAccessor;
+
+public interface ISimpleWheelController extends SimpleWheelControllerAccessor, IController {
+}
diff --git a/src/main/java/space/eptaproject/vmodextras/compact/trackwork/TrackWorkCompact.java b/src/main/java/space/eptaproject/vmodextras/compact/trackwork/TrackWorkCompact.java
new file mode 100644
index 0000000..b47d4d8
--- /dev/null
+++ b/src/main/java/space/eptaproject/vmodextras/compact/trackwork/TrackWorkCompact.java
@@ -0,0 +1,44 @@
+package space.eptaproject.vmodextras.compact.trackwork;
+
+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.compact.trackwork.block.CompactBackupBlock;
+import space.eptaproject.vmodextras.compact.trackwork.block.TrackBackupBlock;
+import space.eptaproject.vmodextras.compact.trackwork.block.entity.CompactBackupBlockEntity;
+import space.eptaproject.vmodextras.compact.trackwork.block.entity.TrackBackupBlockEntity;
+import space.eptaproject.vmodextras.util.ModRegistry;
+
+public class TrackWorkCompact
+{
+ public static RegistryObject SHIP_VOID_BLOCK;
+ public static RegistryObject TRAK_BUK;
+ public static RegistryObject COMPACT_BACKUP;
+
+ public static RegistryObject> MY_BLOCK_ENTITY;
+ public static RegistryObject> COMPACT_BACKUP_BLOCK_ENTITY;
+
+ public static RegistryObject
- MY_BLOCK_ITEM;
+ public static RegistryObject
- SHIP_VOID_ITEM;
+ public static RegistryObject
- COMPACT_BACKUP_ITEM;
+
+ public static void init(ModRegistry REGISTRY, ModRegistry.TabBuilder builder) {
+ 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)));
+
+ 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));
+
+ builder.push((registry) -> {
+ 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().rarity(Rarity.EPIC)));
+ });
+ }
+}
diff --git a/src/main/java/space/eptaproject/vmodextras/block/CompactBackupBlock.java b/src/main/java/space/eptaproject/vmodextras/compact/trackwork/block/CompactBackupBlock.java
similarity index 66%
rename from src/main/java/space/eptaproject/vmodextras/block/CompactBackupBlock.java
rename to src/main/java/space/eptaproject/vmodextras/compact/trackwork/block/CompactBackupBlock.java
index 2222a61..017b68d 100644
--- a/src/main/java/space/eptaproject/vmodextras/block/CompactBackupBlock.java
+++ b/src/main/java/space/eptaproject/vmodextras/compact/trackwork/block/CompactBackupBlock.java
@@ -1,9 +1,10 @@
-package space.eptaproject.vmodextras.block;
+package space.eptaproject.vmodextras.compact.trackwork.block;
import com.simibubi.create.foundation.block.IBE;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType;
-import space.eptaproject.vmodextras.VmodExtras;
+import space.eptaproject.vmodextras.compact.trackwork.TrackWorkCompact;
+import space.eptaproject.vmodextras.compact.trackwork.block.entity.CompactBackupBlockEntity;
public class CompactBackupBlock extends Block implements IBE {
@@ -13,7 +14,7 @@ public class CompactBackupBlock extends Block implements IBE getBlockEntityType() {
- return VmodExtras.COMPACT_BACKUP_BLOCK_ENTITY.get();
+ return TrackWorkCompact.COMPACT_BACKUP_BLOCK_ENTITY.get();
}
@Override
diff --git a/src/main/java/space/eptaproject/vmodextras/block/TrackBackupBlock.java b/src/main/java/space/eptaproject/vmodextras/compact/trackwork/block/TrackBackupBlock.java
similarity index 67%
rename from src/main/java/space/eptaproject/vmodextras/block/TrackBackupBlock.java
rename to src/main/java/space/eptaproject/vmodextras/compact/trackwork/block/TrackBackupBlock.java
index b01a08f..c4aa89c 100644
--- a/src/main/java/space/eptaproject/vmodextras/block/TrackBackupBlock.java
+++ b/src/main/java/space/eptaproject/vmodextras/compact/trackwork/block/TrackBackupBlock.java
@@ -1,9 +1,10 @@
-package space.eptaproject.vmodextras.block;
+package space.eptaproject.vmodextras.compact.trackwork.block;
import com.simibubi.create.foundation.block.IBE;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType;
-import space.eptaproject.vmodextras.VmodExtras;
+import space.eptaproject.vmodextras.compact.trackwork.TrackWorkCompact;
+import space.eptaproject.vmodextras.compact.trackwork.block.entity.TrackBackupBlockEntity;
public class TrackBackupBlock extends Block implements IBE {
@@ -13,7 +14,7 @@ public class TrackBackupBlock extends Block implements IBE getBlockEntityType() {
- return VmodExtras.MY_BLOCK_ENTITY.get();
+ return TrackWorkCompact.MY_BLOCK_ENTITY.get();
}
@Override
diff --git a/src/main/java/space/eptaproject/vmodextras/block/CompactBackupBlockEntity.java b/src/main/java/space/eptaproject/vmodextras/compact/trackwork/block/entity/CompactBackupBlockEntity.java
similarity index 90%
rename from src/main/java/space/eptaproject/vmodextras/block/CompactBackupBlockEntity.java
rename to src/main/java/space/eptaproject/vmodextras/compact/trackwork/block/entity/CompactBackupBlockEntity.java
index 4861f13..8196ed9 100644
--- a/src/main/java/space/eptaproject/vmodextras/block/CompactBackupBlockEntity.java
+++ b/src/main/java/space/eptaproject/vmodextras/compact/trackwork/block/entity/CompactBackupBlockEntity.java
@@ -1,4 +1,4 @@
-package space.eptaproject.vmodextras.block;
+package space.eptaproject.vmodextras.compact.trackwork.block.entity;
import edn.stratodonut.drivebywire.wire.ShipWireNetworkManager;
import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController;
@@ -12,16 +12,16 @@ 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.trackwork.IPhysicsTrackController;
-import space.eptaproject.vmodextras.trackwork.ISimpleWheelController;
-import space.eptaproject.vmodextras.VmodExtras;
+import space.eptaproject.vmodextras.compact.trackwork.TrackWorkCompact;
+import space.eptaproject.vmodextras.compact.trackwork.IPhysicsTrackController;
+import space.eptaproject.vmodextras.compact.trackwork.ISimpleWheelController;
public class CompactBackupBlockEntity extends BlockEntity {
private CompoundTag pendingBackupData;
public CompactBackupBlockEntity(BlockPos p_155229_, BlockState p_155230_) {
- super(VmodExtras.COMPACT_BACKUP_BLOCK_ENTITY.get(), p_155229_, p_155230_);
+ super(TrackWorkCompact.COMPACT_BACKUP_BLOCK_ENTITY.get(), p_155229_, p_155230_);
}
@Override
diff --git a/src/main/java/space/eptaproject/vmodextras/block/TrackBackupBlockEntity.java b/src/main/java/space/eptaproject/vmodextras/compact/trackwork/block/entity/TrackBackupBlockEntity.java
similarity index 90%
rename from src/main/java/space/eptaproject/vmodextras/block/TrackBackupBlockEntity.java
rename to src/main/java/space/eptaproject/vmodextras/compact/trackwork/block/entity/TrackBackupBlockEntity.java
index 8d4069f..670d37e 100644
--- a/src/main/java/space/eptaproject/vmodextras/block/TrackBackupBlockEntity.java
+++ b/src/main/java/space/eptaproject/vmodextras/compact/trackwork/block/entity/TrackBackupBlockEntity.java
@@ -1,4 +1,4 @@
-package space.eptaproject.vmodextras.block;
+package space.eptaproject.vmodextras.compact.trackwork.block.entity;
import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController;
import edn.stratodonut.trackwork.tracks.forces.SimpleWheelController;
@@ -9,14 +9,14 @@ 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.trackwork.IPhysicsTrackController;
-import space.eptaproject.vmodextras.trackwork.ISimpleWheelController;
-import space.eptaproject.vmodextras.VmodExtras;
-import space.eptaproject.vmodextras.util.IBlockEntityClear;
+import space.eptaproject.vmodextras.compact.trackwork.TrackWorkCompact;
+import space.eptaproject.vmodextras.compact.trackwork.IPhysicsTrackController;
+import space.eptaproject.vmodextras.compact.trackwork.ISimpleWheelController;
+import space.eptaproject.vmodextras.compact.trackwork.IBlockEntityClear;
public class TrackBackupBlockEntity extends BlockEntity implements IBlockEntityClear {
public TrackBackupBlockEntity(BlockPos p_155229_, BlockState p_155230_) {
- super(VmodExtras.MY_BLOCK_ENTITY.get(), p_155229_, p_155230_);
+ super(TrackWorkCompact.MY_BLOCK_ENTITY.get(), p_155229_, p_155230_);
}
public CompoundTag tag = new CompoundTag();
diff --git a/src/main/java/space/eptaproject/vmodextras/trackwork/item/ToolKit.java b/src/main/java/space/eptaproject/vmodextras/compact/trackwork/item/ToolKit.java
similarity index 94%
rename from src/main/java/space/eptaproject/vmodextras/trackwork/item/ToolKit.java
rename to src/main/java/space/eptaproject/vmodextras/compact/trackwork/item/ToolKit.java
index fc7df6e..b759aba 100644
--- a/src/main/java/space/eptaproject/vmodextras/trackwork/item/ToolKit.java
+++ b/src/main/java/space/eptaproject/vmodextras/compact/trackwork/item/ToolKit.java
@@ -1,4 +1,4 @@
-package space.eptaproject.vmodextras.trackwork.item;
+package space.eptaproject.vmodextras.compact.trackwork.item;
import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag;
diff --git a/src/main/java/space/eptaproject/vmodextras/mixin/MixinPlugin.java b/src/main/java/space/eptaproject/vmodextras/mixin/MixinPlugin.java
index 556d9eb..5831a31 100644
--- a/src/main/java/space/eptaproject/vmodextras/mixin/MixinPlugin.java
+++ b/src/main/java/space/eptaproject/vmodextras/mixin/MixinPlugin.java
@@ -30,13 +30,7 @@ public class MixinPlugin implements IMixinConfigPlugin {
@Override
public List getMixins() {
- return List.of(
- "BlockPaletteHashMapV1Mixin",
- "PhysicsTrackControllerAccessor",
- "PhysicsTrackControllerMixin",
- "SimpleWheelControllerAccessor",
- "SimpleWheelControllerMixin"
- );
+ return List.of();
}
@Override
public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {
diff --git a/src/main/java/space/eptaproject/vmodextras/mixins/A.java b/src/main/java/space/eptaproject/vmodextras/mixins/A.java
new file mode 100644
index 0000000..6ecc38b
--- /dev/null
+++ b/src/main/java/space/eptaproject/vmodextras/mixins/A.java
@@ -0,0 +1,4 @@
+package space.eptaproject.vmodextras.mixins;
+
+public class A {
+}
diff --git a/src/main/java/space/eptaproject/vmodextras/mixins/BlockPaletteHashMapV1Mixin.java b/src/main/java/space/eptaproject/vmodextras/mixins/trackwork/BlockPaletteHashMapV1Mixin.java
similarity index 81%
rename from src/main/java/space/eptaproject/vmodextras/mixins/BlockPaletteHashMapV1Mixin.java
rename to src/main/java/space/eptaproject/vmodextras/mixins/trackwork/BlockPaletteHashMapV1Mixin.java
index 07427d3..2359ac1 100644
--- a/src/main/java/space/eptaproject/vmodextras/mixins/BlockPaletteHashMapV1Mixin.java
+++ b/src/main/java/space/eptaproject/vmodextras/mixins/trackwork/BlockPaletteHashMapV1Mixin.java
@@ -1,4 +1,4 @@
-package space.eptaproject.vmodextras.mixins;
+package space.eptaproject.vmodextras.mixins.trackwork;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.CrudeIncrementalIntIdentityHashBiMap;
@@ -19,14 +19,14 @@ import space.eptaproject.vmodextras.Validator;
@Mixin(BlockPaletteHashMapV1.class)
public class BlockPaletteHashMapV1Mixin {
@Unique
- public final IValidator validator = new Validator();
+ public final IValidator vmodextras$validator = new Validator();
- @Shadow
- private @Mutable CrudeIncrementalIntIdentityHashBiMap statePaletteMap;
+ @Shadow(remap = false)
+ private @Mutable CrudeIncrementalIntIdentityHashBiMap statePaletteMap;
@Inject(method = "fromId", at = @At("RETURN"), remap = false, cancellable = true)
private void vmodaddon$fromId(int id, CallbackInfoReturnable cir) {
- BlockState blockState = (BlockState)this.statePaletteMap.byId(id);
+ BlockState blockState = this.statePaletteMap.byId(id);
if (blockState == null || blockState.isAir()) {
return;
}
@@ -36,7 +36,7 @@ public class BlockPaletteHashMapV1Mixin {
ResourceLocation location = ForgeRegistries.BLOCKS.getKey(block);
CallbackInfoReturnable info = new CallbackInfoReturnable<>("blockstate-validator", true);
try {
- validator.valid(block, location, info);
+ vmodextras$validator.valid(block, location, info);
} catch (Exception e) {
Validator.LOGGER.error("Error validating: {}", location, e);
}
diff --git a/src/main/java/space/eptaproject/vmodextras/mixins/PhysicsTrackControllerAccessor.java b/src/main/java/space/eptaproject/vmodextras/mixins/trackwork/PhysicsTrackControllerAccessor.java
similarity index 92%
rename from src/main/java/space/eptaproject/vmodextras/mixins/PhysicsTrackControllerAccessor.java
rename to src/main/java/space/eptaproject/vmodextras/mixins/trackwork/PhysicsTrackControllerAccessor.java
index 24b51b4..ab30df0 100644
--- a/src/main/java/space/eptaproject/vmodextras/mixins/PhysicsTrackControllerAccessor.java
+++ b/src/main/java/space/eptaproject/vmodextras/mixins/trackwork/PhysicsTrackControllerAccessor.java
@@ -1,4 +1,4 @@
-package space.eptaproject.vmodextras.mixins;
+package space.eptaproject.vmodextras.mixins.trackwork;
import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController;
import org.joml.Vector3dc;
diff --git a/src/main/java/space/eptaproject/vmodextras/mixins/PhysicsTrackControllerMixin.java b/src/main/java/space/eptaproject/vmodextras/mixins/trackwork/PhysicsTrackControllerMixin.java
similarity index 79%
rename from src/main/java/space/eptaproject/vmodextras/mixins/PhysicsTrackControllerMixin.java
rename to src/main/java/space/eptaproject/vmodextras/mixins/trackwork/PhysicsTrackControllerMixin.java
index 8c319de..cea4bdc 100644
--- a/src/main/java/space/eptaproject/vmodextras/mixins/PhysicsTrackControllerMixin.java
+++ b/src/main/java/space/eptaproject/vmodextras/mixins/trackwork/PhysicsTrackControllerMixin.java
@@ -1,4 +1,4 @@
-package space.eptaproject.vmodextras.mixins;
+package space.eptaproject.vmodextras.mixins.trackwork;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController;
@@ -7,12 +7,12 @@ import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow;
import space.eptaproject.vmodextras.Config;
-import space.eptaproject.vmodextras.trackwork.IPhysicsTrackController;
+import space.eptaproject.vmodextras.compact.trackwork.IPhysicsTrackController;
@Mixin(PhysicsTrackController.class)
@JsonIgnoreProperties(ignoreUnknown = true)
public abstract class PhysicsTrackControllerMixin implements IPhysicsTrackController {
- @Shadow private volatile float suspensionStiffness;
+ @Shadow(remap = false) private volatile float suspensionStiffness;
/**
* @author
diff --git a/src/main/java/space/eptaproject/vmodextras/mixins/SimpleWheelControllerAccessor.java b/src/main/java/space/eptaproject/vmodextras/mixins/trackwork/SimpleWheelControllerAccessor.java
similarity index 92%
rename from src/main/java/space/eptaproject/vmodextras/mixins/SimpleWheelControllerAccessor.java
rename to src/main/java/space/eptaproject/vmodextras/mixins/trackwork/SimpleWheelControllerAccessor.java
index 154aff0..0fb28d2 100644
--- a/src/main/java/space/eptaproject/vmodextras/mixins/SimpleWheelControllerAccessor.java
+++ b/src/main/java/space/eptaproject/vmodextras/mixins/trackwork/SimpleWheelControllerAccessor.java
@@ -1,4 +1,4 @@
-package space.eptaproject.vmodextras.mixins;
+package space.eptaproject.vmodextras.mixins.trackwork;
import edn.stratodonut.trackwork.tracks.forces.SimpleWheelController;
import org.joml.Vector3dc;
diff --git a/src/main/java/space/eptaproject/vmodextras/mixins/SimpleWheelControllerMixin.java b/src/main/java/space/eptaproject/vmodextras/mixins/trackwork/SimpleWheelControllerMixin.java
similarity index 79%
rename from src/main/java/space/eptaproject/vmodextras/mixins/SimpleWheelControllerMixin.java
rename to src/main/java/space/eptaproject/vmodextras/mixins/trackwork/SimpleWheelControllerMixin.java
index 28da888..d781765 100644
--- a/src/main/java/space/eptaproject/vmodextras/mixins/SimpleWheelControllerMixin.java
+++ b/src/main/java/space/eptaproject/vmodextras/mixins/trackwork/SimpleWheelControllerMixin.java
@@ -1,4 +1,4 @@
-package space.eptaproject.vmodextras.mixins;
+package space.eptaproject.vmodextras.mixins.trackwork;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import edn.stratodonut.trackwork.tracks.forces.SimpleWheelController;
@@ -7,12 +7,12 @@ import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow;
import space.eptaproject.vmodextras.Config;
-import space.eptaproject.vmodextras.trackwork.ISimpleWheelController;
+import space.eptaproject.vmodextras.compact.trackwork.ISimpleWheelController;
@Mixin(SimpleWheelController.class)
@JsonIgnoreProperties(ignoreUnknown = true)
public abstract class SimpleWheelControllerMixin implements ISimpleWheelController {
- @Shadow private volatile float suspensionStiffness;
+ @Shadow(remap = false) private volatile float suspensionStiffness;
/**
* @author
diff --git a/src/main/java/space/eptaproject/vmodextras/mixins/TrackToolkitMixin.java b/src/main/java/space/eptaproject/vmodextras/mixins/trackwork/TrackToolkitMixin.java
similarity index 74%
rename from src/main/java/space/eptaproject/vmodextras/mixins/TrackToolkitMixin.java
rename to src/main/java/space/eptaproject/vmodextras/mixins/trackwork/TrackToolkitMixin.java
index b20c1f3..f1639fd 100644
--- a/src/main/java/space/eptaproject/vmodextras/mixins/TrackToolkitMixin.java
+++ b/src/main/java/space/eptaproject/vmodextras/mixins/trackwork/TrackToolkitMixin.java
@@ -1,4 +1,4 @@
-package space.eptaproject.vmodextras.mixins;
+package space.eptaproject.vmodextras.mixins.trackwork;
import edn.stratodonut.trackwork.items.TrackToolkit;
import org.spongepowered.asm.mixin.Mixin;
diff --git a/src/main/java/space/eptaproject/vmodextras/trackwork/IPhysicsTrackController.java b/src/main/java/space/eptaproject/vmodextras/trackwork/IPhysicsTrackController.java
deleted file mode 100644
index 9e7ca67..0000000
--- a/src/main/java/space/eptaproject/vmodextras/trackwork/IPhysicsTrackController.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package space.eptaproject.vmodextras.trackwork;
-
-import space.eptaproject.vmodextras.mixins.PhysicsTrackControllerAccessor;
-
-public interface IPhysicsTrackController extends PhysicsTrackControllerAccessor, IController {
-
-}
diff --git a/src/main/java/space/eptaproject/vmodextras/trackwork/ISimpleWheelController.java b/src/main/java/space/eptaproject/vmodextras/trackwork/ISimpleWheelController.java
deleted file mode 100644
index a631120..0000000
--- a/src/main/java/space/eptaproject/vmodextras/trackwork/ISimpleWheelController.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package space.eptaproject.vmodextras.trackwork;
-
-import space.eptaproject.vmodextras.mixins.SimpleWheelControllerAccessor;
-
-public interface ISimpleWheelController extends SimpleWheelControllerAccessor, IController {
-}
diff --git a/src/main/java/space/eptaproject/vmodextras/util/ResourceLocationUtil.java b/src/main/java/space/eptaproject/vmodextras/util/ResourceLocationUtil.java
new file mode 100644
index 0000000..2968d0a
--- /dev/null
+++ b/src/main/java/space/eptaproject/vmodextras/util/ResourceLocationUtil.java
@@ -0,0 +1,9 @@
+package space.eptaproject.vmodextras.util;
+
+import net.minecraft.resources.ResourceLocation;
+
+public class ResourceLocationUtil {
+ public static ResourceLocation fromNamespaceAndPath(String namespace, String path) {
+ return new ResourceLocation(namespace, path);
+ }
+}
diff --git a/src/main/java/space/eptaproject/vmodextras/util/Utils.java b/src/main/java/space/eptaproject/vmodextras/util/Utils.java
new file mode 100644
index 0000000..16ef752
--- /dev/null
+++ b/src/main/java/space/eptaproject/vmodextras/util/Utils.java
@@ -0,0 +1,17 @@
+package space.eptaproject.vmodextras.util;
+
+import net.minecraftforge.fml.ModList;
+
+public class Utils {
+ public static void executeIsModEnable(String mod,Runnable runnable) {
+ if (ModList.get().isLoaded(mod)) {
+ runnable.run();
+ }
+ }
+
+ public static void executeIsModDisable(String mod,Runnable runnable) {
+ if (!ModList.get().isLoaded(mod)) {
+ runnable.run();
+ }
+ }
+}
diff --git a/src/main/resources/assets/vmodextras/blockstates/track_work_controller.json b/src/main/resources/assets/vmodextras/blockstates/track_work_controller.json
new file mode 100644
index 0000000..9831846
--- /dev/null
+++ b/src/main/resources/assets/vmodextras/blockstates/track_work_controller.json
@@ -0,0 +1,5 @@
+{
+ "variants": {
+ "": { "model": "vmodextras:block/track_work_controller" }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/vmodextras/models/block/track_backup.json b/src/main/resources/assets/vmodextras/models/block/track_backup.json
index e6d74eb..71b5bc7 100644
--- a/src/main/resources/assets/vmodextras/models/block/track_backup.json
+++ b/src/main/resources/assets/vmodextras/models/block/track_backup.json
@@ -1,53 +1,6 @@
{
- "credit": "Made with Blockbench",
- "texture_size": [64, 64],
+ "parent": "block/cube_all",
"textures": {
- "1": "vmodextras:block/track_backup",
- "particle": "vmodextras:block/track_backup"
- },
- "elements": [
- {
- "from": [0, 0, 0],
- "to": [16, 16, 16],
- "faces": {
- "north": {"uv": [4, 0, 8, 4], "texture": "#1"},
- "east": {"uv": [4, 0, 8, 4], "texture": "#1"},
- "south": {"uv": [4, 0, 8, 4], "texture": "#1"},
- "west": {"uv": [4, 0, 8, 4], "texture": "#1"},
- "up": {"uv": [8, 4, 4, 0], "texture": "#1"},
- "down": {"uv": [8, 0, 4, 4], "texture": "#1"}
- }
- }
- ],
- "display": {
- "thirdperson_righthand": {
- "rotation": [75, 45, 0],
- "translation": [0, 2.5, 0],
- "scale": [0.375, 0.375, 0.375]
- },
- "thirdperson_lefthand": {
- "rotation": [75, 45, 0],
- "translation": [0, 2.5, 0],
- "scale": [0.375, 0.375, 0.375]
- },
- "firstperson_righthand": {
- "rotation": [0, 45, 0],
- "scale": [0.4, 0.4, 0.4]
- },
- "firstperson_lefthand": {
- "rotation": [0, 225, 0],
- "scale": [0.4, 0.4, 0.4]
- },
- "ground": {
- "translation": [0, 3, 0],
- "scale": [0.25, 0.25, 0.25]
- },
- "gui": {
- "rotation": [30, 225, 0],
- "scale": [0.625, 0.625, 0.625]
- },
- "fixed": {
- "scale": [0.5, 0.5, 0.5]
- }
+ "all": "vmodextras:block/track_backup"
}
-}
\ No newline at end of file
+}
diff --git a/src/main/resources/assets/vmodextras/models/block/track_work_controller.json b/src/main/resources/assets/vmodextras/models/block/track_work_controller.json
new file mode 100644
index 0000000..a953241
--- /dev/null
+++ b/src/main/resources/assets/vmodextras/models/block/track_work_controller.json
@@ -0,0 +1,6 @@
+{
+ "parent": "block/cube_all",
+ "textures": {
+ "all": "vmodextras:block/track_work_controller"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/vmodextras/models/item/track_backup.json b/src/main/resources/assets/vmodextras/models/item/track_backup.json
index e6d74eb..71b5bc7 100644
--- a/src/main/resources/assets/vmodextras/models/item/track_backup.json
+++ b/src/main/resources/assets/vmodextras/models/item/track_backup.json
@@ -1,53 +1,6 @@
{
- "credit": "Made with Blockbench",
- "texture_size": [64, 64],
+ "parent": "block/cube_all",
"textures": {
- "1": "vmodextras:block/track_backup",
- "particle": "vmodextras:block/track_backup"
- },
- "elements": [
- {
- "from": [0, 0, 0],
- "to": [16, 16, 16],
- "faces": {
- "north": {"uv": [4, 0, 8, 4], "texture": "#1"},
- "east": {"uv": [4, 0, 8, 4], "texture": "#1"},
- "south": {"uv": [4, 0, 8, 4], "texture": "#1"},
- "west": {"uv": [4, 0, 8, 4], "texture": "#1"},
- "up": {"uv": [8, 4, 4, 0], "texture": "#1"},
- "down": {"uv": [8, 0, 4, 4], "texture": "#1"}
- }
- }
- ],
- "display": {
- "thirdperson_righthand": {
- "rotation": [75, 45, 0],
- "translation": [0, 2.5, 0],
- "scale": [0.375, 0.375, 0.375]
- },
- "thirdperson_lefthand": {
- "rotation": [75, 45, 0],
- "translation": [0, 2.5, 0],
- "scale": [0.375, 0.375, 0.375]
- },
- "firstperson_righthand": {
- "rotation": [0, 45, 0],
- "scale": [0.4, 0.4, 0.4]
- },
- "firstperson_lefthand": {
- "rotation": [0, 225, 0],
- "scale": [0.4, 0.4, 0.4]
- },
- "ground": {
- "translation": [0, 3, 0],
- "scale": [0.25, 0.25, 0.25]
- },
- "gui": {
- "rotation": [30, 225, 0],
- "scale": [0.625, 0.625, 0.625]
- },
- "fixed": {
- "scale": [0.5, 0.5, 0.5]
- }
+ "all": "vmodextras:block/track_backup"
}
-}
\ No newline at end of file
+}
diff --git a/src/main/resources/assets/vmodextras/models/item/track_work_controller.json b/src/main/resources/assets/vmodextras/models/item/track_work_controller.json
new file mode 100644
index 0000000..a953241
--- /dev/null
+++ b/src/main/resources/assets/vmodextras/models/item/track_work_controller.json
@@ -0,0 +1,6 @@
+{
+ "parent": "block/cube_all",
+ "textures": {
+ "all": "vmodextras:block/track_work_controller"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/vmodextras/textures/block/track_backup.png b/src/main/resources/assets/vmodextras/textures/block/track_backup.png
index eccbeea..c63bf63 100644
Binary files a/src/main/resources/assets/vmodextras/textures/block/track_backup.png and b/src/main/resources/assets/vmodextras/textures/block/track_backup.png differ
diff --git a/src/main/resources/assets/vmodextras/textures/block/track_work_controller.png b/src/main/resources/assets/vmodextras/textures/block/track_work_controller.png
new file mode 100644
index 0000000..4f5a290
Binary files /dev/null and b/src/main/resources/assets/vmodextras/textures/block/track_work_controller.png differ
diff --git a/src/main/resources/vmodextras.mixins.json b/src/main/resources/vmodextras.mixins.json
index 15ae038..b9930f1 100644
--- a/src/main/resources/vmodextras.mixins.json
+++ b/src/main/resources/vmodextras.mixins.json
@@ -5,11 +5,15 @@
"compatibilityLevel": "JAVA_8",
"refmap": "vmodextras.refmap.json",
"mixins": [
+ "trackwork.BlockPaletteHashMapV1Mixin",
+ "trackwork.PhysicsTrackControllerAccessor",
+ "trackwork.PhysicsTrackControllerMixin",
+ "trackwork.SimpleWheelControllerAccessor",
+ "trackwork.SimpleWheelControllerMixin"
],
"client": [
],
"injectors": {
"defaultRequire": 1
- },
- "plugin": "space.eptaproject.vmodextras.mixin.MixinPlugin"
+ }
}