First Machine Age's Mods (Combined repo.)
リビジョン | 2a8c2860be405f484196a20090f6d4631d897f91 (tree) |
---|---|
日時 | 2020-03-24 10:45:07 |
作者 | melchior <melchior@user...> |
コミッター | melchior |
Initial version: Metal Recovery Anvil
@@ -0,0 +1,84 @@ | ||
1 | +<?xml version="1.0" encoding="utf-8"?> | |
2 | +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |
3 | + <PropertyGroup> | |
4 | + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | |
5 | + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | |
6 | + <ProjectGuid>{3EC9A581-655C-4F68-898C-4E773C292082}</ProjectGuid> | |
7 | + <OutputType>Library</OutputType> | |
8 | + <RootNamespace>AnvilMetalRecovery</RootNamespace> | |
9 | + <AssemblyName>AnvilMetalRecovery</AssemblyName> | |
10 | + <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> | |
11 | + </PropertyGroup> | |
12 | + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | |
13 | + <DebugSymbols>true</DebugSymbols> | |
14 | + <DebugType>full</DebugType> | |
15 | + <Optimize>false</Optimize> | |
16 | + <OutputPath>bin\Debug</OutputPath> | |
17 | + <DefineConstants>DEBUG;</DefineConstants> | |
18 | + <ErrorReport>prompt</ErrorReport> | |
19 | + <WarningLevel>4</WarningLevel> | |
20 | + <ConsolePause>false</ConsolePause> | |
21 | + <CustomCommands> | |
22 | + <CustomCommands> | |
23 | + <Command type="AfterBuild" command="7z -tzip a ${ProjectName}_${ProjectConfig}.zip" workingdir="${TargetDir}" /> | |
24 | + <Command type="AfterClean" command="rm -f *.zip" workingdir="${TargetDir}" /> | |
25 | + </CustomCommands> | |
26 | + </CustomCommands> | |
27 | + </PropertyGroup> | |
28 | + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | |
29 | + <Optimize>true</Optimize> | |
30 | + <OutputPath>bin\Release</OutputPath> | |
31 | + <ErrorReport>prompt</ErrorReport> | |
32 | + <WarningLevel>4</WarningLevel> | |
33 | + <ConsolePause>false</ConsolePause> | |
34 | + </PropertyGroup> | |
35 | + <ItemGroup> | |
36 | + <Reference Include="System" /> | |
37 | + <Reference Include="VintagestoryAPI"> | |
38 | + <HintPath>vs_libs\VintagestoryAPI.dll</HintPath> | |
39 | + <Private>False</Private> | |
40 | + </Reference> | |
41 | + <Reference Include="VintagestoryLib"> | |
42 | + <HintPath>vs_libs\VintagestoryLib.dll</HintPath> | |
43 | + <Private>False</Private> | |
44 | + </Reference> | |
45 | + <Reference Include="VSCreativeMod"> | |
46 | + <HintPath>vs_libs\VSCreativeMod.dll</HintPath> | |
47 | + <Private>False</Private> | |
48 | + </Reference> | |
49 | + <Reference Include="VSEssentials"> | |
50 | + <HintPath>vs_libs\VSEssentials.dll</HintPath> | |
51 | + <Private>False</Private> | |
52 | + </Reference> | |
53 | + <Reference Include="VSSurvivalMod"> | |
54 | + <HintPath>vs_libs\VSSurvivalMod.dll</HintPath> | |
55 | + <Private>False</Private> | |
56 | + </Reference> | |
57 | + </ItemGroup> | |
58 | + <ItemGroup> | |
59 | + <Compile Include="MetalRecoverySystem.cs" /> | |
60 | + <Compile Include="Properties\AssemblyInfo.cs" /> | |
61 | + <Compile Include="MetalRecovery_BlockEntityAnvil.cs" /> | |
62 | + </ItemGroup> | |
63 | + <ItemGroup> | |
64 | + <None Include="modinfo.json"> | |
65 | + <CopyToOutputDirectory>Always</CopyToOutputDirectory> | |
66 | + </None> | |
67 | + <None Include="assets\fma\itemtypes\shavings\metal_shavings.json"> | |
68 | + <CopyToOutputDirectory>Always</CopyToOutputDirectory> | |
69 | + </None> | |
70 | + <None Include="assets\fma\shapes\item\shavings\metal_shavings.json"> | |
71 | + <CopyToOutputDirectory>Always</CopyToOutputDirectory> | |
72 | + </None> | |
73 | + </ItemGroup> | |
74 | + <ItemGroup> | |
75 | + <Folder Include="assets\" /> | |
76 | + <Folder Include="assets\fma\" /> | |
77 | + <Folder Include="assets\fma\shapes\" /> | |
78 | + <Folder Include="assets\fma\itemtypes\" /> | |
79 | + <Folder Include="assets\fma\itemtypes\shavings\" /> | |
80 | + <Folder Include="assets\fma\shapes\item\" /> | |
81 | + <Folder Include="assets\fma\shapes\item\shavings\" /> | |
82 | + </ItemGroup> | |
83 | + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> | |
84 | +</Project> | |
\ No newline at end of file |
@@ -0,0 +1,74 @@ | ||
1 | +using System; | |
2 | + | |
3 | +using Vintagestory.API.Common; | |
4 | +using Vintagestory.API.Server; | |
5 | +using Vintagestory.Common; | |
6 | +using Vintagestory.Server; | |
7 | + | |
8 | +namespace AnvilMetalRecovery | |
9 | +{ | |
10 | + public class MetalRecoverySystem : ModSystem | |
11 | + { | |
12 | + internal const string anvilKey = @"Anvil"; | |
13 | + | |
14 | + private ICoreAPI CoreAPI; | |
15 | + private ICoreServerAPI ServerAPI; | |
16 | + private ServerCoreAPI ServerCore { get; set; } | |
17 | + | |
18 | + public override bool AllowRuntimeReload { | |
19 | + get { return false; } | |
20 | + } | |
21 | + | |
22 | + public override bool ShouldLoad(EnumAppSide forSide) | |
23 | + { | |
24 | + return forSide.IsServer( ); | |
25 | + } | |
26 | + | |
27 | + public override double ExecuteOrder( ) | |
28 | + { | |
29 | + return 0.11d; | |
30 | + } | |
31 | + | |
32 | + public override void Start(ICoreAPI api) | |
33 | + { | |
34 | + base.Start(api); | |
35 | + this.CoreAPI = api; | |
36 | + } | |
37 | + | |
38 | + public override void StartServerSide(ICoreServerAPI api) | |
39 | + { | |
40 | + base.StartServerSide(api); | |
41 | + | |
42 | + this.ServerAPI = api; | |
43 | + | |
44 | + | |
45 | + if (api is ServerCoreAPI) { | |
46 | + ServerCore = api as ServerCoreAPI; | |
47 | + } | |
48 | + else { | |
49 | + Mod.Logger.Error("Cannot access 'ServerCoreAPI' class: API (implimentation) has changed, Contact Developer!"); | |
50 | + return; | |
51 | + } | |
52 | + //ServerAPI.ClassRegistry.GetBlockEntityClass | |
53 | + //ServerAPI.RegisterBlockEntityClass(anvilKey, typeof(MetalRecovery_BlockEntityAnvil)); | |
54 | + | |
55 | + ServerCore.ClassRegistryNative.ReplaceBlockEntityType(anvilKey, typeof(MetalRecovery_BlockEntityAnvil)); | |
56 | + | |
57 | + Mod.Logger.VerboseDebug("Anvil Metal Recovery - should be installed..."); | |
58 | + } | |
59 | + } | |
60 | + | |
61 | + | |
62 | + internal static class Helpers | |
63 | + { | |
64 | + internal static void ReplaceBlockEntityType(this ClassRegistry registry, string className, Type blockentity) | |
65 | + { | |
66 | + if (registry.blockEntityClassnameToTypeMapping.ContainsKey(className)) { | |
67 | + //replace it | |
68 | + registry.blockEntityClassnameToTypeMapping[className] = blockentity; | |
69 | + registry.blockEntityTypeToClassnameMapping[blockentity] = className; | |
70 | + } | |
71 | + } | |
72 | + } | |
73 | +} | |
74 | + |
@@ -0,0 +1,102 @@ | ||
1 | +using System; | |
2 | +using System.IO; | |
3 | + | |
4 | +using Vintagestory.API.Common; | |
5 | +using Vintagestory.API.Config; | |
6 | +using Vintagestory.API.Datastructures; | |
7 | +using Vintagestory.API.MathTools; | |
8 | +using Vintagestory.GameContent; | |
9 | + | |
10 | +namespace AnvilMetalRecovery | |
11 | +{ | |
12 | + public class MetalRecovery_BlockEntityAnvil : BlockEntityAnvil | |
13 | + { | |
14 | + private uint SplitCount; | |
15 | + | |
16 | + | |
17 | + private ILogger Logger { get; set; } | |
18 | + | |
19 | + public static AssetLocation MetalShavingsCode { | |
20 | + get | |
21 | + { | |
22 | + return new AssetLocation(@"fma", @"metal_shaving"); | |
23 | + } | |
24 | + } | |
25 | + | |
26 | + public override void Initialize(ICoreAPI api) | |
27 | + { | |
28 | + base.Initialize(api); | |
29 | + Logger = api.World.Logger; | |
30 | +#if DEBUG | |
31 | + Logger.VerboseDebug("Metal Recovery - Initialize"); | |
32 | +#endif | |
33 | + } | |
34 | + | |
35 | + public override void FromTreeAtributes(ITreeAttribute tree, IWorldAccessor worldForResolving) | |
36 | + { | |
37 | + base.FromTreeAtributes(tree, worldForResolving); | |
38 | + Logger = worldForResolving.Logger; | |
39 | +#if DEBUG | |
40 | + Logger.VerboseDebug("Metal Recovery - FromTreeAtributes"); | |
41 | +#endif | |
42 | + //Get SplitCount | |
43 | + } | |
44 | + | |
45 | + public override void ToTreeAttributes(ITreeAttribute tree) | |
46 | + { | |
47 | + base.ToTreeAttributes(tree); | |
48 | +#if DEBUG | |
49 | + Logger.VerboseDebug("Metal Recovery - ToTreeAttributes"); | |
50 | +#endif | |
51 | + //Set SplitCount | |
52 | + } | |
53 | + | |
54 | + public override void OnSplit(Vec3i voxelPos) | |
55 | + { | |
56 | + if (Voxels[voxelPos.X, voxelPos.Y, voxelPos.Z] == ( byte )EnumVoxelMaterial.Metal) { | |
57 | +#if DEBUG | |
58 | + Logger.VerboseDebug("Split some {0} @{1}, Total:{2}", this.BaseMaterial.Collectible.LastCodePart( ), voxelPos, SplitCount); | |
59 | +#endif | |
60 | + SplitCount++; | |
61 | + } | |
62 | + | |
63 | + base.OnSplit(voxelPos); | |
64 | + | |
65 | + } | |
66 | + | |
67 | + //Would be great if this returned a bool! | |
68 | + public override void CheckIfFinished(IPlayer byPlayer) | |
69 | + { | |
70 | + base.CheckIfFinished(byPlayer); | |
71 | + // base.MatchesRecipe( ) -- Private; argh | |
72 | + /* | |
73 | + this.Voxels = new byte[16, 6, 16]; | |
74 | + this.workItemStack = null; | |
75 | + this.selectedRecipeId = -1; | |
76 | + | |
77 | + base.MarkDirty (false); | |
78 | + */ | |
79 | + | |
80 | + if (SplitCount > 0 && this.WorkItemStack == null && this.SelectedRecipe == null) { | |
81 | + int metalShavings = ( int )(SplitCount / 5); | |
82 | + | |
83 | + if (metalShavings > 0) | |
84 | + { | |
85 | + #if DEBUG | |
86 | + Logger.VerboseDebug("RecoveryAnvil: Smithing done - recover: {0} shavings of {1}", metalShavings, this.BaseMaterial.Collectible.LastCodePart( )); | |
87 | + #endif | |
88 | + | |
89 | + Item metalShavingsItem = Api.World.GetItem(MetalShavingsCode.WithPathAppendix("-" + this.BaseMaterial.Collectible.LastCodePart( ))); | |
90 | + ItemStack metalShavingsStack = new ItemStack(metalShavingsItem, ( int )(SplitCount / 5)); | |
91 | + | |
92 | + if (byPlayer != null) { | |
93 | + byPlayer.InventoryManager.TryGiveItemstack(metalShavingsStack, false); | |
94 | + //Api.World.SpawnItemEntity(metalShavingsStack, Pos.ToVec3d( ).Add(0.5, 0.5, 0.5)); | |
95 | + } | |
96 | + } | |
97 | + } | |
98 | + | |
99 | + | |
100 | + } | |
101 | + } | |
102 | +} | |
\ No newline at end of file |
@@ -0,0 +1,27 @@ | ||
1 | +using System.Reflection; | |
2 | +using System.Runtime.CompilerServices; | |
3 | + | |
4 | +// Information about this assembly is defined by the following attributes. | |
5 | +// Change them to the values specific to your project. | |
6 | + | |
7 | +[assembly: AssemblyTitle("AnvilMetalRecovery")] | |
8 | +[assembly: AssemblyDescription("")] | |
9 | +[assembly: AssemblyConfiguration("")] | |
10 | +[assembly: AssemblyCompany("")] | |
11 | +[assembly: AssemblyProduct("")] | |
12 | +[assembly: AssemblyCopyright("librarian")] | |
13 | +[assembly: AssemblyTrademark("")] | |
14 | +[assembly: AssemblyCulture("")] | |
15 | + | |
16 | +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". | |
17 | +// The form "{Major}.{Minor}.*" will automatically update the build and revision, | |
18 | +// and "{Major}.{Minor}.{Build}.*" will update just the revision. | |
19 | + | |
20 | +[assembly: AssemblyVersion("1.0.*")] | |
21 | + | |
22 | +// The following attributes are used to specify the signing key for the assembly, | |
23 | +// if desired. See the Mono documentation for more information about signing. | |
24 | + | |
25 | +//[assembly: AssemblyDelaySign(false)] | |
26 | +//[assembly: AssemblyKeyFile("")] | |
27 | + |
@@ -0,0 +1,167 @@ | ||
1 | +{ | |
2 | + code: "metal_shaving", | |
3 | + | |
4 | + maxstacksize: 128, | |
5 | + attributes: { | |
6 | + handbook: { | |
7 | + excludeByType: { | |
8 | + "*-chromium": true, | |
9 | + "*-platinum": true, | |
10 | + "*-titanium": true, | |
11 | + "*-rhodium": true, | |
12 | + "*-stainlessteel": true, | |
13 | + "*-uranium": true | |
14 | + } | |
15 | + } | |
16 | + }, | |
17 | + variantgroups: [ | |
18 | + { code: "metal", loadFromProperties: "game:block/metal" }, | |
19 | + ], | |
20 | + storageFlags: 5, | |
21 | + | |
22 | + shape: { base: "fma:item/shavings/metal_shavings" }, | |
23 | + textures: { | |
24 | + "metal": { base: "game:block/metal/ingot/{metal}" }, | |
25 | + }, | |
26 | + creativeinventory: { "general": ["*"], "items": ["*"] }, | |
27 | + materialDensityByType: { | |
28 | + "*-copper": 8960, | |
29 | + "*-brass": 8500, | |
30 | + "*-tinbronze": 7600, | |
31 | + "*-bismuthbronze": 7900, | |
32 | + "*-blackbronze": 9000, | |
33 | + "*-iron": 7870, | |
34 | + "*-gold": 19300, | |
35 | + "*-lead": 11300, | |
36 | + "*-tin": 7260, | |
37 | + "*-chromium": 7150, | |
38 | + "*-platinum": 21500, | |
39 | + "*-titanium": 4510, | |
40 | + "*-zinc": 7140, | |
41 | + "*-silver": 10500, | |
42 | + "*-bismuth": 9790, | |
43 | + "*-molybdochalkos": 9600 | |
44 | + }, | |
45 | + combustiblePropsByType: { | |
46 | + "*-copper": { | |
47 | + meltingPoint: 1084, | |
48 | + meltingDuration: 30, | |
49 | + smeltedRatio: 20, | |
50 | + smeltedStack: { type: "item", code: "game:ingot-copper" } | |
51 | + }, | |
52 | + "*-brass": { | |
53 | + meltingPoint: 920, | |
54 | + meltingDuration: 30, | |
55 | + smeltedRatio: 20, | |
56 | + smeltedStack: { type: "item", code: "game:ingot-brass" } | |
57 | + }, | |
58 | + "*-tinbronze": { | |
59 | + meltingPoint: 950, | |
60 | + meltingDuration: 30, | |
61 | + smeltedRatio: 20, | |
62 | + smeltedStack: { type: "item", code: "game:ingot-tinbronze" } | |
63 | + }, | |
64 | + "*-bismuthbronze": { | |
65 | + meltingPoint: 850, | |
66 | + meltingDuration: 30, | |
67 | + smeltedRatio: 20, | |
68 | + smeltedStack: { type: "item", code: "game:ingot-bismuthbronze" } | |
69 | + }, | |
70 | + "*-blackbronze": { | |
71 | + meltingPoint: 1020, | |
72 | + meltingDuration: 30, | |
73 | + smeltedRatio: 20, | |
74 | + smeltedStack: { type: "item", code: "game:ingot-blackbronze" } | |
75 | + }, | |
76 | + "*-iron": { | |
77 | + meltingPoint: 1482, | |
78 | + meltingDuration: 30, | |
79 | + smeltedRatio: 20, | |
80 | + smeltedStack: { type: "item", code: "game:ingot-iron" } | |
81 | + }, | |
82 | + "*-gold": { | |
83 | + meltingPoint: 1063, | |
84 | + meltingDuration: 30, | |
85 | + smeltedRatio: 20, | |
86 | + smeltedStack: { type: "item", code: "game:ingot-gold", } | |
87 | + }, | |
88 | + "*-lead": { | |
89 | + meltingPoint: 327, | |
90 | + meltingDuration: 30, | |
91 | + smeltedRatio: 20, | |
92 | + smeltedStack: { type: "item", code: "game:ingot-lead" } | |
93 | + }, | |
94 | + "*-tin": { | |
95 | + meltingPoint: 232, | |
96 | + meltingDuration: 30, | |
97 | + smeltedRatio: 20, | |
98 | + smeltedStack: { type: "item", code: "game:ingot-tin" } | |
99 | + }, | |
100 | + "*-chromium": { | |
101 | + meltingPoint: 1907, | |
102 | + meltingDuration: 30, | |
103 | + smeltedRatio: 20, | |
104 | + smeltedStack: { type: "item", code: "game:ingot-chromium" } | |
105 | + }, | |
106 | + "*-platinum": { | |
107 | + meltingPoint: 1770, | |
108 | + meltingDuration: 30, | |
109 | + smeltedRatio: 20, | |
110 | + smeltedStack: { type: "item", code: "game:ingot-platinum" } | |
111 | + }, | |
112 | + "*-titanium": { | |
113 | + meltingPoint: 1668, | |
114 | + meltingDuration: 30, | |
115 | + smeltedRatio: 20, | |
116 | + smeltedStack: { type: "item", code: "game:ingot-titanium" } | |
117 | + }, | |
118 | + "*-zinc": { | |
119 | + meltingPoint: 419, | |
120 | + meltingDuration: 30, | |
121 | + smeltedRatio: 20, | |
122 | + smeltedStack: { type: "item", code: "game:ingot-zinc" } | |
123 | + }, | |
124 | + "*-silver": { | |
125 | + meltingPoint: 961, | |
126 | + meltingDuration: 30, | |
127 | + smeltedRatio: 20, | |
128 | + smeltedStack: { type: "item", code: "game:ingot-silver" } | |
129 | + }, | |
130 | + "*-bismuth": { | |
131 | + meltingPoint: 271, | |
132 | + meltingDuration: 30, | |
133 | + smeltedRatio: 20, | |
134 | + smeltedStack: { type: "item", code: "game:ingot-bismuth" } | |
135 | + }, | |
136 | + "*-molybdochalkos": { | |
137 | + meltingPoint: 902, | |
138 | + meltingDuration: 30, | |
139 | + smeltedRatio: 20, | |
140 | + smeltedStack: { type: "item", code: "game:ingot-molybdochalkos" } | |
141 | + } | |
142 | + }, | |
143 | + guiTransform: { | |
144 | + translation: { x: 2, y: 0, z: 0 }, | |
145 | + rotation: { x: 149, y: -36, z: 0 }, | |
146 | + origin: { x: 0.5, y: 0.1, z: 0.5 }, | |
147 | + scale: 3.5 | |
148 | + }, | |
149 | + fpHandTransform: { | |
150 | + translation: { x: 0, y: 0.1, z: 0 }, | |
151 | + rotation: { x: 65, y: 21, z: -6 }, | |
152 | + origin: { x: 0.5, y: 0.1, z: 0.5 }, | |
153 | + scale: 2.15 | |
154 | + }, | |
155 | + tpHandTransform: { | |
156 | + translation: { x: -0.77, y: -0.15, z: -0.64 }, | |
157 | + rotation: { x: 0, y: -71, z: 18 }, | |
158 | + origin: { x: 0.5, y: 0.1, z: 0.5 }, | |
159 | + scale: 0.75 | |
160 | + }, | |
161 | + groundTransform: { | |
162 | + translation: { x: 0, y: 0, z: 0 }, | |
163 | + rotation: { x: 0, y: 0, z: 0 }, | |
164 | + origin: { x: 0.5, y: 0, z: 0.5 }, | |
165 | + scale: 4.8 | |
166 | + } | |
167 | +} |
@@ -0,0 +1,86 @@ | ||
1 | +{ | |
2 | + "editor": { | |
3 | + "allAngles": false, | |
4 | + "singleTexture": false | |
5 | + }, | |
6 | + "textureWidth": 16, | |
7 | + "textureHeight": 16, | |
8 | + "textures": { | |
9 | + "metal": "game:block/metal/ingot/metal" | |
10 | + }, | |
11 | + "elements": [ | |
12 | + { | |
13 | + "name": "Shave1", | |
14 | + "from": [ 8.0, 0.0, 8.0 ], | |
15 | + "to": [ 9.0, 1.0, 9.0 ], | |
16 | + "rotationOrigin": [ 8.0, 0.0, 8.0 ], | |
17 | + "faces": { | |
18 | + "north": { "texture": "#metal", "uv": [ 0.5, 1.5, 1.5, 2.5 ] }, | |
19 | + "east": { "texture": "#metal", "uv": [ 1.0, 1.5, 2.0, 2.5 ] }, | |
20 | + "south": { "texture": "#metal", "uv": [ 0.5, 0.0, 1.5, 1.0 ] }, | |
21 | + "west": { "texture": "#metal", "uv": [ 0.0, 2.0, 1.0, 3.0 ] }, | |
22 | + "up": { "texture": "#metal", "uv": [ 1.0, 1.5, 2.0, 2.5 ] }, | |
23 | + "down": { "texture": "#metal", "uv": [ 1.0, 1.5, 2.0, 2.5 ] } | |
24 | + } | |
25 | + }, | |
26 | + { | |
27 | + "name": "Shave2", | |
28 | + "from": [ 9.0, 0.0, 7.0 ], | |
29 | + "to": [ 10.0, 1.0, 8.0 ], | |
30 | + "rotationOrigin": [ 8.0, 0.0, 8.0 ], | |
31 | + "rotationY": 45.0, | |
32 | + "faces": { | |
33 | + "north": { "texture": "#metal", "uv": [ 14.0, 13.5, 15.0, 14.5 ] }, | |
34 | + "east": { "texture": "#metal", "uv": [ 12.5, 14.5, 13.5, 15.5 ] }, | |
35 | + "south": { "texture": "#metal", "uv": [ 8.0, 4.0, 9.0, 5.0 ] }, | |
36 | + "west": { "texture": "#metal", "uv": [ 14.5, 1.0, 15.5, 2.0 ] }, | |
37 | + "up": { "texture": "#metal", "uv": [ 12.5, 4.5, 13.5, 5.5 ] }, | |
38 | + "down": { "texture": "#metal", "uv": [ 10.0, 9.0, 11.0, 10.0 ] } | |
39 | + } | |
40 | + }, | |
41 | + { | |
42 | + "name": "Shave3", | |
43 | + "from": [ 10.0, 0.0, 8.0 ], | |
44 | + "to": [ 11.0, 1.0, 9.0 ], | |
45 | + "rotationOrigin": [ 8.0, 0.0, 8.0 ], | |
46 | + "rotationY": 22.5, | |
47 | + "faces": { | |
48 | + "north": { "texture": "#metal", "uv": [ 2.5, 3.0, 3.5, 4.0 ] }, | |
49 | + "east": { "texture": "#metal", "uv": [ 3.5, 3.0, 4.5, 4.0 ] }, | |
50 | + "south": { "texture": "#metal", "uv": [ 2.0, 4.5, 3.0, 5.5 ] }, | |
51 | + "west": { "texture": "#metal", "uv": [ 0.0, 6.5, 1.0, 7.5 ] }, | |
52 | + "up": { "texture": "#metal", "uv": [ 11.5, 5.0, 12.5, 6.0 ] }, | |
53 | + "down": { "texture": "#metal", "uv": [ 7.0, 10.5, 8.0, 11.5 ] } | |
54 | + } | |
55 | + }, | |
56 | + { | |
57 | + "name": "Shave4", | |
58 | + "from": [ 9.4, 0.0, 8.5 ], | |
59 | + "to": [ 10.4, 1.0, 9.5 ], | |
60 | + "rotationOrigin": [ 9.0, 0.0, 8.0 ], | |
61 | + "rotationY": -7.0, | |
62 | + "faces": { | |
63 | + "north": { "texture": "#metal", "uv": [ 5.5, 4.5, 6.5, 5.5 ] }, | |
64 | + "east": { "texture": "#metal", "uv": [ 2.5, 4.0, 3.5, 5.0 ] }, | |
65 | + "south": { "texture": "#metal", "uv": [ 2.5, 5.0, 3.5, 6.0 ] }, | |
66 | + "west": { "texture": "#metal", "uv": [ 1.0, 5.0, 2.0, 6.0 ] }, | |
67 | + "up": { "texture": "#metal", "uv": [ 2.5, 5.0, 3.5, 6.0 ] }, | |
68 | + "down": { "texture": "#metal", "uv": [ 1.5, 1.0, 2.5, 2.0 ] } | |
69 | + } | |
70 | + }, | |
71 | + { | |
72 | + "name": "Shave5", | |
73 | + "from": [ 8.5, 1.0, 8.1 ], | |
74 | + "to": [ 9.5, 2.0, 9.1 ], | |
75 | + "rotationOrigin": [ 9.0, 1.0, 8.0 ], | |
76 | + "rotationY": 8.0, | |
77 | + "faces": { | |
78 | + "north": { "texture": "#metal", "uv": [ 4.0, 5.0, 5.0, 6.0 ] }, | |
79 | + "east": { "texture": "#metal", "uv": [ 6.0, 7.5, 7.0, 8.5 ] }, | |
80 | + "south": { "texture": "#metal", "uv": [ 7.0, 9.5, 8.0, 10.5 ] }, | |
81 | + "west": { "texture": "#metal", "uv": [ 7.5, 8.5, 8.5, 9.5 ] }, | |
82 | + "up": { "texture": "#metal", "uv": [ 7.0, 6.0, 8.0, 7.0 ] }, | |
83 | + "down": { "texture": "#metal", "uv": [ 4.0, 1.5, 5.0, 2.5 ] } | |
84 | + } | |
85 | + } | |
86 | + ]} | |
\ No newline at end of file |
@@ -0,0 +1,12 @@ | ||
1 | +{ | |
2 | + "type": "code", | |
3 | + "name": "Anvil Metal Recovery", | |
4 | + "description" : "Get back that lost scrap and smithing discards!", | |
5 | + "authors": ["Melchior"], | |
6 | + "version": "0.1.0", | |
7 | + "dependencies": { | |
8 | + "game": "1.12.11", | |
9 | + "survival": "" | |
10 | + }, | |
11 | + "website": "http://nowebsite.nope" | |
12 | +} |