Skip to content

Basics

Registering assets

This is quite simple. You just need to do things written below. Ideally it all should run at your mod's initialization.

Adding mod assets to resource pack

First step for adding assets to resource pack is marking mod as asset source. To do it you just need to call boolean PolymerResourcePackUtils.addModAssets(String modid), which returns true if modid is valid.

This should be called ideally in your mod initializer.

Additionally, you can add assets manually by calling ResourcePackBuilder.addData(String path, byte[] data). You can get instance of it by listening to PolymerResourcePackUtils.RESOURCE_PACK_CREATION_EVENT. Just keep in minds that new one will be created every time resource pack is generated.

Requesting model for item

After that you can register your models by calling PolymerModelData PolymerResourcePackUtils.requestModel(Item vanillaItem, Identifier modelPath). It returns PolymerModelData with contains all information you need for applying custom model data to your items. You need to keep in mind, that modelPath needs to contain main directory (in similar way to vanilla models). While model is created, all it's overrides are copied and applied, so you don't need to request them manually (useful for bows).

You can execute this function before making your mod an asset source, but it should be run before resource pack is build.

Example use:

PolymerModelData modelData = PolymerResourcePackUtils.requestModel(Items.IRON_SWORD, Identifier.of("mymod", "item/silver_sword"));

Requesting armor textures

Polymer supports custom armor textures thanks to usage of Ancientkingg's fancyPants resource pack.

To request it you need to use PolymerResourcePackUtils.requestArmor(Identifier). It will automatically create variant of every armor peace, however you aren't required to use/define them all.

To apply it to your armor, you need to set your client side item to leather armor peace. Then you need to override PolymerItem.getPolymerArmorColor() method and return used color.

PolymerArmorModel armorModel = PolymerResourcePackUtils.requestArmor(Identifier.of("mymod", "silver"));

Checking players

Checking if player has resource pack is quite simple. You just need to call boolean PolymerResourcePackUtils.hasPack(ServerPlayerEntity player).

Example use:

Identifier font;

if (PolymerResourcePackUtils.hasPack(player)) {
    font = Identifier.of("mymod", "myfont");
} else {
    font = Identifier.of("minecraft", "default");
}

Making pack required

To make font required, you just need to call PolymerResourcePackUtil.markAsRequired().

However, Polymer doesn't contain any utilities for sending packs, as it should be implemented by other mods (or use vanilla one). One exception is resource pack on client, which will get effected by that.

I also recommend you to keep it optional if it's possible.

Building resource pack

To create resource pack you only need to execute /polymer generate-pack command. Resource pack will be located in your server folder as polymer-resourcepack.zip.