Add loot tables
This commit is contained in:
parent
3487a054cc
commit
2395fa83ff
@ -6,7 +6,7 @@ minecraft_version=1.21.1
|
||||
yarn_mappings=1.21.1+build.3
|
||||
loader_version=0.16.0
|
||||
# Mod Properties
|
||||
mod_version=1.9.5
|
||||
mod_version=1.9.6
|
||||
maven_group=systems.brn
|
||||
archives_base_name=plasticgun
|
||||
# Dependencies
|
||||
|
@ -14,6 +14,7 @@ import net.minecraft.entity.EntityType;
|
||||
import net.minecraft.entity.SpawnGroup;
|
||||
import net.minecraft.entity.effect.StatusEffect;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.loot.LootTables;
|
||||
import net.minecraft.registry.Registries;
|
||||
import net.minecraft.registry.Registry;
|
||||
import net.minecraft.registry.entry.RegistryEntry;
|
||||
@ -57,6 +58,8 @@ public class PlasticGun implements ModInitializer {
|
||||
|
||||
public static final ArrayList<CraftingItem> craftingItems = new ArrayList<>();
|
||||
|
||||
public static final ArrayList<WeaponArmor> weaponArmors = new ArrayList<>();
|
||||
|
||||
public static Map<Item, Gun> itemGunMap;
|
||||
public static Map<Item, BulletItem> itemBulletItemMap;
|
||||
public static Map<Item, GrenadeItem> itemGrenadeItemMap;
|
||||
@ -74,8 +77,6 @@ public class PlasticGun implements ModInitializer {
|
||||
EntityType.Builder.<GrenadeEntity>create(GrenadeEntity::new, SpawnGroup.MISC).build()
|
||||
);
|
||||
|
||||
public static final ArrayList<WeaponArmor> weaponArmors = new ArrayList<>();
|
||||
|
||||
public static final EntityType<ShurikenEntity> SHURIKEN_ENTITY_TYPE = Registry.register(
|
||||
Registries.ENTITY_TYPE,
|
||||
id("shuriken"),
|
||||
@ -183,6 +184,129 @@ public class PlasticGun implements ModInitializer {
|
||||
craftingItems.add(new CraftingItem("titanium_alloy"));
|
||||
craftingItems.add(new CraftingItem("trigger_mechanism"));
|
||||
|
||||
|
||||
for (Item craftingItem : craftingItems) {
|
||||
addItemToLootTable(LootTables.ABANDONED_MINESHAFT_CHEST, craftingItem, 2);
|
||||
addItemToLootTable(LootTables.ANCIENT_CITY_CHEST, craftingItem, 6);
|
||||
addItemToLootTable(LootTables.ANCIENT_CITY_ICE_BOX_CHEST, craftingItem, 6);
|
||||
addItemToLootTable(LootTables.END_CITY_TREASURE_CHEST, craftingItem, 5);
|
||||
addItemToLootTable(LootTables.BASTION_BRIDGE_CHEST, craftingItem, 4);
|
||||
addItemToLootTable(LootTables.BASTION_HOGLIN_STABLE_CHEST, craftingItem, 4);
|
||||
addItemToLootTable(LootTables.BASTION_OTHER_CHEST, craftingItem, 4);
|
||||
addItemToLootTable(LootTables.BASTION_TREASURE_CHEST, craftingItem, 4);
|
||||
addItemToLootTable(LootTables.BURIED_TREASURE_CHEST, craftingItem, 2);
|
||||
addItemToLootTable(LootTables.HERO_OF_THE_VILLAGE_ARMORER_GIFT_GAMEPLAY, craftingItem, 1);
|
||||
addItemToLootTable(LootTables.HERO_OF_THE_VILLAGE_WEAPONSMITH_GIFT_GAMEPLAY, craftingItem, 2);
|
||||
addItemToLootTable(LootTables.VILLAGE_WEAPONSMITH_CHEST, craftingItem, 10);
|
||||
addItemToLootTable(LootTables.VILLAGE_ARMORER_CHEST, craftingItem, 4);
|
||||
addItemToLootTable(LootTables.DESERT_PYRAMID_CHEST, craftingItem, 4);
|
||||
addItemToLootTable(LootTables.WOODLAND_MANSION_CHEST, craftingItem, 4);
|
||||
addItemToLootTable(LootTables.TRIAL_CHAMBERS_REWARD_CHEST, craftingItem, 4);
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
for (Item shuriken : shurikens) {
|
||||
float weightCoeff = (float) i / shurikens.size();
|
||||
addItemToLootTable(LootTables.ABANDONED_MINESHAFT_CHEST, shuriken, getAfterWeight(weightCoeff, 2));
|
||||
addItemToLootTable(LootTables.ANCIENT_CITY_CHEST, shuriken, getAfterWeight(weightCoeff, 6));
|
||||
addItemToLootTable(LootTables.ANCIENT_CITY_ICE_BOX_CHEST, shuriken, getAfterWeight(weightCoeff, 6));
|
||||
addItemToLootTable(LootTables.END_CITY_TREASURE_CHEST, shuriken, getAfterWeight(weightCoeff, 5));
|
||||
addItemToLootTable(LootTables.BASTION_BRIDGE_CHEST, shuriken, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.BASTION_HOGLIN_STABLE_CHEST, shuriken, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.BASTION_OTHER_CHEST, shuriken, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.BASTION_TREASURE_CHEST, shuriken, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.BURIED_TREASURE_CHEST, shuriken, getAfterWeight(weightCoeff, 2));
|
||||
addItemToLootTable(LootTables.HERO_OF_THE_VILLAGE_WEAPONSMITH_GIFT_GAMEPLAY, shuriken, getAfterWeight(weightCoeff, 2));
|
||||
addItemToLootTable(LootTables.VILLAGE_WEAPONSMITH_CHEST, shuriken, getAfterWeight(weightCoeff, 10));
|
||||
addItemToLootTable(LootTables.VILLAGE_ARMORER_CHEST, shuriken, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.DESERT_PYRAMID_CHEST, shuriken, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.WOODLAND_MANSION_CHEST, shuriken, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.TRIAL_CHAMBERS_REWARD_CHEST, shuriken, getAfterWeight(weightCoeff, 4));
|
||||
i++;
|
||||
}
|
||||
|
||||
for (Item weaponArmor : weaponArmors) {
|
||||
addItemToLootTable(LootTables.ABANDONED_MINESHAFT_CHEST, weaponArmor, 4);
|
||||
addItemToLootTable(LootTables.ANCIENT_CITY_CHEST, weaponArmor, 12);
|
||||
addItemToLootTable(LootTables.ANCIENT_CITY_ICE_BOX_CHEST, weaponArmor, 12);
|
||||
addItemToLootTable(LootTables.END_CITY_TREASURE_CHEST, weaponArmor, 10);
|
||||
addItemToLootTable(LootTables.BASTION_BRIDGE_CHEST, weaponArmor, 8);
|
||||
addItemToLootTable(LootTables.BASTION_HOGLIN_STABLE_CHEST, weaponArmor, 2);
|
||||
addItemToLootTable(LootTables.BASTION_OTHER_CHEST, weaponArmor, 4);
|
||||
addItemToLootTable(LootTables.BASTION_TREASURE_CHEST, weaponArmor, 4);
|
||||
addItemToLootTable(LootTables.BURIED_TREASURE_CHEST, weaponArmor, 2);
|
||||
addItemToLootTable(LootTables.HERO_OF_THE_VILLAGE_ARMORER_GIFT_GAMEPLAY, weaponArmor, 10);
|
||||
addItemToLootTable(LootTables.HERO_OF_THE_VILLAGE_WEAPONSMITH_GIFT_GAMEPLAY, weaponArmor, 2);
|
||||
addItemToLootTable(LootTables.VILLAGE_WEAPONSMITH_CHEST, weaponArmor, 10);
|
||||
addItemToLootTable(LootTables.VILLAGE_ARMORER_CHEST, weaponArmor, 20);
|
||||
addItemToLootTable(LootTables.DESERT_PYRAMID_CHEST, weaponArmor, 4);
|
||||
addItemToLootTable(LootTables.WOODLAND_MANSION_CHEST, weaponArmor, 4);
|
||||
addItemToLootTable(LootTables.TRIAL_CHAMBERS_REWARD_CHEST, weaponArmor, 4);
|
||||
}
|
||||
|
||||
i = 0;
|
||||
for (Item gun : guns) {
|
||||
float weightCoeff = (float) i / guns.size();
|
||||
weightCoeff *= 5;
|
||||
addItemToLootTable(LootTables.ABANDONED_MINESHAFT_CHEST, gun, getAfterWeight(weightCoeff, 2));
|
||||
addItemToLootTable(LootTables.ANCIENT_CITY_CHEST, gun, getAfterWeight(weightCoeff, 6));
|
||||
addItemToLootTable(LootTables.ANCIENT_CITY_ICE_BOX_CHEST, gun, getAfterWeight(weightCoeff, 6));
|
||||
addItemToLootTable(LootTables.END_CITY_TREASURE_CHEST, gun, getAfterWeight(weightCoeff, 5));
|
||||
addItemToLootTable(LootTables.BASTION_BRIDGE_CHEST, gun, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.BASTION_HOGLIN_STABLE_CHEST, gun, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.BASTION_OTHER_CHEST, gun, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.BASTION_TREASURE_CHEST, gun, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.BURIED_TREASURE_CHEST, gun, getAfterWeight(weightCoeff, 2));
|
||||
addItemToLootTable(LootTables.HERO_OF_THE_VILLAGE_WEAPONSMITH_GIFT_GAMEPLAY, gun, getAfterWeight(weightCoeff, 2));
|
||||
addItemToLootTable(LootTables.VILLAGE_WEAPONSMITH_CHEST, gun, getAfterWeight(weightCoeff, 10));
|
||||
addItemToLootTable(LootTables.DESERT_PYRAMID_CHEST, gun, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.WOODLAND_MANSION_CHEST, gun, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.TRIAL_CHAMBERS_REWARD_CHEST, gun, getAfterWeight(weightCoeff, 4));
|
||||
i++;
|
||||
}
|
||||
|
||||
i = 0;
|
||||
for (Item grenade : grenades) {
|
||||
float weightCoeff = (float) i / grenades.size();
|
||||
weightCoeff *= 6;
|
||||
addItemToLootTable(LootTables.ABANDONED_MINESHAFT_CHEST, grenade, getAfterWeight(weightCoeff, 2));
|
||||
addItemToLootTable(LootTables.ANCIENT_CITY_CHEST, grenade, getAfterWeight(weightCoeff, 6));
|
||||
addItemToLootTable(LootTables.ANCIENT_CITY_ICE_BOX_CHEST, grenade, getAfterWeight(weightCoeff, 6));
|
||||
addItemToLootTable(LootTables.END_CITY_TREASURE_CHEST, grenade, getAfterWeight(weightCoeff, 5));
|
||||
addItemToLootTable(LootTables.BASTION_BRIDGE_CHEST, grenade, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.BASTION_HOGLIN_STABLE_CHEST, grenade, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.BASTION_OTHER_CHEST, grenade, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.BASTION_TREASURE_CHEST, grenade, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.BURIED_TREASURE_CHEST, grenade, getAfterWeight(weightCoeff, 2));
|
||||
addItemToLootTable(LootTables.HERO_OF_THE_VILLAGE_WEAPONSMITH_GIFT_GAMEPLAY, grenade, getAfterWeight(weightCoeff, 2));
|
||||
addItemToLootTable(LootTables.VILLAGE_WEAPONSMITH_CHEST, grenade, getAfterWeight(weightCoeff, 10));
|
||||
addItemToLootTable(LootTables.DESERT_PYRAMID_CHEST, grenade, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.WOODLAND_MANSION_CHEST, grenade, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.TRIAL_CHAMBERS_REWARD_CHEST, grenade, getAfterWeight(weightCoeff, 4));
|
||||
i++;
|
||||
}
|
||||
|
||||
i = 0;
|
||||
for (Item bullet : bullets) {
|
||||
float weightCoeff = (float) i / bullets.size();
|
||||
weightCoeff *= 8;
|
||||
addItemToLootTable(LootTables.ABANDONED_MINESHAFT_CHEST, bullet, getAfterWeight(weightCoeff, 2));
|
||||
addItemToLootTable(LootTables.ANCIENT_CITY_CHEST, bullet, getAfterWeight(weightCoeff, 6));
|
||||
addItemToLootTable(LootTables.ANCIENT_CITY_ICE_BOX_CHEST, bullet, getAfterWeight(weightCoeff, 6));
|
||||
addItemToLootTable(LootTables.END_CITY_TREASURE_CHEST, bullet, getAfterWeight(weightCoeff, 5));
|
||||
addItemToLootTable(LootTables.BASTION_BRIDGE_CHEST, bullet, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.BASTION_HOGLIN_STABLE_CHEST, bullet, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.BASTION_OTHER_CHEST, bullet, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.BASTION_TREASURE_CHEST, bullet, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.BURIED_TREASURE_CHEST, bullet, getAfterWeight(weightCoeff, 2));
|
||||
addItemToLootTable(LootTables.HERO_OF_THE_VILLAGE_WEAPONSMITH_GIFT_GAMEPLAY, bullet, getAfterWeight(weightCoeff, 2));
|
||||
addItemToLootTable(LootTables.VILLAGE_WEAPONSMITH_CHEST, bullet, getAfterWeight(weightCoeff, 10));
|
||||
addItemToLootTable(LootTables.DESERT_PYRAMID_CHEST, bullet, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.WOODLAND_MANSION_CHEST, bullet, getAfterWeight(weightCoeff, 4));
|
||||
addItemToLootTable(LootTables.TRIAL_CHAMBERS_REWARD_CHEST, bullet, getAfterWeight(weightCoeff, 4));
|
||||
i++;
|
||||
}
|
||||
|
||||
itemGunMap = generateItemMap(guns);
|
||||
itemBulletItemMap = generateItemMap(bullets);
|
||||
itemGrenadeItemMap = generateItemMap(grenades);
|
||||
@ -227,4 +351,4 @@ public class PlasticGun implements ModInitializer {
|
||||
PolymerResourcePackUtils.markAsRequired();
|
||||
logger.info("Guns are loaded");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import dev.emi.trinkets.api.TrinketComponent;
|
||||
import dev.emi.trinkets.api.TrinketInventory;
|
||||
import dev.emi.trinkets.api.TrinketsApi;
|
||||
import eu.pb4.polymer.virtualentity.api.tracker.DisplayTrackedData;
|
||||
import net.fabricmc.fabric.api.loot.v3.LootTableEvents;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.client.render.model.json.ModelTransformationMode;
|
||||
@ -17,8 +18,11 @@ import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.Inventory;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.loot.LootTable;
|
||||
import net.minecraft.loot.entry.ItemEntry;
|
||||
import net.minecraft.particle.BlockStateParticleEffect;
|
||||
import net.minecraft.particle.ParticleTypes;
|
||||
import net.minecraft.registry.RegistryKey;
|
||||
import net.minecraft.server.network.ServerPlayerEntity;
|
||||
import net.minecraft.server.world.ServerWorld;
|
||||
import net.minecraft.sound.SoundEvents;
|
||||
@ -300,4 +304,14 @@ public class Util {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public static void addItemToLootTable(RegistryKey<LootTable> tableId, Item item, Integer weight) {
|
||||
LootTableEvents.MODIFY.register((key, tableBuilder, source, wrapperLookup) -> {
|
||||
if (source.isBuiltin() && tableId.equals(key)) {
|
||||
tableBuilder.modifyPools(poolBuilder -> poolBuilder.with(ItemEntry.builder(item).weight(weight)));
|
||||
}
|
||||
});
|
||||
}
|
||||
public static int getAfterWeight(float coeff, int weight) {
|
||||
return (int) Math.ceil(coeff * weight);
|
||||
}
|
||||
}
|
@ -1,6 +1,263 @@
|
||||
{
|
||||
"parent": "minecraft:item/handheld",
|
||||
"textures": {
|
||||
"layer0": "plasticgun:item/ak_47"
|
||||
}
|
||||
}
|
||||
"texture_size": [4, 4],
|
||||
"textures": {
|
||||
"1": "plasticgun:item/ak_47_body",
|
||||
"3": "plasticgun:item/ak_47_magazine_1",
|
||||
"4": "plasticgun:item/ak_47_magazine_2",
|
||||
"5": "plasticgun:item/ak_47_magazine_3",
|
||||
"particle": "plasticgun:item/ak_47_body"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "barrel",
|
||||
"from": [7, 9, -16],
|
||||
"to": [8, 10, -5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [7.5, 9.5, -9.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"east": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"south": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"west": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"up": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"down": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "sight part 1",
|
||||
"from": [7.35, 9.55, -16],
|
||||
"to": [7.6, 10.3, -14],
|
||||
"rotation": {"angle": -22.5, "axis": "x", "origin": [7.35, 10, -15]},
|
||||
"faces": {
|
||||
"north": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"east": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"south": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"west": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"up": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"down": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "sight part 2",
|
||||
"from": [7, 11, 12],
|
||||
"to": [8, 11.5, 14],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [7, 10, 12]},
|
||||
"faces": {
|
||||
"north": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"east": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"south": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"west": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"up": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"down": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "sight part 3",
|
||||
"from": [7.25, 10, 11.75],
|
||||
"to": [7.75, 11, 13.75],
|
||||
"rotation": {"angle": -22.5, "axis": "x", "origin": [6, 11, 12]},
|
||||
"faces": {
|
||||
"north": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"east": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"south": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"west": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"up": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"down": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "back 1",
|
||||
"from": [6, 6, 22],
|
||||
"to": [9, 8, 31],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 5, 0]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 0, 0], "texture": "#1"},
|
||||
"east": {"uv": [0, 0, 0, 0], "texture": "#1"},
|
||||
"south": {"uv": [0, 0, 0, 0], "texture": "#1"},
|
||||
"west": {"uv": [0, 0, 0, 0], "texture": "#1"},
|
||||
"up": {"uv": [0, 0, 0, 0], "texture": "#1"},
|
||||
"down": {"uv": [0, 0, 0, 0], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "back 2",
|
||||
"from": [6, 3.5, 24],
|
||||
"to": [9, 6.5, 31],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [-23, 5, 0]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 0, 0], "texture": "#1"},
|
||||
"east": {"uv": [0, 0, 0, 0], "texture": "#1"},
|
||||
"south": {"uv": [0, 0, 0, 0], "texture": "#1"},
|
||||
"west": {"uv": [0, 0, 0, 0], "texture": "#1"},
|
||||
"up": {"uv": [0, 0, 0, 0], "texture": "#1"},
|
||||
"down": {"uv": [0, 0, 0, 0], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "back 3",
|
||||
"from": [6.01, 4, 23],
|
||||
"to": [8.99, 11, 25],
|
||||
"rotation": {"angle": -45, "axis": "x", "origin": [7.5, 5, 24]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 0, 0], "texture": "#1"},
|
||||
"east": {"uv": [0, 0, 0, 0], "texture": "#1"},
|
||||
"south": {"uv": [0, 0, 0, 0], "texture": "#1"},
|
||||
"west": {"uv": [0, 0, 0, 0], "texture": "#1"},
|
||||
"up": {"uv": [0, 0, 0, 0], "texture": "#1"},
|
||||
"down": {"uv": [0, 0, 0, 0], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "body",
|
||||
"from": [6, 8, -5],
|
||||
"to": [9, 11, 31],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 5, 0]},
|
||||
"faces": {
|
||||
"north": {"uv": [2.66667, 2.28572, 4.00001, 3.42857], "texture": "#1"},
|
||||
"east": {"uv": [0, 0, 16.00002, 1.1428575], "texture": "#1"},
|
||||
"south": {"uv": [2.66667, 3.42857, 4.00001, 4.57142], "texture": "#1"},
|
||||
"west": {"uv": [0, 1.1428575, 16.00002, 2.28572], "texture": "#1"},
|
||||
"up": {"uv": [1.333335, 16.000005, 0, 2.28572], "texture": "#1"},
|
||||
"down": {"uv": [2.66667, 2.28572, 1.333335, 16.000005], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "magazine part 1",
|
||||
"from": [6.5, 4.85, 4],
|
||||
"to": [8.5, 8, 7],
|
||||
"faces": {
|
||||
"north": {"uv": [0, 8, 4, 14.5], "texture": "#3"},
|
||||
"east": {"uv": [0, 0, 6, 6.5], "texture": "#3"},
|
||||
"south": {"uv": [4, 8, 8, 14.5], "texture": "#3"},
|
||||
"west": {"uv": [6, 0, 12, 6.5], "texture": "#3"},
|
||||
"up": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"down": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "magazine part 2",
|
||||
"from": [6.5, 3, 3.25],
|
||||
"to": [8.5, 6, 6.425],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [6, 4, 4]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 6, 2, 9], "texture": "#4"},
|
||||
"east": {"uv": [0, 0, 3.25, 3], "texture": "#4"},
|
||||
"south": {"uv": [6, 0, 8, 3], "texture": "#4"},
|
||||
"west": {"uv": [0, 3, 3.25, 6], "texture": "#4"},
|
||||
"up": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"down": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "magazine part 3",
|
||||
"from": [6.5, 1, 1.7],
|
||||
"to": [8.5, 5, 4.55],
|
||||
"rotation": {"angle": 45, "axis": "x", "origin": [6, 2, 2]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 8, 4, 16], "texture": "#5"},
|
||||
"east": {"uv": [0, 0, 5.5, 8], "texture": "#5"},
|
||||
"south": {"uv": [4, 8, 8, 16], "texture": "#5"},
|
||||
"west": {"uv": [6, 0, 11.5, 8], "texture": "#5"},
|
||||
"up": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"down": {"uv": [16, 0, 12, 5.5], "texture": "#5"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "clutch",
|
||||
"from": [4, 9.5, 1],
|
||||
"to": [6, 10.5, 2],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [4, 9, 1]},
|
||||
"faces": {
|
||||
"north": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"east": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"south": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"west": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"up": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"down": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "handle part 1",
|
||||
"from": [6.5, 2, 14],
|
||||
"to": [8.5, 9, 16],
|
||||
"rotation": {"angle": -22.5, "axis": "x", "origin": [6.5, 6, 13]},
|
||||
"faces": {
|
||||
"north": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"east": {"uv": [4, 2.29, 6, 7.8], "texture": "#1"},
|
||||
"south": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"west": {"uv": [6, 2.29, 4, 7.8], "texture": "#1"},
|
||||
"up": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"down": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "trigger part 1",
|
||||
"from": [7, 7, 13],
|
||||
"to": [8, 9, 13.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [6, 7, 12]},
|
||||
"faces": {
|
||||
"north": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"east": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"south": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"west": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"up": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"down": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "trigger part 2",
|
||||
"from": [7, 6.5, 12.5],
|
||||
"to": [8, 7.5, 13],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [6, 6, 12]},
|
||||
"faces": {
|
||||
"north": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"east": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"south": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"west": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"up": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"down": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "trigger cover part 3",
|
||||
"from": [7, 5.5, 12],
|
||||
"to": [8, 6, 15],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [6, 5, 12]},
|
||||
"faces": {
|
||||
"north": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"east": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"south": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"west": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"up": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"down": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "trigger cover part 4",
|
||||
"from": [7, 5, 11.5],
|
||||
"to": [8, 9, 12],
|
||||
"rotation": {"angle": -22.5, "axis": "x", "origin": [7, 6, 11]},
|
||||
"faces": {
|
||||
"north": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"east": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"south": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"west": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"up": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"},
|
||||
"down": {"uv": [2.7, 1.4, 2.7, 1.4], "texture": "#1"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"translation": [0, 0, -0.75],
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
},
|
||||
"firstperson_righthand": {
|
||||
"rotation": [2, -10, 0],
|
||||
"translation": [-0.5, 2.25, -0.5]
|
||||
},
|
||||
"firstperson_lefthand": {
|
||||
"rotation": [4, 0, 0],
|
||||
"translation": [-9.75, 3.5, 0]
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 559 B |
Binary file not shown.
After Width: | Height: | Size: 255 B |
Binary file not shown.
After Width: | Height: | Size: 328 B |
Binary file not shown.
After Width: | Height: | Size: 298 B |
Loading…
Reference in New Issue
Block a user