update
This commit is contained in:
parent
6e215209e4
commit
6fe6b7913e
|
@ -1,7 +1,5 @@
|
||||||
package space.eptaproject.vmodaddon;
|
package space.eptaproject.vmodaddon;
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.ints.IntArrayList;
|
|
||||||
import it.unimi.dsi.fastutil.ints.IntList;
|
|
||||||
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;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
@ -17,6 +15,8 @@ public class Config {
|
||||||
public static final ForgeConfigSpec.ConfigValue<List<? extends String>> ITEM_BLACK_LIST;
|
public static final ForgeConfigSpec.ConfigValue<List<? extends String>> ITEM_BLACK_LIST;
|
||||||
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 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<>());
|
||||||
public static ResourceLocation replace = Validator.RB;
|
public static ResourceLocation replace = Validator.RB;
|
||||||
|
@ -41,6 +41,7 @@ public class Config {
|
||||||
Validator.RB.toString()
|
Validator.RB.toString()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
builder.pop();
|
builder.pop();
|
||||||
|
|
||||||
builder.push("Inventory");
|
builder.push("Inventory");
|
||||||
|
@ -53,6 +54,14 @@ public class Config {
|
||||||
obj -> obj instanceof String && ResourceLocation.isValidResourceLocation((String) obj)
|
obj -> obj instanceof String && ResourceLocation.isValidResourceLocation((String) obj)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
builder.pop();
|
||||||
|
|
||||||
|
builder.push("TrackWork");
|
||||||
|
|
||||||
|
Suspension_Stiffness_LIMIT = builder
|
||||||
|
.comment("track suspension stiffness")
|
||||||
|
.defineInRange("SuspensionStiffness", 4, 0, 20);
|
||||||
|
|
||||||
builder.pop();
|
builder.pop();
|
||||||
COMMON_CONFIG = builder.build();
|
COMMON_CONFIG = builder.build();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,7 @@
|
||||||
package space.eptaproject.vmodaddon;
|
package space.eptaproject.vmodaddon;
|
||||||
|
|
||||||
import com.mojang.logging.LogUtils;
|
import com.mojang.logging.LogUtils;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.item.*;
|
||||||
import net.minecraft.world.item.BlockItem;
|
|
||||||
import net.minecraft.world.item.Item;
|
|
||||||
import net.minecraft.world.item.ItemStack;
|
|
||||||
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 net.minecraft.world.level.block.state.BlockBehaviour;
|
import net.minecraft.world.level.block.state.BlockBehaviour;
|
||||||
|
@ -19,12 +16,11 @@ import net.minecraftforge.fml.config.ModConfig;
|
||||||
import net.minecraftforge.fml.event.config.ModConfigEvent;
|
import net.minecraftforge.fml.event.config.ModConfigEvent;
|
||||||
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||||
import net.minecraftforge.registries.DeferredRegister;
|
|
||||||
import net.minecraftforge.registries.ForgeRegistries;
|
|
||||||
import net.minecraftforge.registries.RegistryObject;
|
import net.minecraftforge.registries.RegistryObject;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import space.eptaproject.vmodaddon.block.TBB;
|
import space.eptaproject.vmodaddon.block.TBB;
|
||||||
import space.eptaproject.vmodaddon.block.TBBE;
|
import space.eptaproject.vmodaddon.block.TBBE;
|
||||||
|
import space.eptaproject.vmodaddon.util.ModRegistry;
|
||||||
|
|
||||||
@Mod(Vmodaddon.MODID)
|
@Mod(Vmodaddon.MODID)
|
||||||
public class Vmodaddon {
|
public class Vmodaddon {
|
||||||
|
@ -33,28 +29,43 @@ public class Vmodaddon {
|
||||||
|
|
||||||
private static final Logger LOGGER = LogUtils.getLogger();
|
private static final Logger LOGGER = LogUtils.getLogger();
|
||||||
|
|
||||||
public static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, MODID);
|
|
||||||
public static final DeferredRegister<BlockEntityType<?>> BLOCK_ENTITIES = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, MODID);
|
|
||||||
public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MODID);
|
|
||||||
|
|
||||||
public static final RegistryObject<Block> EXAMPLE_BLOCK = BLOCKS.register("example_block", () -> new Block(BlockBehaviour.Properties.of().mapColor(MapColor.STONE)));
|
public static final RegistryObject<Block> SHIP_VOID_BLOCK;
|
||||||
|
|
||||||
public static final RegistryObject<Block> TRAK_BUK = BLOCKS.register("tb", () -> new TBB(BlockBehaviour.Properties.of().mapColor(MapColor.STONE)));
|
public static final RegistryObject<Block> TRAK_BUK;
|
||||||
|
|
||||||
public static final RegistryObject<BlockEntityType<TBBE>> MY_BLOCK_ENTITY = BLOCK_ENTITIES.register("my_block_entity",
|
public static final RegistryObject<BlockEntityType<TBBE>> MY_BLOCK_ENTITY;
|
||||||
() -> BlockEntityType.Builder.of(TBBE::new, TRAK_BUK.get()).build(null));
|
public static RegistryObject<Item> MY_BLOCK_ITEM;
|
||||||
|
|
||||||
public static final RegistryObject<Item> MY_BLOCK_ITEM = ITEMS.register("tb",
|
public static RegistryObject<Item> SHIP_VOID_ITEM;
|
||||||
() -> new BlockItem(TRAK_BUK.get(), new Item.Properties()));
|
|
||||||
|
|
||||||
|
public static final ModRegistry REGISTRY;
|
||||||
|
|
||||||
|
public static final RegistryObject<CreativeModeTab> EXAMPLE_TAB;
|
||||||
|
|
||||||
|
static {
|
||||||
|
REGISTRY = new ModRegistry(MODID);
|
||||||
|
|
||||||
|
TRAK_BUK = REGISTRY.BLOCKS.register("track_b", () -> new TBB(BlockBehaviour.Properties.of().mapColor(MapColor.STONE)));
|
||||||
|
SHIP_VOID_BLOCK = REGISTRY.BLOCKS.register("ship_void", () -> new Block(BlockBehaviour.Properties.of().mapColor(MapColor.STONE)));
|
||||||
|
|
||||||
|
MY_BLOCK_ENTITY = REGISTRY.BLOCK_ENTITIES.register("my_block_entity", () -> BlockEntityType.Builder.of(TBBE::new, TRAK_BUK.get()).build(null));
|
||||||
|
|
||||||
|
EXAMPLE_TAB = REGISTRY.TabBuilder()
|
||||||
|
.push((registry) -> {
|
||||||
|
MY_BLOCK_ITEM = registry.register("track_b", () -> new BlockItem(TRAK_BUK.get(), new Item.Properties()));
|
||||||
|
SHIP_VOID_ITEM = registry.register("ship_void", () -> new BlockItem(SHIP_VOID_BLOCK.get(), new Item.Properties()));
|
||||||
|
})
|
||||||
|
.build("vmodaddon", Items.BEDROCK.getDefaultInstance());
|
||||||
|
}
|
||||||
|
|
||||||
public Vmodaddon() {
|
public Vmodaddon() {
|
||||||
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
|
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
|
||||||
|
|
||||||
modEventBus.addListener(this::commonSetup);
|
modEventBus.addListener(this::commonSetup);
|
||||||
|
|
||||||
BLOCKS.register(modEventBus);
|
REGISTRY.register(modEventBus);
|
||||||
BLOCK_ENTITIES.register(modEventBus);
|
|
||||||
ITEMS.register(modEventBus);
|
|
||||||
|
|
||||||
MinecraftForge.EVENT_BUS.register(this);
|
MinecraftForge.EVENT_BUS.register(this);
|
||||||
ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, Config.COMMON_CONFIG);
|
ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, Config.COMMON_CONFIG);
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
package space.eptaproject.vmodaddon.block;
|
package space.eptaproject.vmodaddon.block;
|
||||||
|
|
||||||
import com.simibubi.create.foundation.block.IBE;
|
import com.simibubi.create.foundation.block.IBE;
|
||||||
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
|
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.vmodaddon.Vmodaddon;
|
||||||
|
|
||||||
public class TBB extends HorizontalDirectionalBlock implements IBE<TBBE> {
|
public class TBB extends Block implements IBE<TBBE> {
|
||||||
|
|
||||||
public TBB(Properties properties) {
|
public TBB(Properties properties) {
|
||||||
super(properties);
|
super(properties);
|
||||||
|
|
|
@ -3,7 +3,6 @@ package space.eptaproject.vmodaddon.block;
|
||||||
import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController;
|
import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.util.Mth;
|
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import org.valkyrienskies.core.api.ships.ServerShip;
|
import org.valkyrienskies.core.api.ships.ServerShip;
|
||||||
|
|
|
@ -86,6 +86,6 @@ public class MixinPlugin implements IMixinConfigPlugin {
|
||||||
classNode.visibleAnnotations.add(newAnnotation);
|
classNode.visibleAnnotations.add(newAnnotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
transformerInstanceHolder.get(KotlinOptimizationTransformer.class).transform(targetClassName, classNode, mixinClassName, mixinInfo);
|
//transformerInstanceHolder.get(KotlinOptimizationTransformer.class).transform(targetClassName, classNode, mixinClassName, mixinInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -6,6 +6,7 @@ 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 org.spongepowered.asm.mixin.Unique;
|
||||||
|
import space.eptaproject.vmodaddon.Config;
|
||||||
import space.eptaproject.vmodaddon.IPhysicsTrackController;
|
import space.eptaproject.vmodaddon.IPhysicsTrackController;
|
||||||
|
|
||||||
@Mixin(PhysicsTrackController.class)
|
@Mixin(PhysicsTrackController.class)
|
||||||
|
@ -31,7 +32,7 @@ public abstract class PhysicsTrackControllerMixin implements IPhysicsTrackContro
|
||||||
*/
|
*/
|
||||||
@Overwrite(remap = false)
|
@Overwrite(remap = false)
|
||||||
public final float setDamperCoefficient(float delta) {
|
public final float setDamperCoefficient(float delta) {
|
||||||
this.suspensionStiffness = Math.clamp(1.0F, 50.0F, this.suspensionStiffness + delta);
|
this.suspensionStiffness = Math.clamp(0, Config.Suspension_Stiffness_LIMIT.get(), this.suspensionStiffness + delta);
|
||||||
return this.suspensionStiffness;
|
return this.suspensionStiffness;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
package space.eptaproject.vmodaddon.util;
|
||||||
|
|
||||||
|
import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap;
|
||||||
|
import lombok.Getter;
|
||||||
|
import net.minecraft.core.registries.Registries;
|
||||||
|
import net.minecraft.world.item.CreativeModeTab;
|
||||||
|
import net.minecraft.world.item.CreativeModeTabs;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.level.block.Block;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||||
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
|
import net.minecraftforge.registries.DeferredRegister;
|
||||||
|
import net.minecraftforge.registries.ForgeRegistries;
|
||||||
|
import net.minecraftforge.registries.RegistryObject;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
public class ModRegistry {
|
||||||
|
@Getter
|
||||||
|
private final String modid;
|
||||||
|
|
||||||
|
public final DeferredRegister<Block> BLOCKS;
|
||||||
|
public final DeferredRegister<BlockEntityType<?>> BLOCK_ENTITIES;
|
||||||
|
public final Map<RegistryObject<CreativeModeTab>, DeferredRegister<Item>> ITEMS;
|
||||||
|
public final DeferredRegister<CreativeModeTab> CREATIVE_MODE_TABS;
|
||||||
|
|
||||||
|
|
||||||
|
public ModRegistry(String modid) {
|
||||||
|
this.modid = modid;
|
||||||
|
this.BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, modid);
|
||||||
|
this.BLOCK_ENTITIES = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, modid);
|
||||||
|
this.ITEMS = new Object2ObjectArrayMap<>();
|
||||||
|
this.CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, modid);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TabBuilder TabBuilder() {
|
||||||
|
return new TabBuilder(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void register(IEventBus bus) {
|
||||||
|
this.BLOCKS.register(bus);
|
||||||
|
this.BLOCK_ENTITIES.register(bus);
|
||||||
|
this.CREATIVE_MODE_TABS.register(bus);
|
||||||
|
for (DeferredRegister<Item> registry : ITEMS.values()) {
|
||||||
|
registry.register(bus);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static class TabBuilder {
|
||||||
|
private final ModRegistry registry;
|
||||||
|
public final DeferredRegister<Item> ITEMS;
|
||||||
|
|
||||||
|
public TabBuilder(ModRegistry registry) {
|
||||||
|
this.registry = registry;
|
||||||
|
this.ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, registry.modid);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TabBuilder push(Consumer<DeferredRegister<Item>> registry) {
|
||||||
|
registry.accept(ITEMS);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RegistryObject<CreativeModeTab> build(String name, ItemStack icon) {
|
||||||
|
RegistryObject<CreativeModeTab> tab = this.registry.CREATIVE_MODE_TABS.register(name, () -> CreativeModeTab.builder().withTabsBefore(CreativeModeTabs.COMBAT).icon(() -> icon).displayItems((parameters, output) -> {
|
||||||
|
for (RegistryObject<Item> object : ITEMS.getEntries()) {
|
||||||
|
output.accept(object.get());
|
||||||
|
}
|
||||||
|
}).build());
|
||||||
|
|
||||||
|
this.registry.ITEMS.put(tab, this.ITEMS);
|
||||||
|
return tab;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"": { "model": "vmodaddon:block/track_b" }
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"block.vmodaddon.track_b": "Track Backup",
|
||||||
|
"block.vmodaddon.ship_void": "Ship Void"
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
{
|
||||||
|
"credit": "Made with Blockbench",
|
||||||
|
"texture_size": [64, 64],
|
||||||
|
"textures": {
|
||||||
|
"1": "vmodaddon:block/track_b",
|
||||||
|
"particle": "vmodaddon:block/track_b"
|
||||||
|
},
|
||||||
|
"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]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
{
|
||||||
|
"credit": "Made with Blockbench",
|
||||||
|
"texture_size": [64, 64],
|
||||||
|
"textures": {
|
||||||
|
"1": "vmodaddon:block/track_b",
|
||||||
|
"particle": "vmodaddon:block/track_b"
|
||||||
|
},
|
||||||
|
"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]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 434 B |
|
@ -0,0 +1,12 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"block": "vmodaddon:ship_void",
|
||||||
|
"mass": 0.0,
|
||||||
|
"friction": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"block": "vmodaddon:track_b",
|
||||||
|
"mass": 40.0,
|
||||||
|
"friction": 0.0
|
||||||
|
}
|
||||||
|
]
|
Loading…
Reference in New Issue