This commit is contained in:
p2vman 2025-05-26 15:07:13 +03:00
parent 6bec816f4c
commit a364cbb128
38 changed files with 189 additions and 77 deletions

View File

@ -0,0 +1,7 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<ScalaCodeStyleSettings>
<option name="MULTILINE_STRING_CLOSING_QUOTES_ON_NEW_LINE" value="true" />
</ScalaCodeStyleSettings>
</code_scheme>
</component>

View File

@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
</state>
</component>

View File

@ -1,8 +0,0 @@
package space.eptaproject.vmodaddon;
import space.eptaproject.vmodaddon.mixins.PhysicsTrackControllerAccessor;
public interface IPhysicsTrackController extends PhysicsTrackControllerAccessor {
void SetRawDamperCoefficient(float delta);
float GetRawDamperCoefficient();
}

View File

@ -1,6 +0,0 @@
package space.eptaproject.vmodaddon;
import space.eptaproject.vmodaddon.mixins.SimpleWheelControllerAccessor;
public interface ISimpleWheelController extends SimpleWheelControllerAccessor {
}

View File

@ -1,4 +1,4 @@
package space.eptaproject.vmodaddon; package space.eptaproject.vmodextras;
import it.unimi.dsi.fastutil.objects.ObjectArrayList; import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import it.unimi.dsi.fastutil.objects.ObjectImmutableList; import it.unimi.dsi.fastutil.objects.ObjectImmutableList;
@ -16,6 +16,7 @@ public class Config {
public static final ForgeConfigSpec.ConfigValue<String> RESOURCE_LOCATION; public static final ForgeConfigSpec.ConfigValue<String> RESOURCE_LOCATION;
public static final ForgeConfigSpec.ConfigValue<Integer> Suspension_Stiffness_LIMIT; public static final ForgeConfigSpec.ConfigValue<Integer> Suspension_Stiffness_LIMIT;
public static final ForgeConfigSpec.ConfigValue<Double> Suspension_Stiffness_delta;
public static List<ResourceLocation> parsedList = new ObjectArrayList<>(); public static List<ResourceLocation> parsedList = new ObjectArrayList<>();
private static List<Map.Entry<Integer, ResourceLocation>> ITEM = new ObjectImmutableList<>(new ArrayList<>()); private static List<Map.Entry<Integer, ResourceLocation>> ITEM = new ObjectImmutableList<>(new ArrayList<>());
@ -62,6 +63,11 @@ public class Config {
.comment("track suspension stiffness") .comment("track suspension stiffness")
.defineInRange("SuspensionStiffness", 4, 1, 20); .defineInRange("SuspensionStiffness", 4, 1, 20);
Suspension_Stiffness_delta = builder
.comment("track suspension stiffness delta")
.defineInRange("suspension_stiffness_delta", 1d, 0.10d, 1d);
builder.pop(); builder.pop();
COMMON_CONFIG = builder.build(); COMMON_CONFIG = builder.build();
} }

View File

@ -1,4 +1,4 @@
package space.eptaproject.vmodaddon; package space.eptaproject.vmodextras;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;

View File

@ -1,4 +1,4 @@
package space.eptaproject.vmodaddon; package space.eptaproject.vmodextras;
import lombok.ToString; import lombok.ToString;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;

View File

