feat: curios dependency + flower crown item
Some checks failed
Build / build (push) Has been cancelled
Some checks failed
Build / build (push) Has been cancelled
This commit is contained in:
commit
f63ec89953
27 changed files with 1267 additions and 0 deletions
40
src/main/java/fr/sushi/charmsnfabrics/CharmsAndFabrics.java
Normal file
40
src/main/java/fr/sushi/charmsnfabrics/CharmsAndFabrics.java
Normal file
|
@ -0,0 +1,40 @@
|
|||
package fr.sushi.charmsnfabrics;
|
||||
|
||||
import fr.sushi.charmsnfabrics.common.CharmsAndFabricRegistries;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.food.FoodProperties;
|
||||
import net.minecraft.world.item.BlockItem;
|
||||
import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraft.world.item.CreativeModeTabs;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.state.BlockBehaviour;
|
||||
import net.minecraft.world.level.material.MapColor;
|
||||
import net.neoforged.bus.api.IEventBus;
|
||||
import net.neoforged.bus.api.SubscribeEvent;
|
||||
import net.neoforged.fml.common.Mod;
|
||||
import net.neoforged.fml.config.ModConfig;
|
||||
import net.neoforged.fml.ModContainer;
|
||||
import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||
import net.neoforged.neoforge.common.NeoForge;
|
||||
import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent;
|
||||
import net.neoforged.neoforge.event.server.ServerStartingEvent;
|
||||
import net.neoforged.neoforge.registries.DeferredBlock;
|
||||
import net.neoforged.neoforge.registries.DeferredHolder;
|
||||
import net.neoforged.neoforge.registries.DeferredItem;
|
||||
import net.neoforged.neoforge.registries.DeferredRegister;
|
||||
|
||||
@Mod(CharmsAndFabrics.MODID)
|
||||
public class CharmsAndFabrics {
|
||||
public static final String MODID = "charmsnfabrics";
|
||||
|
||||
public CharmsAndFabrics(IEventBus modEventBus, ModContainer modContainer) {
|
||||
CharmsAndFabricRegistries.register(modEventBus);
|
||||
|
||||
modContainer.registerConfig(ModConfig.Type.COMMON, Config.SPEC);
|
||||
}
|
||||
|
||||
}
|
42
src/main/java/fr/sushi/charmsnfabrics/Config.java
Normal file
42
src/main/java/fr/sushi/charmsnfabrics/Config.java
Normal file
|
@ -0,0 +1,42 @@
|
|||
package fr.sushi.charmsnfabrics;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.neoforged.bus.api.SubscribeEvent;
|
||||
import net.neoforged.fml.common.EventBusSubscriber;
|
||||
import net.neoforged.fml.event.config.ModConfigEvent;
|
||||
import net.neoforged.neoforge.common.ModConfigSpec;
|
||||
|
||||
// An example config class. This is not required, but it's a good idea to have one to keep your config organized.
|
||||
// Demonstrates how to use Neo's config APIs
|
||||
public class Config {
|
||||
private static final ModConfigSpec.Builder BUILDER = new ModConfigSpec.Builder();
|
||||
|
||||
public static final ModConfigSpec.BooleanValue LOG_DIRT_BLOCK = BUILDER
|
||||
.comment("Whether to log the dirt block on common setup")
|
||||
.define("logDirtBlock", true);
|
||||
|
||||
public static final ModConfigSpec.IntValue MAGIC_NUMBER = BUILDER
|
||||
.comment("A magic number")
|
||||
.defineInRange("magicNumber", 42, 0, Integer.MAX_VALUE);
|
||||
|
||||
public static final ModConfigSpec.ConfigValue<String> MAGIC_NUMBER_INTRODUCTION = BUILDER
|
||||
.comment("What you want the introduction message to be for the magic number")
|
||||
.define("magicNumberIntroduction", "The magic number is... ");
|
||||
|
||||
// a list of strings that are treated as resource locations for items
|
||||
public static final ModConfigSpec.ConfigValue<List<? extends String>> ITEM_STRINGS = BUILDER
|
||||
.comment("A list of items to log on common setup.")
|
||||
.defineListAllowEmpty("items", List.of("minecraft:iron_ingot"), () -> "", Config::validateItemName);
|
||||
|
||||
static final ModConfigSpec SPEC = BUILDER.build();
|
||||
|
||||
private static boolean validateItemName(final Object obj) {
|
||||
return obj instanceof String itemName && BuiltInRegistries.ITEM.containsKey(ResourceLocation.parse(itemName));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
package fr.sushi.charmsnfabrics.client;
|
||||
|
||||
import fr.sushi.charmsnfabrics.CharmsAndFabrics;
|
||||
import fr.sushi.charmsnfabrics.client.renderer.FlowerCrownRenderer;
|
||||
import fr.sushi.charmsnfabrics.common.CharmsAndFabricRegistries;
|
||||
import net.neoforged.api.distmarker.Dist;
|
||||
import net.neoforged.bus.api.IEventBus;
|
||||
import net.neoforged.bus.api.SubscribeEvent;
|
||||
import net.neoforged.fml.ModContainer;
|
||||
import net.neoforged.fml.common.EventBusSubscriber;
|
||||
import net.neoforged.fml.common.Mod;
|
||||
import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent;
|
||||
import net.neoforged.neoforge.client.gui.ConfigurationScreen;
|
||||
import net.neoforged.neoforge.client.gui.IConfigScreenFactory;
|
||||
import top.theillusivec4.curios.api.client.ICurioRenderer;
|
||||
|
||||
@Mod(value = CharmsAndFabrics.MODID, dist = Dist.CLIENT)
|
||||
@EventBusSubscriber(modid = CharmsAndFabrics.MODID, value = Dist.CLIENT)
|
||||
public class CharmsFabricsClient
|
||||
{
|
||||
public CharmsFabricsClient(ModContainer container)
|
||||
{
|
||||
container.registerExtensionPoint(IConfigScreenFactory.class,
|
||||
ConfigurationScreen::new);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
private static void onClientSetup(final FMLClientSetupEvent event)
|
||||
{
|
||||
ICurioRenderer.register(
|
||||
CharmsAndFabricRegistries.Items.FLOWER_CROWN.get(),
|
||||
FlowerCrownRenderer::new);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
package fr.sushi.charmsnfabrics.client.model;
|
||||
|
||||
public class FlowerCrownModel
|
||||
{
|
||||
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package fr.sushi.charmsnfabrics.client.renderer;
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import net.minecraft.client.model.EntityModel;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.entity.EntityRendererProvider;
|
||||
import net.minecraft.client.renderer.entity.RenderLayerParent;
|
||||
import net.minecraft.client.renderer.entity.state.LivingEntityRenderState;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import top.theillusivec4.curios.api.SlotContext;
|
||||
import top.theillusivec4.curios.api.client.ICurioRenderer;
|
||||
|
||||
public class FlowerCrownRenderer implements ICurioRenderer
|
||||
{
|
||||
@Override
|
||||
public <S extends LivingEntityRenderState, M extends EntityModel<? super S>> void render(ItemStack stack, SlotContext slotContext, PoseStack poseStack, @NotNull MultiBufferSource renderTypeBuffer, int packedLight, S renderState, RenderLayerParent<S, M> renderLayerParent, EntityRendererProvider.Context context, float yRotation, float xRotation)
|
||||
{
|
||||
System.out.println("UwU");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
package fr.sushi.charmsnfabrics.common;
|
||||
|
||||
import fr.sushi.charmsnfabrics.CharmsAndFabrics;
|
||||
import fr.sushi.charmsnfabrics.common.item.FlowerCrown;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraft.world.item.CreativeModeTabs;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.neoforged.bus.api.IEventBus;
|
||||
import net.neoforged.neoforge.registries.DeferredHolder;
|
||||
import net.neoforged.neoforge.registries.DeferredItem;
|
||||
import net.neoforged.neoforge.registries.DeferredRegister;
|
||||
|
||||
public class CharmsAndFabricRegistries
|
||||
{
|
||||
public static class Items
|
||||
{
|
||||
public static final DeferredRegister.Items ITEMS =
|
||||
DeferredRegister.createItems(CharmsAndFabrics.MODID);
|
||||
public static final DeferredItem<Item> FLOWER_CROWN =
|
||||
ITEMS.registerItem("flower_crown",
|
||||
(properties) -> new FlowerCrown(
|
||||
properties.stacksTo(1)));
|
||||
}
|
||||
|
||||
public static class Tabs
|
||||
{
|
||||
public static final DeferredRegister<CreativeModeTab>
|
||||
CREATIVE_MODE_TABS =
|
||||
DeferredRegister.create(Registries.CREATIVE_MODE_TAB,
|
||||
CharmsAndFabrics.MODID);
|
||||
public static final DeferredHolder<CreativeModeTab, CreativeModeTab>
|
||||
EXAMPLE_TAB = CREATIVE_MODE_TABS.register("charmsnfabrics_tab",
|
||||
() -> CreativeModeTab
|
||||
.builder()
|
||||
.title(Component.translatable(
|
||||
"itemGroup.charmsnfabrics"))
|
||||
.withTabsBefore(
|
||||
CreativeModeTabs.COMBAT)
|
||||
.icon(Items.FLOWER_CROWN.get()::getDefaultInstance)
|
||||
.displayItems(
|
||||
(parameters, output) ->
|
||||
{
|
||||
output.accept(
|
||||
Items.FLOWER_CROWN.get());
|
||||
})
|
||||
.build());
|
||||
}
|
||||
|
||||
public static void register(IEventBus bus)
|
||||
{
|
||||
Items.ITEMS.register(bus);
|
||||
Tabs.CREATIVE_MODE_TABS.register(bus);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package fr.sushi.charmsnfabrics.common.item;
|
||||
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import top.theillusivec4.curios.api.SlotContext;
|
||||
import top.theillusivec4.curios.api.type.capability.ICurioItem;
|
||||
|
||||
public class FlowerCrown extends Item implements ICurioItem
|
||||
{
|
||||
public FlowerCrown(Properties properties)
|
||||
{
|
||||
super(properties);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canEquipFromUse(SlotContext slotContext, ItemStack stack)
|
||||
{
|
||||
return slotContext.identifier().contains("head");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,248 @@
|
|||
{
|
||||
"format_version": "1.12.0",
|
||||
"minecraft:geometry": [
|
||||
{
|
||||
"description": {
|
||||
"identifier": "geometry.flower_crown",
|
||||
"texture_width": 64,
|
||||
"texture_height": 64,
|
||||
"visible_bounds_width": 2,
|
||||
"visible_bounds_height": 3.5,
|
||||
"visible_bounds_offset": [0, 1.25, 0]
|
||||
},
|
||||
"bones": [
|
||||
{
|
||||
"name": "bipedHead",
|
||||
"pivot": [0, 24, 0]
|
||||
},
|
||||
{
|
||||
"name": "armorHead",
|
||||
"parent": "bipedHead",
|
||||
"pivot": [0, 29, 0]
|
||||
},
|
||||
{
|
||||
"name": "ring",
|
||||
"parent": "armorHead",
|
||||
"pivot": [0, 31, 4.2],
|
||||
"cubes": [
|
||||
{"origin": [-4.1, 31, 4.1], "size": [8.2, 2, 0], "uv": [48, 28]},
|
||||
{"origin": [-4.1, 31, -4.1], "size": [8.2, 2, 0], "uv": [48, 14]},
|
||||
{"origin": [4.1, 31, -4.1], "size": [0, 2, 8.2], "uv": [48, -1]},
|
||||
{"origin": [-4.1, 31, -4.1], "size": [0, 2, 8.2], "uv": [48, 13]},
|
||||
{"origin": [1, 33, 4.1], "size": [2, 1, 0], "uv": [49, 27]},
|
||||
{"origin": [4.1, 33, -3], "size": [0, 1, 5], "uv": [49, 1]},
|
||||
{"origin": [-4.1, 33, -1], "size": [0, 1, 3], "uv": [50, 17]},
|
||||
{"origin": [-4.1, 34, -1], "size": [0, 1, 1], "uv": [52, 18]},
|
||||
{"origin": [-4.1, 34, 1], "size": [0, 1, 1], "uv": [50, 18]},
|
||||
{"origin": [-4.1, 33, -4.1], "size": [0, 1, 2.1], "uv": [54, 18]},
|
||||
{"origin": [-4.1, 34, -4.1], "size": [0, 2, 1.1], "uv": [55, 17]},
|
||||
{"origin": [-4.1, 33, 3], "size": [0, 1, 1.1], "uv": [48, 19]},
|
||||
{"origin": [4.1, 34, -2], "size": [0, 1, 1], "uv": [50, 4]},
|
||||
{"origin": [4.1, 33, 2], "size": [0, 2, 1], "uv": [54, 4]},
|
||||
{"origin": [4.1, 34, 0], "size": [0, 2, 1], "uv": [52, 3]},
|
||||
{"origin": [1, 34, 4.1], "size": [1, 1, 0], "uv": [50, 26]},
|
||||
{"origin": [-2, 33, 4.1], "size": [1, 3, 0], "uv": [53, 25]},
|
||||
{"origin": [-3, 33, 4.1], "size": [1, 1, 0], "uv": [54, 27]},
|
||||
{"origin": [-4.1, 33, 4.1], "size": [1.1, 2, 0], "uv": [55, 26]},
|
||||
{"origin": [-4.1, 33, -4.1], "size": [1.1, 2, 0], "uv": [48, 12]},
|
||||
{"origin": [-2, 33, -4.1], "size": [4, 1, 0], "uv": [50, 13]},
|
||||
{"origin": [1, 34, -4.1], "size": [1, 2, 0], "uv": [53, 11]},
|
||||
{"origin": [3, 33, -4.1], "size": [1, 1, 0], "uv": [55, 13]},
|
||||
{"origin": [-1, 34, -4.1], "size": [1, 1, 0], "uv": [51, 12]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "flowers",
|
||||
"parent": "armorHead",
|
||||
"pivot": [0, 32, 0]
|
||||
},
|
||||
{
|
||||
"name": "flower1",
|
||||
"parent": "flowers",
|
||||
"pivot": [-2.8, 32.1, -4.2],
|
||||
"cubes": [
|
||||
{"origin": [-1.8, 31.1, -4.2], "size": [1, 2, 0], "pivot": [-2.8, 32.1, -4.2], "rotation": [0, 0, -15], "uv": [48, 1]},
|
||||
{"origin": [-3.8, 30.1, -4.2], "size": [2, 4, 0], "pivot": [-2.8, 32.1, -4.2], "rotation": [0, 0, -15], "uv": [50, 0]},
|
||||
{"origin": [-4.8, 31.1, -4.2], "size": [1, 2, 0], "pivot": [-2.8, 32.1, -4.2], "rotation": [0, 0, -15], "uv": [48, 1]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "flower10",
|
||||
"parent": "flowers",
|
||||
"pivot": [3.1, 32, -4.2],
|
||||
"rotation": [0, 0, 25],
|
||||
"cubes": [
|
||||
{"origin": [4.1, 31, -4.2], "size": [1, 2, 0], "pivot": [3.1, 32, -4.2], "rotation": [0, 0, -15], "uv": [48, 1]},
|
||||
{"origin": [2.1, 30, -4.2], "size": [2, 4, 0], "pivot": [3.1, 32, -4.2], "rotation": [0, 0, -15], "uv": [50, 0]},
|
||||
{"origin": [1.1, 31, -4.2], "size": [1, 2, 0], "pivot": [3.1, 32, -4.2], "rotation": [0, 0, -15], "uv": [48, 1]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "flower8",
|
||||
"parent": "flowers",
|
||||
"pivot": [2.5, 31.4, 4.2],
|
||||
"rotation": [0, 180, 0],
|
||||
"cubes": [
|
||||
{"origin": [3.5, 30.4, 4.2], "size": [1, 2, 0], "pivot": [2.5, 31.4, 4.2], "rotation": [0, 0, -15], "uv": [48, 1]},
|
||||
{"origin": [1.5, 29.4, 4.2], "size": [2, 4, 0], "pivot": [2.5, 31.4, 4.2], "rotation": [0, 0, -15], "uv": [50, 0]},
|
||||
{"origin": [0.5, 30.4, 4.2], "size": [1, 2, 0], "pivot": [2.5, 31.4, 4.2], "rotation": [0, 0, -15], "uv": [48, 1]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "flower6",
|
||||
"parent": "flowers",
|
||||
"pivot": [-2.7, 32.1, 4.2],
|
||||
"rotation": [180, 0, 140],
|
||||
"cubes": [
|
||||
{"origin": [-1.7, 31.1, 4.2], "size": [1, 2, 0], "pivot": [-2.7, 32.1, 4.2], "rotation": [0, 0, -15], "uv": [48, 1]},
|
||||
{"origin": [-3.7, 30.1, 4.2], "size": [2, 4, 0], "pivot": [-2.7, 32.1, 4.2], "rotation": [0, 0, -15], "uv": [50, 0]},
|
||||
{"origin": [-4.7, 31.1, 4.2], "size": [1, 2, 0], "pivot": [-2.7, 32.1, 4.2], "rotation": [0, 0, -15], "uv": [48, 1]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "flower3",
|
||||
"parent": "flowers",
|
||||
"pivot": [4.3, 31.8, 0.2],
|
||||
"rotation": [-90, -72.5, 90],
|
||||
"cubes": [
|
||||
{"origin": [3.3, 29.8, 0.2], "size": [2, 4, 0], "uv": [56, 0]},
|
||||
{"origin": [2.3, 30.8, 0.2], "size": [1, 2, 0], "uv": [54, 1]},
|
||||
{"origin": [5.3, 30.8, 0.2], "size": [1, 2, 0], "uv": [54, 1]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "flower9",
|
||||
"parent": "flowers",
|
||||
"pivot": [-4.2, 31.3, -0.2],
|
||||
"rotation": [-90, 82.5, -90],
|
||||
"cubes": [
|
||||
{"origin": [-5.30856, 29.16947, -0.3], "size": [2, 4, 0], "uv": [56, 0]},
|
||||
{"origin": [-6.30856, 30.16947, -0.3], "size": [1, 2, 0], "uv": [54, 1]},
|
||||
{"origin": [-3.30856, 30.16947, -0.3], "size": [1, 2, 0], "uv": [54, 1]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "flower4",
|
||||
"parent": "flowers",
|
||||
"pivot": [4.2, 33.6, 2.6],
|
||||
"rotation": [90, -57.5, -90],
|
||||
"cubes": [
|
||||
{"origin": [3.2, 31.6, 2.6], "size": [2, 4, 0], "uv": [50, 0]},
|
||||
{"origin": [2.2, 32.6, 2.6], "size": [1, 2, 0], "uv": [48, 1]},
|
||||
{"origin": [5.2, 32.6, 2.6], "size": [1, 2, 0], "uv": [48, 1]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "flower12",
|
||||
"parent": "flowers",
|
||||
"pivot": [4.2, 33.3, -2.7],
|
||||
"rotation": [89.99998, -80, -89.99998],
|
||||
"cubes": [
|
||||
{"origin": [3.2, 31.3, -2.7], "size": [2, 4, 0], "uv": [50, 0]},
|
||||
{"origin": [2.2, 32.3, -2.7], "size": [1, 2, 0], "uv": [48, 1]},
|
||||
{"origin": [5.2, 32.3, -2.7], "size": [1, 2, 0], "uv": [48, 1]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "flower5",
|
||||
"parent": "flowers",
|
||||
"pivot": [-4.2, 32.5, 2.8],
|
||||
"rotation": [-90, -70.5, 90],
|
||||
"cubes": [
|
||||
{"origin": [-5.2, 30.5, 2.8], "size": [2, 4, 0], "uv": [50, 0]},
|
||||
{"origin": [-6.2, 31.5, 2.8], "size": [1, 2, 0], "uv": [48, 1]},
|
||||
{"origin": [-3.2, 31.5, 2.8], "size": [1, 2, 0], "uv": [48, 1]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "flower2",
|
||||
"parent": "flowers",
|
||||
"pivot": [-4.2, 33.1, -2.9],
|
||||
"rotation": [90, -67.5, -90],
|
||||
"cubes": [
|
||||
{"origin": [-5.2, 31.1, -2.9], "size": [2, 4, 0], "uv": [50, 0]},
|
||||
{"origin": [-6.2, 32.1, -2.9], "size": [1, 2, 0], "uv": [48, 1]},
|
||||
{"origin": [-3.2, 32.1, -2.9], "size": [1, 2, 0], "uv": [48, 1]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "flower7",
|
||||
"parent": "flowers",
|
||||
"pivot": [0.2, 33.8, -4.3],
|
||||
"rotation": [0, 0, 7],
|
||||
"cubes": [
|
||||
{"origin": [-0.8, 31.8, -4.3], "size": [2, 4, 0], "uv": [56, 0]},
|
||||
{"origin": [-1.8, 32.8, -4.3], "size": [1, 2, 0], "uv": [54, 1]},
|
||||
{"origin": [1.2, 32.8, -4.3], "size": [1, 2, 0], "uv": [54, 1]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "flower11",
|
||||
"parent": "flowers",
|
||||
"pivot": [0.2, 33.8, 4.3],
|
||||
"rotation": [0, 0, -8],
|
||||
"cubes": [
|
||||
{"origin": [-0.8, 31.8, 4.3], "size": [2, 4, 0], "uv": [56, 0]},
|
||||
{"origin": [-1.8, 32.8, 4.3], "size": [1, 2, 0], "uv": [54, 1]},
|
||||
{"origin": [1.2, 32.8, 4.3], "size": [1, 2, 0], "uv": [54, 1]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bipedBody",
|
||||
"pivot": [0, 24, 0]
|
||||
},
|
||||
{
|
||||
"name": "armorBody",
|
||||
"parent": "bipedBody",
|
||||
"pivot": [0, 24, 0]
|
||||
},
|
||||
{
|
||||
"name": "bipedRightArm",
|
||||
"pivot": [-5, 22, 0]
|
||||
},
|
||||
{
|
||||
"name": "armorRightArm",
|
||||
"parent": "bipedRightArm",
|
||||
"pivot": [-5, 22, 0]
|
||||
},
|
||||
{
|
||||
"name": "bipedLeftArm",
|
||||
"pivot": [5, 22, 0]
|
||||
},
|
||||
{
|
||||
"name": "armorLeftArm",
|
||||
"parent": "bipedLeftArm",
|
||||
"pivot": [5, 22, 0]
|
||||
},
|
||||
{
|
||||
"name": "bipedLeftLeg",
|
||||
"pivot": [2, 12, 0]
|
||||
},
|
||||
{
|
||||
"name": "armorLeftLeg",
|
||||
"parent": "bipedLeftLeg",
|
||||
"pivot": [2, 12, 0]
|
||||
},
|
||||
{
|
||||
"name": "armorLeftBoot",
|
||||
"parent": "bipedLeftLeg",
|
||||
"pivot": [2, 12, 0]
|
||||
},
|
||||
{
|
||||
"name": "bipedRightLeg",
|
||||
"pivot": [-2, 12, 0]
|
||||
},
|
||||
{
|
||||
"name": "armorRightLeg",
|
||||
"parent": "bipedRightLeg",
|
||||
"pivot": [-2, 12, 0]
|
||||
},
|
||||
{
|
||||
"name": "armorRightBoot",
|
||||
"parent": "bipedRightLeg",
|
||||
"pivot": [-2, 12, 0]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "charmsnfabrics:item/flower_crown"
|
||||
}
|
||||
}
|
12
src/main/resources/assets/charmsnfabrics/lang/en_us.json
Normal file
12
src/main/resources/assets/charmsnfabrics/lang/en_us.json
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"itemGroup.charmsnfabrics": "Charms & Fabrics",
|
||||
"item.charmsnfabrics.flower_crown": "Flower Crown",
|
||||
|
||||
"charmsnfabrics.configuration.title": "Charms & Fabrics Configs",
|
||||
"charmsnfabrics.configuration.section.charmsnfabrics.common.toml": "Charms & Fabrics Configs",
|
||||
"charmsnfabrics.configuration.section.charmsnfabrics.common.toml.title": "Charms & Fabrics Configs",
|
||||
"charmsnfabrics.configuration.items": "Item List",
|
||||
"charmsnfabrics.configuration.logDirtBlock": "Log Dirt Block",
|
||||
"charmsnfabrics.configuration.magicNumberIntroduction": "Magic Number Text",
|
||||
"charmsnfabrics.configuration.magicNumber": "Magic Number"
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "charmsnfabrics:item/flower_crown"
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 361 B |
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"entities": [
|
||||
"minecraft:player", "minecraft:armor_stand"
|
||||
],
|
||||
"slots": [
|
||||
"back",
|
||||
"body",
|
||||
"belt",
|
||||
"bracelet",
|
||||
"charm",
|
||||
"curio",
|
||||
"example",
|
||||
"hands",
|
||||
"head",
|
||||
"necklace",
|
||||
"ring"
|
||||
]
|
||||
}
|
6
src/main/resources/data/curios/tags/item/head.json
Normal file
6
src/main/resources/data/curios/tags/item/head.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"charmsnfabrics:flower_crown"
|
||||
]
|
||||
}
|
93
src/main/templates/META-INF/neoforge.mods.toml
Normal file
93
src/main/templates/META-INF/neoforge.mods.toml
Normal file
|
@ -0,0 +1,93 @@
|
|||
# This is an example neoforge.mods.toml file. It contains the data relating to the loading mods.
|
||||
# There are several mandatory fields (#mandatory), and many more that are optional (#optional).
|
||||
# The overall format is standard TOML format, v0.5.0.
|
||||
# Note that there are a couple of TOML lists in this file.
|
||||
# Find more information on toml format here: https://github.com/toml-lang/toml
|
||||
|
||||
# The name of the mod loader type to load - for regular FML @Mod mods it should be javafml
|
||||
modLoader="javafml" #mandatory
|
||||
|
||||
# A version range to match for said mod loader - for regular FML @Mod it will be the FML version. This is currently 2.
|
||||
loaderVersion="${loader_version_range}" #mandatory
|
||||
|
||||
# The license for you mod. This is mandatory metadata and allows for easier comprehension of your redistributive properties.
|
||||
# Review your options at https://choosealicense.com/. All rights reserved is the default copyright stance, and is thus the default here.
|
||||
license="${mod_license}"
|
||||
|
||||
# A URL to refer people to when problems occur with this mod
|
||||
#issueTrackerURL="https://change.me.to.your.issue.tracker.example.invalid/" #optional
|
||||
|
||||
# A list of mods - how many allowed here is determined by the individual mod loader
|
||||
[[mods]] #mandatory
|
||||
|
||||
# The modid of the mod
|
||||
modId="${mod_id}" #mandatory
|
||||
|
||||
# The version number of the mod
|
||||
version="${mod_version}" #mandatory
|
||||
|
||||
# A display name for the mod
|
||||
displayName="${mod_name}" #mandatory
|
||||
|
||||
# A URL to query for updates for this mod. See the JSON update specification https://docs.neoforged.net/docs/misc/updatechecker/
|
||||
#updateJSONURL="https://change.me.example.invalid/updates.json" #optional
|
||||
|
||||
# A URL for the "homepage" for this mod, displayed in the mod UI
|
||||
#displayURL="https://change.me.to.your.mods.homepage.example.invalid/" #optional
|
||||
|
||||
# A file name (in the root of the mod JAR) containing a logo for display
|
||||
#logoFile="examplemod.png" #optional
|
||||
|
||||
# A text field displayed in the mod UI
|
||||
#credits="" #optional
|
||||
|
||||
# A text field displayed in the mod UI
|
||||
authors="${mod_authors}" #optional
|
||||
|
||||
# The description text for the mod (multi line!) (#mandatory)
|
||||
description='''${mod_description}'''
|
||||
|
||||
# The [[mixins]] block allows you to declare your mixin config to FML so that it gets loaded.
|
||||
#[[mixins]]
|
||||
#config="${mod_id}.mixins.json"
|
||||
|
||||
# The [[accessTransformers]] block allows you to declare where your AT file is.
|
||||
# If this block is omitted, a fallback attempt will be made to load an AT from META-INF/accesstransformer.cfg
|
||||
#[[accessTransformers]]
|
||||
#file="META-INF/accesstransformer.cfg"
|
||||
|
||||
# The coremods config file path is not configurable and is always loaded from META-INF/coremods.json
|
||||
|
||||
# A dependency - use the . to indicate dependency for a specific modid. Dependencies are optional.
|
||||
[[dependencies.${mod_id}]] #optional
|
||||
# the modid of the dependency
|
||||
modId="neoforge" #mandatory
|
||||
# The type of the dependency. Can be one of "required", "optional", "incompatible" or "discouraged" (case insensitive).
|
||||
# 'required' requires the mod to exist, 'optional' does not
|
||||
# 'incompatible' will prevent the game from loading when the mod exists, and 'discouraged' will show a warning
|
||||
type="required" #mandatory
|
||||
# Optional field describing why the dependency is required or why it is incompatible
|
||||
# reason="..."
|
||||
# The version range of the dependency
|
||||
versionRange="[${neo_version},)" #mandatory
|
||||
# An ordering relationship for the dependency.
|
||||
# BEFORE - This mod is loaded BEFORE the dependency
|
||||
# AFTER - This mod is loaded AFTER the dependency
|
||||
ordering="NONE"
|
||||
# Side this dependency is applied on - BOTH, CLIENT, or SERVER
|
||||
side="BOTH"
|
||||
|
||||
# Here's another dependency
|
||||
[[dependencies.${mod_id}]]
|
||||
modId="minecraft"
|
||||
type="required"
|
||||
# This version range declares a minimum of the current minecraft version up to but not including the next major version
|
||||
versionRange="${minecraft_version_range}"
|
||||
ordering="NONE"
|
||||
side="BOTH"
|
||||
|
||||
# Features are specific properties of the game environment, that you may want to declare you require. This example declares
|
||||
# that your mod requires GL version 3.2 or higher. Other features will be added. They are side aware so declaring this won't
|
||||
# stop your mod loading on the server for example.
|
||||
#[features.${mod_id}]
|
||||
#openGLVersion="[3.2,)"
|
Loading…
Add table
Add a link
Reference in a new issue