This commit is contained in:
p2vman 2025-05-25 19:24:01 +03:00
parent 6e215209e4
commit 6fe6b7913e
13 changed files with 249 additions and 25 deletions

View File

@ -1,7 +1,5 @@
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.ObjectImmutableList;
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<String> RESOURCE_LOCATION;
public static final ForgeConfigSpec.ConfigValue<Integer> Suspension_Stiffness_LIMIT;
public static List<ResourceLocation> parsedList = new ObjectArrayList<>();
private static List<Map.Entry<Integer, ResourceLocation>> ITEM = new ObjectImmutableList<>(new ArrayList<>());
public static ResourceLocation replace = Validator.RB;
@ -41,6 +41,7 @@ public class Config {
Validator.RB.toString()
);
builder.pop();
builder.push("Inventory");
@ -53,6 +54,14 @@ public class Config {
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();
COMMON_CONFIG = builder.build();
}

View File

@ -1,10 +1,7 @@
package space.eptaproject.vmodaddon;
import com.mojang.logging.LogUtils;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
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;
@ -19,12 +16,11 @@ 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.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
import org.slf4j.Logger;
import space.eptaproject.vmodaddon.block.TBB;
import space.eptaproject.vmodaddon.block.TBBE;
import space.eptaproject.vmodaddon.util.ModRegistry;
@Mod(Vmodaddon.MODID)
public class Vmodaddon {
@ -33,28 +29,43 @@ public class Vmodaddon {
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",
() -> BlockEntityType.Builder.of(TBBE::new, TRAK_BUK.get()).build(null));
public static final RegistryObject<BlockEntityType<TBBE>> MY_BLOCK_ENTITY;
public static RegistryObject<Item> MY_BLOCK_ITEM;
public static final RegistryObject<Item> MY_BLOCK_ITEM = ITEMS.register("tb",
() -> new BlockItem(TRAK_BUK.get(), new Item.Properties()));
public static RegistryObject<Item> SHIP_VOID_ITEM;
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() {
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
modEventBus.addListener(this::commonSetup);
BLOCKS.register(modEventBus);
BLOCK_ENTITIES.register(modEventBus);
ITEMS.register(modEventBus);
REGISTRY.register(modEventBus);
MinecraftForge.EVENT_BUS.register(this);
ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, Config.COMMON_CONFIG);

View File

@ -1,11 +1,11 @@
package space.eptaproject.vmodaddon.block;
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 space.eptaproject.vmodaddon.Vmodaddon;
public class TBB extends HorizontalDirectionalBlock implements IBE<TBBE> {
public class TBB extends Block implements IBE<TBBE> {
public TBB(Properties properties) {
super(properties);

View File

@ -3,7 +3,6 @@ package space.eptaproject.vmodaddon.block;
import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController;
import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.util.Mth;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import org.valkyrienskies.core.api.ships.ServerShip;

View File

@ -86,6 +86,6 @@ public class MixinPlugin implements IMixinConfigPlugin {
classNode.visibleAnnotations.add(newAnnotation);
}
transformerInstanceHolder.get(KotlinOptimizationTransformer.class).transform(targetClassName, classNode, mixinClassName, mixinInfo);
//transformerInstanceHolder.get(KotlinOptimizationTransformer.class).transform(targetClassName, classNode, mixinClassName, mixinInfo);
}
}

View File

@ -6,6 +6,7 @@ import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import space.eptaproject.vmodaddon.Config;
import space.eptaproject.vmodaddon.IPhysicsTrackController;
@Mixin(PhysicsTrackController.class)
@ -31,7 +32,7 @@ public abstract class PhysicsTrackControllerMixin implements IPhysicsTrackContro
*/
@Overwrite(remap = false)
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;
}
}

View File

@ -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;
}
}
}

View File

@ -0,0 +1,5 @@
{
"variants": {
"": { "model": "vmodaddon:block/track_b" }
}
}

View File

@ -0,0 +1,4 @@
{
"block.vmodaddon.track_b": "Track Backup",
"block.vmodaddon.ship_void": "Ship Void"
}

View File

@ -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]
}
}
}

View File

@ -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

View File

@ -0,0 +1,12 @@
[
{
"block": "vmodaddon:ship_void",
"mass": 0.0,
"friction": 0.0
},
{
"block": "vmodaddon:track_b",
"mass": 40.0,
"friction": 0.0
}
]