@ -1,4 +1,4 @@
package space.eptaproject.vmodaddon; package space.eptaproject.vmodextras;
import com.mojang.logging.LogUtils; import com.mojang.logging.LogUtils;
import net.minecraft.world.item.*; import net.minecraft.world.item.*;
@ -18,11 +18,11 @@ import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.RegistryObject; import net.minecraftforge.registries.RegistryObject;
import org.slf4j.Logger; import org.slf4j.Logger;
import space.eptaproject.vmodaddon.block.CompactBackupBlock; import space.eptaproject.vmodextras.block.CompactBackupBlock;
import space.eptaproject.vmodaddon.block.CompactBackupBlockEntity; import space.eptaproject.vmodextras.block.CompactBackupBlockEntity;
import space.eptaproject.vmodaddon.block.TrackBackupBlock; import space.eptaproject.vmodextras.block.TrackBackupBlock;
import space.eptaproject.vmodaddon.block.TrackBackupBlockEntity; import space.eptaproject.vmodextras.block.TrackBackupBlockEntity;
import space.eptaproject.vmodaddon.util.ModRegistry; import space.eptaproject.vmodextras.util.ModRegistry;
@Mod(Vmodaddon.MODID) @Mod(Vmodaddon.MODID)
public class Vmodaddon { public class Vmodaddon {

View File

@ -1,9 +1,9 @@
package space.eptaproject.vmodaddon.block; package space.eptaproject.vmodextras.block;
import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.block.IBE;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.BlockEntityType;
import space.eptaproject.vmodaddon.Vmodaddon; import space.eptaproject.vmodextras.Vmodaddon;
public class CompactBackupBlock extends Block implements IBE<CompactBackupBlockEntity> { public class CompactBackupBlock extends Block implements IBE<CompactBackupBlockEntity> {

View File

@ -1,4 +1,4 @@
package space.eptaproject.vmodaddon.block; package space.eptaproject.vmodextras.block;
import edn.stratodonut.drivebywire.wire.ShipWireNetworkManager; import edn.stratodonut.drivebywire.wire.ShipWireNetworkManager;
import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController; import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController;
@ -13,9 +13,9 @@ import org.joml.Vector3d;
import org.joml.Vector3dc; import org.joml.Vector3dc;
import org.valkyrienskies.core.api.ships.ServerShip; import org.valkyrienskies.core.api.ships.ServerShip;
import org.valkyrienskies.mod.common.VSGameUtilsKt; import org.valkyrienskies.mod.common.VSGameUtilsKt;
import space.eptaproject.vmodaddon.IPhysicsTrackController; import space.eptaproject.vmodextras.trackwork.IPhysicsTrackController;
import space.eptaproject.vmodaddon.ISimpleWheelController; import space.eptaproject.vmodextras.trackwork.ISimpleWheelController;
import space.eptaproject.vmodaddon.Vmodaddon; import space.eptaproject.vmodextras.Vmodaddon;
public class CompactBackupBlockEntity extends BlockEntity { public class CompactBackupBlockEntity extends BlockEntity {

View File

@ -1,9 +1,9 @@
package space.eptaproject.vmodaddon.block; package space.eptaproject.vmodextras.block;
import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.block.IBE;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.BlockEntityType;
import space.eptaproject.vmodaddon.Vmodaddon; import space.eptaproject.vmodextras.Vmodaddon;
public class TrackBackupBlock extends Block implements IBE<TrackBackupBlockEntity> { public class TrackBackupBlock extends Block implements IBE<TrackBackupBlockEntity> {

View File

@ -1,4 +1,4 @@
package space.eptaproject.vmodaddon.block; package space.eptaproject.vmodextras.block;
import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController; import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController;
import edn.stratodonut.trackwork.tracks.forces.SimpleWheelController; import edn.stratodonut.trackwork.tracks.forces.SimpleWheelController;
@ -10,17 +10,65 @@ import org.joml.Vector3d;
import org.joml.Vector3dc; import org.joml.Vector3dc;
import org.valkyrienskies.core.api.ships.ServerShip; import org.valkyrienskies.core.api.ships.ServerShip;
import org.valkyrienskies.mod.common.VSGameUtilsKt; import org.valkyrienskies.mod.common.VSGameUtilsKt;
import space.eptaproject.vmodaddon.IPhysicsTrackController; import space.eptaproject.vmodextras.trackwork.IPhysicsTrackController;
import space.eptaproject.vmodaddon.ISimpleWheelController; import space.eptaproject.vmodextras.trackwork.ISimpleWheelController;
import space.eptaproject.vmodaddon.Vmodaddon; import space.eptaproject.vmodextras.Vmodaddon;
import space.eptaproject.vmodextras.util.IBlockEntityClear;
public class TrackBackupBlockEntity extends BlockEntity { public class TrackBackupBlockEntity extends BlockEntity implements IBlockEntityClear {
public TrackBackupBlockEntity(BlockPos p_155229_, BlockState p_155230_) { public TrackBackupBlockEntity(BlockPos p_155229_, BlockState p_155230_) {
super(Vmodaddon.MY_BLOCK_ENTITY.get(), p_155229_, p_155230_); super(Vmodaddon.MY_BLOCK_ENTITY.get(), p_155229_, p_155230_);
} }
public CompoundTag tag = new CompoundTag();
@Override
public boolean clear() {
try {
CompoundTag local = tag.copy();
if (local.contains("SimpleWheelController")) {
CompoundTag SimpleWheelControllerTag = new CompoundTag();
SimpleWheelControllerTag.putFloat("SuspensionStiffness", 1);
{
CompoundTag suspensionAdjust = new CompoundTag();
suspensionAdjust.putDouble("x", 0);
suspensionAdjust.putDouble("y", 1);
suspensionAdjust.putDouble("z", 0);
SimpleWheelControllerTag.put("suspensionAdjust", suspensionAdjust);
}
tag.put("SimpleWheelController", SimpleWheelControllerTag);
}
if (local.contains("PhysicsTrackController")) {
CompoundTag PhysicsTrackControllerTag = new CompoundTag();
PhysicsTrackControllerTag.putFloat("SuspensionStiffness", 1);
{
CompoundTag suspensionAdjust = new CompoundTag();
suspensionAdjust.putDouble("x", 0);
suspensionAdjust.putDouble("y", 1);
suspensionAdjust.putDouble("z", 0);
PhysicsTrackControllerTag.put("suspensionAdjust", suspensionAdjust);
}
tag.put("PhysicsTrackController", PhysicsTrackControllerTag);
}
return true;
} catch (Exception e) {
return false;
}
}
@Override @Override
protected void saveAdditional(CompoundTag tag) { protected void saveAdditional(CompoundTag tag) {
this.tag = tag;
super.saveAdditional(tag); super.saveAdditional(tag);
ServerShip ship = (ServerShip) VSGameUtilsKt.getShipObjectManagingPos(this.level, getBlockPos()); ServerShip ship = (ServerShip) VSGameUtilsKt.getShipObjectManagingPos(this.level, getBlockPos());
if (ship != null) { if (ship != null) {
@ -46,6 +94,7 @@ public class TrackBackupBlockEntity extends BlockEntity {
tag.put("PhysicsTrackController", PhysicsTrackControllerTag); tag.put("PhysicsTrackController", PhysicsTrackControllerTag);
} }
} }
{ {
SimpleWheelController simpleWheelController = ship.getAttachment(SimpleWheelController.class); SimpleWheelController simpleWheelController = ship.getAttachment(SimpleWheelController.class);
ISimpleWheelController controller = (ISimpleWheelController) simpleWheelController; ISimpleWheelController controller = (ISimpleWheelController) simpleWheelController;
@ -73,6 +122,7 @@ public class TrackBackupBlockEntity extends BlockEntity {
@Override @Override
public void load(CompoundTag tag) { public void load(CompoundTag tag) {
this.tag = tag;
super.load(tag); super.load(tag);
ServerShip ship = (ServerShip) VSGameUtilsKt.getShipObjectManagingPos(this.level, getBlockPos()); ServerShip ship = (ServerShip) VSGameUtilsKt.getShipObjectManagingPos(this.level, getBlockPos());

View File

@ -0,0 +1,34 @@
package space.eptaproject.vmodextras.item;
import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.Level;
public class ToolKit extends Item {
public ToolKit(Item.Properties properties) {
super(properties);
}
@Override
public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) {
Player player = context.getPlayer();
if (player != null && player.mayBuild()) {
Level level = context.getLevel();
BlockPos pos = context.getClickedPos();
CompoundTag nbt = stack.getTag();
} else {
return InteractionResult.PASS;
}
}
public enum Mode {
CLEAR
}
}

View File

@ -1,4 +1,4 @@
package space.eptaproject.vmodaddon.mixin; package space.eptaproject.vmodextras.mixin;
import java.lang.annotation.ElementType; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;

View File

@ -1,4 +1,4 @@
package space.eptaproject.vmodaddon.mixin; package space.eptaproject.vmodextras.mixin;
import org.objectweb.asm.tree.ClassNode; import org.objectweb.asm.tree.ClassNode;
import org.spongepowered.asm.mixin.extensibility.IMixinInfo; import org.spongepowered.asm.mixin.extensibility.IMixinInfo;

View File

@ -1,4 +1,4 @@
package space.eptaproject.vmodaddon.mixin; package space.eptaproject.vmodextras.mixin;
import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap; import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap;

View File

@ -1,4 +1,4 @@
package space.eptaproject.vmodaddon.mixin; package space.eptaproject.vmodextras.mixin;
import org.objectweb.asm.Opcodes; import org.objectweb.asm.Opcodes;
import org.objectweb.asm.tree.*; import org.objectweb.asm.tree.*;

View File

@ -1,7 +1,5 @@
package space.eptaproject.vmodaddon.mixin; package space.eptaproject.vmodextras.mixin;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.Type;
import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin;
import org.spongepowered.asm.mixin.extensibility.IMixinInfo; import org.spongepowered.asm.mixin.extensibility.IMixinInfo;

View File

@ -1,4 +1,4 @@
package space.eptaproject.vmodaddon.mixin; package space.eptaproject.vmodextras.mixin;
import java.lang.annotation.ElementType; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;

View File

@ -1,4 +1,4 @@
@ApiStatus.Experimental @ApiStatus.Experimental
package space.eptaproject.vmodaddon.mixin; package space.eptaproject.vmodextras.mixin;
import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.ApiStatus;

View File

@ -1,4 +1,4 @@
package space.eptaproject.vmodaddon.mixins; package space.eptaproject.vmodextras.mixins;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.CrudeIncrementalIntIdentityHashBiMap; import net.minecraft.util.CrudeIncrementalIntIdentityHashBiMap;
@ -13,10 +13,10 @@ import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import space.eptaproject.vmodaddon.IValidator; import space.eptaproject.vmodextras.IValidator;
import space.eptaproject.vmodaddon.Validator; import space.eptaproject.vmodextras.Validator;
import space.eptaproject.vmodaddon.mixin.KotlinOptimizationTransformer; import space.eptaproject.vmodextras.mixin.KotlinOptimizationTransformer;
import space.eptaproject.vmodaddon.mixin.Transformers; import space.eptaproject.vmodextras.mixin.Transformers;
@Mixin(BlockPaletteHashMapV1.class) @Mixin(BlockPaletteHashMapV1.class)
@Transformers(transformers = {KotlinOptimizationTransformer.class}) @Transformers(transformers = {KotlinOptimizationTransformer.class})

View File

@ -1,4 +1,4 @@
package space.eptaproject.vmodaddon.mixins; package space.eptaproject.vmodextras.mixins;
import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController; import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController;
import org.joml.Vector3dc; import org.joml.Vector3dc;

View File

@ -1,31 +1,17 @@
package space.eptaproject.vmodaddon.mixins; package space.eptaproject.vmodextras.mixins;
import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController; import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController;
import org.joml.Math; import org.joml.Math;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique; import space.eptaproject.vmodextras.Config;
import space.eptaproject.vmodaddon.Config; import space.eptaproject.vmodextras.trackwork.IPhysicsTrackController;
import space.eptaproject.vmodaddon.IPhysicsTrackController;
@Mixin(PhysicsTrackController.class) @Mixin(PhysicsTrackController.class)
public abstract class PhysicsTrackControllerMixin implements IPhysicsTrackController { public abstract class PhysicsTrackControllerMixin implements IPhysicsTrackController {
@Shadow private volatile float suspensionStiffness; @Shadow private volatile float suspensionStiffness;
@Unique
private volatile float damperCoefficient = 0;
@Override
public void SetRawDamperCoefficient(float delta) {
this.damperCoefficient = delta;
}
@Override
public float GetRawDamperCoefficient() {
return damperCoefficient;
}
/** /**
* @author * @author
* @reason * @reason

View File

@ -1,4 +1,4 @@
package space.eptaproject.vmodaddon.mixins; package space.eptaproject.vmodextras.mixins;
import edn.stratodonut.trackwork.tracks.forces.SimpleWheelController; import edn.stratodonut.trackwork.tracks.forces.SimpleWheelController;
import org.joml.Vector3dc; import org.joml.Vector3dc;

View File

@ -1,12 +1,12 @@
package space.eptaproject.vmodaddon.mixins; package space.eptaproject.vmodextras.mixins;
import edn.stratodonut.trackwork.tracks.forces.SimpleWheelController; import edn.stratodonut.trackwork.tracks.forces.SimpleWheelController;
import org.joml.Math; import org.joml.Math;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Shadow;
import space.eptaproject.vmodaddon.Config; import space.eptaproject.vmodextras.Config;
import space.eptaproject.vmodaddon.ISimpleWheelController; import space.eptaproject.vmodextras.trackwork.ISimpleWheelController;
@Mixin(SimpleWheelController.class) @Mixin(SimpleWheelController.class)
public abstract class SimpleWheelControllerMixin implements ISimpleWheelController { public abstract class SimpleWheelControllerMixin implements ISimpleWheelController {

View File

@ -0,0 +1,9 @@
package space.eptaproject.vmodextras.mixins;
import edn.stratodonut.trackwork.items.TrackToolkit;
import org.spongepowered.asm.mixin.Mixin;
@Mixin(TrackToolkit.class)
public class TrackToolkitMixin {
}

View File

@ -0,0 +1,10 @@
package space.eptaproject.vmodextras.trackwork;
import org.joml.Vector3dc;
public interface IController {
float getSuspensionStiffness();
void setSuspensionStiffness(float val);
Vector3dc getSuspensionAdjust();
void setSuspensionAdjust(Vector3dc vector3d);
}

View File

@ -0,0 +1,7 @@
package space.eptaproject.vmodextras.trackwork;
import space.eptaproject.vmodextras.mixins.PhysicsTrackControllerAccessor;
public interface IPhysicsTrackController extends PhysicsTrackControllerAccessor, IController {
}

View File

@ -0,0 +1,6 @@
package space.eptaproject.vmodextras.trackwork;
import space.eptaproject.vmodextras.mixins.SimpleWheelControllerAccessor;
public interface ISimpleWheelController extends SimpleWheelControllerAccessor, IController {
}

View File

@ -0,0 +1,8 @@
package space.eptaproject.vmodextras.util;
public interface IBlockEntityClear {
boolean clear();
default boolean reset() {
return clear();
}
}

View File

@ -1,4 +1,4 @@
package space.eptaproject.vmodaddon.util; package space.eptaproject.vmodextras.util;
import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap; import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap;
import lombok.Getter; import lombok.Getter;

View File

Before

Width:  |  Height:  |  Size: 434 B

After

Width:  |  Height:  |  Size: 434 B

View File

@ -1,11 +1,11 @@
[ [
{ {
"block": "vmodaddon:ship_void", "block": "vmodextras:ship_void",
"mass": 0.0, "mass": 0.0,
"friction": 0.0 "friction": 0.0
}, },
{ {
"block": "vmodaddon:track_b", "block": "vmodextras:track_b",
"mass": 40.0, "mass": 40.0,
"friction": 0.0 "friction": 0.0
} }

View File

@ -1,7 +1,7 @@
{ {
"required": true, "required": true,
"minVersion": "0.8", "minVersion": "0.8",
"package": "space.eptaproject.vmodaddon.mixins", "package": "space.eptaproject.vmodextras.mixins",
"compatibilityLevel": "JAVA_8", "compatibilityLevel": "JAVA_8",
"refmap": "vmodaddon.refmap.json", "refmap": "vmodaddon.refmap.json",
"mixins": [ "mixins": [
@ -11,5 +11,5 @@
"injectors": { "injectors": {
"defaultRequire": 1 "defaultRequire": 1
}, },
"plugin": "space.eptaproject.vmodaddon.mixin.MixinPlugin" "plugin": "space.eptaproject.vmodextras.mixin.MixinPlugin"
} }