diff --git a/docs/MODULAR_TOOLS.md b/docs/MODULAR_TOOLS.md new file mode 100644 index 000000000..d8127de9e --- /dev/null +++ b/docs/MODULAR_TOOLS.md @@ -0,0 +1,147 @@ +# Modular Tools + +A tool consists of: + +A casing (the base ModularToolItem) +An energy storage component +An energy converter component +A head +Some number of upgrade modules + +## Tiers + +The following material tiers exist + +- Steel (motor/pump, redstone battery) +- Aluninium (large motor/pump, silicon battery) +- Stainless Steel (advanced motor/pump, sodium battery) +- Titanium (large advanced motor/pump, cadmium battery) + +## Casings + +Casings determine: + +- the max tier of electric energy storage component that can be installed +- the max tier of energy converter component that can be installed +- the max tier of head that can be installed +- the number of upgrade modules that can be installed + +Casings: + +- Steel: redstone battery, basic converter, steel heads, 2 stacks +- Aluminium: silicon battery, large converter, aluminium heads, 3 stacks +- Stainless Steel: sodium battery, advanced converter, stainless heads, 4 stacks +- Titanium: cadmium battery, large advanced converter, titanium heads, 5 stacks + +## Energy + +A tool may be fitted with a battery and motor, allowing it to store and use EU directly, or with a tank and pump, allowing it to store liquid fuels and burn them to generate energy, with a granularity of 1 mB + +Base energy consumption is 32 EU + +Converters have a max throughput + +- Motor: 1024 EU +- Large Motor: 2048 EU +- Advanced Motor: 4096 EU +- Large Advanced Motor: 8192 +- Pump: 1024 EU +- Large Pump: 2048 EU +- Advanced Pump: 4096 EU +- Large Advanced Pump: 8192 EU + +## Heads + +Heads determine the base mining speed and attack damage + +There are two kinds - drill heads and rotary blades + +## Modules + +- Area = 9x, max 2 + +- Fire Aspect = 1.5x, max 2 +- Looting = 2x, max 3 +- Knockback = 1.25x, max 2 +- Sweeping Edge = 1.5x, max 3 +- Sharpness/Smite/Bane of Arthropods = 1.25x, max 5 + +- Efficiency = 1.25x, max 5 + +- Fortune = 2x, max 3 +- Silk Touch = 2x, max 1 + +### Module Identification + +Modules are crafted by choosing the placement of fine copper wires around a circuit board; each recipe has 8 slots for 4 wires, for a total of 8C4 = 70 possible modules. See the list below for current assignments (the format has 1 = wire and 0 = no wire, and starting in the top left corner going clockwise) + +- 11110000 = area +- 11101000 = fire aspect +- 11100100 = looting +- 11100010 = knockback +- 11100001 = sweeping edge - temporarily disabled +- 11011000 = sharpness +- 11010100 = smite +- 11010010 = bane of arthropods +- 11010001 = efficiency +- 11001100 = fortune +- 11001010 = silk touch +- 11001001 +- 11000110 +- 11000101 +- 11000011 +- 10111000 +- 10110100 +- 10110010 +- 10110001 +- 10101100 +- 10101010 +- 10101001 +- 10100110 +- 10100101 +- 10100011 +- 10011100 +- 10011010 +- 10011001 +- 10010110 +- 10010101 +- 10010011 +- 10001110 +- 10001101 +- 10001011 +- 10000111 +- 01111000 +- 01110100 +- 01110010 +- 01110001 +- 01101100 +- 01101010 +- 01101001 +- 01100110 +- 01100101 +- 01100011 +- 01011100 +- 01011010 +- 01011001 +- 01010110 +- 01010101 +- 01010011 +- 01001110 +- 01001101 +- 01001011 +- 01000111 +- 00111100 +- 00111010 +- 00111001 +- 00110110 +- 00110101 +- 00110011 +- 00101110 +- 00101101 +- 00101011 +- 00100111 +- 00011110 +- 00011101 +- 00011011 +- 00010111 +- 00001111 diff --git a/gradle.properties b/gradle.properties index 9ce83c4ef..89d13648f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ # Done to increase the memory available to gradle. # Also add exports for google-java-format to work in 1.16 -org.gradle.jvmargs=-Xmx1G \ +org.gradle.jvmargs=-Xmx8G \ --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \ --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED \ --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED \ diff --git a/src/client/java/aztech/modern_industrialization/ModernIndustrializationClient.java b/src/client/java/aztech/modern_industrialization/ModernIndustrializationClient.java index fb3cb7d40..57b42659c 100644 --- a/src/client/java/aztech/modern_industrialization/ModernIndustrializationClient.java +++ b/src/client/java/aztech/modern_industrialization/ModernIndustrializationClient.java @@ -28,6 +28,7 @@ import aztech.modern_industrialization.blocks.storage.barrel.client.BarrelTooltipComponent; import aztech.modern_industrialization.blocks.storage.barrel.client.CreativeBarrelClientSetup; import aztech.modern_industrialization.blocks.storage.tank.creativetank.CreativeTankClientSetup; +import aztech.modern_industrialization.blocks.toolstation.ToolStationScreen; import aztech.modern_industrialization.datagen.MIDatagenClient; import aztech.modern_industrialization.datagen.MIDatagenServer; import aztech.modern_industrialization.inventory.ConfigurableInventoryPackets; @@ -119,6 +120,7 @@ private void setupScreens() { (MenuType) (MenuType) ModernIndustrialization.SCREEN_HANDLER_MACHINE, MachineScreen::new); MenuScreens.register(ModernIndustrialization.SCREEN_HANDLER_FORGE_HAMMER, ForgeHammerScreen::new); + MenuScreens.register(ModernIndustrialization.SCREEN_HANDLER_TOOL_STATION, ToolStationScreen::new); } private void setupPackets() { @@ -126,7 +128,8 @@ private void setupPackets() { ConfigurableInventoryS2CPacketHandlers.UPDATE_ITEM_SLOT); ClientPlayNetworking.registerGlobalReceiver(ConfigurableInventoryPackets.UPDATE_FLUID_SLOT, ConfigurableInventoryS2CPacketHandlers.UPDATE_FLUID_SLOT); - ClientPlayNetworking.registerGlobalReceiver(MachinePackets.S2C.COMPONENT_SYNC, ClientMachinePackets.ON_COMPONENT_SYNC); + ClientPlayNetworking.registerGlobalReceiver(MachinePackets.S2C.COMPONENT_SYNC, + ClientMachinePackets.ON_COMPONENT_SYNC); } private void setupTooltips() { @@ -143,7 +146,8 @@ private void setupTooltips() { Integer fuelTime = FuelRegistryImpl.INSTANCE.get(item); if (fuelTime != null && fuelTime > 0) { long totalEu = fuelTime * FuelBurningComponent.EU_PER_BURN_TICK; - lines.add(new MITooltips.Line(MIText.BaseEuTotalStored).arg(totalEu, MITooltips.EU_PARSER).build()); + lines.add(new MITooltips.Line(MIText.BaseEuTotalStored).arg(totalEu, MITooltips.EU_PARSER) + .build()); } } catch (Exception e) { ModernIndustrialization.LOGGER.warn("Could not show MI fuel tooltip.", e); diff --git a/src/client/java/aztech/modern_industrialization/blocks/toolstation/ToolStationScreen.java b/src/client/java/aztech/modern_industrialization/blocks/toolstation/ToolStationScreen.java new file mode 100644 index 000000000..681c565d9 --- /dev/null +++ b/src/client/java/aztech/modern_industrialization/blocks/toolstation/ToolStationScreen.java @@ -0,0 +1,67 @@ +/* + * MIT License + * + * Copyright (c) 2020 Azercoco & Technici4n + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package aztech.modern_industrialization.blocks.toolstation; + +import aztech.modern_industrialization.ModernIndustrialization; +import aztech.modern_industrialization.client.screen.MIHandledScreen; +import com.mojang.blaze3d.systems.RenderSystem; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Inventory; + +public class ToolStationScreen extends MIHandledScreen { + public static final ResourceLocation TOOL_STATION_GUI = new ResourceLocation(ModernIndustrialization.MOD_ID, + "textures/gui/container/tool_station.png"); + + private static final int X_OFFSET = 61, Y_OFFSET = 14; + + private final ToolStationScreenHandler handler; + + public ToolStationScreen(ToolStationScreenHandler handler, Inventory inventory, Component title) { + super(handler, inventory, title); + this.handler = handler; + } + + @Override + public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) { + super.render(guiGraphics, mouseX, mouseY, delta); + this.renderTooltip(guiGraphics, mouseX, mouseY); + } + + @Override + protected void renderBg(GuiGraphics guiGraphics, float delta, int mouseX, int mouseY) { + this.renderBackground(guiGraphics); + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + guiGraphics.blit(TOOL_STATION_GUI, this.leftPos, this.topPos, 0, 0, this.imageWidth, this.imageHeight); + for (int idx = handler.getNumAddonSlots(); idx < 5; ++idx) { + guiGraphics.blit(TOOL_STATION_GUI, this.leftPos + 43 + idx * 18, this.topPos + 41, 0, 166, 18, 18); + } + if (!handler.isComponentsEnabled()) { + guiGraphics.blit(TOOL_STATION_GUI, this.leftPos + 43, this.topPos + 23, 0, 166, 18 * 3, 18); + } + } +} diff --git a/src/client/java/aztech/modern_industrialization/compat/viewer/impl/rei/ManualPluginRei.java b/src/client/java/aztech/modern_industrialization/compat/viewer/impl/rei/ManualPluginRei.java index 73c1d3614..f0e5e52b9 100644 --- a/src/client/java/aztech/modern_industrialization/compat/viewer/impl/rei/ManualPluginRei.java +++ b/src/client/java/aztech/modern_industrialization/compat/viewer/impl/rei/ManualPluginRei.java @@ -23,33 +23,12 @@ */ package aztech.modern_industrialization.compat.viewer.impl.rei; -import aztech.modern_industrialization.items.diesel_tools.DieselToolItem; import aztech.modern_industrialization.machines.gui.MachineScreen; import me.shedaniel.rei.api.client.plugins.REIClientPlugin; -import me.shedaniel.rei.api.client.registry.category.CategoryRegistry; import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry; import me.shedaniel.rei.api.client.registry.transfer.TransferHandlerRegistry; -import me.shedaniel.rei.api.common.util.EntryStacks; -import me.shedaniel.rei.plugin.common.BuiltinPlugin; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.tags.ItemTags; -import net.minecraft.world.item.Item; public class ManualPluginRei implements REIClientPlugin { - @Override - public void registerCategories(CategoryRegistry registry) { - for (Item item : BuiltInRegistries.ITEM) { - if (item instanceof DieselToolItem) { - if (item.builtInRegistryHolder().is(ItemTags.AXES)) { - registry.addWorkstations(BuiltinPlugin.STRIPPING, EntryStacks.of(item)); - } - if (item.builtInRegistryHolder().is(ItemTags.SHOVELS)) { - registry.addWorkstations(BuiltinPlugin.PATHING, EntryStacks.of(item)); - } - } - } - } - @Override public void registerTransferHandlers(TransferHandlerRegistry registry) { registry.register(new MachineSlotLockingHandler()); @@ -62,7 +41,8 @@ public void registerScreens(ScreenRegistry registry) { registry.registerClickArea(MachineScreen.class, new MachineClickAreaHandler()); registry.registerFocusedStack(new MachineFocusedStackProvider()); registry.exclusionZones().register(MachineScreen.class, screen -> { - return screen.getExtraBoxes().stream().map(r -> new me.shedaniel.math.Rectangle(r.x(), r.y(), r.w(), r.h())).toList(); + return screen.getExtraBoxes().stream().map(r -> new me.shedaniel.math.Rectangle(r.x(), r.y(), r.w(), r.h())) + .toList(); }); } } diff --git a/src/client/java/aztech/modern_industrialization/compat/viewer/usage/FluidFuelsCategory.java b/src/client/java/aztech/modern_industrialization/compat/viewer/usage/FluidFuelsCategory.java index ae1424cb8..7ed5b58b3 100644 --- a/src/client/java/aztech/modern_industrialization/compat/viewer/usage/FluidFuelsCategory.java +++ b/src/client/java/aztech/modern_industrialization/compat/viewer/usage/FluidFuelsCategory.java @@ -38,16 +38,18 @@ public class FluidFuelsCategory extends ViewerCategory { public FluidFuelsCategory() { - super(Fluid.class, new MIIdentifier("fluid_fuels"), MIText.FluidFuels.text(), MIFluids.DIESEL.getBucket().getDefaultInstance(), 150, 35); + super(Fluid.class, new MIIdentifier("fluid_fuels"), MIText.FluidFuels.text(), + MIFluids.DIESEL.getBucket().getDefaultInstance(), 150, 35); } @Override public void buildWorkstations(WorkstationConsumer consumer) { - consumer.accept("lv_diesel_generator", "mv_diesel_generator", "hv_diesel_generator", "large_diesel_generator", "large_steam_boiler", + consumer.accept("lv_diesel_generator", "mv_diesel_generator", "hv_diesel_generator", "large_diesel_generator", + "large_steam_boiler", "advanced_large_steam_boiler", "high_pressure_large_steam_boiler", "high_pressure_advanced_large_steam_boiler"); - consumer.accept(MIItem.DIESEL_JETPACK, MIItem.DIESEL_CHAINSAW, MIItem.DIESEL_MINING_DRILL); + consumer.accept(MIItem.DIESEL_JETPACK); } @Override diff --git a/src/generated/resources/assets/modern_industrialization/blockstates/tool_station.json b/src/generated/resources/assets/modern_industrialization/blockstates/tool_station.json new file mode 100644 index 000000000..3b4de87e4 --- /dev/null +++ b/src/generated/resources/assets/modern_industrialization/blockstates/tool_station.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "modern_industrialization:block/tool_station" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/modern_industrialization/lang/en_us.json b/src/generated/resources/assets/modern_industrialization/lang/en_us.json index b772ed5d5..f4e94e70c 100644 --- a/src/generated/resources/assets/modern_industrialization/lang/en_us.json +++ b/src/generated/resources/assets/modern_industrialization/lang/en_us.json @@ -25,12 +25,8 @@ "advancements.modern_industrialization.chemical_reactor.description": "Craft a Chemical Reactor", "advancements.modern_industrialization.coke_oven": "Coke-A Cola", "advancements.modern_industrialization.coke_oven.description": "Craft a Coke Oven to start Steel Production", - "advancements.modern_industrialization.diesel_chainsaw": "The Texas Chain Saw Massacre", - "advancements.modern_industrialization.diesel_chainsaw.description": "Craft a Diesel Chainsaw", "advancements.modern_industrialization.diesel_jetpack": "Ely... We Meant Jetpack!", "advancements.modern_industrialization.diesel_jetpack.description": "Craft a Diesel Jetpack", - "advancements.modern_industrialization.diesel_mining_drill": "Through The Walls Of Ba Sing Se", - "advancements.modern_industrialization.diesel_mining_drill.description": "Craft a Diesel Mining Drill", "advancements.modern_industrialization.digital_circuit": "No need for Sodium anymore", "advancements.modern_industrialization.digital_circuit.description": "Craft a Digital Circuit", "advancements.modern_industrialization.distillation_tower": "TOTAL™ Distillation", @@ -426,6 +422,7 @@ "block.modern_industrialization.titanium_ore": "Titanium Ore", "block.modern_industrialization.titanium_tank": "Titanium Tank", "block.modern_industrialization.toluene": "Toluene", + "block.modern_industrialization.tool_station": "Tool Station", "block.modern_industrialization.trash_can": "Automatic Trash Can", "block.modern_industrialization.tritium": "Tritium", "block.modern_industrialization.tungsten_block": "Block of Tungsten", @@ -471,8 +468,10 @@ "item.modern_industrialization.aluminum_plate": "Aluminum Plate", "item.modern_industrialization.aluminum_ring": "Aluminum Ring", "item.modern_industrialization.aluminum_rod": "Aluminum Rod", + "item.modern_industrialization.aluminum_rotary_blade": "Aluminum Rotary Blade", "item.modern_industrialization.aluminum_rotor": "Aluminum Rotor", "item.modern_industrialization.aluminum_tiny_dust": "Aluminum Tiny Dust", + "item.modern_industrialization.aluminum_tool_casing": "Aluminum Tool Casing", "item.modern_industrialization.aluminum_wire": "Aluminum Wire", "item.modern_industrialization.analog_circuit": "Analog Circuit", "item.modern_industrialization.analog_circuit_board": "Analog Circuit Board", @@ -490,8 +489,10 @@ "item.modern_industrialization.antimony_ingot": "Antimony Ingot", "item.modern_industrialization.antimony_nugget": "Antimony Nugget", "item.modern_industrialization.antimony_tiny_dust": "Antimony Tiny Dust", + "item.modern_industrialization.area_module": "Area Module", "item.modern_industrialization.argon_bucket": "Argon Bucket", "item.modern_industrialization.arithmetic_logic_unit": "Arithmetic Logic Unit", + "item.modern_industrialization.bane_of_arthropods_module": "Bane of Arthropods Module", "item.modern_industrialization.basic_upgrade": "Basic Upgrade", "item.modern_industrialization.battery_alloy_curved_plate": "Battery Alloy Curved Plate", "item.modern_industrialization.battery_alloy_double_ingot": "Battery Alloy Double Ingot", @@ -619,13 +620,12 @@ "item.modern_industrialization.diamond_plate": "Diamond Plate", "item.modern_industrialization.diamond_tiny_dust": "Diamond Tiny Dust", "item.modern_industrialization.diesel_bucket": "Diesel Bucket", - "item.modern_industrialization.diesel_chainsaw": "Diesel Chainsaw", "item.modern_industrialization.diesel_jetpack": "Diesel Jetpack", - "item.modern_industrialization.diesel_mining_drill": "Diesel Mining Drill", "item.modern_industrialization.diethyl_ether_bucket": "Diethyl Ether Bucket", "item.modern_industrialization.digital_circuit": "Digital Circuit", "item.modern_industrialization.digital_circuit_board": "Digital Circuit Board", "item.modern_industrialization.diode": "Diode", + "item.modern_industrialization.efficiency_module": "Efficiency Module", "item.modern_industrialization.electronic_circuit": "Electronic Circuit", "item.modern_industrialization.electronic_circuit_board": "Electronic Circuit Board", "item.modern_industrialization.electrum_cable": "Electrum Cable", @@ -645,9 +645,11 @@ "item.modern_industrialization.ethanol_bucket": "Ethanol Bucket", "item.modern_industrialization.ethylbenzene_bucket": "Ethylbenzene Bucket", "item.modern_industrialization.ethylene_bucket": "Ethylene Bucket", + "item.modern_industrialization.fire_aspect_module": "Fire Aspect Module", "item.modern_industrialization.fire_clay_brick": "Fire Clay Brick", "item.modern_industrialization.fire_clay_dust": "Fire Clay Dust", "item.modern_industrialization.fluid_pipe": "Fluid Pipe", + "item.modern_industrialization.fortune_module": "Fortune Module", "item.modern_industrialization.gold_bolt": "Gold Bolt", "item.modern_industrialization.gold_curved_plate": "Gold Curved Plate", "item.modern_industrialization.gold_double_ingot": "Gold Double Ingot", @@ -738,6 +740,7 @@ "item.modern_industrialization.kanthal_plate": "Kanthal Plate", "item.modern_industrialization.kanthal_tiny_dust": "Kanthal Tiny Dust", "item.modern_industrialization.kanthal_wire": "Kanthal Wire", + "item.modern_industrialization.knockback_module": "Knockback Module", "item.modern_industrialization.lapis_crushed_dust": "Lapis Lazuli Crushed Dust", "item.modern_industrialization.lapis_dust": "Lapis Lazuli Dust", "item.modern_industrialization.lapis_plate": "Lapis Lazuli Plate", @@ -786,6 +789,7 @@ "item.modern_industrialization.lime_item_pipe": "Lime Item Pipe", "item.modern_industrialization.lime_me_wire": "Lime ME Wire", "item.modern_industrialization.liquid_air_bucket": "Liquid Air Bucket", + "item.modern_industrialization.looting_module": "Looting Module", "item.modern_industrialization.lubricant_bucket": "Lubricant Bucket", "item.modern_industrialization.magenta_fluid_pipe": "Magenta Fluid Pipe", "item.modern_industrialization.magenta_item_pipe": "Magenta Item Pipe", @@ -903,6 +907,7 @@ "item.modern_industrialization.salt_dust": "Salt Dust", "item.modern_industrialization.salt_tiny_dust": "Salt Tiny Dust", "item.modern_industrialization.shale_oil_bucket": "Shale Oil Bucket", + "item.modern_industrialization.sharpness_module": "Sharpness Module", "item.modern_industrialization.silicon_battery": "Silicon Battery", "item.modern_industrialization.silicon_double_ingot": "Silicon Double Ingot", "item.modern_industrialization.silicon_dust": "Silicon Dust", @@ -913,6 +918,7 @@ "item.modern_industrialization.silicon_plate": "Silicon Plate", "item.modern_industrialization.silicon_tiny_dust": "Silicon Tiny Dust", "item.modern_industrialization.silicon_wafer": "Silicon Wafer", + "item.modern_industrialization.silk_touch_module": "Silk Touch Module", "item.modern_industrialization.silver_cable": "Silver Cable", "item.modern_industrialization.silver_double_ingot": "Silver Double Ingot", "item.modern_industrialization.silver_dust": "Silver Dust", @@ -923,6 +929,7 @@ "item.modern_industrialization.silver_wire": "Silver Wire", "item.modern_industrialization.singularity": "Singularity", "item.modern_industrialization.small_heat_exchanger": "Small Heat Exchanger", + "item.modern_industrialization.smite_module": "Smite Module", "item.modern_industrialization.sodium_battery": "Sodium Battery", "item.modern_industrialization.sodium_dust": "Sodium Dust", "item.modern_industrialization.sodium_hydroxide_bucket": "Sodium Hydroxide Bucket", @@ -946,8 +953,10 @@ "item.modern_industrialization.stainless_steel_ring": "Stainless Steel Ring", "item.modern_industrialization.stainless_steel_rod": "Stainless Steel Rod", "item.modern_industrialization.stainless_steel_rod_magnetic": "Magnetic Stainless Steel Rod", + "item.modern_industrialization.stainless_steel_rotary_blade": "Stainless Steel Rotary Blade", "item.modern_industrialization.stainless_steel_rotor": "Stainless Steel Rotor", "item.modern_industrialization.stainless_steel_tiny_dust": "Stainless Steel Tiny Dust", + "item.modern_industrialization.stainless_steel_tool_casing": "Stainless Steel Tool Casing", "item.modern_industrialization.steam_bucket": "Steam Bucket", "item.modern_industrialization.steam_cracked_heavy_fuel_bucket": "Steam-Cracked Heavy Fuel Bucket", "item.modern_industrialization.steam_cracked_light_fuel_bucket": "Steam-Cracked Light Fuel Bucket", @@ -968,7 +977,9 @@ "item.modern_industrialization.steel_ring": "Steel Ring", "item.modern_industrialization.steel_rod": "Steel Rod", "item.modern_industrialization.steel_rod_magnetic": "Magnetic Steel Rod", + "item.modern_industrialization.steel_rotary_blade": "Steel Rotary Blade", "item.modern_industrialization.steel_tiny_dust": "Steel Tiny Dust", + "item.modern_industrialization.steel_tool_casing": "Steel Tool Casing", "item.modern_industrialization.steel_upgrade": "Steel Upgrade", "item.modern_industrialization.styrene_bucket": "Styrene Bucket", "item.modern_industrialization.styrene_butadiene_bucket": "Styrene-Butadiene Bucket", @@ -1023,8 +1034,10 @@ "item.modern_industrialization.titanium_plate": "Titanium Plate", "item.modern_industrialization.titanium_ring": "Titanium Ring", "item.modern_industrialization.titanium_rod": "Titanium Rod", + "item.modern_industrialization.titanium_rotary_blade": "Titanium Rotary Blade", "item.modern_industrialization.titanium_rotor": "Titanium Rotor", "item.modern_industrialization.titanium_tiny_dust": "Titanium Tiny Dust", + "item.modern_industrialization.titanium_tool_casing": "Titanium Tool Casing", "item.modern_industrialization.toluene_bucket": "Toluene Bucket", "item.modern_industrialization.transistor": "Transistor", "item.modern_industrialization.tritium_bucket": "Tritium Bucket", diff --git a/src/generated/resources/assets/modern_industrialization/lang/untranslated/ko_kr.json b/src/generated/resources/assets/modern_industrialization/lang/untranslated/ko_kr.json index e7a00e665..aa19c2997 100644 --- a/src/generated/resources/assets/modern_industrialization/lang/untranslated/ko_kr.json +++ b/src/generated/resources/assets/modern_industrialization/lang/untranslated/ko_kr.json @@ -33,14 +33,10 @@ "advancements.modern_industrialization.coke_oven.description": "강철 생산을 위해 코크스로를 제작하세요", "advancements.modern_industrialization.crowbar": "[UNUSED, PLEASE REMOVE] 나는 빠루고, 얘는 ...", "advancements.modern_industrialization.crowbar.description": "[UNUSED, PLEASE REMOVE] ... 내 친구 빠루야. 기계 및 케이싱을 손보기 위해 빠루를 제작하세요", - "advancements.modern_industrialization.diesel_chainsaw": "텍사스 전기톱 연쇄살인사건", - "advancements.modern_industrialization.diesel_chainsaw.description": "디젤 전기톱을 제작하세요", "advancements.modern_industrialization.diesel_generator": "[UNUSED, PLEASE REMOVE] 분노의 질주", "advancements.modern_industrialization.diesel_generator.description": "[UNUSED, PLEASE REMOVE] 디젤 발전기를 제작하세요", "advancements.modern_industrialization.diesel_jetpack": "어... 그니까 제트팩이에요!", "advancements.modern_industrialization.diesel_jetpack.description": "디젤 제트팩을 제작하세요", - "advancements.modern_industrialization.diesel_mining_drill": "바싱세의 벽을 넘어", - "advancements.modern_industrialization.diesel_mining_drill.description": "디젤 채광용 드릴을 제작하세요", "advancements.modern_industrialization.digital_circuit": "더이상 나트륨은 필요 없어", "advancements.modern_industrialization.digital_circuit.description": "디지털 회로를 제작하세요", "advancements.modern_industrialization.distillation_tower": "완벽™ 증류", @@ -483,6 +479,7 @@ "block.modern_industrialization.titanium_ore": "티타늄 광석", "block.modern_industrialization.titanium_tank": "티타늄 탱크", "block.modern_industrialization.toluene": "톨루엔", + "block.modern_industrialization.tool_station": "[UNTRANSLATED] Tool Station", "block.modern_industrialization.trash_can": "자동 쓰레기통", "block.modern_industrialization.tritium": "삼중수소", "block.modern_industrialization.tungsten_block": "텅스텐 블록", @@ -539,8 +536,10 @@ "item.modern_industrialization.aluminum_plate": "알루미늄 판", "item.modern_industrialization.aluminum_ring": "알루미늄 고리", "item.modern_industrialization.aluminum_rod": "알루미늄 막대", + "item.modern_industrialization.aluminum_rotary_blade": "[UNTRANSLATED] Aluminum Rotary Blade", "item.modern_industrialization.aluminum_rotor": "알루미늄 로터", "item.modern_industrialization.aluminum_tiny_dust": "작은 알루미늄 가루", + "item.modern_industrialization.aluminum_tool_casing": "[UNTRANSLATED] Aluminum Tool Casing", "item.modern_industrialization.aluminum_wire": "알루미늄 선", "item.modern_industrialization.analog_circuit": "아날로그 회로", "item.modern_industrialization.analog_circuit_board": "아날로그 회로 판", @@ -560,8 +559,10 @@ "item.modern_industrialization.antimony_ingot": "안티모니 주괴", "item.modern_industrialization.antimony_nugget": "안티모니 조각", "item.modern_industrialization.antimony_tiny_dust": "작은 안티모니 가루", + "item.modern_industrialization.area_module": "[UNTRANSLATED] Area Module", "item.modern_industrialization.argon_bucket": "[UNTRANSLATED] Argon Bucket", "item.modern_industrialization.arithmetic_logic_unit": "산술 논리 유닛", + "item.modern_industrialization.bane_of_arthropods_module": "[UNTRANSLATED] Bane of Arthropods Module", "item.modern_industrialization.basic_upgrade": "기본 업그레이드", "item.modern_industrialization.battery_alloy_curved_plate": "배터리 합금 곡선 판", "item.modern_industrialization.battery_alloy_double_ingot": "배터리 합금 이중 주괴", @@ -777,13 +778,12 @@ "item.modern_industrialization.diamond_plate": "다이아몬드 판", "item.modern_industrialization.diamond_tiny_dust": "작은 다이아몬드 가루", "item.modern_industrialization.diesel_bucket": "[UNTRANSLATED] Diesel Bucket", - "item.modern_industrialization.diesel_chainsaw": "디젤 전기톱", "item.modern_industrialization.diesel_jetpack": "디젤 제트팩", - "item.modern_industrialization.diesel_mining_drill": "디젤 채광 드릴", "item.modern_industrialization.diethyl_ether_bucket": "[UNTRANSLATED] Diethyl Ether Bucket", "item.modern_industrialization.digital_circuit": "디지털 회로", "item.modern_industrialization.digital_circuit_board": "디지털 회로 판", "item.modern_industrialization.diode": "다이오드", + "item.modern_industrialization.efficiency_module": "[UNTRANSLATED] Efficiency Module", "item.modern_industrialization.electronic_circuit": "전자 회로", "item.modern_industrialization.electronic_circuit_board": "전자 회로 판", "item.modern_industrialization.electrum_cable": "일렉트럼 케이블", @@ -806,10 +806,12 @@ "item.modern_industrialization.ethanol_bucket": "[UNTRANSLATED] Ethanol Bucket", "item.modern_industrialization.ethylbenzene_bucket": "[UNTRANSLATED] Ethylbenzene Bucket", "item.modern_industrialization.ethylene_bucket": "[UNTRANSLATED] Ethylene Bucket", + "item.modern_industrialization.fire_aspect_module": "[UNTRANSLATED] Fire Aspect Module", "item.modern_industrialization.fire_clay_brick": "내화 점토 벽돌", "item.modern_industrialization.fire_clay_dust": "내화 점토 가루", "item.modern_industrialization.fluid_pipe": "액체 파이프", "item.modern_industrialization.fluid_slot": "[UNUSED, PLEASE REMOVE] 액체 슬롯", + "item.modern_industrialization.fortune_module": "[UNTRANSLATED] Fortune Module", "item.modern_industrialization.gold_blade": "[UNUSED, PLEASE REMOVE] 금 칼날", "item.modern_industrialization.gold_bolt": "금 볼트", "item.modern_industrialization.gold_crushed_dust": "[UNUSED, PLEASE REMOVE] 분쇄된 금 가루", @@ -909,6 +911,7 @@ "item.modern_industrialization.kanthal_plate": "칸탈 판", "item.modern_industrialization.kanthal_tiny_dust": "작은 칸탈 가루", "item.modern_industrialization.kanthal_wire": "칸탈 선", + "item.modern_industrialization.knockback_module": "[UNTRANSLATED] Knockback Module", "item.modern_industrialization.lapis_crushed_dust": "분쇄된 청금석 가루", "item.modern_industrialization.lapis_dust": "청금석 가루", "item.modern_industrialization.lapis_plate": "청금석 판", @@ -961,6 +964,7 @@ "item.modern_industrialization.lime_item_pipe": "연두색 아이템 파이프", "item.modern_industrialization.lime_me_wire": "[UNTRANSLATED] Lime ME Wire", "item.modern_industrialization.liquid_air_bucket": "[UNTRANSLATED] Liquid Air Bucket", + "item.modern_industrialization.looting_module": "[UNTRANSLATED] Looting Module", "item.modern_industrialization.lubricant_bucket": "[UNTRANSLATED] Lubricant Bucket", "item.modern_industrialization.magenta_fluid_pipe": "자홍색 액체 파이프", "item.modern_industrialization.magenta_item_pipe": "자홍색 아이템 파이프", @@ -1088,6 +1092,7 @@ "item.modern_industrialization.salt_tiny_dust": "작은 소금 가루", "item.modern_industrialization.screwdriver": "[UNUSED, PLEASE REMOVE] 스크류드라이버", "item.modern_industrialization.shale_oil_bucket": "[UNTRANSLATED] Shale Oil Bucket", + "item.modern_industrialization.sharpness_module": "[UNTRANSLATED] Sharpness Module", "item.modern_industrialization.silicon_battery": "실리콘 배터리", "item.modern_industrialization.silicon_double_ingot": "실리콘 이중 주괴", "item.modern_industrialization.silicon_dust": "실리콘 가루", @@ -1098,6 +1103,7 @@ "item.modern_industrialization.silicon_plate": "실리콘 판", "item.modern_industrialization.silicon_tiny_dust": "작은 실리콘 가루", "item.modern_industrialization.silicon_wafer": "실리콘 웨이퍼", + "item.modern_industrialization.silk_touch_module": "[UNTRANSLATED] Silk Touch Module", "item.modern_industrialization.silver_cable": "은 케이블", "item.modern_industrialization.silver_crushed_dust": "[UNUSED, PLEASE REMOVE] 분쇄된 은 가루", "item.modern_industrialization.silver_curved_plate": "[UNUSED, PLEASE REMOVE] 은 곡선 판", @@ -1113,6 +1119,7 @@ "item.modern_industrialization.simple_fluid_coolant": "[UNUSED, PLEASE REMOVE] 단순한 액체 냉매", "item.modern_industrialization.singularity": "특이점", "item.modern_industrialization.small_heat_exchanger": "소형 열교환기", + "item.modern_industrialization.smite_module": "[UNTRANSLATED] Smite Module", "item.modern_industrialization.sodium_battery": "나트륨 배터리", "item.modern_industrialization.sodium_dust": "나트륨 가루", "item.modern_industrialization.sodium_hydroxide_bucket": "[UNTRANSLATED] Sodium Hydroxide Bucket", @@ -1138,8 +1145,10 @@ "item.modern_industrialization.stainless_steel_ring": "스테인리스강 고리", "item.modern_industrialization.stainless_steel_rod": "스테인리스강 막대", "item.modern_industrialization.stainless_steel_rod_magnetic": "자성 스테인리스강 막대", + "item.modern_industrialization.stainless_steel_rotary_blade": "[UNTRANSLATED] Stainless Steel Rotary Blade", "item.modern_industrialization.stainless_steel_rotor": "스테인리스강 로터", "item.modern_industrialization.stainless_steel_tiny_dust": "작은 스테인리스강 가루", + "item.modern_industrialization.stainless_steel_tool_casing": "[UNTRANSLATED] Stainless Steel Tool Casing", "item.modern_industrialization.steam_bucket": "[UNTRANSLATED] Steam Bucket", "item.modern_industrialization.steam_cracked_heavy_fuel_bucket": "[UNTRANSLATED] Steam-Cracked Heavy Fuel Bucket", "item.modern_industrialization.steam_cracked_light_fuel_bucket": "[UNTRANSLATED] Steam-Cracked Light Fuel Bucket", @@ -1161,8 +1170,10 @@ "item.modern_industrialization.steel_ring": "강철 고리", "item.modern_industrialization.steel_rod": "강철 막대", "item.modern_industrialization.steel_rod_magnetic": "자성 강철 막대", + "item.modern_industrialization.steel_rotary_blade": "[UNTRANSLATED] Steel Rotary Blade", "item.modern_industrialization.steel_rotor": "[UNUSED, PLEASE REMOVE] 강철 로터", "item.modern_industrialization.steel_tiny_dust": "작은 강철 가루", + "item.modern_industrialization.steel_tool_casing": "[UNTRANSLATED] Steel Tool Casing", "item.modern_industrialization.steel_upgrade": "강철 업그레이드", "item.modern_industrialization.styrene_bucket": "[UNTRANSLATED] Styrene Bucket", "item.modern_industrialization.styrene_butadiene_bucket": "[UNTRANSLATED] Styrene-Butadiene Bucket", @@ -1219,8 +1230,10 @@ "item.modern_industrialization.titanium_plate": "티타늄 판", "item.modern_industrialization.titanium_ring": "티타늄 고리", "item.modern_industrialization.titanium_rod": "티타늄 막대", + "item.modern_industrialization.titanium_rotary_blade": "[UNTRANSLATED] Titanium Rotary Blade", "item.modern_industrialization.titanium_rotor": "티타늄 로터", "item.modern_industrialization.titanium_tiny_dust": "작은 티타늄 가루", + "item.modern_industrialization.titanium_tool_casing": "[UNTRANSLATED] Titanium Tool Casing", "item.modern_industrialization.toluene_bucket": "[UNTRANSLATED] Toluene Bucket", "item.modern_industrialization.transistor": "트랜지스터", "item.modern_industrialization.tritium_bucket": "[UNTRANSLATED] Tritium Bucket", diff --git a/src/generated/resources/assets/modern_industrialization/lang/untranslated/pt_br.json b/src/generated/resources/assets/modern_industrialization/lang/untranslated/pt_br.json index 01b8cdefd..fda3314f6 100644 --- a/src/generated/resources/assets/modern_industrialization/lang/untranslated/pt_br.json +++ b/src/generated/resources/assets/modern_industrialization/lang/untranslated/pt_br.json @@ -25,14 +25,10 @@ "advancements.modern_industrialization.chemical_reactor.description": "Fabrique um Reator Químico", "advancements.modern_industrialization.coke_oven": "Coque-Cola", "advancements.modern_industrialization.coke_oven.description": "Fabrique um Forno de Coque para começar a produzir Aço", - "advancements.modern_industrialization.diesel_chainsaw": "O Massacre da Serra Elétrica", - "advancements.modern_industrialization.diesel_chainsaw.description": "Fabrique uma Motosserra à Diesel", "advancements.modern_industrialization.diesel_generator": "[UNUSED, PLEASE REMOVE] Velozes e Furiosos", "advancements.modern_industrialization.diesel_generator.description": "[UNUSED, PLEASE REMOVE] Fabrique um Gerador à Diesel", "advancements.modern_industrialization.diesel_jetpack": "Éli... Quer Dizer, Jetpack!", "advancements.modern_industrialization.diesel_jetpack.description": "Fabrique uma Jetpack à Diesel", - "advancements.modern_industrialization.diesel_mining_drill": "Pelas Paredes de Ba Sing Se", - "advancements.modern_industrialization.diesel_mining_drill.description": "Fabrique uma Broca de Mineração à Diesel", "advancements.modern_industrialization.digital_circuit": "Sem Uso para Sódio Agora", "advancements.modern_industrialization.digital_circuit.description": "Fabrique um Circuito Digital", "advancements.modern_industrialization.distillation_tower": "Destilação TOTAL™", @@ -431,6 +427,7 @@ "block.modern_industrialization.titanium_ore": "Minério de Titânio", "block.modern_industrialization.titanium_tank": "Tanque de Titânio", "block.modern_industrialization.toluene": "Tolueno", + "block.modern_industrialization.tool_station": "[UNTRANSLATED] Tool Station", "block.modern_industrialization.trash_can": "Lixeira Automática", "block.modern_industrialization.tritium": "Trítio", "block.modern_industrialization.tungsten_block": "Bloco de Tungstênio", @@ -477,8 +474,10 @@ "item.modern_industrialization.aluminum_plate": "Chapa de Alumínio", "item.modern_industrialization.aluminum_ring": "Anel de Alumínio", "item.modern_industrialization.aluminum_rod": "Vara de Alumínio", + "item.modern_industrialization.aluminum_rotary_blade": "[UNTRANSLATED] Aluminum Rotary Blade", "item.modern_industrialization.aluminum_rotor": "Rotor de Alumínio", "item.modern_industrialization.aluminum_tiny_dust": "Pó Pequeno de Alumínio", + "item.modern_industrialization.aluminum_tool_casing": "[UNTRANSLATED] Aluminum Tool Casing", "item.modern_industrialization.aluminum_wire": "Fio de Alumínio", "item.modern_industrialization.analog_circuit": "Circuito Analógico", "item.modern_industrialization.analog_circuit_board": "Placa de Circuito Analógico", @@ -496,8 +495,10 @@ "item.modern_industrialization.antimony_ingot": "Barra de Antimônio", "item.modern_industrialization.antimony_nugget": "Pepita de Antimônio", "item.modern_industrialization.antimony_tiny_dust": "Pó Pequeno de Antimônio", + "item.modern_industrialization.area_module": "[UNTRANSLATED] Area Module", "item.modern_industrialization.argon_bucket": "Balde de Árgon", "item.modern_industrialization.arithmetic_logic_unit": "Unidade de Lógica Aritmética", + "item.modern_industrialization.bane_of_arthropods_module": "[UNTRANSLATED] Bane of Arthropods Module", "item.modern_industrialization.basic_upgrade": "Melhoria Básica", "item.modern_industrialization.battery_alloy_curved_plate": "Chapa Curvada de Liga de Bateria", "item.modern_industrialization.battery_alloy_double_ingot": "Barra Dupla de Liga de Bateria", @@ -625,13 +626,12 @@ "item.modern_industrialization.diamond_plate": "Chapa de Diamante", "item.modern_industrialization.diamond_tiny_dust": "Pó Pequeno de Diamante", "item.modern_industrialization.diesel_bucket": "Balde de Diesel", - "item.modern_industrialization.diesel_chainsaw": "Motosserra à Diesel", "item.modern_industrialization.diesel_jetpack": "Jetpack à Diesel", - "item.modern_industrialization.diesel_mining_drill": "Broca de Mineração à Diesel", "item.modern_industrialization.diethyl_ether_bucket": "Balde de Éter Etílico", "item.modern_industrialization.digital_circuit": "Circuito Digital", "item.modern_industrialization.digital_circuit_board": "Placa de Circuito Digital", "item.modern_industrialization.diode": "Diodo", + "item.modern_industrialization.efficiency_module": "[UNTRANSLATED] Efficiency Module", "item.modern_industrialization.electronic_circuit": "Circuito Eletrônico", "item.modern_industrialization.electronic_circuit_board": "Placa de Circuito Eletrônico", "item.modern_industrialization.electrum_cable": "Cabo de Electro", @@ -651,9 +651,11 @@ "item.modern_industrialization.ethanol_bucket": "Balde de Etanol", "item.modern_industrialization.ethylbenzene_bucket": "Balde de Etilbenzeno", "item.modern_industrialization.ethylene_bucket": "Balde de Etileno", + "item.modern_industrialization.fire_aspect_module": "[UNTRANSLATED] Fire Aspect Module", "item.modern_industrialization.fire_clay_brick": "Tijolo de Argila Refratária", "item.modern_industrialization.fire_clay_dust": "Pó de Argila Refratária", "item.modern_industrialization.fluid_pipe": "Tubo de Fluidos", + "item.modern_industrialization.fortune_module": "[UNTRANSLATED] Fortune Module", "item.modern_industrialization.gold_bolt": "Parafuso de Ouro", "item.modern_industrialization.gold_curved_plate": "Chapa Curvada de Ouro", "item.modern_industrialization.gold_double_ingot": "Barra Dupla de Ouro", @@ -744,6 +746,7 @@ "item.modern_industrialization.kanthal_plate": "Chapa de Kanthal", "item.modern_industrialization.kanthal_tiny_dust": "Pó Pequeno de Kanthal", "item.modern_industrialization.kanthal_wire": "Fio de Kanthal", + "item.modern_industrialization.knockback_module": "[UNTRANSLATED] Knockback Module", "item.modern_industrialization.lapis_crushed_dust": "Pó Bruto de Lápis-lazuli", "item.modern_industrialization.lapis_dust": "Pó de Lápis-lazuli", "item.modern_industrialization.lapis_plate": "Chapa de Lápis-lazuli", @@ -792,6 +795,7 @@ "item.modern_industrialization.lime_item_pipe": "Tubo de Itens Verde-Limão", "item.modern_industrialization.lime_me_wire": "[UNTRANSLATED] Lime ME Wire", "item.modern_industrialization.liquid_air_bucket": "Balde de Ar Líquido", + "item.modern_industrialization.looting_module": "[UNTRANSLATED] Looting Module", "item.modern_industrialization.lubricant_bucket": "Balde de Lubrificante", "item.modern_industrialization.magenta_fluid_pipe": "Tubo de Fluidos Magenta", "item.modern_industrialization.magenta_item_pipe": "Tubo de Itens Magenta", @@ -909,6 +913,7 @@ "item.modern_industrialization.salt_dust": "Pó de Sal", "item.modern_industrialization.salt_tiny_dust": "Pó Pequeno de Sal", "item.modern_industrialization.shale_oil_bucket": "Balde de Petróleo de Xisto", + "item.modern_industrialization.sharpness_module": "[UNTRANSLATED] Sharpness Module", "item.modern_industrialization.silicon_battery": "Bateria de Silício", "item.modern_industrialization.silicon_double_ingot": "Barra Dupla de Silício", "item.modern_industrialization.silicon_dust": "Pó de Silício", @@ -919,6 +924,7 @@ "item.modern_industrialization.silicon_plate": "Chapa de Silício", "item.modern_industrialization.silicon_tiny_dust": "Pó Pequeno de Silício", "item.modern_industrialization.silicon_wafer": "Wafer de Silício", + "item.modern_industrialization.silk_touch_module": "[UNTRANSLATED] Silk Touch Module", "item.modern_industrialization.silver_cable": "Cabo de Prata", "item.modern_industrialization.silver_double_ingot": "Barra Dupla de Prata", "item.modern_industrialization.silver_dust": "Pó de Prata", @@ -929,6 +935,7 @@ "item.modern_industrialization.silver_wire": "Fio de Prata", "item.modern_industrialization.singularity": "Singularidade", "item.modern_industrialization.small_heat_exchanger": "Trocador de Calor Pequeno", + "item.modern_industrialization.smite_module": "[UNTRANSLATED] Smite Module", "item.modern_industrialization.sodium_battery": "Bateria de Sódio", "item.modern_industrialization.sodium_dust": "Pó de Sódio", "item.modern_industrialization.sodium_hydroxide_bucket": "Balde Hidróxido de Sódio", @@ -952,8 +959,10 @@ "item.modern_industrialization.stainless_steel_ring": "Anel de Aço Inoxidável", "item.modern_industrialization.stainless_steel_rod": "Vara de Aço Inoxidável", "item.modern_industrialization.stainless_steel_rod_magnetic": "Vara de Aço Inoxidável Magnetizado", + "item.modern_industrialization.stainless_steel_rotary_blade": "[UNTRANSLATED] Stainless Steel Rotary Blade", "item.modern_industrialization.stainless_steel_rotor": "Rotor de Aço Inoxidável", "item.modern_industrialization.stainless_steel_tiny_dust": "Pó Pequeno de Aço Inoxidável", + "item.modern_industrialization.stainless_steel_tool_casing": "[UNTRANSLATED] Stainless Steel Tool Casing", "item.modern_industrialization.steam_bucket": "Balde de Vapor", "item.modern_industrialization.steam_cracked_heavy_fuel_bucket": "Balde de Combustível Pesado Craqueado", "item.modern_industrialization.steam_cracked_light_fuel_bucket": "Balde de Combustível Leve Craqueado", @@ -974,7 +983,9 @@ "item.modern_industrialization.steel_ring": "Anel de Aço", "item.modern_industrialization.steel_rod": "Vara de Aço", "item.modern_industrialization.steel_rod_magnetic": "Vara de Aço Magnetizado", + "item.modern_industrialization.steel_rotary_blade": "[UNTRANSLATED] Steel Rotary Blade", "item.modern_industrialization.steel_tiny_dust": "Pó Pequeno de Aço", + "item.modern_industrialization.steel_tool_casing": "[UNTRANSLATED] Steel Tool Casing", "item.modern_industrialization.steel_upgrade": "Melhoria de Aço", "item.modern_industrialization.styrene_bucket": "Balde de Estireno", "item.modern_industrialization.styrene_butadiene_bucket": "Styrene-Butadiene Bucket", @@ -1029,8 +1040,10 @@ "item.modern_industrialization.titanium_plate": "Chapa de Titânio", "item.modern_industrialization.titanium_ring": "Anel de Titânio", "item.modern_industrialization.titanium_rod": "Vara de Titânio", + "item.modern_industrialization.titanium_rotary_blade": "[UNTRANSLATED] Titanium Rotary Blade", "item.modern_industrialization.titanium_rotor": "Rotor de Titânio", "item.modern_industrialization.titanium_tiny_dust": "Pó Pequeno de Titânio", + "item.modern_industrialization.titanium_tool_casing": "[UNTRANSLATED] Titanium Tool Casing", "item.modern_industrialization.toluene_bucket": "Balde de Tolueno", "item.modern_industrialization.transistor": "Transistor", "item.modern_industrialization.tritium_bucket": "Balde de Trítio", diff --git a/src/generated/resources/assets/modern_industrialization/lang/untranslated/ru_ru.json b/src/generated/resources/assets/modern_industrialization/lang/untranslated/ru_ru.json index 20be90784..042e2a603 100644 --- a/src/generated/resources/assets/modern_industrialization/lang/untranslated/ru_ru.json +++ b/src/generated/resources/assets/modern_industrialization/lang/untranslated/ru_ru.json @@ -25,14 +25,10 @@ "advancements.modern_industrialization.chemical_reactor.description": "Создай химический реактор", "advancements.modern_industrialization.coke_oven": "Кока кола", "advancements.modern_industrialization.coke_oven.description": "Создай коксовую печь, чтобы начать Производство стали", - "advancements.modern_industrialization.diesel_chainsaw": "Техас, резня бензопилой", - "advancements.modern_industrialization.diesel_chainsaw.description": "Создай Дизельную цепную пилу", "advancements.modern_industrialization.diesel_generator": "[UNUSED, PLEASE REMOVE] Как из рога изобилия", "advancements.modern_industrialization.diesel_generator.description": "[UNUSED, PLEASE REMOVE] Создай дизель-генератор", "advancements.modern_industrialization.diesel_jetpack": "Эли... мы подразумевали Реактивный ранец!", "advancements.modern_industrialization.diesel_jetpack.description": "Создай дизельный реактивный ранец", - "advancements.modern_industrialization.diesel_mining_drill": "Несмотря на стены Ба Синг Се", - "advancements.modern_industrialization.diesel_mining_drill.description": "Создай дизельный горный бур", "advancements.modern_industrialization.digital_circuit": "Больше нет необходимости в Натрии", "advancements.modern_industrialization.digital_circuit.description": "Создай цифровую микросхему", "advancements.modern_industrialization.distillation_tower": "ТОТАЛЬ™ дистилляция", @@ -431,6 +427,7 @@ "block.modern_industrialization.titanium_ore": "Титановая руда", "block.modern_industrialization.titanium_tank": "Титановый бак", "block.modern_industrialization.toluene": "Талуол", + "block.modern_industrialization.tool_station": "[UNTRANSLATED] Tool Station", "block.modern_industrialization.trash_can": "Автоматическое мусорное ведро", "block.modern_industrialization.tritium": "Тритий", "block.modern_industrialization.tungsten_block": "Вольфрамовый блок", @@ -477,8 +474,10 @@ "item.modern_industrialization.aluminum_plate": "Алюминиевая пластина", "item.modern_industrialization.aluminum_ring": "Алюминиевое кольцо", "item.modern_industrialization.aluminum_rod": "Алюминиевый болт", + "item.modern_industrialization.aluminum_rotary_blade": "[UNTRANSLATED] Aluminum Rotary Blade", "item.modern_industrialization.aluminum_rotor": "Алюминиевое ротор", "item.modern_industrialization.aluminum_tiny_dust": "Алюминиевый мельчайший порошок", + "item.modern_industrialization.aluminum_tool_casing": "[UNTRANSLATED] Aluminum Tool Casing", "item.modern_industrialization.aluminum_wire": "Алюминиевый провод", "item.modern_industrialization.analog_circuit": "Аналоговая микросхема", "item.modern_industrialization.analog_circuit_board": "Аналоговая электроплата", @@ -496,8 +495,10 @@ "item.modern_industrialization.antimony_ingot": "Слиток сурьмы", "item.modern_industrialization.antimony_nugget": "Кусочек сурьмы", "item.modern_industrialization.antimony_tiny_dust": "Мельчайший порошок из сурьмы", + "item.modern_industrialization.area_module": "[UNTRANSLATED] Area Module", "item.modern_industrialization.argon_bucket": "Ведро аргона", "item.modern_industrialization.arithmetic_logic_unit": "Арифметическо-логическое устройство", + "item.modern_industrialization.bane_of_arthropods_module": "[UNTRANSLATED] Bane of Arthropods Module", "item.modern_industrialization.basic_upgrade": "Простая модернизация", "item.modern_industrialization.battery_alloy_curved_plate": "Изогнутая пластина из батарейного сплава", "item.modern_industrialization.battery_alloy_double_ingot": "Двойной слиток батарейного сплава", @@ -625,13 +626,12 @@ "item.modern_industrialization.diamond_plate": "Алмазная пластина", "item.modern_industrialization.diamond_tiny_dust": "Алмазный мельчайший порошок", "item.modern_industrialization.diesel_bucket": "Ведро дизельного топлива", - "item.modern_industrialization.diesel_chainsaw": "Дизельная цепная пила", "item.modern_industrialization.diesel_jetpack": "Дизельный реактивный ранец", - "item.modern_industrialization.diesel_mining_drill": "Дизельный горный бур", "item.modern_industrialization.diethyl_ether_bucket": "Ведро диэтилового эфира", "item.modern_industrialization.digital_circuit": "Цифровая микросхема", "item.modern_industrialization.digital_circuit_board": "Цифровая электроплата", "item.modern_industrialization.diode": "Диод", + "item.modern_industrialization.efficiency_module": "[UNTRANSLATED] Efficiency Module", "item.modern_industrialization.electronic_circuit": "Электронная микросхема", "item.modern_industrialization.electronic_circuit_board": "Электронная монтажная схема", "item.modern_industrialization.electrum_cable": "Кабель из электрума", @@ -651,9 +651,11 @@ "item.modern_industrialization.ethanol_bucket": "Ведро этанола", "item.modern_industrialization.ethylbenzene_bucket": "Ведро этиленбензола", "item.modern_industrialization.ethylene_bucket": "Ведро этилена", + "item.modern_industrialization.fire_aspect_module": "[UNTRANSLATED] Fire Aspect Module", "item.modern_industrialization.fire_clay_brick": "Глинозёмистый кирпич", "item.modern_industrialization.fire_clay_dust": "Глинозёмистый порошок", "item.modern_industrialization.fluid_pipe": "Жидкостная труба", + "item.modern_industrialization.fortune_module": "[UNTRANSLATED] Fortune Module", "item.modern_industrialization.gold_bolt": "Золотой болт", "item.modern_industrialization.gold_curved_plate": "Золотая изогнутая пластина", "item.modern_industrialization.gold_double_ingot": "Двойной слиток золота", @@ -744,6 +746,7 @@ "item.modern_industrialization.kanthal_plate": "Фехралевая пластина", "item.modern_industrialization.kanthal_tiny_dust": "Фехралевый мельчайший порошок", "item.modern_industrialization.kanthal_wire": "Фехралевый провод", + "item.modern_industrialization.knockback_module": "[UNTRANSLATED] Knockback Module", "item.modern_industrialization.lapis_crushed_dust": "Лазуритовый измельчённый порошок", "item.modern_industrialization.lapis_dust": "Лазуритовый порошок", "item.modern_industrialization.lapis_plate": "Лазуритовая пластина", @@ -792,6 +795,7 @@ "item.modern_industrialization.lime_item_pipe": "Лаймовая предметная труба", "item.modern_industrialization.lime_me_wire": "[UNTRANSLATED] Lime ME Wire", "item.modern_industrialization.liquid_air_bucket": "Ведро сжиженного воздуха", + "item.modern_industrialization.looting_module": "[UNTRANSLATED] Looting Module", "item.modern_industrialization.lubricant_bucket": "Ведро смазочного материала", "item.modern_industrialization.magenta_fluid_pipe": "Пурпурная жидкостная труба", "item.modern_industrialization.magenta_item_pipe": "Пурпурная предметная труба", @@ -909,6 +913,7 @@ "item.modern_industrialization.salt_dust": "Соляной порошок", "item.modern_industrialization.salt_tiny_dust": "Соляной мельчайший порошок", "item.modern_industrialization.shale_oil_bucket": "Ведро нефтеносного сланца", + "item.modern_industrialization.sharpness_module": "[UNTRANSLATED] Sharpness Module", "item.modern_industrialization.silicon_battery": "Кремниевая батарея", "item.modern_industrialization.silicon_double_ingot": "Двойной слиток кремния", "item.modern_industrialization.silicon_dust": "Кремниевый порошок", @@ -919,6 +924,7 @@ "item.modern_industrialization.silicon_plate": "Кремниевая пластина", "item.modern_industrialization.silicon_tiny_dust": "Мельчайший кремниевый порошок", "item.modern_industrialization.silicon_wafer": "Кремниевая пластина", + "item.modern_industrialization.silk_touch_module": "[UNTRANSLATED] Silk Touch Module", "item.modern_industrialization.silver_cable": "Серебряный кабель", "item.modern_industrialization.silver_double_ingot": "Двойной слиток серебра", "item.modern_industrialization.silver_dust": "Серебряный порошок", @@ -929,6 +935,7 @@ "item.modern_industrialization.silver_wire": "Серебряный провод", "item.modern_industrialization.singularity": "Сингулярность", "item.modern_industrialization.small_heat_exchanger": "Малый теплообменник", + "item.modern_industrialization.smite_module": "[UNTRANSLATED] Smite Module", "item.modern_industrialization.sodium_battery": "Натриевая батарея", "item.modern_industrialization.sodium_dust": "Натриевый порошок", "item.modern_industrialization.sodium_hydroxide_bucket": "Ведро гидроокись натрия", @@ -952,8 +959,10 @@ "item.modern_industrialization.stainless_steel_ring": "Кольцо из нержавеющей стали", "item.modern_industrialization.stainless_steel_rod": "болт нержавеющей стали", "item.modern_industrialization.stainless_steel_rod_magnetic": "Магнитный болт из нержавеющей стали", + "item.modern_industrialization.stainless_steel_rotary_blade": "[UNTRANSLATED] Stainless Steel Rotary Blade", "item.modern_industrialization.stainless_steel_rotor": "Ротор из нержавеющей стали", "item.modern_industrialization.stainless_steel_tiny_dust": "Мельчайший порошок нержавеющей стали", + "item.modern_industrialization.stainless_steel_tool_casing": "[UNTRANSLATED] Stainless Steel Tool Casing", "item.modern_industrialization.steam_bucket": "Ведро пара", "item.modern_industrialization.steam_cracked_heavy_fuel_bucket": "Ведро тяжёлого топлива парофазного крекинга", "item.modern_industrialization.steam_cracked_light_fuel_bucket": "Ведро лёгкого топлива парофазного крекинга", @@ -974,7 +983,9 @@ "item.modern_industrialization.steel_ring": "Стальное кольцо", "item.modern_industrialization.steel_rod": "Стальной болт", "item.modern_industrialization.steel_rod_magnetic": "болт из магнитной стали", + "item.modern_industrialization.steel_rotary_blade": "[UNTRANSLATED] Steel Rotary Blade", "item.modern_industrialization.steel_tiny_dust": "Мельчайший стальной порошок", + "item.modern_industrialization.steel_tool_casing": "[UNTRANSLATED] Steel Tool Casing", "item.modern_industrialization.steel_upgrade": "Стальная модернизация", "item.modern_industrialization.styrene_bucket": "Ведро стирола", "item.modern_industrialization.styrene_butadiene_bucket": "Ведро сополимера бутадиена и стирола", @@ -1029,8 +1040,10 @@ "item.modern_industrialization.titanium_plate": "Титановая пластина", "item.modern_industrialization.titanium_ring": "Титановое кольцо", "item.modern_industrialization.titanium_rod": "Титановый болт", + "item.modern_industrialization.titanium_rotary_blade": "[UNTRANSLATED] Titanium Rotary Blade", "item.modern_industrialization.titanium_rotor": "Титановый ротор", "item.modern_industrialization.titanium_tiny_dust": "Мельчайший титановый порошок", + "item.modern_industrialization.titanium_tool_casing": "[UNTRANSLATED] Titanium Tool Casing", "item.modern_industrialization.toluene_bucket": "Ведро таулола", "item.modern_industrialization.transistor": "Полупроводниковый триод", "item.modern_industrialization.tritium_bucket": "Ведро трития", diff --git a/src/generated/resources/assets/modern_industrialization/lang/untranslated/zh_cn.json b/src/generated/resources/assets/modern_industrialization/lang/untranslated/zh_cn.json index 6e7ca7c42..536a27654 100644 --- a/src/generated/resources/assets/modern_industrialization/lang/untranslated/zh_cn.json +++ b/src/generated/resources/assets/modern_industrialization/lang/untranslated/zh_cn.json @@ -25,14 +25,8 @@ "advancements.modern_industrialization.chemical_reactor.description": "制作化学反应釜", "advancements.modern_industrialization.coke_oven": "“焦炭”味可口可乐", "advancements.modern_industrialization.coke_oven.description": "制作焦炉以开始炼钢", - "advancements.modern_industrialization.diesel_chainsaw": "德州电锯杀人狂", - "advancements.modern_industrialization.diesel_chainsaw.description": "制作柴油链锯", - "advancements.modern_industrialization.diesel_generator": "[UNUSED, PLEASE REMOVE] 速度与激情", - "advancements.modern_industrialization.diesel_generator.description": "[UNUSED, PLEASE REMOVE] 制作柴油发动机", - "advancements.modern_industrialization.diesel_jetpack": "最昂贵的喷气背包", - "advancements.modern_industrialization.diesel_jetpack.description": "制作柴油喷气背包", - "advancements.modern_industrialization.diesel_mining_drill": "挖穿永固城", - "advancements.modern_industrialization.diesel_mining_drill.description": "制作柴油采矿钻头", + "advancements.modern_industrialization.diesel_jetpack": "[UNTRANSLATED] Ely... We Meant Jetpack!", + "advancements.modern_industrialization.diesel_jetpack.description": "[UNTRANSLATED] Craft a Diesel Jetpack", "advancements.modern_industrialization.digital_circuit": "再也无钠", "advancements.modern_industrialization.digital_circuit.description": "制作数字电路", "advancements.modern_industrialization.distillation_tower": "高效™蒸馏", @@ -431,6 +425,7 @@ "block.modern_industrialization.titanium_ore": "钛矿石", "block.modern_industrialization.titanium_tank": "钛储罐", "block.modern_industrialization.toluene": "甲苯", + "block.modern_industrialization.tool_station": "[UNTRANSLATED] Tool Station", "block.modern_industrialization.trash_can": "自动垃圾桶", "block.modern_industrialization.tritium": "氚", "block.modern_industrialization.tungsten_block": "钨块", @@ -477,8 +472,10 @@ "item.modern_industrialization.aluminum_plate": "铝板", "item.modern_industrialization.aluminum_ring": "铝环", "item.modern_industrialization.aluminum_rod": "铝杆", + "item.modern_industrialization.aluminum_rotary_blade": "[UNTRANSLATED] Aluminum Rotary Blade", "item.modern_industrialization.aluminum_rotor": "铝转子", "item.modern_industrialization.aluminum_tiny_dust": "小堆铝粉", + "item.modern_industrialization.aluminum_tool_casing": "[UNTRANSLATED] Aluminum Tool Casing", "item.modern_industrialization.aluminum_wire": "铝线", "item.modern_industrialization.analog_circuit": "模拟电路", "item.modern_industrialization.analog_circuit_board": "模拟电路板", @@ -496,8 +493,10 @@ "item.modern_industrialization.antimony_ingot": "锑锭", "item.modern_industrialization.antimony_nugget": "锑粒", "item.modern_industrialization.antimony_tiny_dust": "小堆锑粉", + "item.modern_industrialization.area_module": "[UNTRANSLATED] Area Module", "item.modern_industrialization.argon_bucket": "[UNTRANSLATED] Argon Bucket", "item.modern_industrialization.arithmetic_logic_unit": "算术逻辑单元", + "item.modern_industrialization.bane_of_arthropods_module": "[UNTRANSLATED] Bane of Arthropods Module", "item.modern_industrialization.basic_upgrade": "基本升级", "item.modern_industrialization.battery_alloy_curved_plate": "弯曲电池合金板", "item.modern_industrialization.battery_alloy_double_ingot": "电池合金双层锭", @@ -625,13 +624,12 @@ "item.modern_industrialization.diamond_plate": "钻石板", "item.modern_industrialization.diamond_tiny_dust": "小堆钻石粉", "item.modern_industrialization.diesel_bucket": "[UNTRANSLATED] Diesel Bucket", - "item.modern_industrialization.diesel_chainsaw": "柴油链锯", "item.modern_industrialization.diesel_jetpack": "柴油喷气背包", - "item.modern_industrialization.diesel_mining_drill": "柴油采矿钻头", "item.modern_industrialization.diethyl_ether_bucket": "[UNTRANSLATED] Diethyl Ether Bucket", "item.modern_industrialization.digital_circuit": "数字电路", "item.modern_industrialization.digital_circuit_board": "数字电路板", "item.modern_industrialization.diode": "二极管", + "item.modern_industrialization.efficiency_module": "[UNTRANSLATED] Efficiency Module", "item.modern_industrialization.electronic_circuit": "电子电路", "item.modern_industrialization.electronic_circuit_board": "电子电路板", "item.modern_industrialization.electrum_cable": "琥珀金电缆", @@ -651,9 +649,11 @@ "item.modern_industrialization.ethanol_bucket": "[UNTRANSLATED] Ethanol Bucket", "item.modern_industrialization.ethylbenzene_bucket": "[UNTRANSLATED] Ethylbenzene Bucket", "item.modern_industrialization.ethylene_bucket": "[UNTRANSLATED] Ethylene Bucket", + "item.modern_industrialization.fire_aspect_module": "[UNTRANSLATED] Fire Aspect Module", "item.modern_industrialization.fire_clay_brick": "耐火黏土砖", "item.modern_industrialization.fire_clay_dust": "耐火粘土粉", "item.modern_industrialization.fluid_pipe": "流体管道", + "item.modern_industrialization.fortune_module": "[UNTRANSLATED] Fortune Module", "item.modern_industrialization.gold_bolt": "金螺栓", "item.modern_industrialization.gold_curved_plate": "弯曲金板", "item.modern_industrialization.gold_double_ingot": "金双层锭", @@ -744,6 +744,7 @@ "item.modern_industrialization.kanthal_plate": "铁铬铝合金板", "item.modern_industrialization.kanthal_tiny_dust": "小堆铁铬铝合金粉", "item.modern_industrialization.kanthal_wire": "铁铬铝合金线", + "item.modern_industrialization.knockback_module": "[UNTRANSLATED] Knockback Module", "item.modern_industrialization.lapis_crushed_dust": "青金石碎粉", "item.modern_industrialization.lapis_dust": "青金石粉", "item.modern_industrialization.lapis_plate": "青金石板", @@ -792,6 +793,7 @@ "item.modern_industrialization.lime_item_pipe": "黄绿色物品管道", "item.modern_industrialization.lime_me_wire": "[UNTRANSLATED] Lime ME Wire", "item.modern_industrialization.liquid_air_bucket": "[UNTRANSLATED] Liquid Air Bucket", + "item.modern_industrialization.looting_module": "[UNTRANSLATED] Looting Module", "item.modern_industrialization.lubricant_bucket": "[UNTRANSLATED] Lubricant Bucket", "item.modern_industrialization.magenta_fluid_pipe": "品红色流体管道", "item.modern_industrialization.magenta_item_pipe": "品红色物品管道", @@ -909,6 +911,7 @@ "item.modern_industrialization.salt_dust": "盐粉", "item.modern_industrialization.salt_tiny_dust": "小堆盐粉", "item.modern_industrialization.shale_oil_bucket": "[UNTRANSLATED] Shale Oil Bucket", + "item.modern_industrialization.sharpness_module": "[UNTRANSLATED] Sharpness Module", "item.modern_industrialization.silicon_battery": "硅电池", "item.modern_industrialization.silicon_double_ingot": "硅双层锭", "item.modern_industrialization.silicon_dust": "硅粉", @@ -919,6 +922,7 @@ "item.modern_industrialization.silicon_plate": "硅板", "item.modern_industrialization.silicon_tiny_dust": "小堆硅粉", "item.modern_industrialization.silicon_wafer": "硅晶圆", + "item.modern_industrialization.silk_touch_module": "[UNTRANSLATED] Silk Touch Module", "item.modern_industrialization.silver_cable": "银电缆", "item.modern_industrialization.silver_double_ingot": "银双层锭", "item.modern_industrialization.silver_dust": "银粉", @@ -929,6 +933,7 @@ "item.modern_industrialization.silver_wire": "银线", "item.modern_industrialization.singularity": "奇点", "item.modern_industrialization.small_heat_exchanger": "小型热交换器", + "item.modern_industrialization.smite_module": "[UNTRANSLATED] Smite Module", "item.modern_industrialization.sodium_battery": "钠电池", "item.modern_industrialization.sodium_dust": "钠粉", "item.modern_industrialization.sodium_hydroxide_bucket": "[UNTRANSLATED] Sodium Hydroxide Bucket", @@ -952,8 +957,10 @@ "item.modern_industrialization.stainless_steel_ring": "不锈钢环", "item.modern_industrialization.stainless_steel_rod": "不锈钢杆", "item.modern_industrialization.stainless_steel_rod_magnetic": "磁化不锈钢棒", + "item.modern_industrialization.stainless_steel_rotary_blade": "[UNTRANSLATED] Stainless Steel Rotary Blade", "item.modern_industrialization.stainless_steel_rotor": "不锈钢转子", "item.modern_industrialization.stainless_steel_tiny_dust": "小堆不锈钢粉", + "item.modern_industrialization.stainless_steel_tool_casing": "[UNTRANSLATED] Stainless Steel Tool Casing", "item.modern_industrialization.steam_bucket": "[UNTRANSLATED] Steam Bucket", "item.modern_industrialization.steam_cracked_heavy_fuel_bucket": "[UNTRANSLATED] Steam-Cracked Heavy Fuel Bucket", "item.modern_industrialization.steam_cracked_light_fuel_bucket": "[UNTRANSLATED] Steam-Cracked Light Fuel Bucket", @@ -974,7 +981,9 @@ "item.modern_industrialization.steel_ring": "钢环", "item.modern_industrialization.steel_rod": "钢杆", "item.modern_industrialization.steel_rod_magnetic": "磁化钢杆", + "item.modern_industrialization.steel_rotary_blade": "[UNTRANSLATED] Steel Rotary Blade", "item.modern_industrialization.steel_tiny_dust": "小堆钢粉", + "item.modern_industrialization.steel_tool_casing": "[UNTRANSLATED] Steel Tool Casing", "item.modern_industrialization.steel_upgrade": "钢材升级", "item.modern_industrialization.styrene_bucket": "[UNTRANSLATED] Styrene Bucket", "item.modern_industrialization.styrene_butadiene_bucket": "[UNTRANSLATED] Styrene-Butadiene Bucket", @@ -1029,8 +1038,10 @@ "item.modern_industrialization.titanium_plate": "钛板", "item.modern_industrialization.titanium_ring": "钛环", "item.modern_industrialization.titanium_rod": "钛杆", + "item.modern_industrialization.titanium_rotary_blade": "[UNTRANSLATED] Titanium Rotary Blade", "item.modern_industrialization.titanium_rotor": "钛转子", "item.modern_industrialization.titanium_tiny_dust": "小堆钛粉", + "item.modern_industrialization.titanium_tool_casing": "[UNTRANSLATED] Titanium Tool Casing", "item.modern_industrialization.toluene_bucket": "[UNTRANSLATED] Toluene Bucket", "item.modern_industrialization.transistor": "晶体管", "item.modern_industrialization.tritium_bucket": "[UNTRANSLATED] Tritium Bucket", diff --git a/src/generated/resources/assets/modern_industrialization/lang/untranslated/zh_tw.json b/src/generated/resources/assets/modern_industrialization/lang/untranslated/zh_tw.json index afe00bbca..73f340087 100644 --- a/src/generated/resources/assets/modern_industrialization/lang/untranslated/zh_tw.json +++ b/src/generated/resources/assets/modern_industrialization/lang/untranslated/zh_tw.json @@ -29,14 +29,10 @@ "advancements.modern_industrialization.chemical_reactor.description": "[UNTRANSLATED] Craft a Chemical Reactor", "advancements.modern_industrialization.coke_oven": "“焦炭味”可口可樂", "advancements.modern_industrialization.coke_oven.description": "製作焦爐以開始煉鋼", - "advancements.modern_industrialization.diesel_chainsaw": "德州電鋸殺人狂", - "advancements.modern_industrialization.diesel_chainsaw.description": "製作柴油鏈鋸", "advancements.modern_industrialization.diesel_generator": "[UNUSED, PLEASE REMOVE] 速度與激情", "advancements.modern_industrialization.diesel_generator.description": "[UNUSED, PLEASE REMOVE] 製作柴油發動機", "advancements.modern_industrialization.diesel_jetpack": "[UNTRANSLATED] Ely... We Meant Jetpack!", "advancements.modern_industrialization.diesel_jetpack.description": "[UNTRANSLATED] Craft a Diesel Jetpack", - "advancements.modern_industrialization.diesel_mining_drill": "挖穿永固城", - "advancements.modern_industrialization.diesel_mining_drill.description": "製作柴油採礦鑽頭", "advancements.modern_industrialization.digital_circuit": "[UNTRANSLATED] No need for Sodium anymore", "advancements.modern_industrialization.digital_circuit.description": "[UNTRANSLATED] Craft a Digital Circuit", "advancements.modern_industrialization.distillation_tower": "[UNTRANSLATED] TOTAL™ Distillation", @@ -490,6 +486,7 @@ "block.modern_industrialization.titanium_ore": "[UNTRANSLATED] Titanium Ore", "block.modern_industrialization.titanium_tank": "[UNTRANSLATED] Titanium Tank", "block.modern_industrialization.toluene": "[UNTRANSLATED] Toluene", + "block.modern_industrialization.tool_station": "[UNTRANSLATED] Tool Station", "block.modern_industrialization.trash_can": "自動垃圾桶", "block.modern_industrialization.tritium": "[UNTRANSLATED] Tritium", "block.modern_industrialization.tungsten_block": "[UNTRANSLATED] Block of Tungsten", @@ -538,8 +535,10 @@ "item.modern_industrialization.aluminum_plate": "鋁板", "item.modern_industrialization.aluminum_ring": "鋁環", "item.modern_industrialization.aluminum_rod": "鋁杆", + "item.modern_industrialization.aluminum_rotary_blade": "[UNTRANSLATED] Aluminum Rotary Blade", "item.modern_industrialization.aluminum_rotor": "鋁轉子", "item.modern_industrialization.aluminum_tiny_dust": "小鋁粉", + "item.modern_industrialization.aluminum_tool_casing": "[UNTRANSLATED] Aluminum Tool Casing", "item.modern_industrialization.aluminum_wire": "鋁線", "item.modern_industrialization.analog_circuit": "[UNTRANSLATED] Analog Circuit", "item.modern_industrialization.analog_circuit_board": "[UNTRANSLATED] Analog Circuit Board", @@ -558,8 +557,10 @@ "item.modern_industrialization.antimony_ingot": "銻錠", "item.modern_industrialization.antimony_nugget": "銻粒", "item.modern_industrialization.antimony_tiny_dust": "小銻粉", + "item.modern_industrialization.area_module": "[UNTRANSLATED] Area Module", "item.modern_industrialization.argon_bucket": "[UNTRANSLATED] Argon Bucket", "item.modern_industrialization.arithmetic_logic_unit": "[UNTRANSLATED] Arithmetic Logic Unit", + "item.modern_industrialization.bane_of_arthropods_module": "[UNTRANSLATED] Bane of Arthropods Module", "item.modern_industrialization.basic_upgrade": "[UNTRANSLATED] Basic Upgrade", "item.modern_industrialization.battery_alloy_curved_plate": "彎曲電池合金板", "item.modern_industrialization.battery_alloy_double_ingot": "電池合金雙層錠", @@ -723,13 +724,12 @@ "item.modern_industrialization.diamond_plate": "[UNTRANSLATED] Diamond Plate", "item.modern_industrialization.diamond_tiny_dust": "[UNTRANSLATED] Diamond Tiny Dust", "item.modern_industrialization.diesel_bucket": "[UNTRANSLATED] Diesel Bucket", - "item.modern_industrialization.diesel_chainsaw": "柴油鏈鋸", "item.modern_industrialization.diesel_jetpack": "[UNTRANSLATED] Diesel Jetpack", - "item.modern_industrialization.diesel_mining_drill": "柴油採礦鑽頭", "item.modern_industrialization.diethyl_ether_bucket": "[UNTRANSLATED] Diethyl Ether Bucket", "item.modern_industrialization.digital_circuit": "數字電路", "item.modern_industrialization.digital_circuit_board": "數字電路板", "item.modern_industrialization.diode": "二極體", + "item.modern_industrialization.efficiency_module": "[UNTRANSLATED] Efficiency Module", "item.modern_industrialization.electronic_circuit": "電子電路", "item.modern_industrialization.electronic_circuit_board": "電子電路板", "item.modern_industrialization.electrum_cable": "[UNTRANSLATED] Electrum Cable", @@ -752,10 +752,12 @@ "item.modern_industrialization.ethanol_bucket": "[UNTRANSLATED] Ethanol Bucket", "item.modern_industrialization.ethylbenzene_bucket": "[UNTRANSLATED] Ethylbenzene Bucket", "item.modern_industrialization.ethylene_bucket": "[UNTRANSLATED] Ethylene Bucket", + "item.modern_industrialization.fire_aspect_module": "[UNTRANSLATED] Fire Aspect Module", "item.modern_industrialization.fire_clay_brick": "耐火黏土磚", "item.modern_industrialization.fire_clay_dust": "耐火黏土粉", "item.modern_industrialization.fluid_pipe": "[UNTRANSLATED] Fluid Pipe", "item.modern_industrialization.fluid_slot": "[UNUSED, PLEASE REMOVE] 流體欄", + "item.modern_industrialization.fortune_module": "[UNTRANSLATED] Fortune Module", "item.modern_industrialization.gold_bolt": "[UNTRANSLATED] Gold Bolt", "item.modern_industrialization.gold_crushed_dust": "[UNUSED, PLEASE REMOVE] 金碎粉", "item.modern_industrialization.gold_curved_plate": "彎曲金板", @@ -852,6 +854,7 @@ "item.modern_industrialization.kanthal_plate": "[UNTRANSLATED] Kanthal Plate", "item.modern_industrialization.kanthal_tiny_dust": "[UNTRANSLATED] Kanthal Tiny Dust", "item.modern_industrialization.kanthal_wire": "[UNTRANSLATED] Kanthal Wire", + "item.modern_industrialization.knockback_module": "[UNTRANSLATED] Knockback Module", "item.modern_industrialization.lapis_crushed_dust": "[UNTRANSLATED] Lapis Lazuli Crushed Dust", "item.modern_industrialization.lapis_dust": "[UNTRANSLATED] Lapis Lazuli Dust", "item.modern_industrialization.lapis_plate": "[UNTRANSLATED] Lapis Lazuli Plate", @@ -904,6 +907,7 @@ "item.modern_industrialization.lime_item_pipe": "[UNTRANSLATED] Lime Item Pipe", "item.modern_industrialization.lime_me_wire": "[UNTRANSLATED] Lime ME Wire", "item.modern_industrialization.liquid_air_bucket": "[UNTRANSLATED] Liquid Air Bucket", + "item.modern_industrialization.looting_module": "[UNTRANSLATED] Looting Module", "item.modern_industrialization.lubricant_bucket": "[UNTRANSLATED] Lubricant Bucket", "item.modern_industrialization.lv_battery": "[UNUSED, PLEASE REMOVE] 紅石電池", "item.modern_industrialization.lv_circuit": "[UNUSED, PLEASE REMOVE] 模擬電路", @@ -1071,6 +1075,7 @@ "item.modern_industrialization.salt_dust": "鹽粉", "item.modern_industrialization.salt_tiny_dust": "小鹽粉", "item.modern_industrialization.shale_oil_bucket": "[UNTRANSLATED] Shale Oil Bucket", + "item.modern_industrialization.sharpness_module": "[UNTRANSLATED] Sharpness Module", "item.modern_industrialization.silicon_battery": "矽電池", "item.modern_industrialization.silicon_double_ingot": "矽雙層錠", "item.modern_industrialization.silicon_dust": "矽粉", @@ -1081,6 +1086,7 @@ "item.modern_industrialization.silicon_plate": "矽板", "item.modern_industrialization.silicon_tiny_dust": "小矽粉", "item.modern_industrialization.silicon_wafer": "[UNTRANSLATED] Silicon Wafer", + "item.modern_industrialization.silk_touch_module": "[UNTRANSLATED] Silk Touch Module", "item.modern_industrialization.silver_cable": "[UNTRANSLATED] Silver Cable", "item.modern_industrialization.silver_crushed_dust": "[UNUSED, PLEASE REMOVE] 銀碎粉", "item.modern_industrialization.silver_curved_plate": "[UNUSED, PLEASE REMOVE] 彎曲銀板", @@ -1096,6 +1102,7 @@ "item.modern_industrialization.simple_fluid_coolant": "[UNUSED, PLEASE REMOVE] 簡易流體冷卻劑", "item.modern_industrialization.singularity": "[UNTRANSLATED] Singularity", "item.modern_industrialization.small_heat_exchanger": "[UNTRANSLATED] Small Heat Exchanger", + "item.modern_industrialization.smite_module": "[UNTRANSLATED] Smite Module", "item.modern_industrialization.sodium_battery": "鈉電池", "item.modern_industrialization.sodium_dust": "鈉粉", "item.modern_industrialization.sodium_hydroxide_bucket": "[UNTRANSLATED] Sodium Hydroxide Bucket", @@ -1121,8 +1128,10 @@ "item.modern_industrialization.stainless_steel_ring": "不鏽鋼環", "item.modern_industrialization.stainless_steel_rod": "不鏽鋼杆", "item.modern_industrialization.stainless_steel_rod_magnetic": "[UNTRANSLATED] Magnetic Stainless Steel Rod", + "item.modern_industrialization.stainless_steel_rotary_blade": "[UNTRANSLATED] Stainless Steel Rotary Blade", "item.modern_industrialization.stainless_steel_rotor": "不鏽鋼轉子", "item.modern_industrialization.stainless_steel_tiny_dust": "小不鏽鋼粉", + "item.modern_industrialization.stainless_steel_tool_casing": "[UNTRANSLATED] Stainless Steel Tool Casing", "item.modern_industrialization.steam_bucket": "[UNTRANSLATED] Steam Bucket", "item.modern_industrialization.steam_cracked_heavy_fuel_bucket": "[UNTRANSLATED] Steam-Cracked Heavy Fuel Bucket", "item.modern_industrialization.steam_cracked_light_fuel_bucket": "[UNTRANSLATED] Steam-Cracked Light Fuel Bucket", @@ -1144,8 +1153,10 @@ "item.modern_industrialization.steel_ring": "鋼環", "item.modern_industrialization.steel_rod": "鋼杆", "item.modern_industrialization.steel_rod_magnetic": "磁化鋼杆", + "item.modern_industrialization.steel_rotary_blade": "[UNTRANSLATED] Steel Rotary Blade", "item.modern_industrialization.steel_rotor": "[UNUSED, PLEASE REMOVE] 鋼轉子", "item.modern_industrialization.steel_tiny_dust": "小鋼粉", + "item.modern_industrialization.steel_tool_casing": "[UNTRANSLATED] Steel Tool Casing", "item.modern_industrialization.steel_upgrade": "[UNTRANSLATED] Steel Upgrade", "item.modern_industrialization.styrene_bucket": "[UNTRANSLATED] Styrene Bucket", "item.modern_industrialization.styrene_butadiene_bucket": "[UNTRANSLATED] Styrene-Butadiene Bucket", @@ -1201,8 +1212,10 @@ "item.modern_industrialization.titanium_plate": "鈦板", "item.modern_industrialization.titanium_ring": "鈦環", "item.modern_industrialization.titanium_rod": "鈦杆", + "item.modern_industrialization.titanium_rotary_blade": "[UNTRANSLATED] Titanium Rotary Blade", "item.modern_industrialization.titanium_rotor": "鈦轉子", "item.modern_industrialization.titanium_tiny_dust": "小鈦粉", + "item.modern_industrialization.titanium_tool_casing": "[UNTRANSLATED] Titanium Tool Casing", "item.modern_industrialization.toluene_bucket": "[UNTRANSLATED] Toluene Bucket", "item.modern_industrialization.transistor": "晶體管", "item.modern_industrialization.tritium_bucket": "[UNTRANSLATED] Tritium Bucket", diff --git a/src/generated/resources/assets/modern_industrialization/models/item/aluminum_rotary_blade.json b/src/generated/resources/assets/modern_industrialization/models/item/aluminum_rotary_blade.json new file mode 100644 index 000000000..1227e7993 --- /dev/null +++ b/src/generated/resources/assets/modern_industrialization/models/item/aluminum_rotary_blade.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "modern_industrialization:item/aluminum_rotary_blade" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/modern_industrialization/models/item/diesel_chainsaw.json b/src/generated/resources/assets/modern_industrialization/models/item/diesel_chainsaw.json deleted file mode 100644 index 8b6c70be9..000000000 --- a/src/generated/resources/assets/modern_industrialization/models/item/diesel_chainsaw.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/handheld", - "textures": { - "layer0": "modern_industrialization:item/diesel_chainsaw" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/modern_industrialization/models/item/diesel_mining_drill.json b/src/generated/resources/assets/modern_industrialization/models/item/diesel_mining_drill.json deleted file mode 100644 index 7199f6ddc..000000000 --- a/src/generated/resources/assets/modern_industrialization/models/item/diesel_mining_drill.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/handheld", - "textures": { - "layer0": "modern_industrialization:item/diesel_mining_drill" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/modern_industrialization/models/item/stainless_steel_rotary_blade.json b/src/generated/resources/assets/modern_industrialization/models/item/stainless_steel_rotary_blade.json new file mode 100644 index 000000000..10cd235e2 --- /dev/null +++ b/src/generated/resources/assets/modern_industrialization/models/item/stainless_steel_rotary_blade.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "modern_industrialization:item/stainless_steel_rotary_blade" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/modern_industrialization/models/item/steel_rotary_blade.json b/src/generated/resources/assets/modern_industrialization/models/item/steel_rotary_blade.json new file mode 100644 index 000000000..680aade0f --- /dev/null +++ b/src/generated/resources/assets/modern_industrialization/models/item/steel_rotary_blade.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "modern_industrialization:item/steel_rotary_blade" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/modern_industrialization/models/item/titanium_rotary_blade.json b/src/generated/resources/assets/modern_industrialization/models/item/titanium_rotary_blade.json new file mode 100644 index 000000000..3a9b08e55 --- /dev/null +++ b/src/generated/resources/assets/modern_industrialization/models/item/titanium_rotary_blade.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "modern_industrialization:item/titanium_rotary_blade" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/modern_industrialization/models/item/tool_station.json b/src/generated/resources/assets/modern_industrialization/models/item/tool_station.json new file mode 100644 index 000000000..f79cb551b --- /dev/null +++ b/src/generated/resources/assets/modern_industrialization/models/item/tool_station.json @@ -0,0 +1,3 @@ +{ + "parent": "modern_industrialization:block/tool_station" +} \ No newline at end of file diff --git a/src/generated/resources/assets/modern_industrialization/textures/item/aluminum_rotary_blade.png b/src/generated/resources/assets/modern_industrialization/textures/item/aluminum_rotary_blade.png new file mode 100644 index 000000000..b0f7598b9 Binary files /dev/null and b/src/generated/resources/assets/modern_industrialization/textures/item/aluminum_rotary_blade.png differ diff --git a/src/generated/resources/assets/modern_industrialization/textures/item/invar_rotary_blade.png b/src/generated/resources/assets/modern_industrialization/textures/item/invar_rotary_blade.png new file mode 100644 index 000000000..2d50aa10a Binary files /dev/null and b/src/generated/resources/assets/modern_industrialization/textures/item/invar_rotary_blade.png differ diff --git a/src/generated/resources/assets/modern_industrialization/textures/item/stainless_steel_rotary_blade.png b/src/generated/resources/assets/modern_industrialization/textures/item/stainless_steel_rotary_blade.png new file mode 100644 index 000000000..d6daaf005 Binary files /dev/null and b/src/generated/resources/assets/modern_industrialization/textures/item/stainless_steel_rotary_blade.png differ diff --git a/src/generated/resources/assets/modern_industrialization/textures/item/steel_rotary_blade.png b/src/generated/resources/assets/modern_industrialization/textures/item/steel_rotary_blade.png new file mode 100644 index 000000000..67e706dff Binary files /dev/null and b/src/generated/resources/assets/modern_industrialization/textures/item/steel_rotary_blade.png differ diff --git a/src/generated/resources/assets/modern_industrialization/textures/item/titanium_rotary_blade.png b/src/generated/resources/assets/modern_industrialization/textures/item/titanium_rotary_blade.png new file mode 100644 index 000000000..cff7aa080 Binary files /dev/null and b/src/generated/resources/assets/modern_industrialization/textures/item/titanium_rotary_blade.png differ diff --git a/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json b/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json new file mode 100644 index 000000000..dd32a323b --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "modern_industrialization:tool_station" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/advancements/diesel_chainsaw.json b/src/generated/resources/data/modern_industrialization/advancements/diesel_chainsaw.json deleted file mode 100644 index 9a79db750..000000000 --- a/src/generated/resources/data/modern_industrialization/advancements/diesel_chainsaw.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "modern_industrialization:distillery", - "criteria": { - "checkInv": { - "conditions": { - "items": [ - { - "items": [ - "modern_industrialization:diesel_chainsaw" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": true, - "description": { - "translate": "advancements.modern_industrialization.diesel_chainsaw.description" - }, - "frame": "challenge", - "hidden": false, - "icon": { - "item": "modern_industrialization:diesel_chainsaw" - }, - "show_toast": true, - "title": { - "translate": "advancements.modern_industrialization.diesel_chainsaw" - } - }, - "requirements": [ - [ - "checkInv" - ] - ], - "sends_telemetry_event": true -} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/advancements/diesel_mining_drill.json b/src/generated/resources/data/modern_industrialization/advancements/diesel_mining_drill.json deleted file mode 100644 index 7b940e2bd..000000000 --- a/src/generated/resources/data/modern_industrialization/advancements/diesel_mining_drill.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "modern_industrialization:distillery", - "criteria": { - "checkInv": { - "conditions": { - "items": [ - { - "items": [ - "modern_industrialization:diesel_mining_drill" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": true, - "description": { - "translate": "advancements.modern_industrialization.diesel_mining_drill.description" - }, - "frame": "challenge", - "hidden": false, - "icon": { - "item": "modern_industrialization:diesel_mining_drill" - }, - "show_toast": true, - "title": { - "translate": "advancements.modern_industrialization.diesel_mining_drill" - } - }, - "requirements": [ - [ - "checkInv" - ] - ], - "sends_telemetry_event": true -} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/loot_tables/blocks/tool_station.json b/src/generated/resources/data/modern_industrialization/loot_tables/blocks/tool_station.json new file mode 100644 index 000000000..5b3bda30c --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/loot_tables/blocks/tool_station.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "modern_industrialization:tool_station" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/aluminum/assembler/rotary_blade.json b/src/generated/resources/data/modern_industrialization/recipes/materials/aluminum/assembler/rotary_blade.json new file mode 100644 index 000000000..d2055ebd9 --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/aluminum/assembler/rotary_blade.json @@ -0,0 +1,21 @@ +{ + "type": "modern_industrialization:assembler", + "duration": 200, + "eu": 2, + "item_inputs": [ + { + "amount": 1, + "tag": "c:aluminum_gears" + }, + { + "amount": 4, + "item": "modern_industrialization:diamond_dust" + } + ], + "item_outputs": [ + { + "amount": 1, + "item": "modern_industrialization:aluminum_rotary_blade" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/aluminum/assembler/tool_casing.json b/src/generated/resources/data/modern_industrialization/recipes/materials/aluminum/assembler/tool_casing.json new file mode 100644 index 000000000..7819b4a7a --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/aluminum/assembler/tool_casing.json @@ -0,0 +1,27 @@ +{ + "type": "modern_industrialization:assembler", + "duration": 200, + "eu": 2, + "fluid_inputs": [ + { + "amount": 100, + "fluid": "modern_industrialization:soldering_alloy" + } + ], + "item_inputs": [ + { + "amount": 2, + "tag": "c:aluminum_plates" + }, + { + "amount": 2, + "item": "modern_industrialization:aluminum_curved_plate" + } + ], + "item_outputs": [ + { + "amount": 1, + "item": "modern_industrialization:aluminum_tool_casing" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/aluminum/craft/rotary_blade.json b/src/generated/resources/data/modern_industrialization/recipes/materials/aluminum/craft/rotary_blade.json new file mode 100644 index 000000000..26a79b19d --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/aluminum/craft/rotary_blade.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "#": { + "tag": "c:aluminum_gears" + }, + "d": { + "item": "modern_industrialization:diamond_dust" + } + }, + "pattern": [ + " d ", + "d#d", + " d " + ], + "result": { + "count": 1, + "item": "modern_industrialization:aluminum_rotary_blade" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/aluminum/craft/tool_casing.json b/src/generated/resources/data/modern_industrialization/recipes/materials/aluminum/craft/tool_casing.json new file mode 100644 index 000000000..8b3e1ad2e --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/aluminum/craft/tool_casing.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "b": { + "item": "modern_industrialization:aluminum_bolt" + }, + "c": { + "item": "modern_industrialization:aluminum_curved_plate" + }, + "p": { + "tag": "c:aluminum_plates" + } + }, + "pattern": [ + "bpb", + "c c", + "bpb" + ], + "result": { + "count": 1, + "item": "modern_industrialization:aluminum_tool_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/aluminum/macerator/rotary_blade.json b/src/generated/resources/data/modern_industrialization/recipes/materials/aluminum/macerator/rotary_blade.json new file mode 100644 index 000000000..09ea90d63 --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/aluminum/macerator/rotary_blade.json @@ -0,0 +1,17 @@ +{ + "type": "modern_industrialization:macerator", + "duration": 200, + "eu": 2, + "item_inputs": [ + { + "amount": 1, + "item": "modern_industrialization:aluminum_rotary_blade" + } + ], + "item_outputs": [ + { + "amount": 2, + "item": "modern_industrialization:aluminum_dust" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/aluminum/macerator/tool_casing.json b/src/generated/resources/data/modern_industrialization/recipes/materials/aluminum/macerator/tool_casing.json new file mode 100644 index 000000000..3ac5223bd --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/aluminum/macerator/tool_casing.json @@ -0,0 +1,17 @@ +{ + "type": "modern_industrialization:macerator", + "duration": 200, + "eu": 2, + "item_inputs": [ + { + "amount": 1, + "item": "modern_industrialization:aluminum_tool_casing" + } + ], + "item_outputs": [ + { + "amount": 4, + "item": "modern_industrialization:aluminum_dust" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/assembler_generated/electric_age/component/craft/invar_rotary_blade.json b/src/generated/resources/data/modern_industrialization/recipes/materials/invar/assembler/rotary_blade.json similarity index 82% rename from src/generated/resources/data/modern_industrialization/recipes/assembler_generated/electric_age/component/craft/invar_rotary_blade.json rename to src/generated/resources/data/modern_industrialization/recipes/materials/invar/assembler/rotary_blade.json index 4684098d5..0aca4173f 100644 --- a/src/generated/resources/data/modern_industrialization/recipes/assembler_generated/electric_age/component/craft/invar_rotary_blade.json +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/invar/assembler/rotary_blade.json @@ -1,15 +1,15 @@ { "type": "modern_industrialization:assembler", "duration": 200, - "eu": 8, + "eu": 2, "item_inputs": [ - { - "amount": 4, - "tag": "c:diamond_dusts" - }, { "amount": 1, "tag": "c:invar_gears" + }, + { + "amount": 4, + "item": "modern_industrialization:diamond_dust" } ], "item_outputs": [ diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/invar/craft/rotary_blade.json b/src/generated/resources/data/modern_industrialization/recipes/materials/invar/craft/rotary_blade.json new file mode 100644 index 000000000..07701e460 --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/invar/craft/rotary_blade.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "#": { + "tag": "c:invar_gears" + }, + "d": { + "item": "modern_industrialization:diamond_dust" + } + }, + "pattern": [ + " d ", + "d#d", + " d " + ], + "result": { + "count": 1, + "item": "modern_industrialization:invar_rotary_blade" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/invar/macerator/rotary_blade.json b/src/generated/resources/data/modern_industrialization/recipes/materials/invar/macerator/rotary_blade.json new file mode 100644 index 000000000..166b30e22 --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/invar/macerator/rotary_blade.json @@ -0,0 +1,17 @@ +{ + "type": "modern_industrialization:macerator", + "duration": 200, + "eu": 2, + "item_inputs": [ + { + "amount": 1, + "item": "modern_industrialization:invar_rotary_blade" + } + ], + "item_outputs": [ + { + "amount": 2, + "item": "modern_industrialization:invar_dust" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/stainless_steel/assembler/rotary_blade.json b/src/generated/resources/data/modern_industrialization/recipes/materials/stainless_steel/assembler/rotary_blade.json new file mode 100644 index 000000000..019662976 --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/stainless_steel/assembler/rotary_blade.json @@ -0,0 +1,21 @@ +{ + "type": "modern_industrialization:assembler", + "duration": 400, + "eu": 2, + "item_inputs": [ + { + "amount": 1, + "tag": "c:stainless_steel_gears" + }, + { + "amount": 4, + "item": "modern_industrialization:diamond_dust" + } + ], + "item_outputs": [ + { + "amount": 1, + "item": "modern_industrialization:stainless_steel_rotary_blade" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/stainless_steel/assembler/tool_casing.json b/src/generated/resources/data/modern_industrialization/recipes/materials/stainless_steel/assembler/tool_casing.json new file mode 100644 index 000000000..c923bd27c --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/stainless_steel/assembler/tool_casing.json @@ -0,0 +1,27 @@ +{ + "type": "modern_industrialization:assembler", + "duration": 400, + "eu": 2, + "fluid_inputs": [ + { + "amount": 100, + "fluid": "modern_industrialization:soldering_alloy" + } + ], + "item_inputs": [ + { + "amount": 2, + "tag": "c:stainless_steel_plates" + }, + { + "amount": 2, + "item": "modern_industrialization:stainless_steel_curved_plate" + } + ], + "item_outputs": [ + { + "amount": 1, + "item": "modern_industrialization:stainless_steel_tool_casing" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/stainless_steel/craft/rotary_blade.json b/src/generated/resources/data/modern_industrialization/recipes/materials/stainless_steel/craft/rotary_blade.json new file mode 100644 index 000000000..12a67936a --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/stainless_steel/craft/rotary_blade.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "#": { + "tag": "c:stainless_steel_gears" + }, + "d": { + "item": "modern_industrialization:diamond_dust" + } + }, + "pattern": [ + " d ", + "d#d", + " d " + ], + "result": { + "count": 1, + "item": "modern_industrialization:stainless_steel_rotary_blade" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/stainless_steel/craft/tool_casing.json b/src/generated/resources/data/modern_industrialization/recipes/materials/stainless_steel/craft/tool_casing.json new file mode 100644 index 000000000..dae10497f --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/stainless_steel/craft/tool_casing.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "b": { + "item": "modern_industrialization:stainless_steel_bolt" + }, + "c": { + "item": "modern_industrialization:stainless_steel_curved_plate" + }, + "p": { + "tag": "c:stainless_steel_plates" + } + }, + "pattern": [ + "bpb", + "c c", + "bpb" + ], + "result": { + "count": 1, + "item": "modern_industrialization:stainless_steel_tool_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/stainless_steel/macerator/rotary_blade.json b/src/generated/resources/data/modern_industrialization/recipes/materials/stainless_steel/macerator/rotary_blade.json new file mode 100644 index 000000000..504928fa5 --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/stainless_steel/macerator/rotary_blade.json @@ -0,0 +1,17 @@ +{ + "type": "modern_industrialization:macerator", + "duration": 400, + "eu": 2, + "item_inputs": [ + { + "amount": 1, + "item": "modern_industrialization:stainless_steel_rotary_blade" + } + ], + "item_outputs": [ + { + "amount": 2, + "item": "modern_industrialization:stainless_steel_dust" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/stainless_steel/macerator/tool_casing.json b/src/generated/resources/data/modern_industrialization/recipes/materials/stainless_steel/macerator/tool_casing.json new file mode 100644 index 000000000..5ce1f425e --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/stainless_steel/macerator/tool_casing.json @@ -0,0 +1,17 @@ +{ + "type": "modern_industrialization:macerator", + "duration": 400, + "eu": 2, + "item_inputs": [ + { + "amount": 1, + "item": "modern_industrialization:stainless_steel_tool_casing" + } + ], + "item_outputs": [ + { + "amount": 4, + "item": "modern_industrialization:stainless_steel_dust" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/steel/assembler/rotary_blade.json b/src/generated/resources/data/modern_industrialization/recipes/materials/steel/assembler/rotary_blade.json new file mode 100644 index 000000000..b662ef6b3 --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/steel/assembler/rotary_blade.json @@ -0,0 +1,21 @@ +{ + "type": "modern_industrialization:assembler", + "duration": 200, + "eu": 2, + "item_inputs": [ + { + "amount": 1, + "tag": "c:steel_gears" + }, + { + "amount": 4, + "item": "modern_industrialization:diamond_dust" + } + ], + "item_outputs": [ + { + "amount": 1, + "item": "modern_industrialization:steel_rotary_blade" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/steel/assembler/tool_casing.json b/src/generated/resources/data/modern_industrialization/recipes/materials/steel/assembler/tool_casing.json new file mode 100644 index 000000000..e96289092 --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/steel/assembler/tool_casing.json @@ -0,0 +1,27 @@ +{ + "type": "modern_industrialization:assembler", + "duration": 200, + "eu": 2, + "fluid_inputs": [ + { + "amount": 100, + "fluid": "modern_industrialization:soldering_alloy" + } + ], + "item_inputs": [ + { + "amount": 2, + "tag": "c:steel_plates" + }, + { + "amount": 2, + "item": "modern_industrialization:steel_curved_plate" + } + ], + "item_outputs": [ + { + "amount": 1, + "item": "modern_industrialization:steel_tool_casing" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/steel/craft/rotary_blade.json b/src/generated/resources/data/modern_industrialization/recipes/materials/steel/craft/rotary_blade.json new file mode 100644 index 000000000..11028c8dd --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/steel/craft/rotary_blade.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "#": { + "tag": "c:steel_gears" + }, + "d": { + "item": "modern_industrialization:diamond_dust" + } + }, + "pattern": [ + " d ", + "d#d", + " d " + ], + "result": { + "count": 1, + "item": "modern_industrialization:steel_rotary_blade" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/steel/craft/tool_casing.json b/src/generated/resources/data/modern_industrialization/recipes/materials/steel/craft/tool_casing.json new file mode 100644 index 000000000..e2473216e --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/steel/craft/tool_casing.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "b": { + "item": "modern_industrialization:steel_bolt" + }, + "c": { + "item": "modern_industrialization:steel_curved_plate" + }, + "p": { + "tag": "c:steel_plates" + } + }, + "pattern": [ + "bpb", + "c c", + "bpb" + ], + "result": { + "count": 1, + "item": "modern_industrialization:steel_tool_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/steel/macerator/rotary_blade.json b/src/generated/resources/data/modern_industrialization/recipes/materials/steel/macerator/rotary_blade.json new file mode 100644 index 000000000..9b0e0fa8e --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/steel/macerator/rotary_blade.json @@ -0,0 +1,17 @@ +{ + "type": "modern_industrialization:macerator", + "duration": 200, + "eu": 2, + "item_inputs": [ + { + "amount": 1, + "item": "modern_industrialization:steel_rotary_blade" + } + ], + "item_outputs": [ + { + "amount": 2, + "item": "modern_industrialization:steel_dust" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/steel/macerator/tool_casing.json b/src/generated/resources/data/modern_industrialization/recipes/materials/steel/macerator/tool_casing.json new file mode 100644 index 000000000..ef0135f31 --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/steel/macerator/tool_casing.json @@ -0,0 +1,17 @@ +{ + "type": "modern_industrialization:macerator", + "duration": 200, + "eu": 2, + "item_inputs": [ + { + "amount": 1, + "item": "modern_industrialization:steel_tool_casing" + } + ], + "item_outputs": [ + { + "amount": 4, + "item": "modern_industrialization:steel_dust" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/titanium/assembler/rotary_blade.json b/src/generated/resources/data/modern_industrialization/recipes/materials/titanium/assembler/rotary_blade.json new file mode 100644 index 000000000..685d1360f --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/titanium/assembler/rotary_blade.json @@ -0,0 +1,21 @@ +{ + "type": "modern_industrialization:assembler", + "duration": 400, + "eu": 2, + "item_inputs": [ + { + "amount": 1, + "tag": "c:titanium_gears" + }, + { + "amount": 4, + "item": "modern_industrialization:diamond_dust" + } + ], + "item_outputs": [ + { + "amount": 1, + "item": "modern_industrialization:titanium_rotary_blade" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/titanium/assembler/tool_casing.json b/src/generated/resources/data/modern_industrialization/recipes/materials/titanium/assembler/tool_casing.json new file mode 100644 index 000000000..4d8ff0206 --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/titanium/assembler/tool_casing.json @@ -0,0 +1,27 @@ +{ + "type": "modern_industrialization:assembler", + "duration": 400, + "eu": 2, + "fluid_inputs": [ + { + "amount": 100, + "fluid": "modern_industrialization:soldering_alloy" + } + ], + "item_inputs": [ + { + "amount": 2, + "tag": "c:titanium_plates" + }, + { + "amount": 2, + "item": "modern_industrialization:titanium_curved_plate" + } + ], + "item_outputs": [ + { + "amount": 1, + "item": "modern_industrialization:titanium_tool_casing" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/titanium/craft/rotary_blade.json b/src/generated/resources/data/modern_industrialization/recipes/materials/titanium/craft/rotary_blade.json new file mode 100644 index 000000000..0f0a4bc2a --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/titanium/craft/rotary_blade.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "#": { + "tag": "c:titanium_gears" + }, + "d": { + "item": "modern_industrialization:diamond_dust" + } + }, + "pattern": [ + " d ", + "d#d", + " d " + ], + "result": { + "count": 1, + "item": "modern_industrialization:titanium_rotary_blade" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/titanium/craft/tool_casing.json b/src/generated/resources/data/modern_industrialization/recipes/materials/titanium/craft/tool_casing.json new file mode 100644 index 000000000..2edddc489 --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/titanium/craft/tool_casing.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "b": { + "item": "modern_industrialization:titanium_bolt" + }, + "c": { + "item": "modern_industrialization:titanium_curved_plate" + }, + "p": { + "tag": "c:titanium_plates" + } + }, + "pattern": [ + "bpb", + "c c", + "bpb" + ], + "result": { + "count": 1, + "item": "modern_industrialization:titanium_tool_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/titanium/macerator/rotary_blade.json b/src/generated/resources/data/modern_industrialization/recipes/materials/titanium/macerator/rotary_blade.json new file mode 100644 index 000000000..166235bbc --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/titanium/macerator/rotary_blade.json @@ -0,0 +1,17 @@ +{ + "type": "modern_industrialization:macerator", + "duration": 400, + "eu": 2, + "item_inputs": [ + { + "amount": 1, + "item": "modern_industrialization:titanium_rotary_blade" + } + ], + "item_outputs": [ + { + "amount": 2, + "item": "modern_industrialization:titanium_dust" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/modern_industrialization/recipes/materials/titanium/macerator/tool_casing.json b/src/generated/resources/data/modern_industrialization/recipes/materials/titanium/macerator/tool_casing.json new file mode 100644 index 000000000..8205383e8 --- /dev/null +++ b/src/generated/resources/data/modern_industrialization/recipes/materials/titanium/macerator/tool_casing.json @@ -0,0 +1,17 @@ +{ + "type": "modern_industrialization:macerator", + "duration": 400, + "eu": 2, + "item_inputs": [ + { + "amount": 1, + "item": "modern_industrialization:titanium_tool_casing" + } + ], + "item_outputs": [ + { + "amount": 4, + "item": "modern_industrialization:titanium_dust" + } + ] +} \ No newline at end of file diff --git a/src/main/java/aztech/modern_industrialization/MIBlock.java b/src/main/java/aztech/modern_industrialization/MIBlock.java index 16c33b812..2fd1cd995 100644 --- a/src/main/java/aztech/modern_industrialization/MIBlock.java +++ b/src/main/java/aztech/modern_industrialization/MIBlock.java @@ -35,6 +35,7 @@ import aztech.modern_industrialization.blocks.storage.tank.TankBlock; import aztech.modern_industrialization.blocks.storage.tank.TankItem; import aztech.modern_industrialization.blocks.storage.tank.creativetank.CreativeTankBlockEntity; +import aztech.modern_industrialization.blocks.toolstation.ToolStationBlock; import aztech.modern_industrialization.definition.BlockDefinition; import aztech.modern_industrialization.items.SortOrder; import aztech.modern_industrialization.materials.part.TankPart; @@ -57,6 +58,7 @@ import net.minecraft.world.item.BlockItem; 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.SoundType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.material.MapColor; @@ -72,6 +74,9 @@ public class MIBlock { BlockDefinitionParams.defaultStone().withBlockConstructor(ForgeHammerBlock::new).sortOrder(SortOrder.FORGE_HAMMER).noModel().destroyTime(6.0f).explosionResistance(1200) .sound(SoundType.ANVIL), ForgeHammerBlock.class); + public static final BlockDefinition TOOL_STATION = block("Tool Station", "tool_station", + BlockDefinitionParams.copy(Blocks.SMITHING_TABLE).withBlockConstructor(ToolStationBlock::new).sortOrder(SortOrder.TOOL_STATION).noModel().clearTags().addMoreTags(List.of(BlockTags.MINEABLE_WITH_AXE)), + ToolStationBlock.class); // Bronze stuff public static final BlockDefinition TRASH_CAN = block("Automatic Trash Can", "trash_can", @@ -136,7 +141,8 @@ private static BlockDefinition block( BiConsumer lootTableGenerator, List> tags, SortOrder sortOrder) { - BlockDefinition definition = new BlockDefinition<>(englishName, id, block, blockItemCtor, modelGenerator, itemModelGenerator, + BlockDefinition definition = new BlockDefinition<>(englishName, id, block, blockItemCtor, modelGenerator, + itemModelGenerator, lootTableGenerator, tags, sortOrder); if (BLOCKS.put(definition.getId(), definition) != null) { @@ -179,7 +185,8 @@ public static BlockDefinition blockExplosive(String englishName, String i englishName, id, BlockDefinitionParams.of( - BlockBehaviour.Properties.of().mapColor(MapColor.FIRE).ignitedByLava().instabreak().sound(SoundType.GRASS)) + BlockBehaviour.Properties.of().mapColor(MapColor.FIRE).ignitedByLava().instabreak() + .sound(SoundType.GRASS)) .clearTags().noModel()); // TODO : Datagen model @@ -219,11 +226,18 @@ public static BlockDefinitionParams of(BlockBehaviour.Properties properti } public static BlockDefinitionParams defaultStone() { - return of(BlockBehaviour.Properties.of().mapColor(MapColor.METAL).destroyTime(4.0f).requiresCorrectToolForDrops()); + return of(BlockBehaviour.Properties.of().mapColor(MapColor.METAL).destroyTime(4.0f) + .requiresCorrectToolForDrops()); } - public BlockDefinitionParams withBlockConstructor(Function ctor) { - return new BlockDefinitionParams<>(this, ctor, (BiFunction) this.blockItemCtor, this.modelGenerator, this.lootTableGenerator, this.tags); + public static BlockDefinitionParams copy(BlockBehaviour block) { + return of(FabricBlockSettings.copy(block)); + } + + public BlockDefinitionParams withBlockConstructor( + Function ctor) { + return new BlockDefinitionParams<>(this, ctor, (BiFunction) this.blockItemCtor, this.modelGenerator, + this.lootTableGenerator, this.tags); } public BlockDefinitionParams withBlockConstructor(Supplier ctor) { @@ -235,7 +249,8 @@ public BlockDefinitionParams withBlockConstructor(Supplier< this.tags); } - public BlockDefinitionParams withBlockItemConstructor(BiFunction blockItemCtor) { + public BlockDefinitionParams withBlockItemConstructor( + BiFunction blockItemCtor) { this.blockItemCtor = blockItemCtor; return this; } @@ -261,7 +276,8 @@ public BlockDefinitionParams withBlockEntityRendererItemModel() { // Skip default item model gen.skipAutoItemBlock(block); }).withItemModel((item, gen) -> { - // We need the builtin/entity parent and the proper transforms (copied from block/block.json from vanilla) + // We need the builtin/entity parent and the proper transforms (copied from + // block/block.json from vanilla) gen.output.accept(ModelLocationUtils.getModelLocation(item), () -> { var json = JsonParser.parseString(""" { diff --git a/src/main/java/aztech/modern_industrialization/MIItem.java b/src/main/java/aztech/modern_industrialization/MIItem.java index 7a29e7543..69d5e8c84 100644 --- a/src/main/java/aztech/modern_industrialization/MIItem.java +++ b/src/main/java/aztech/modern_industrialization/MIItem.java @@ -26,13 +26,22 @@ import static aztech.modern_industrialization.items.SortOrder.*; import aztech.modern_industrialization.api.energy.EnergyApi; +import aztech.modern_industrialization.api.item.modular_tools.CasingRegistry; +import aztech.modern_industrialization.api.item.modular_tools.CasingRegistry.CasingProperties; +import aztech.modern_industrialization.api.item.modular_tools.ComponentTier; +import aztech.modern_industrialization.api.item.modular_tools.EnergyConverterRegistry; +import aztech.modern_industrialization.api.item.modular_tools.EnergyConverterRegistry.ConverterProperties; +import aztech.modern_industrialization.api.item.modular_tools.ModuleRegistry; +import aztech.modern_industrialization.api.item.modular_tools.ModuleRegistry.CustomModuleEffect; +import aztech.modern_industrialization.api.item.modular_tools.ModuleRegistry.ModuleProperties; import aztech.modern_industrialization.definition.ItemDefinition; import aztech.modern_industrialization.items.*; import aztech.modern_industrialization.items.armor.GraviChestPlateItem; import aztech.modern_industrialization.items.armor.JetpackItem; import aztech.modern_industrialization.items.armor.QuantumArmorItem; import aztech.modern_industrialization.items.armor.RubberArmorMaterial; -import aztech.modern_industrialization.items.diesel_tools.DieselToolItem; +import aztech.modern_industrialization.items.modulartools.ModularToolItem; +import aztech.modern_industrialization.items.modulartools.ModularToolItem.EnergyType; import aztech.modern_industrialization.items.tools.QuantumSword; import aztech.modern_industrialization.nuclear.INeutronBehaviour; import aztech.modern_industrialization.nuclear.NuclearComponentItem; @@ -48,6 +57,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.food.FoodProperties; import net.minecraft.world.item.*; +import net.minecraft.world.item.enchantment.Enchantments; import team.reborn.energy.api.base.SimpleEnergyItem; @SuppressWarnings("unused") @@ -71,15 +81,23 @@ public final class MIItem { public static final ItemDefinition PACKER_DOUBLE_INGOT_TEMPLATE = item("Packer Double Ingot Template", "packer_double_ingot_template", p -> new Item(p.rarity(Rarity.RARE).maxCount(1)), STEAM_TIER); // Mechanical components: motors - public static final ItemDefinition MOTOR = item("Motor", "motor", ITEMS_OTHER); - public static final ItemDefinition LARGE_MOTOR = item("Large Motor", "large_motor", ITEMS_OTHER); - public static final ItemDefinition ADVANCED_MOTOR = item("Advanced Motor", "advanced_motor", ITEMS_OTHER); - public static final ItemDefinition LARGE_ADVANCED_MOTOR = item("Large Advanced Motor", "large_advanced_motor", ITEMS_OTHER); + public static final ItemDefinition MOTOR = item("Motor", "motor", ITEMS_OTHER) + .withItemRegistrationEvent(item -> EnergyConverterRegistry.register(item, new ConverterProperties(ComponentTier.LV, 1024, EnergyType.ELECTRIC))); + public static final ItemDefinition LARGE_MOTOR = item("Large Motor", "large_motor", ITEMS_OTHER) + .withItemRegistrationEvent(item -> EnergyConverterRegistry.register(item, new ConverterProperties(ComponentTier.MV, 1024 * 2, EnergyType.ELECTRIC))); + public static final ItemDefinition ADVANCED_MOTOR = item("Advanced Motor", "advanced_motor", ITEMS_OTHER) + .withItemRegistrationEvent(item -> EnergyConverterRegistry.register(item, new ConverterProperties(ComponentTier.HV, 1024 * 2 * 2, EnergyType.ELECTRIC))); + public static final ItemDefinition LARGE_ADVANCED_MOTOR = item("Large Advanced Motor", "large_advanced_motor", ITEMS_OTHER) + .withItemRegistrationEvent(item -> EnergyConverterRegistry.register(item, new ConverterProperties(ComponentTier.EV, 1024 * 2 * 2 * 2, EnergyType.ELECTRIC))); // Mechanical components: pumps - public static final ItemDefinition PUMP = item("Pump", "pump", ITEMS_OTHER); - public static final ItemDefinition LARGE_PUMP = item("Large Pump", "large_pump", ITEMS_OTHER); - public static final ItemDefinition ADVANCED_PUMP = item("Advanced Pump", "advanced_pump", ITEMS_OTHER); - public static final ItemDefinition LARGE_ADVANCED_PUMP = item("Large Advanced Pump", "large_advanced_pump", ITEMS_OTHER); + public static final ItemDefinition PUMP = item("Pump", "pump", ITEMS_OTHER) + .withItemRegistrationEvent(item -> EnergyConverterRegistry.register(item, new ConverterProperties(ComponentTier.LV, 1024, EnergyType.FLUID))); + public static final ItemDefinition LARGE_PUMP = item("Large Pump", "large_pump", ITEMS_OTHER) + .withItemRegistrationEvent(item -> EnergyConverterRegistry.register(item, new ConverterProperties(ComponentTier.MV, 1024 * 2, EnergyType.FLUID))); + public static final ItemDefinition ADVANCED_PUMP = item("Advanced Pump", "advanced_pump", ITEMS_OTHER) + .withItemRegistrationEvent(item -> EnergyConverterRegistry.register(item, new ConverterProperties(ComponentTier.HV, 1024 * 2 * 2, EnergyType.FLUID))); + public static final ItemDefinition LARGE_ADVANCED_PUMP = item("Large Advanced Pump", "large_advanced_pump", ITEMS_OTHER) + .withItemRegistrationEvent(item -> EnergyConverterRegistry.register(item, new ConverterProperties(ComponentTier.EV, 1024 * 2 * 2 * 2, EnergyType.FLUID))); // Mechanical components: others public static final ItemDefinition PISTON = item("Piston", "piston", ITEMS_OTHER); public static final ItemDefinition CONVEYOR = item("Conveyor", "conveyor", ITEMS_OTHER); @@ -102,7 +120,6 @@ public final class MIItem { public static final ItemDefinition CAPACITOR = item("Capacitor", "capacitor", ITEMS_OTHER); public static final ItemDefinition INDUCTOR = item("Inductor", "inductor", ITEMS_OTHER); public static final ItemDefinition WOOD_PULP = item("Wood Pulp", "wood_pulp", ITEMS_OTHER); - public static final ItemDefinition INVAR_ROTARY_BLADE = item("Invar Rotary Blade", "invar_rotary_blade", ITEMS_OTHER); // MV circuits public static final ItemDefinition DIODE = item("Diode", "diode", ITEMS_OTHER); @@ -141,10 +158,30 @@ public final class MIItem { public static final ItemDefinition STEAM_MINING_DRILL = itemHandheld("Steam Mining Drill", "steam_mining_drill",SteamDrillItem::new); - public static final ItemDefinition DIESEL_MINING_DRILL = itemHandheld("Diesel Mining Drill", "diesel_mining_drill", s -> new DieselToolItem(s, 7)) - .withItemRegistrationEvent((item) -> FluidStorage.ITEM.registerForItems((stack, ctx) -> new FluidFuelItemHelper.ItemStorage(DieselToolItem.CAPACITY, ctx), item)); - public static final ItemDefinition DIESEL_CHAINSAW = itemHandheld("Diesel Chainsaw", "diesel_chainsaw", p -> new DieselToolItem(p, 12)) - .withItemRegistrationEvent((item) -> FluidStorage.ITEM.registerForItems((stack, ctx) -> new FluidFuelItemHelper.ItemStorage(DieselToolItem.CAPACITY, ctx), item)); + public static final ItemDefinition STEEL_TOOL_CASING = itemNoModel("Steel Tool Casing", "steel_tool_casing", ModularToolItem::new, ITEMS_OTHER) + .withItemRegistrationEvent(item -> { + CasingRegistry.register(item, new CasingProperties(ComponentTier.LV, 2)); + FluidStorage.ITEM.registerForItems((stack, ctx) -> new ModularToolItem.FluidStorage(ctx), item); + EnergyApi.ITEM.registerForItems((stack, ctx) -> new ModularToolItem.EnergyStorage(ctx), item); + }); + public static final ItemDefinition ALUMINUM_TOOL_CASING = itemNoModel("Aluminum Tool Casing", "aluminum_tool_casing", ModularToolItem::new, ITEMS_OTHER) + .withItemRegistrationEvent(item -> { + CasingRegistry.register(item, new CasingProperties(ComponentTier.MV, 3)); + FluidStorage.ITEM.registerForItems((stack, ctx) -> new ModularToolItem.FluidStorage(ctx), item); + EnergyApi.ITEM.registerForItems((stack, ctx) -> new ModularToolItem.EnergyStorage(ctx), item); + }); + public static final ItemDefinition STAINLESS_STEEL_TOOL_CASING = itemNoModel("Stainless Steel Tool Casing", "stainless_steel_tool_casing", ModularToolItem::new, ITEMS_OTHER) + .withItemRegistrationEvent(item -> { + CasingRegistry.register(item, new CasingProperties(ComponentTier.HV, 4)); + FluidStorage.ITEM.registerForItems((stack, ctx) -> new ModularToolItem.FluidStorage(ctx), item); + EnergyApi.ITEM.registerForItems((stack, ctx) -> new ModularToolItem.EnergyStorage(ctx), item); + }); + public static final ItemDefinition TITANIUM_TOOL_CASING = itemNoModel("Titanium Tool Casing", "titanium_tool_casing", ModularToolItem::new, ITEMS_OTHER) + .withItemRegistrationEvent(item -> { + CasingRegistry.register(item, new CasingProperties(ComponentTier.EV, 5)); + FluidStorage.ITEM.registerForItems((stack, ctx) -> new ModularToolItem.FluidStorage(ctx), item); + EnergyApi.ITEM.registerForItems((stack, ctx) -> new ModularToolItem.EnergyStorage(ctx), item); + }); public static final ItemDefinition PORTABLE_STORAGE_UNIT = itemHandheld("Portable Storage Unit", "portable_storage_unit", PortableStorageUnit::new) .withItemRegistrationEvent(item -> EnergyApi.ITEM.registerForItems((stack, ctx) -> SimpleEnergyItem.createStorage(ctx, item.getEnergyCapacity(stack), item.getEnergyMaxInput(stack), item.getEnergyMaxOutput(stack)), item)); @@ -154,6 +191,28 @@ public final class MIItem { public static final ItemDefinition RUBBER_BOOTS = item("Rubber Boots", "rubber_boots", s -> new ArmorItem(RubberArmorMaterial.INSTANCE, ArmorItem.Type.BOOTS, s.maxCount(1)), ITEMS_OTHER); public static final ItemDefinition DIESEL_JETPACK = item("Diesel Jetpack", "diesel_jetpack", JetpackItem::new, ITEMS_OTHER).withItemRegistrationEvent((item) -> FluidStorage.ITEM.registerForItems((stack, ctx) -> new FluidFuelItemHelper.ItemStorage(JetpackItem.CAPACITY, ctx), item)); + // Modular Equipment Upgrades + public static final ItemDefinition AREA_MODULE = itemNoModel("Area Module", "area_module", p -> new Item(p.maxCount(2)), ITEMS_OTHER) + .withItemRegistrationEvent(item -> ModuleRegistry.register(item, new ModuleProperties(null, CustomModuleEffect.AREA, 9.0))); + public static final ItemDefinition FIRE_ASPECT_MODULE = itemNoModel("Fire Aspect Module", "fire_aspect_module", p -> new Item(p.maxCount(2)), ITEMS_OTHER) + .withItemRegistrationEvent(item -> ModuleRegistry.register(item, new ModuleProperties(Enchantments.FIRE_ASPECT, null, 1.5))); + public static final ItemDefinition LOOTING_MODULE = itemNoModel("Looting Module", "looting_module", p -> new Item(p.maxCount(3)), ITEMS_OTHER) + .withItemRegistrationEvent(item -> ModuleRegistry.register(item, new ModuleProperties(Enchantments.MOB_LOOTING, null, 2.0))); + public static final ItemDefinition KNOCKBACK_MODULE = itemNoModel("Knockback Module", "knockback_module", p -> new Item(p.maxCount(2)), ITEMS_OTHER) + .withItemRegistrationEvent(item -> ModuleRegistry.register(item, new ModuleProperties(Enchantments.KNOCKBACK, null, 1.25))); + public static final ItemDefinition SHARPNESS_MODULE = itemNoModel("Sharpness Module", "sharpness_module", p -> new Item(p.maxCount(5)), ITEMS_OTHER) + .withItemRegistrationEvent(item -> ModuleRegistry.register(item, new ModuleProperties(Enchantments.SHARPNESS, null, 1.25))); + public static final ItemDefinition SMITE_MODULE = itemNoModel("Smite Module", "smite_module", p -> new Item(p.maxCount(5)), ITEMS_OTHER) + .withItemRegistrationEvent(item -> ModuleRegistry.register(item, new ModuleProperties(Enchantments.SMITE, null, 1.25))); + public static final ItemDefinition BANE_OF_ARTHROPODS_MODULE = itemNoModel("Bane of Arthropods Module", "bane_of_arthropods_module", p -> new Item(p.maxCount(5)), ITEMS_OTHER) + .withItemRegistrationEvent(item -> ModuleRegistry.register(item, new ModuleProperties(Enchantments.BANE_OF_ARTHROPODS, null, 1.25))); + public static final ItemDefinition EFFICIENCY_MODULE = itemNoModel("Efficiency Module", "efficiency_module", p -> new Item(p.maxCount(5)), ITEMS_OTHER) + .withItemRegistrationEvent(item -> ModuleRegistry.register(item, new ModuleProperties(Enchantments.BLOCK_EFFICIENCY, null, 1.25))); + public static final ItemDefinition FORTUNE_MODULE = itemNoModel("Fortune Module", "fortune_module", p -> new Item(p.maxCount(3)), ITEMS_OTHER) + .withItemRegistrationEvent(item -> ModuleRegistry.register(item, new ModuleProperties(Enchantments.BLOCK_FORTUNE, null, 2.0))); + public static final ItemDefinition SILK_TOUCH_MODULE = itemNoModel("Silk Touch Module", "silk_touch_module", p -> new Item(p.maxCount(1)), ITEMS_OTHER) + .withItemRegistrationEvent(item -> ModuleRegistry.register(item, new ModuleProperties(Enchantments.SILK_TOUCH, null, 2.0))); + public static final ItemDefinition GRAVICHESTPLATE = item("Gravichestplate", "gravichestplate", GraviChestPlateItem::new, ITEMS_OTHER); public static final ItemDefinition QUANTUM_SWORD = itemHandheld("Quantum Sword", "quantum_sword", QuantumSword::new); @@ -199,14 +258,19 @@ public static ItemDefinition item( } public static ItemDefinition item(String englishName, String path, SortOrder sortOrder) { - return MIItem.item(englishName, path, Item::new, (item, modelGenerator) -> modelGenerator.generateFlatItem(item, - ModelTemplates.FLAT_ITEM), sortOrder); + return MIItem.item(englishName, path, Item::new, + (item, modelGenerator) -> modelGenerator.generateFlatItem(item, + ModelTemplates.FLAT_ITEM), + sortOrder); } - public static ItemDefinition item(String englishName, String path, Function ctor, + public static ItemDefinition item(String englishName, String path, + Function ctor, SortOrder sortOrder) { - return MIItem.item(englishName, path, ctor, (item, modelGenerator) -> modelGenerator.generateFlatItem(item, - ModelTemplates.FLAT_ITEM), sortOrder); + return MIItem.item(englishName, path, ctor, + (item, modelGenerator) -> modelGenerator.generateFlatItem(item, + ModelTemplates.FLAT_ITEM), + sortOrder); } public static ItemDefinition itemHandheld(String englishName, String path) { @@ -218,20 +282,25 @@ public static ItemDefinition itemNoModel(String englishName, String path, }, sortOrder); } - public static ItemDefinition itemNoModel(String englishName, String path, Function ctor, + public static ItemDefinition itemNoModel(String englishName, String path, + Function ctor, SortOrder sortOrder) { return MIItem.item(englishName, path, ctor, (item, modelGenerator) -> { }, sortOrder); } - public static ItemDefinition itemHandheld(String englishName, String path, Function ctor) { + public static ItemDefinition itemHandheld(String englishName, String path, + Function ctor) { return itemHandheld(englishName, path, ctor, ITEMS_OTHER); } - public static ItemDefinition itemHandheld(String englishName, String path, Function ctor, + public static ItemDefinition itemHandheld(String englishName, String path, + Function ctor, SortOrder sortOrder) { - return MIItem.item(englishName, path, p -> ctor.apply(p.maxCount(1)), (item, modelGenerator) -> modelGenerator.generateFlatItem(item, - ModelTemplates.FLAT_HANDHELD_ITEM), sortOrder); + return MIItem.item(englishName, path, p -> ctor.apply(p.maxCount(1)), + (item, modelGenerator) -> modelGenerator.generateFlatItem(item, + ModelTemplates.FLAT_HANDHELD_ITEM), + sortOrder); } private MIItem() { diff --git a/src/main/java/aztech/modern_industrialization/ModernIndustrialization.java b/src/main/java/aztech/modern_industrialization/ModernIndustrialization.java index f0d06fbaa..ab30dc71b 100644 --- a/src/main/java/aztech/modern_industrialization/ModernIndustrialization.java +++ b/src/main/java/aztech/modern_industrialization/ModernIndustrialization.java @@ -27,6 +27,7 @@ import aztech.modern_industrialization.blocks.WrenchableBlockEntity; import aztech.modern_industrialization.blocks.forgehammer.ForgeHammerScreenHandler; import aztech.modern_industrialization.blocks.storage.barrel.BarrelBlock; +import aztech.modern_industrialization.blocks.toolstation.ToolStationScreenHandler; import aztech.modern_industrialization.compat.ae2.AECompatCondition; import aztech.modern_industrialization.compat.kubejs.KubeJSProxy; import aztech.modern_industrialization.definition.BlockDefinition; @@ -76,13 +77,19 @@ public class ModernIndustrialization { public static final String MOD_ID = "modern_industrialization"; public static final Logger LOGGER = LogManager.getLogger("Modern Industrialization"); - public static final ResourceKey TAB_KEY = ResourceKey.create(Registries.CREATIVE_MODE_TAB, new MIIdentifier("general")); + public static final ResourceKey TAB_KEY = ResourceKey.create(Registries.CREATIVE_MODE_TAB, + new MIIdentifier("general")); // ScreenHandlerType public static final MenuType SCREEN_HANDLER_MACHINE = Registry.register(BuiltInRegistries.MENU, - new MIIdentifier("machine"), new ExtendedScreenHandlerType<>(CommonProxy.INSTANCE::createClientMachineMenu)); - public static final MenuType SCREEN_HANDLER_FORGE_HAMMER = Registry.register(BuiltInRegistries.MENU, + new MIIdentifier("machine"), + new ExtendedScreenHandlerType<>(CommonProxy.INSTANCE::createClientMachineMenu)); + public static final MenuType SCREEN_HANDLER_FORGE_HAMMER = Registry.register( + BuiltInRegistries.MENU, new MIIdentifier("forge_hammer"), new MenuType<>(ForgeHammerScreenHandler::new, FeatureFlags.VANILLA_SET)); + public static final MenuType SCREEN_HANDLER_TOOL_STATION = Registry.register( + BuiltInRegistries.MENU, + new MIIdentifier("tool_station"), new MenuType<>(ToolStationScreenHandler::new, FeatureFlags.VANILLA_SET)); public static void initialize() { Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB, TAB_KEY, FabricItemGroup.builder() @@ -115,7 +122,8 @@ public static void initialize() { setupWrench(); ChunkEventListeners.init(); - ServerEntityWorldChangeEvents.AFTER_PLAYER_CHANGE_WORLD.register((player, oldWorld, newWorld) -> MIKeyMap.clear(player)); + ServerEntityWorldChangeEvents.AFTER_PLAYER_CHANGE_WORLD + .register((player, oldWorld, newWorld) -> MIKeyMap.clear(player)); ServerPlayConnectionEvents.DISCONNECT.register((handler, server) -> { MIKeyMap.clear(handler.player); }); @@ -169,10 +177,14 @@ private static void setupPackets() { ConfigurableInventoryPacketHandlers.C2S.DO_SLOT_DRAGGING); ServerPlayNetworking.registerGlobalReceiver(ConfigurableInventoryPackets.ADJUST_SLOT_CAPACITY, ConfigurableInventoryPacketHandlers.C2S.ADJUST_SLOT_CAPACITY); - ServerPlayNetworking.registerGlobalReceiver(MachinePackets.C2S.CHANGE_SHAPE, MachinePackets.C2S.ON_CHANGE_SHAPE); - ServerPlayNetworking.registerGlobalReceiver(MachinePackets.C2S.SET_AUTO_EXTRACT, MachinePackets.C2S.ON_SET_AUTO_EXTRACT); - ServerPlayNetworking.registerGlobalReceiver(MachinePackets.C2S.FORGE_HAMMER_MOVE_RECIPE, MachinePackets.C2S.ON_FORGE_HAMMER_MOVE_RECIPE); - ServerPlayNetworking.registerGlobalReceiver(MachinePackets.C2S.REI_LOCK_SLOTS, MachinePackets.C2S.ON_REI_LOCK_SLOTS); + ServerPlayNetworking.registerGlobalReceiver(MachinePackets.C2S.CHANGE_SHAPE, + MachinePackets.C2S.ON_CHANGE_SHAPE); + ServerPlayNetworking.registerGlobalReceiver(MachinePackets.C2S.SET_AUTO_EXTRACT, + MachinePackets.C2S.ON_SET_AUTO_EXTRACT); + ServerPlayNetworking.registerGlobalReceiver(MachinePackets.C2S.FORGE_HAMMER_MOVE_RECIPE, + MachinePackets.C2S.ON_FORGE_HAMMER_MOVE_RECIPE); + ServerPlayNetworking.registerGlobalReceiver(MachinePackets.C2S.REI_LOCK_SLOTS, + MachinePackets.C2S.ON_REI_LOCK_SLOTS); CommonProxy.INSTANCE.registerUnsidedPacket(ArmorPackets.UPDATE_KEYS, ArmorPackets.ON_UPDATE_KEYS); CommonProxy.INSTANCE.registerUnsidedPacket(ArmorPackets.ACTIVATE_CHEST, ArmorPackets.ON_ACTIVATE_CHEST); } diff --git a/src/main/java/aztech/modern_industrialization/api/item/modular_tools/CasingRegistry.java b/src/main/java/aztech/modern_industrialization/api/item/modular_tools/CasingRegistry.java new file mode 100644 index 000000000..b9debf044 --- /dev/null +++ b/src/main/java/aztech/modern_industrialization/api/item/modular_tools/CasingRegistry.java @@ -0,0 +1,45 @@ +/* + * MIT License + * + * Copyright (c) 2020 Azercoco & Technici4n + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package aztech.modern_industrialization.api.item.modular_tools; + +import java.util.IdentityHashMap; +import java.util.Objects; +import net.minecraft.world.item.Item; + +public class CasingRegistry { + private static final IdentityHashMap casings = new IdentityHashMap<>(); + + public static void register(Item item, CasingProperties properties) { + Objects.requireNonNull(item); + Objects.requireNonNull(properties); + casings.put(item, properties); + } + + public static CasingProperties getProperties(Item item) { + return casings.get(item); + } + + public static record CasingProperties(ComponentTier maxComponentTier, int moduleSlots) { + } +} diff --git a/src/main/java/aztech/modern_industrialization/api/item/modular_tools/ComponentTier.java b/src/main/java/aztech/modern_industrialization/api/item/modular_tools/ComponentTier.java new file mode 100644 index 000000000..131b7119b --- /dev/null +++ b/src/main/java/aztech/modern_industrialization/api/item/modular_tools/ComponentTier.java @@ -0,0 +1,44 @@ +/* + * MIT License + * + * Copyright (c) 2020 Azercoco & Technici4n + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package aztech.modern_industrialization.api.item.modular_tools; + +import org.jetbrains.annotations.Nullable; + +public enum ComponentTier { + LV, + MV, + HV, + EV; + + public static boolean canUse(@Nullable ComponentTier maxComponentTier, + @Nullable ComponentTier potentialComponentTier) { + if (maxComponentTier == null) { + return false; + } else if (potentialComponentTier == null) { + return true; + } else { + return maxComponentTier.compareTo(potentialComponentTier) >= 0; + } + } +} diff --git a/src/main/java/aztech/modern_industrialization/api/item/modular_tools/EnergyConverterRegistry.java b/src/main/java/aztech/modern_industrialization/api/item/modular_tools/EnergyConverterRegistry.java new file mode 100644 index 000000000..f0471db19 --- /dev/null +++ b/src/main/java/aztech/modern_industrialization/api/item/modular_tools/EnergyConverterRegistry.java @@ -0,0 +1,46 @@ +/* + * MIT License + * + * Copyright (c) 2020 Azercoco & Technici4n + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package aztech.modern_industrialization.api.item.modular_tools; + +import aztech.modern_industrialization.items.modulartools.ModularToolItem.EnergyType; +import java.util.IdentityHashMap; +import java.util.Objects; +import net.minecraft.world.item.Item; + +public class EnergyConverterRegistry { + private static final IdentityHashMap converters = new IdentityHashMap<>(); + + public static void register(Item item, ConverterProperties properties) { + Objects.requireNonNull(item); + Objects.requireNonNull(properties); + converters.put(item, properties); + } + + public static ConverterProperties getProperties(Item item) { + return converters.get(item); + } + + public static record ConverterProperties(ComponentTier tier, long maxEu, EnergyType energyType) { + } +} diff --git a/src/main/java/aztech/modern_industrialization/api/item/modular_tools/EnergyStorageRegistry.java b/src/main/java/aztech/modern_industrialization/api/item/modular_tools/EnergyStorageRegistry.java new file mode 100644 index 000000000..82638087c --- /dev/null +++ b/src/main/java/aztech/modern_industrialization/api/item/modular_tools/EnergyStorageRegistry.java @@ -0,0 +1,47 @@ +/* + * MIT License + * + * Copyright (c) 2020 Azercoco & Technici4n + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package aztech.modern_industrialization.api.item.modular_tools; + +import aztech.modern_industrialization.items.modulartools.ModularToolItem.EnergyType; +import java.util.IdentityHashMap; +import java.util.Objects; +import net.minecraft.world.item.Item; +import org.jetbrains.annotations.Nullable; + +public class EnergyStorageRegistry { + private static final IdentityHashMap storages = new IdentityHashMap<>(); + + public static void register(Item item, StorageProperties properties) { + Objects.requireNonNull(item); + Objects.requireNonNull(properties); + storages.put(item, properties); + } + + public static StorageProperties getProperties(Item item) { + return storages.get(item); + } + + public static record StorageProperties(@Nullable ComponentTier tier, long capacity, EnergyType energyType) { + } +} diff --git a/src/main/java/aztech/modern_industrialization/api/item/modular_tools/HeadRegistry.java b/src/main/java/aztech/modern_industrialization/api/item/modular_tools/HeadRegistry.java new file mode 100644 index 000000000..e192233f3 --- /dev/null +++ b/src/main/java/aztech/modern_industrialization/api/item/modular_tools/HeadRegistry.java @@ -0,0 +1,47 @@ +/* + * MIT License + * + * Copyright (c) 2020 Azercoco & Technici4n + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package aztech.modern_industrialization.api.item.modular_tools; + +import aztech.modern_industrialization.items.modulartools.ModularToolItem.ToolType; +import java.util.IdentityHashMap; +import java.util.Objects; +import net.minecraft.world.item.Item; + +public class HeadRegistry { + private static final IdentityHashMap heads = new IdentityHashMap<>(); + + public static void register(Item item, HeadProperties properties) { + Objects.requireNonNull(item); + Objects.requireNonNull(properties); + heads.put(item, properties); + } + + public static HeadProperties getProperties(Item item) { + return heads.get(item); + } + + public static record HeadProperties(ComponentTier tier, ToolType toolType, int miningLevel, float miningSpeed, + double attackDamage) { + } +} diff --git a/src/main/java/aztech/modern_industrialization/api/item/modular_tools/ModuleRegistry.java b/src/main/java/aztech/modern_industrialization/api/item/modular_tools/ModuleRegistry.java new file mode 100644 index 000000000..5820618a8 --- /dev/null +++ b/src/main/java/aztech/modern_industrialization/api/item/modular_tools/ModuleRegistry.java @@ -0,0 +1,52 @@ +/* + * MIT License + * + * Copyright (c) 2020 Azercoco & Technici4n + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package aztech.modern_industrialization.api.item.modular_tools; + +import java.util.IdentityHashMap; +import java.util.Objects; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.enchantment.Enchantment; +import org.jetbrains.annotations.Nullable; + +public class ModuleRegistry { + private static final IdentityHashMap modules = new IdentityHashMap<>(); + + public static void register(Item item, ModuleProperties properties) { + Objects.requireNonNull(item); + Objects.requireNonNull(properties); + modules.put(item, properties); + } + + public static ModuleProperties getProperties(Item item) { + return modules.get(item); + } + + public static record ModuleProperties(@Nullable Enchantment enchantment, @Nullable CustomModuleEffect customEffect, + double multiplier) { + } + + public static enum CustomModuleEffect { + AREA + } +} diff --git a/src/main/java/aztech/modern_industrialization/blocks/toolstation/ToolStationBlock.java b/src/main/java/aztech/modern_industrialization/blocks/toolstation/ToolStationBlock.java new file mode 100644 index 000000000..a0dd94a0c --- /dev/null +++ b/src/main/java/aztech/modern_industrialization/blocks/toolstation/ToolStationBlock.java @@ -0,0 +1,67 @@ +/* + * MIT License + * + * Copyright (c) 2020 Azercoco & Technici4n + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package aztech.modern_industrialization.blocks.toolstation; + +import aztech.modern_industrialization.MIBlock; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ContainerLevelAccess; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; + +public class ToolStationBlock extends Block { + public ToolStationBlock(Properties properties) { + super(properties); + } + + @Override + public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, + BlockHitResult hit) { + if (world.isClientSide) { + return InteractionResult.SUCCESS; + } else { + player.openMenu(new MenuProvider() { + + @Override + public AbstractContainerMenu createMenu(int syncId, Inventory inv, Player player) { + return new ToolStationScreenHandler(syncId, inv, ContainerLevelAccess.create(world, pos)); + } + + @Override + public Component getDisplayName() { + return Component.translatable(MIBlock.TOOL_STATION.asBlock().getDescriptionId()); + } + }); + return InteractionResult.CONSUME; + } + } +} diff --git a/src/main/java/aztech/modern_industrialization/blocks/toolstation/ToolStationScreenHandler.java b/src/main/java/aztech/modern_industrialization/blocks/toolstation/ToolStationScreenHandler.java new file mode 100644 index 000000000..c5061df59 --- /dev/null +++ b/src/main/java/aztech/modern_industrialization/blocks/toolstation/ToolStationScreenHandler.java @@ -0,0 +1,466 @@ +/* + * MIT License + * + * Copyright (c) 2020 Azercoco & Technici4n + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package aztech.modern_industrialization.blocks.toolstation; + +import aztech.modern_industrialization.ModernIndustrialization; +import aztech.modern_industrialization.api.item.modular_tools.CasingRegistry; +import aztech.modern_industrialization.api.item.modular_tools.ComponentTier; +import aztech.modern_industrialization.api.item.modular_tools.EnergyConverterRegistry; +import aztech.modern_industrialization.api.item.modular_tools.EnergyStorageRegistry; +import aztech.modern_industrialization.api.item.modular_tools.HeadRegistry; +import aztech.modern_industrialization.api.item.modular_tools.ModuleRegistry; +import aztech.modern_industrialization.items.modulartools.ModularToolItem; +import java.util.ArrayList; +import java.util.List; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.Container; +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ContainerLevelAccess; +import net.minecraft.world.inventory.DataSlot; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; + +public class ToolStationScreenHandler extends AbstractContainerMenu { + public final Slot tool; + public final SingleItemToggelableSlot energyConverter; + public final SingleItemToggelableSlot energyStorage; + public final SingleItemToggelableSlot head; + public final List addons; + private final DataSlot numAddonSlots; + private final DataSlot componentsEnabled; + + private final ContainerLevelAccess context; + private final Level world; + private final Player player; + private boolean isUpdating; + + public ToolStationScreenHandler(int syncId, Inventory playerInventory) { + this(syncId, playerInventory, ContainerLevelAccess.NULL); + } + + public ToolStationScreenHandler(int syncId, Inventory playerInventory, ContainerLevelAccess context) { + super(ModernIndustrialization.SCREEN_HANDLER_TOOL_STATION, syncId); + this.context = context; + this.world = playerInventory.player.level(); + this.player = playerInventory.player; + this.isUpdating = false; + + this.tool = new SingleItemSlot(new SimpleContainer(1) { + public void setChanged() { + super.setChanged(); + ToolStationScreenHandler.this.slotsChanged(this); + } + }, 0, 17, 33) { + public boolean mayPlace(ItemStack stack) { + return CasingRegistry.getProperties(stack.getItem()) != null; + } + }; + this.energyConverter = new SingleItemToggelableSlot(new SimpleContainer(1) { + public void setChanged() { + super.setChanged(); + ToolStationScreenHandler.this.slotsChanged(this); + } + }, 0, 44, 24) { + public boolean mayPlace(ItemStack stack) { + var properties = EnergyConverterRegistry.getProperties(stack.getItem()); + return isActive() && properties != null + && ComponentTier.canUse(getMaxComponentTier(), properties.tier()); + } + }; + this.energyStorage = new SingleItemToggelableSlot(new SimpleContainer(1) { + public void setChanged() { + super.setChanged(); + ToolStationScreenHandler.this.slotsChanged(this); + } + }, 0, 62, 24) { + public boolean mayPlace(ItemStack stack) { + var properties = EnergyStorageRegistry.getProperties(stack.getItem()); + return isActive() && properties != null + && ComponentTier.canUse(getMaxComponentTier(), properties.tier()); + } + }; + this.head = new SingleItemToggelableSlot(new SimpleContainer(1) { + public void setChanged() { + super.setChanged(); + ToolStationScreenHandler.this.slotsChanged(this); + } + }, 0, 80, 24) { + public boolean mayPlace(ItemStack stack) { + var properties = HeadRegistry.getProperties(stack.getItem()); + return isActive() && properties != null + && ComponentTier.canUse(getMaxComponentTier(), properties.tier()); + } + }; + this.addons = new ArrayList<>(); + for (int idx = 0; idx < 5; ++idx) { + this.addons.add(new ToggleableSlot(new SimpleContainer(1) { + public void setChanged() { + super.setChanged(); + ToolStationScreenHandler.this.slotsChanged(this); + } + }, 0, 44 + idx * 18, 42) { + public boolean mayPlace(ItemStack stack) { + for (var addon : ToolStationScreenHandler.this.addons) { + if (addon != this && addon.hasItem() && addon.getItem().getItem() == stack.getItem()) { + return false; + } + } + return isActive() && ModuleRegistry.getProperties(stack.getItem()) != null; + } + }); + } + this.numAddonSlots = DataSlot.standalone(); + this.numAddonSlots.set(0); + this.componentsEnabled = DataSlot.standalone(); + this.componentsEnabled.set(0); + + this.addSlot(tool); + this.addSlot(energyConverter); + this.addSlot(energyStorage); + this.addSlot(head); + for (Slot slot : this.addons) { + this.addSlot(slot); + } + this.addDataSlot(numAddonSlots); + this.addDataSlot(componentsEnabled); + + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 9; j++) { + this.addSlot(new Slot(playerInventory, i * 9 + j + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for (int j = 0; j < 9; j++) { + this.addSlot(new Slot(playerInventory, j, 8 + j * 18, 58 + 84)); + } + } + + private ComponentTier getMaxComponentTier() { + if (!tool.hasItem()) { + return null; + } + return CasingRegistry.getProperties(tool.getItem().getItem()).maxComponentTier(); + + } + + public void slotsChanged(Container inventory) { + if (isUpdating) { + return; + } else { + isUpdating = true; + } + + try { + if (inventory == tool.container) { + if (tool.hasItem()) { + ItemStack toolStack = tool.getItem(); + int casingAddonSlots = CasingRegistry.getProperties(toolStack.getItem()).moduleSlots(); + + numAddonSlots.set(casingAddonSlots); + componentsEnabled.set(1); + + energyConverter.container.clearContent(); + energyConverter.setActive(true); + energyStorage.container.clearContent(); + energyStorage.setActive(true); + head.container.clearContent(); + head.setActive(true); + for (ToggleableSlot slot : this.addons) { + slot.container.clearContent(); + } + for (int idx = 0; idx < casingAddonSlots; ++idx) { + this.addons.get(idx).setActive(true); + } + + if (toolStack.hasTag()) { + CompoundTag tag = toolStack.getTag(); + + String energyConverterId = tag.getString("energyConverter"); + if (!energyConverterId.equals("")) { + energyConverter.set(new ItemStack(BuiltInRegistries.ITEM + .get(new ResourceLocation(energyConverterId)))); + } + + String energyStorageId = tag.getString("energyStorage"); + if (!energyStorageId.equals("")) { + energyStorage.set(new ItemStack(BuiltInRegistries.ITEM + .get(new ResourceLocation(energyStorageId)))); + } + + String headId = tag.getString("head"); + if (!headId.equals("")) { + head.set(new ItemStack(BuiltInRegistries.ITEM + .get(new ResourceLocation(headId)))); + } + + CompoundTag addonsTag = tag.getCompound("addons"); + for (int idx = 0; idx < casingAddonSlots; ++idx) { + if (addonsTag.contains(Integer.toString(idx))) { + CompoundTag addonTag = addonsTag.getCompound(Integer.toString(idx)); + addons.get(idx) + .set(new ItemStack( + BuiltInRegistries.ITEM + .get(new ResourceLocation(addonTag.getString("id"))), + addonTag.getInt("amount"))); + } + } + } + } else { + numAddonSlots.set(0); + componentsEnabled.set(0); + + energyConverter.container.clearContent(); + energyConverter.setActive(false); + energyStorage.container.clearContent(); + energyStorage.setActive(false); + head.container.clearContent(); + head.setActive(false); + for (ToggleableSlot slot : this.addons) { + slot.container.clearContent(); + slot.setActive(false); + } + } + } else { + ItemStack toolStack = tool.getItem(); + CompoundTag tag = toolStack.getOrCreateTag(); + if (inventory == energyConverter.container) { + if (energyConverter.hasItem()) { + tag.putString("energyConverter", + BuiltInRegistries.ITEM.getKey(energyConverter.getItem().getItem()).toString()); + } else { + tag.remove("energyConverter"); + } + } else if (inventory == energyStorage.container) { + if (energyStorage.hasItem()) { + tag.putString("energyStorage", + BuiltInRegistries.ITEM.getKey(energyStorage.getItem().getItem()).toString()); + } else { + tag.remove("energyStorage"); + } + } else if (inventory == head.container) { + if (head.hasItem()) { + tag.putString("head", + BuiltInRegistries.ITEM.getKey(head.getItem().getItem()).toString()); + } else { + tag.remove("head"); + } + } else { + // must be one of the addon slots + for (int idx = 0; idx < addons.size(); ++idx) { + Container addonSlot = addons.get(idx).container; + if (inventory == addonSlot) { + if (!tag.contains("addons")) { + tag.put("addons", new CompoundTag()); + } + CompoundTag addonsTag = tag.getCompound("addons"); + if (addonSlot.isEmpty()) { + addonsTag.remove(Integer.toString(idx)); + } else { + CompoundTag addonTag = new CompoundTag(); + addonTag.putString("id", + BuiltInRegistries.ITEM.getKey(addonSlot.getItem(0).getItem()).toString()); + addonTag.putInt("amount", addonSlot.getItem(0).getCount()); + addonsTag.put(Integer.toString(idx), addonTag); + } + } + } + } + + ModularToolItem.rebuildTool(toolStack); + } + super.slotsChanged(inventory); + } finally { + isUpdating = false; + } + } + + public int getNumAddonSlots() { + return numAddonSlots.get(); + } + + public boolean isComponentsEnabled() { + return componentsEnabled.get() != 0; + } + + @Override + public boolean stillValid(Player player) { + return true; + } + + @Override + public ItemStack quickMoveStack(Player player, int index) { + ItemStack moved = ItemStack.EMPTY; + Slot slot = slots.get(index); + if (slot != null && slot.hasItem()) { + ItemStack inSlot = slot.getItem(); + moved = inSlot.copy(); + if (index >= 0 && index <= 8) { + if (!this.moveItemStackTo(inSlot, 9, 9 + 36, true)) { + return ItemStack.EMPTY; + } + } else { + // try to put it in an input slot + boolean inserted = false; + for (int idx = 0; idx < 9; ++idx) { + if (slots.get(idx).mayPlace(inSlot) && this.moveItemStackTo(inSlot, idx, idx + 1, false)) { + inserted = true; + } + } + if (!inserted) { + // move between player inventory and player hotbar + if (index < 9 + 27) { + if (!this.moveItemStackTo(inSlot, 9 + 27, 9 + 27 + 9, false)) { + return ItemStack.EMPTY; + } + } else { + if (!this.moveItemStackTo(inSlot, 9, 9 + 27, false)) { + return ItemStack.EMPTY; + } + } + } + } + if (inSlot.isEmpty()) { + slot.setByPlayer(ItemStack.EMPTY); + } else { + slot.setChanged(); + } + if (inSlot.getCount() == moved.getCount()) { + return ItemStack.EMPTY; + } + slot.onTake(player, inSlot); + } + return moved; + } + + @Override + protected boolean moveItemStackTo(ItemStack toMove, int startIndex, int endIndex, boolean reverseDirection) { + ItemStack target; + Slot slot; + boolean moved = false; + int slotIdx = startIndex; + if (reverseDirection) { + slotIdx = endIndex - 1; + } + if (toMove.isStackable()) { + while (!toMove.isEmpty() && (reverseDirection ? slotIdx >= startIndex : slotIdx < endIndex)) { + slot = this.slots.get(slotIdx); + target = slot.getItem(); + if (!target.isEmpty() && ItemStack.isSameItemSameTags(toMove, target)) { + int j = target.getCount() + toMove.getCount(); + if (j <= slot.getMaxStackSize(toMove)) { + toMove.setCount(0); + target.setCount(j); + slot.setChanged(); + moved = true; + } else if (target.getCount() < slot.getMaxStackSize(toMove)) { + toMove.shrink(slot.getMaxStackSize(toMove) - target.getCount()); + target.setCount(slot.getMaxStackSize(toMove)); + slot.setChanged(); + moved = true; + } + } + if (reverseDirection) { + --slotIdx; + continue; + } + ++slotIdx; + } + } + if (!toMove.isEmpty()) { + slotIdx = reverseDirection ? endIndex - 1 : startIndex; + while (reverseDirection ? slotIdx >= startIndex : slotIdx < endIndex) { + slot = this.slots.get(slotIdx); + target = slot.getItem(); + if (target.isEmpty() && slot.mayPlace(toMove)) { + if (toMove.getCount() > slot.getMaxStackSize()) { + slot.setByPlayer(toMove.split(slot.getMaxStackSize())); + } else { + slot.setByPlayer(toMove.split(toMove.getCount())); + } + slot.setChanged(); + moved = true; + break; + } + if (reverseDirection) { + --slotIdx; + continue; + } + ++slotIdx; + } + } + return moved; + } + + public void removed(Player player) { + super.removed(player); + this.context.execute((world, blockPos) -> { + this.clearContainer(player, this.tool.container); + }); + } + + private static class SingleItemSlot extends Slot { + public SingleItemSlot(Container container, int slot, int x, int y) { + super(container, slot, x, y); + } + + public int getMaxStackSize() { + return 1; + } + } + + private static class ToggleableSlot extends Slot { + private boolean active; + + public ToggleableSlot(Container container, int slot, int x, int y) { + super(container, slot, x, y); + + this.active = false; + } + + @Override + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + } + + private static class SingleItemToggelableSlot extends ToggleableSlot { + public SingleItemToggelableSlot(Container container, int slot, int x, int y) { + super(container, slot, x, y); + } + + public int getMaxStackSize() { + return 1; + } + } +} diff --git a/src/main/java/aztech/modern_industrialization/datagen/advancement/MIAdvancementsProvider.java b/src/main/java/aztech/modern_industrialization/datagen/advancement/MIAdvancementsProvider.java index a5eb92d28..3a2d34802 100644 --- a/src/main/java/aztech/modern_industrialization/datagen/advancement/MIAdvancementsProvider.java +++ b/src/main/java/aztech/modern_industrialization/datagen/advancement/MIAdvancementsProvider.java @@ -83,8 +83,6 @@ public void generateAdvancement(Consumer consumer) { var mvSteamTurbine = createBasic(consumer, "mv_steam_turbine", electronicCircuit, FrameType.GOAL, "Better Than Wind Mills", "Craft an Advanced Steam Turbine"); var dieselGenerator = createBasic(consumer, "mv_diesel_generator", distillery, "Fast and Furious", "Craft an MV Diesel Generator"); var dieselJetpack = createBasic(consumer, "diesel_jetpack", distillery, FrameType.CHALLENGE, "Ely... We Meant Jetpack!", "Craft a Diesel Jetpack"); - var dieselChainsaw = createBasic(consumer, "diesel_chainsaw", distillery, FrameType.CHALLENGE, "The Texas Chain Saw Massacre", "Craft a Diesel Chainsaw"); - var dieselMiningDrill = createBasic(consumer, "diesel_mining_drill", distillery, FrameType.CHALLENGE, "Through The Walls Of Ba Sing Se", "Craft a Diesel Mining Drill"); var digitalCircuit = createBasic(consumer, "digital_circuit", distillery, "No need for Sodium anymore", "Craft a Digital Circuit"); var turboDieselGenerator = createBasic(consumer, "hv_diesel_generator", dieselGenerator, "Fast and Furious 2 : Revenge", "Craft an HV Diesel Generator"); var largeDieselGenerator = createBasic(consumer, "large_diesel_generator", turboDieselGenerator, "Fast and Furious 42 : Armageddon", "Craft a Large Diesel Generator"); diff --git a/src/main/java/aztech/modern_industrialization/items/ItemHelper.java b/src/main/java/aztech/modern_industrialization/items/ItemHelper.java index 824fb8ae7..a97714970 100644 --- a/src/main/java/aztech/modern_industrialization/items/ItemHelper.java +++ b/src/main/java/aztech/modern_industrialization/items/ItemHelper.java @@ -35,7 +35,7 @@ public final class ItemHelper { public static Multimap createToolModifiers(double damage) { return ImmutableMultimap.of(Attributes.ATTACK_DAMAGE, - new AttributeModifier(TOOL_UUID, "MI Diesel Tool Item", damage, AttributeModifier.Operation.ADDITION)); + new AttributeModifier(TOOL_UUID, "MI Modular Tool Item", damage, AttributeModifier.Operation.ADDITION)); } private ItemHelper() { diff --git a/src/main/java/aztech/modern_industrialization/items/SortOrder.java b/src/main/java/aztech/modern_industrialization/items/SortOrder.java index fe4957365..002eaccb3 100644 --- a/src/main/java/aztech/modern_industrialization/items/SortOrder.java +++ b/src/main/java/aztech/modern_industrialization/items/SortOrder.java @@ -28,6 +28,7 @@ public final class SortOrder implements Comparable { public static final SortOrder GUIDE_BOOK = new SortOrder(); public static final SortOrder FORGE_HAMMER = new SortOrder(); + public static final SortOrder TOOL_STATION = new SortOrder(); public static final SortOrder HAMMER = new SortOrder(); public static final SortOrder STEAM_TIER = new SortOrder(); public static final SortOrder ITEMS_OTHER = new SortOrder(); diff --git a/src/main/java/aztech/modern_industrialization/items/diesel_tools/DieselToolItem.java b/src/main/java/aztech/modern_industrialization/items/diesel_tools/DieselToolItem.java deleted file mode 100644 index bc578c24f..000000000 --- a/src/main/java/aztech/modern_industrialization/items/diesel_tools/DieselToolItem.java +++ /dev/null @@ -1,298 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2020 Azercoco & Technici4n - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package aztech.modern_industrialization.items.diesel_tools; - -import aztech.modern_industrialization.MIText; -import aztech.modern_industrialization.api.FluidFuelRegistry; -import aztech.modern_industrialization.fluid.MIFluid; -import aztech.modern_industrialization.items.DynamicEnchantmentItem; -import aztech.modern_industrialization.items.DynamicToolItem; -import aztech.modern_industrialization.items.FluidFuelItemHelper; -import aztech.modern_industrialization.items.ItemHelper; -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.Multimap; -import com.mojang.datafixers.util.Pair; -import it.unimi.dsi.fastutil.objects.Reference2IntArrayMap; -import it.unimi.dsi.fastutil.objects.Reference2IntMap; -import java.util.List; -import java.util.Map; -import java.util.function.Consumer; -import java.util.function.Predicate; -import net.fabricmc.fabric.api.mininglevel.v1.MiningLevelManager; -import net.fabricmc.fabric.api.tag.convention.v1.ConventionalItemTags; -import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; -import net.minecraft.core.BlockPos; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.Component; -import net.minecraft.sounds.SoundEvents; -import net.minecraft.sounds.SoundSource; -import net.minecraft.tags.ItemTags; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.InteractionResultHolder; -import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.Shearable; -import net.minecraft.world.entity.ai.attributes.Attribute; -import net.minecraft.world.entity.ai.attributes.AttributeModifier; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.*; -import net.minecraft.world.item.context.UseOnContext; -import net.minecraft.world.item.enchantment.Enchantment; -import net.minecraft.world.item.enchantment.Enchantments; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.RotatedPillarBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.gameevent.GameEvent; -import net.minecraft.world.level.material.Fluid; - -public class DieselToolItem extends Item implements Vanishable, DynamicEnchantmentItem, DynamicToolItem { - public static final int CAPACITY = 4 * 81000; - private final double damage; - - public DieselToolItem(Properties settings, double damage) { - super(settings.stacksTo(1).rarity(Rarity.UNCOMMON)); - this.damage = damage; - } - - @Override - public boolean isEnchantable(ItemStack stack) { - return false; - } - - @Override - public boolean mineBlock(ItemStack stack, Level world, BlockState state, BlockPos pos, LivingEntity miner) { - if (state.getDestroySpeed(world, pos) != 0.0f) { - FluidFuelItemHelper.decrement(stack); - } - return true; - } - - @Override - public boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker) { - FluidFuelItemHelper.decrement(stack); - return true; - } - - @Override - public boolean isSuitableFor(ItemStack stack, BlockState state) { - int requiredLevel = MiningLevelManager.getRequiredMiningLevel(state); - return requiredLevel <= 4 && FluidFuelItemHelper.getAmount(stack) > 0 && isSupportedBlock(stack, state); - } - - @Override - public float getDestroySpeed(ItemStack stack, BlockState state) { - if (isSupportedBlock(stack, state)) { - return getMiningSpeedMultiplier(stack); - } - return 1; - } - - private float getMiningSpeedMultiplier(ItemStack stack) { - long amount = FluidFuelItemHelper.getAmount(stack); - if (amount > 0) { - FluidVariant fluid = FluidFuelItemHelper.getFluid(stack); - int burnTicks = FluidFuelRegistry.getEu(fluid.getFluid()); - if (burnTicks > 0) { - return 1.0f + burnTicks / 8.0f; - } - } - return 1.0f; - } - - @Override - public Multimap getAttributeModifiers(ItemStack stack, EquipmentSlot slot) { - if (slot == EquipmentSlot.MAINHAND && FluidFuelItemHelper.getAmount(stack) > 0) { - return ItemHelper.createToolModifiers(damage * FluidFuelRegistry.getEu(FluidFuelItemHelper.getFluid(stack).getFluid()) / 600); - } - return ImmutableMultimap.of(); - } - - @Override - public void appendHoverText(ItemStack stack, Level world, List tooltip, TooltipFlag context) { - FluidFuelItemHelper.appendTooltip(stack, tooltip, CAPACITY); - } - - @Override - public boolean isBarVisible(ItemStack stack) { - return true; - } - - @Override - public int getBarWidth(ItemStack stack) { - return (int) Math.round(getDurabilityBarProgress(stack) * 13); - } - - @Override - public int getBarColor(ItemStack stack) { - Fluid fluid = FluidFuelItemHelper.getFluid(stack).getFluid(); - - if (fluid instanceof MIFluid cf) { - return cf.color; - } else { - return 0; - } - } - - public double getDurabilityBarProgress(ItemStack stack) { - return (double) FluidFuelItemHelper.getAmount(stack) / CAPACITY; - } - - private static boolean isFortune(ItemStack stack) { - CompoundTag tag = stack.getTag(); - return tag != null && tag.getBoolean("fortune"); - } - - private static void setFortune(ItemStack stack, boolean fortune) { - if (fortune) { - stack.getOrCreateTag().putBoolean("fortune", true); - } else { - stack.removeTagKey("fortune"); - } - } - - @Override - public InteractionResultHolder use(Level world, Player user, InteractionHand hand) { - // Toggle between silk touch and fortune - if (hand == InteractionHand.MAIN_HAND && user.isShiftKeyDown()) { - ItemStack stack = user.getItemInHand(hand); - setFortune(stack, !isFortune(stack)); - if (!world.isClientSide) { - user.displayClientMessage( - isFortune(stack) ? MIText.ToolSwitchedFortune.text() : MIText.ToolSwitchedSilkTouch.text(), - true); - } - return InteractionResultHolder.sidedSuccess(stack, world.isClientSide); - } - return super.use(world, user, hand); - } - - @Override - public InteractionResult useOn(UseOnContext context) { - ItemStack stack = context.getItemInHand(); - Level w = context.getLevel(); - BlockPos pos = context.getClickedPos(); - BlockState state = w.getBlockState(pos); - Player player = context.getPlayer(); - if (FluidFuelItemHelper.getAmount(stack) > 0) { - if (stack.is(ItemTags.AXES)) { - Block newBlock = StrippingAccess.getStrippedBlocks().get(state.getBlock()); - if (newBlock != null) { - w.playSound(player, pos, SoundEvents.AXE_STRIP, SoundSource.BLOCKS, 1, 1); - if (!w.isClientSide) { - w.setBlock(pos, newBlock.defaultBlockState().setValue(RotatedPillarBlock.AXIS, state.getValue(RotatedPillarBlock.AXIS)), 11); - FluidFuelItemHelper.decrement(stack); - } - return InteractionResult.sidedSuccess(w.isClientSide); - } - } - if (stack.is(ItemTags.SHOVELS)) { - BlockState newState = PathingAccess.getPathStates().get(state.getBlock()); - if (newState != null) { - w.playSound(player, pos, SoundEvents.SHOVEL_FLATTEN, SoundSource.BLOCKS, 1, 1); - if (!w.isClientSide) { - w.setBlock(pos, newState, 11); - FluidFuelItemHelper.decrement(stack); - } - return InteractionResult.sidedSuccess(w.isClientSide); - } - } - if (stack.is(ItemTags.HOES)) { - Pair, Consumer> pair = HoeItem.TILLABLES.get(state.getBlock()); - if (pair != null) { - Predicate predicate = pair.getFirst(); - Consumer consumer = pair.getSecond(); - if (predicate.test(context)) { - w.playSound(player, pos, SoundEvents.HOE_TILL, SoundSource.BLOCKS, 1.0F, 1.0F); - if (!w.isClientSide) { - consumer.accept(context); - if (player != null) { - FluidFuelItemHelper.decrement(stack); - } - } - - return InteractionResult.sidedSuccess(w.isClientSide); - } - } - } - - } - return super.useOn(context); - } - - @Override - public Reference2IntMap getEnchantments(ItemStack stack) { - Reference2IntMap map = new Reference2IntArrayMap<>(); - if (FluidFuelItemHelper.getAmount(stack) > 0) { - if (!isFortune(stack)) { - map.put(Enchantments.SILK_TOUCH, Enchantments.SILK_TOUCH.getMaxLevel()); - } else { - map.put(Enchantments.BLOCK_FORTUNE, Enchantments.BLOCK_FORTUNE.getMaxLevel()); - } - } - return map; - } - - private static class StrippingAccess extends AxeItem { - private StrippingAccess(Tier material, float attackDamage, float attackSpeed, Properties settings) { - super(material, attackDamage, attackSpeed, settings); - } - - public static Map getStrippedBlocks() { - return STRIPPABLES; - } - } - - private static class PathingAccess extends ShovelItem { - private PathingAccess(Tier material, float attackDamage, float attackSpeed, Properties settings) { - super(material, attackDamage, attackSpeed, settings); - } - - public static Map getPathStates() { - return FLATTENABLES; - } - } - - public InteractionResult interactLivingEntity(ItemStack stack, Player player, LivingEntity interactionTarget, InteractionHand usedHand) { - - final int defaultMb = 100; - float speedMultiplier = this.getMiningSpeedMultiplier(stack); - int costMb = (int) (defaultMb / speedMultiplier); - - if (FluidFuelItemHelper.getAmount(stack) >= costMb) { - if (stack.is(ConventionalItemTags.SHEARS) && interactionTarget instanceof Shearable shearable) { - if (!interactionTarget.level().isClientSide && shearable.readyForShearing()) { - shearable.shear(SoundSource.PLAYERS); - interactionTarget.gameEvent(GameEvent.SHEAR, player); - return InteractionResult.SUCCESS; - } else { - return InteractionResult.CONSUME; - } - } - } - - return InteractionResult.PASS; - } -} diff --git a/src/main/java/aztech/modern_industrialization/items/modulartools/ModularToolItem.java b/src/main/java/aztech/modern_industrialization/items/modulartools/ModularToolItem.java new file mode 100644 index 000000000..f944abb6d --- /dev/null +++ b/src/main/java/aztech/modern_industrialization/items/modulartools/ModularToolItem.java @@ -0,0 +1,636 @@ +/* + * MIT License + * + * Copyright (c) 2020 Azercoco & Technici4n + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package aztech.modern_industrialization.items.modulartools; + +import aztech.modern_industrialization.api.FluidFuelRegistry; +import aztech.modern_industrialization.api.item.modular_tools.EnergyConverterRegistry; +import aztech.modern_industrialization.api.item.modular_tools.EnergyConverterRegistry.ConverterProperties; +import aztech.modern_industrialization.api.item.modular_tools.EnergyStorageRegistry; +import aztech.modern_industrialization.api.item.modular_tools.EnergyStorageRegistry.StorageProperties; +import aztech.modern_industrialization.api.item.modular_tools.HeadRegistry; +import aztech.modern_industrialization.api.item.modular_tools.HeadRegistry.HeadProperties; +import aztech.modern_industrialization.api.item.modular_tools.ModuleRegistry; +import aztech.modern_industrialization.api.item.modular_tools.ModuleRegistry.CustomModuleEffect; +import aztech.modern_industrialization.api.item.modular_tools.ModuleRegistry.ModuleProperties; +import aztech.modern_industrialization.fluid.MIFluid; +import aztech.modern_industrialization.items.DynamicEnchantmentItem; +import aztech.modern_industrialization.items.DynamicToolItem; +import aztech.modern_industrialization.items.FluidFuelItemHelper; +import aztech.modern_industrialization.items.ItemHelper; +import com.google.common.collect.ImmutableMultimap; +import com.google.common.collect.Multimap; +import com.mojang.datafixers.util.Pair; +import dev.draylar.magna.api.MagnaTool; +import it.unimi.dsi.fastutil.objects.Reference2IntArrayMap; +import it.unimi.dsi.fastutil.objects.Reference2IntMap; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Consumer; +import java.util.function.Predicate; +import net.fabricmc.fabric.api.mininglevel.v1.FabricMineableTags; +import net.fabricmc.fabric.api.mininglevel.v1.MiningLevelManager; +import net.fabricmc.fabric.api.transfer.v1.context.ContainerItemContext; +import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; +import net.fabricmc.fabric.api.transfer.v1.item.ItemVariant; +import net.fabricmc.fabric.api.transfer.v1.storage.base.SingleVariantItemStorage; +import net.fabricmc.fabric.api.transfer.v1.transaction.Transaction; +import net.fabricmc.fabric.api.transfer.v1.transaction.TransactionContext; +import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Shearable; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.AxeItem; +import net.minecraft.world.item.HoeItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.ShovelItem; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.Vanishable; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.RotatedPillarBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.gameevent.GameEvent; +import net.minecraft.world.level.material.Fluids; +import team.reborn.energy.api.base.SimpleEnergyItem; + +public class ModularToolItem extends Item implements Vanishable, DynamicEnchantmentItem, DynamicToolItem, MagnaTool { + public static final long BASE_ENERGY_CONSUMPTION = 32; + private static final ItemStack SHEAR_STACK = new ItemStack(Items.SHEARS); + + public ModularToolItem(Properties settings) { + super(settings.stacksTo(1).rarity(Rarity.UNCOMMON)); + } + + @Override + public boolean isEnchantable(ItemStack stack) { + return false; + } + + @Override + public boolean mineBlock(ItemStack stack, Level world, BlockState state, BlockPos pos, LivingEntity miner) { + if (state.getDestroySpeed(world, pos) != 0.0f) { + consumeEnergy(stack); + } + return true; + } + + @Override + public boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker) { + consumeEnergy(stack); + return true; + } + + @Override + public boolean isSuitableFor(ItemStack stack, BlockState state) { + int requiredLevel = MiningLevelManager.getRequiredMiningLevel(state); + return requiredLevel <= getHeadProps(stack).flatMap(props -> Optional.of(props.miningLevel())).orElse(-1) + && hasEnoughEnergy(stack) && isSupportedBlock(stack, state); + } + + @Override + public boolean isSupportedBlock(ItemStack stack, BlockState state) { + switch (getToolType(stack)) { + case DRILL: { + return state.is(BlockTags.MINEABLE_WITH_PICKAXE) || state.is(BlockTags.MINEABLE_WITH_SHOVEL); + } + case CHAINSAW: { + return state.is(BlockTags.MINEABLE_WITH_AXE) + || (state.is(FabricMineableTags.SHEARS_MINEABLE) + || Items.SHEARS.getDestroySpeed(SHEAR_STACK, state) > 1.0f) + || state.is(FabricMineableTags.SWORD_MINEABLE) + || state.is(BlockTags.MINEABLE_WITH_HOE); + } + default: { + return false; + } + } + } + + @Override + public float getDestroySpeed(ItemStack stack, BlockState state) { + if (!hasEnoughEnergy(stack)) { + return 0.0f; + } + if (isSupportedBlock(stack, state)) { + return getHeadProps(stack).map(props -> props.miningSpeed()).orElse(0.0f); + } + return 1.0f; + } + + @Override + public Multimap getAttributeModifiers(ItemStack stack, EquipmentSlot slot) { + if (slot == EquipmentSlot.MAINHAND && hasEnoughEnergy(stack)) { + return ItemHelper.createToolModifiers(getHeadProps(stack).map(props -> props.attackDamage()).orElse(0.0)); + } + return ImmutableMultimap.of(); + } + + @Override + public void appendHoverText(ItemStack stack, Level world, List tooltip, TooltipFlag context) { + switch (getEnergyType(stack)) { + case FLUID: { + FluidFuelItemHelper.appendTooltip(stack, tooltip, getCapacity(stack) / 1000); + break; + } + default: { + break; + } + } + } + + @Override + public boolean isBarVisible(ItemStack stack) { + return true; + } + + @Override + public int getBarWidth(ItemStack stack) { + switch (getEnergyType(stack)) { + case FLUID: { + return (int) Math + .round(13.0 * 1000.0 * (double) FluidFuelItemHelper.getAmount(stack) + / (double) getCapacity(stack)); + } + case ELECTRIC: { + return (int) Math.round( + 13.0 * (double) SimpleEnergyItem.getStoredEnergyUnchecked(stack) / (double) getCapacity(stack)); + } + default: { + return 0; + } + } + } + + @Override + public int getBarColor(ItemStack stack) { + switch (getEnergyType(stack)) { + case FLUID: { + if (FluidFuelItemHelper.getFluid(stack).getFluid() instanceof MIFluid cf) { + return cf.color; + } + break; + } + case ELECTRIC: { + return 0xff0000; + } + default: { + break; + } + } + return 0; + } + + @Override + public InteractionResult useOn(UseOnContext context) { + ItemStack stack = context.getItemInHand(); + Level w = context.getLevel(); + BlockPos pos = context.getClickedPos(); + BlockState state = w.getBlockState(pos); + Player player = context.getPlayer(); + + if (hasEnoughEnergy(stack)) { + switch (getToolType(stack)) { + case DRILL: { + BlockState newState = PathingAccess.getPathStates().get(state.getBlock()); + if (newState != null) { + w.playSound(player, pos, SoundEvents.SHOVEL_FLATTEN, SoundSource.BLOCKS, 1, 1); + if (!w.isClientSide) { + w.setBlock(pos, newState, 11); + consumeEnergy(stack); + } + return InteractionResult.sidedSuccess(w.isClientSide); + } + break; + } + case CHAINSAW: { + Block newBlock = StrippingAccess.getStrippedBlocks().get(state.getBlock()); + if (newBlock != null) { + w.playSound(player, pos, SoundEvents.AXE_STRIP, SoundSource.BLOCKS, 1, 1); + if (!w.isClientSide) { + w.setBlock(pos, newBlock.defaultBlockState().setValue(RotatedPillarBlock.AXIS, + state.getValue(RotatedPillarBlock.AXIS)), 11); + consumeEnergy(stack); + } + return InteractionResult.sidedSuccess(w.isClientSide); + } + var pair = HoeItem.TILLABLES.get(state.getBlock()); + if (pair != null) { + Predicate predicate = pair.getFirst(); + Consumer consumer = pair.getSecond(); + if (predicate.test(context)) { + w.playSound(player, pos, SoundEvents.HOE_TILL, SoundSource.BLOCKS, 1.0F, 1.0F); + if (!w.isClientSide) { + consumer.accept(context); + consumeEnergy(stack); + } + + return InteractionResult.sidedSuccess(w.isClientSide); + } + } + break; + } + default: { + break; + } + } + } + return super.useOn(context); + } + + @Override + public Reference2IntMap getEnchantments(ItemStack stack) { + var map = new Reference2IntArrayMap(); + if (!hasEnoughEnergy(stack)) { + return map; + } + + for (var addon : getAddonProps(stack)) { + if (addon.isPresent() && addon.get().getFirst().enchantment() != null) { + Enchantment enchantment = addon.get().getFirst().enchantment(); + map.put(enchantment, addon.get().getSecond() + map.getOrDefault(enchantment, 0)); + } + } + return map; + } + + @Override + public InteractionResult interactLivingEntity(ItemStack stack, Player player, LivingEntity interactionTarget, + InteractionHand usedHand) { + if (hasEnoughEnergy(stack)) { + if (getToolType(stack) == ToolType.CHAINSAW && interactionTarget instanceof Shearable shearable) { + if (!interactionTarget.level().isClientSide && shearable.readyForShearing()) { + shearable.shear(SoundSource.PLAYERS); + interactionTarget.gameEvent(GameEvent.SHEAR, player); + consumeEnergy(stack); + return InteractionResult.SUCCESS; + } else { + return InteractionResult.CONSUME; + } + } + } + + return InteractionResult.PASS; + } + + @Override + public boolean playBreakEffects() { + return true; + } + + @Override + public int getRadius(ItemStack stack) { + int radius = 0; + for (var addon : getAddonProps(stack)) { + if (addon.isPresent() && addon.get().getFirst().customEffect() == CustomModuleEffect.AREA) { + radius += addon.get().getSecond(); + } + } + return radius; + } + + public static void rebuildTool(ItemStack stack) { + // clear current energy storage + SimpleEnergyItem.setStoredEnergyUnchecked(stack, 0); + FluidFuelItemHelper.setAmount(stack, 0); + + switch (getToolType(stack)) { + case DRILL: { + stack.getOrCreateTag().putInt("CustomModelData", 1); + break; + } + case CHAINSAW: { + stack.getOrCreateTag().putInt("CustomModelData", 2); + break; + } + default: { + stack.getOrCreateTag().putInt("CustomModelData", 0); + break; + } + } + } + + private static Optional getConverterProps(ItemStack stack) { + Optional energyConverter = getComponent(stack, "energyConverter"); + return energyConverter + .flatMap(item -> Optional.ofNullable(EnergyConverterRegistry.getProperties(item))); + } + + private static Optional getStorageProps(ItemStack stack) { + Optional energyStorage = getComponent(stack, "energyStorage"); + return energyStorage + .flatMap(item -> Optional.ofNullable(EnergyStorageRegistry.getProperties(item))); + } + + private static Optional getHeadProps(ItemStack stack) { + Optional head = getComponent(stack, "head"); + return head.flatMap(item -> Optional.ofNullable(HeadRegistry.getProperties(item))); + } + + private static List>> getAddonProps(ItemStack stack) { + List> addons = new ArrayList<>(); + for (int idx = 0; idx < 5; ++idx) { + addons.add(Optional.empty()); + } + + CompoundTag tag = stack.getTag(); + if (tag == null) { + return List.of(); + } + + CompoundTag addonsTag = tag.getCompound("addons"); + for (int idx = 0; idx < addons.size(); ++idx) { + if (addonsTag.contains(Integer.toString(idx))) { + CompoundTag addonTag = addonsTag.getCompound(Integer.toString(idx)); + String addonId = addonTag.getString("id"); + int amount = addonTag.getInt("amount"); + addons.set(idx, + Optional.of(new ItemStack(BuiltInRegistries.ITEM.get(new ResourceLocation(addonId)), amount))); + } + } + return addons.stream() + .map(module -> module.flatMap( + item -> { + var props = ModuleRegistry.getProperties(item.getItem()); + if (props == null) { + return Optional.empty(); + } else { + return Optional.of(new Pair<>(props, item.getCount())); + } + })) + .toList(); + } + + private static Optional getComponent(ItemStack stack, String componentName) { + CompoundTag tag = stack.getTag(); + if (tag == null) { + return Optional.empty(); + } + String componentId = tag.getString(componentName); + if (componentId.equals("")) { + return Optional.empty(); + } + return Optional.of(BuiltInRegistries.ITEM.get(new ResourceLocation(componentId))); + } + + private static EnergyType getEnergyType(ItemStack stack) { + var converter = getConverterProps(stack); + var storage = getStorageProps(stack); + if (converter.isPresent() && storage.isPresent() + && converter.get().energyType() == storage.get().energyType()) { + return converter.get().energyType(); + } else { + return EnergyType.NONE; + } + } + + /** + * consume one op's worth of energy; if using fluid fuels, rounds up to + * nearest mB + */ + private static void consumeEnergy(ItemStack stack) { + if (hasEnoughEnergy(stack)) { + switch (getEnergyType(stack)) { + case FLUID: { + FluidFuelItemHelper.setAmount(stack, + FluidFuelItemHelper.getAmount(stack) - 81 * getMbRequired(stack)); + break; + } + case ELECTRIC: { + SimpleEnergyItem.setStoredEnergyUnchecked(stack, + SimpleEnergyItem.getStoredEnergyUnchecked(stack) - getConsumedEnergy(stack)); + break; + } + default: { + throw new IllegalStateException("Must have a known energy type to consume any energy"); + } + } + } + } + + private static boolean hasEnoughEnergy(ItemStack stack) { + if (getConsumedEnergy(stack) > getConverterProps(stack).map(props -> props.maxEu()).orElse(0L)) { + return false; + } + + switch (getEnergyType(stack)) { + case FLUID: { + FluidVariant fluid = FluidFuelItemHelper.getFluid(stack); + if (fluid.getFluid() == Fluids.EMPTY) { + return false; + } + return FluidFuelItemHelper.getAmount(stack) > getMbRequired(stack); + } + case ELECTRIC: { + return SimpleEnergyItem.getStoredEnergyUnchecked(stack) > getConsumedEnergy(stack); + } + default: { + return false; + } + } + } + + private static long getMbRequired(ItemStack stack) { + FluidVariant fluid = FluidFuelItemHelper.getFluid(stack); + long euPerMb = FluidFuelRegistry.getEu(fluid.getFluid()); + return (getConsumedEnergy(stack) + euPerMb - 1) / euPerMb; // do ceiling division + } + + private static ToolType getToolType(ItemStack stack) { + return getHeadProps(stack).map(props -> props.toolType()).orElse(ToolType.NONE); + } + + /** + * report consumed energy for one operation, in EU + */ + private static long getConsumedEnergy(ItemStack stack) { + double multiplier = 1; + for (var addon : getAddonProps(stack)) { + if (addon.isPresent()) { + multiplier *= Math.pow(addon.get().getFirst().multiplier(), addon.get().getSecond()); + } + } + return Math.round(BASE_ENERGY_CONSUMPTION * multiplier); + } + + /** + * get energy capacity, in EU or in mB, depending on energy storage module + */ + private static long getCapacity(ItemStack stack) { + return getStorageProps(stack).map(props -> props.capacity()).orElse(0L); + } + + public static enum EnergyType { + NONE, + FLUID, + ELECTRIC + } + + public static enum ToolType { + NONE, + DRILL, + CHAINSAW + } + + private static class StrippingAccess extends AxeItem { + private StrippingAccess(Tier material, float attackDamage, float attackSpeed, Properties settings) { + super(material, attackDamage, attackSpeed, settings); + } + + public static Map getStrippedBlocks() { + return STRIPPABLES; + } + } + + private static class PathingAccess extends ShovelItem { + private PathingAccess(Tier material, float attackDamage, float attackSpeed, Properties settings) { + super(material, attackDamage, attackSpeed, settings); + } + + public static Map getPathStates() { + return FLATTENABLES; + } + } + + public static class FluidStorage extends SingleVariantItemStorage { + private ContainerItemContext context; + + public FluidStorage(ContainerItemContext context) { + super(context); + this.context = context; + } + + @Override + protected FluidVariant getBlankResource() { + return FluidVariant.blank(); + } + + @Override + protected FluidVariant getResource(ItemVariant currentVariant) { + return FluidFuelItemHelper.getFluid(currentVariant.toStack()); + } + + @Override + protected long getAmount(ItemVariant currentVariant) { + return FluidFuelItemHelper.getAmount(currentVariant.toStack()); + } + + @Override + protected long getCapacity(FluidVariant variant) { + if (ModularToolItem.getEnergyType(context.getItemVariant().toStack()) == EnergyType.FLUID) { + return ModularToolItem.getCapacity(context.getItemVariant().toStack()) / 1000; + } else { + return 0; + } + } + + @Override + protected ItemVariant getUpdatedVariant(ItemVariant currentVariant, FluidVariant newResource, long newAmount) { + ItemStack stack = currentVariant.toStack(); + FluidFuelItemHelper.setFluid(stack, newResource); + FluidFuelItemHelper.setAmount(stack, newAmount); + return ItemVariant.of(stack); + } + } + + public static class EnergyStorage implements team.reborn.energy.api.EnergyStorage { + private ContainerItemContext context; + + public EnergyStorage(ContainerItemContext context) { + this.context = context; + } + + @Override + public long insert(long maxAmount, TransactionContext transaction) { + long toInsert = Math.min(maxAmount, getCapacity() - getAmount()); + if (trySetEnergy(getAmount() + toInsert, transaction)) { + return toInsert; + } else { + return 0; + } + } + + @Override + public long extract(long maxAmount, TransactionContext transaction) { + long toExtract = Math.min(maxAmount, getAmount()); + if (trySetEnergy(getAmount() - toExtract, transaction)) { + return toExtract; + } else { + return 0; + } + } + + private boolean trySetEnergy(long amount, TransactionContext transaction) { + ItemStack newStack = context.getItemVariant().toStack(); + SimpleEnergyItem.setStoredEnergyUnchecked(newStack, amount); + ItemVariant newVariant = ItemVariant.of(newStack); + try (Transaction nested = transaction.openNested()) { + if (context.extract(context.getItemVariant(), 1, nested) == 1 + && context.insert(newVariant, 1, nested) == 1) { + nested.commit(); + return true; + } else { + return false; + } + } + } + + @Override + public long getAmount() { + if (ModularToolItem.getEnergyType(context.getItemVariant().toStack()) == EnergyType.ELECTRIC) { + return SimpleEnergyItem.getStoredEnergyUnchecked(context.getItemVariant().toStack()); + } else { + return 0; + } + } + + @Override + public long getCapacity() { + if (ModularToolItem.getEnergyType(context.getItemVariant().toStack()) == EnergyType.ELECTRIC) { + return ModularToolItem.getCapacity(context.getItemVariant().toStack()); + } else { + return 0; + } + } + } +} diff --git a/src/main/java/aztech/modern_industrialization/materials/MIMaterials.java b/src/main/java/aztech/modern_industrialization/materials/MIMaterials.java index 5dbb40e21..5c228a0aa 100644 --- a/src/main/java/aztech/modern_industrialization/materials/MIMaterials.java +++ b/src/main/java/aztech/modern_industrialization/materials/MIMaterials.java @@ -29,6 +29,7 @@ import aztech.modern_industrialization.MIItem; import aztech.modern_industrialization.api.energy.CableTier; +import aztech.modern_industrialization.api.item.modular_tools.ComponentTier; import aztech.modern_industrialization.compat.kubejs.KubeJSProxy; import aztech.modern_industrialization.machines.init.MIMachineRecipeTypes; import aztech.modern_industrialization.materials.part.*; @@ -178,7 +179,7 @@ public static MaterialBuilder addVanillaGem(boolean compressor, String gemPath, .set(MaterialProperty.MEAN_RGB, 0xFFE650) .set(MaterialProperty.HARDNESS, SOFT) .addParts(BOLT, RING, GEAR, ROD, CURVED_PLATE, DOUBLE_INGOT, DUST, LARGE_PLATE, PLATE, TINY_DUST) - .addParts(DRILL_HEAD, DRILL)) + .addParts(DRILL_HEAD.simple(), DRILL)) ); IRON = MaterialRegistry.addMaterial( @@ -199,7 +200,7 @@ public static MaterialBuilder addVanillaGem(boolean compressor, String gemPath, .addParts(WIRE) .addParts(FINE_WIRE) .addParts(CABLE.of(CableTier.LV)) - .addParts(DRILL_HEAD, DRILL)) + .addParts(DRILL_HEAD.simple(), DRILL)) .cancelRecipes("macerator/ore_to_raw", "forge_hammer/ore_to_raw_metal", "forge_hammer/ore_to_raw_metal_with_tool", "forge_hammer/ore_to_dust_with_tool")); @@ -246,7 +247,7 @@ public static MaterialBuilder addVanillaGem(boolean compressor, String gemPath, .set(MaterialProperty.SET, STONE) .set(MaterialProperty.MEAN_RGB, 0xd20000) .set(MaterialProperty.HARDNESS, SOFT) - .addParts(TINY_DUST, CRUSHED_DUST, BATTERY.of(CableTier.LV)).addMaterialItemParts(MaterialItemPart.external(DUST, "minecraft:redstone", "minecraft:redstone")) + .addParts(TINY_DUST, CRUSHED_DUST, BATTERY.of(CableTier.LV, ComponentTier.LV)).addMaterialItemParts(MaterialItemPart.external(DUST, "minecraft:redstone", "minecraft:redstone")) .addMaterialItemParts(MaterialItemPart.external(BLOCK, "#c:redstone_blocks", "minecraft:redstone_block")) .addMaterialItemParts(MaterialItemPart.external(ORE, "#c:redstone_ores", "minecraft:redstone_ore")) .addMaterialItemParts(MaterialItemPart.external(ORE_DEEPSLATE, "#c:redstone_ores", "minecraft:deepslate_redstone_ore")) @@ -306,7 +307,7 @@ public static MaterialBuilder addVanillaGem(boolean compressor, String gemPath, .set(MaterialProperty.MEAN_RGB, 0xffcc00) .set(MaterialProperty.HARDNESS, SOFT) .addParts(BOLT, BLADE, RING, ROTOR, GEAR, ROD, CURVED_PLATE, DOUBLE_INGOT, DUST, INGOT, LARGE_PLATE, NUGGET, PLATE, TINY_DUST) - .addParts(BLOCK.of(MaterialBlockSet.COPPER)).addParts(TANK.of(4)).addParts(DRILL_HEAD, DRILL) + .addParts(BLOCK.of(MaterialBlockSet.COPPER)).addParts(TANK.of(4)).addParts(DRILL_HEAD.simple(), DRILL) .addParts(BARREL.of(32)).addParts(MACHINE_CASING.of(), MACHINE_CASING_PIPE.of()) .addParts(MACHINE_CASING_SPECIAL.of("Bronze Plated Bricks", "bronze_plated_bricks")) .addRecipes(ForgeHammerRecipes::apply, SmeltingRecipes::apply, StandardRecipes::apply)); @@ -327,9 +328,11 @@ public static MaterialBuilder addVanillaGem(boolean compressor, String gemPath, .set(MaterialProperty.SET, METALLIC) .set(MaterialProperty.MEAN_RGB, 0x3f3f3f) .addParts(BOLT, RING, ROD, GEAR, CURVED_PLATE, DOUBLE_INGOT, DUST, INGOT, LARGE_PLATE, NUGGET, PLATE, TINY_DUST) - .addParts(ROD_MAGNETIC).addParts(BLOCK.of(MaterialBlockSet.IRON)).addParts(DRILL_HEAD, DRILL) + .addParts(ROD_MAGNETIC).addParts(BLOCK.of(MaterialBlockSet.IRON)).addParts(DRILL_HEAD.withModularComponent(ComponentTier.LV, 2, 6.0f, 6.0), DRILL) .addParts(MACHINE_CASING.of(), MACHINE_CASING_PIPE.of()).addParts(TANK.of(8)).addParts(BARREL.of(128)) .addMaterialItemParts(MaterialItemPart.external(HAMMER, MIItem.STEEL_HAMMER.getId().toString())) + .addParts(ROTARY_BLADE.withModularComponent(ComponentTier.LV, 6.0f, 9.0)) + .addMaterialItemParts(MaterialItemPart.external(TOOL_CASING, MIItem.STEEL_TOOL_CASING.getId().toString())) .addRecipes(ForgeHammerRecipes::apply, SmeltingRecipes::apply, StandardRecipes::apply)); LIGNITE_COAL = MaterialRegistry.addMaterial(new MaterialBuilder("Lignite Coal", "lignite_coal") @@ -349,8 +352,10 @@ public static MaterialBuilder addVanillaGem(boolean compressor, String gemPath, .set(MaterialProperty.MEAN_RGB, 0x3fcaff) .addParts(BOLT, BLADE, RING, ROTOR, GEAR, ROD, CURVED_PLATE, DOUBLE_INGOT, DUST, INGOT, LARGE_PLATE, NUGGET, PLATE, TINY_DUST) .addParts(WIRE).addParts(BLOCK.of(MaterialBlockSet.GOLD)).addParts(MACHINE_CASING.of("Advanced Machine Casing", "advanced_machine_casing")) - .addParts(DRILL_HEAD, DRILL).addParts(MACHINE_CASING_SPECIAL.of("Frostproof Machine Casing", "frostproof_machine_casing")).addParts(TANK.of(16)) + .addParts(DRILL_HEAD.withModularComponent(ComponentTier.MV, 3, 8.0f, 7.0), DRILL).addParts(MACHINE_CASING_SPECIAL.of("Frostproof Machine Casing", "frostproof_machine_casing")).addParts(TANK.of(16)) .addParts(BARREL.of(512)).addParts(CABLE.of(CableTier.HV)).addRecipes(StandardRecipes::apply) + .addParts(ROTARY_BLADE.withModularComponent(ComponentTier.MV, 8.0f, 10.0)) + .addMaterialItemParts(MaterialItemPart.external(TOOL_CASING, MIItem.ALUMINUM_TOOL_CASING.getId().toString())) .addRecipes(SmeltingRecipes::applyBlastFurnace)); BAUXITE = MaterialRegistry.addMaterial(new MaterialBuilder("Bauxite", "bauxite") @@ -391,7 +396,9 @@ public static MaterialBuilder addVanillaGem(boolean compressor, String gemPath, INeutronBehaviour.of(NuclearConstant.ScatteringType.MEDIUM, NuclearConstant.INVAR, 2), NuclearConstant.DESINTEGRATION_BY_ROD * 2))) - .addParts(BLOCK.of(MaterialBlockSet.IRON)).addRecipes(StandardRecipes::apply, SmeltingRecipes::apply)); + .addParts(BLOCK.of(MaterialBlockSet.IRON)) + .addParts(ROTARY_BLADE.simple()) + .addRecipes(StandardRecipes::apply, SmeltingRecipes::apply)); CUPRONICKEL = MaterialRegistry.addMaterial(new MaterialBuilder("Cupronickel", "cupronickel") .set(MaterialProperty.SET, METALLIC) @@ -431,7 +438,7 @@ public static MaterialBuilder addVanillaGem(boolean compressor, String gemPath, .set(MaterialProperty.SET, STONE) .set(MaterialProperty.MEAN_RGB, 0x071CB8) .set(MaterialProperty.HARDNESS, SOFT).addParts(TINY_DUST, DUST).addParts(BLOCK.of(MaterialBlockSet.LAPIS)) - .addParts(BATTERY.of(CableTier.HV)).addRecipes(StandardRecipes::apply, SmeltingRecipes::apply)); + .addParts(BATTERY.of(CableTier.HV, ComponentTier.HV)).addRecipes(StandardRecipes::apply, SmeltingRecipes::apply)); SALT = MaterialRegistry.addMaterial(new MaterialBuilder("Salt", "salt") .set(MaterialProperty.MAIN_PART, DUST) @@ -450,9 +457,12 @@ public static MaterialBuilder addVanillaGem(boolean compressor, String gemPath, .addParts(BLOCK.of(MaterialBlockSet.NETHERITE)).addParts(RAW_METAL.ofAll(MaterialRawSet.COPPER)).addParts(HOT_INGOT) .addParts(MACHINE_CASING.of( "Highly Advanced Machine Casing", - "highly_advanced_machine_casing")).addParts(DRILL_HEAD, DRILL).addParts(MACHINE_CASING_PIPE.of()) + "highly_advanced_machine_casing")).addParts(DRILL_HEAD.withModularComponent(ComponentTier.EV, 5, 12.0f, 9.0), DRILL).addParts(MACHINE_CASING_PIPE.of()) .addParts(MACHINE_CASING_SPECIAL.of("Solid Titanium Machine Casing", "solid_titanium_machine_casing")).addParts(ORE.of(MaterialOreSet.IRON)) - .addParts(TANK.of(64)).addParts(BARREL.of(8192)).addRecipes(StandardRecipes::apply) + .addParts(TANK.of(64)).addParts(BARREL.of(8192)) + .addParts(ROTARY_BLADE.withModularComponent(ComponentTier.EV, 12.0f, 12.0)) + .addMaterialItemParts(MaterialItemPart.external(TOOL_CASING, MIItem.TITANIUM_TOOL_CASING.getId().toString())) + .addRecipes(StandardRecipes::apply) .addRecipes((ctx) -> SmeltingRecipes.applyBlastFurnace(ctx, true, 128, 400)).cancelRecipes("macerator/raw_metal")); ELECTRUM = MaterialRegistry.addMaterial( @@ -469,7 +479,7 @@ public static MaterialBuilder addVanillaGem(boolean compressor, String gemPath, .set(MaterialProperty.MEAN_RGB, 0x3C3C50) .set(MaterialProperty.HARDNESS, SOFT) .addParts(ITEM_PURE_METAL) - .addParts(BLOCK.of(MaterialBlockSet.IRON)).addParts(N_DOPED_PLATE, P_DOPED_PLATE).addParts(PLATE, DOUBLE_INGOT, BATTERY.of(CableTier.MV)) + .addParts(BLOCK.of(MaterialBlockSet.IRON)).addParts(N_DOPED_PLATE, P_DOPED_PLATE).addParts(PLATE, DOUBLE_INGOT, BATTERY.of(CableTier.MV, ComponentTier.MV)) .addRecipes(StandardRecipes::apply, SmeltingRecipes::apply)); STAINLESS_STEEL = MaterialRegistry.addMaterial(new MaterialBuilder("Stainless Steel", "stainless_steel") @@ -478,13 +488,16 @@ public static MaterialBuilder addVanillaGem(boolean compressor, String gemPath, .set(MaterialProperty.HARDNESS, HARD) .addParts(BLOCK.of(MaterialBlockSet.IRON)) .addParts(BOLT, BLADE, RING, ROTOR, GEAR, ROD, CURVED_PLATE, DOUBLE_INGOT, DUST, INGOT, LARGE_PLATE, NUGGET, PLATE, TINY_DUST) - .addParts(HOT_INGOT).addParts(DRILL_HEAD, DRILL).addParts(MACHINE_CASING.of( + .addParts(HOT_INGOT).addParts(DRILL_HEAD.withModularComponent(ComponentTier.HV, 4, 10.0f, 8.0), DRILL).addParts(MACHINE_CASING.of( "Turbo Machine Casing", "turbo_machine_casing")) .addParts(MACHINE_CASING_PIPE.of()).addParts(MACHINE_CASING_SPECIAL.of( "Clean Stainless Steel Machine Casing", "clean_stainless_steel_machine_casing")) - .addParts(ROD_MAGNETIC).addParts(TANK.of(32)).addParts(BARREL.of(4096)).addRecipes(StandardRecipes::apply) + .addParts(ROD_MAGNETIC).addParts(TANK.of(32)).addParts(BARREL.of(4096)) + .addParts(ROTARY_BLADE.withModularComponent(ComponentTier.HV, 10.0f, 11.0)) + .addMaterialItemParts(MaterialItemPart.external(TOOL_CASING, MIItem.STAINLESS_STEEL_TOOL_CASING.getId().toString())) + .addRecipes(StandardRecipes::apply) .addRecipes((ctx) -> SmeltingRecipes.applyBlastFurnace(ctx, true, 32, 400)).cancelRecipes("polarizer/rod_magnetic")); RUBY = MaterialRegistry @@ -658,7 +671,7 @@ public static MaterialBuilder addVanillaGem(boolean compressor, String gemPath, .set(MaterialProperty.SET, DULL) .set(MaterialProperty.MEAN_RGB, 0x967224) .set(MaterialProperty.HARDNESS, SOFT) - .addParts(DUST, TINY_DUST, INGOT, PLATE, ROD, DOUBLE_INGOT, BATTERY.of(CableTier.EV)) + .addParts(DUST, TINY_DUST, INGOT, PLATE, ROD, DOUBLE_INGOT, BATTERY.of(CableTier.EV, ComponentTier.EV)) .addParts( new PartTemplate("Control Rod", FUEL_ROD.key) .withRegister((partContext, part, itemPath1, itemId, itemTag, englishName) -> NuclearAbsorbable diff --git a/src/main/java/aztech/modern_industrialization/materials/part/BatteryPart.java b/src/main/java/aztech/modern_industrialization/materials/part/BatteryPart.java index 64c6682a5..d616afe73 100644 --- a/src/main/java/aztech/modern_industrialization/materials/part/BatteryPart.java +++ b/src/main/java/aztech/modern_industrialization/materials/part/BatteryPart.java @@ -24,7 +24,11 @@ package aztech.modern_industrialization.materials.part; import aztech.modern_industrialization.api.energy.CableTier; +import aztech.modern_industrialization.api.item.modular_tools.ComponentTier; +import aztech.modern_industrialization.api.item.modular_tools.EnergyStorageRegistry; +import aztech.modern_industrialization.api.item.modular_tools.EnergyStorageRegistry.StorageProperties; import aztech.modern_industrialization.items.PortableStorageUnit; +import aztech.modern_industrialization.items.modulartools.ModularToolItem.EnergyType; public class BatteryPart implements PartKeyProvider { @@ -41,7 +45,21 @@ public PartTemplate of(long batteryCapacity) { }); } + public PartTemplate of(long batteryCapacity, ComponentTier componentTier) { + return new PartTemplate("Battery", "battery").withRegister( + (partContext, part, itemPath, itemId, itemTag, englishName) -> { + var item = PartTemplate.createSimpleItem(englishName, itemPath, partContext, part); + PortableStorageUnit.CAPACITY_PER_BATTERY.put(item, batteryCapacity); + EnergyStorageRegistry.register(item, + new StorageProperties(componentTier, batteryCapacity, EnergyType.ELECTRIC)); + }); + } + public PartTemplate of(CableTier tier) { - return of(60 * 20 * tier.getMaxTransfer()); + return of(128 * tier.getMaxTransfer()); + } + + public PartTemplate of(CableTier tier, ComponentTier componentTier) { + return of(128 * tier.getMaxTransfer(), componentTier); } } diff --git a/src/main/java/aztech/modern_industrialization/materials/part/DrillHeadPart.java b/src/main/java/aztech/modern_industrialization/materials/part/DrillHeadPart.java new file mode 100644 index 000000000..9bbd9722e --- /dev/null +++ b/src/main/java/aztech/modern_industrialization/materials/part/DrillHeadPart.java @@ -0,0 +1,50 @@ +/* + * MIT License + * + * Copyright (c) 2020 Azercoco & Technici4n + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package aztech.modern_industrialization.materials.part; + +import aztech.modern_industrialization.api.item.modular_tools.ComponentTier; +import aztech.modern_industrialization.api.item.modular_tools.HeadRegistry; +import aztech.modern_industrialization.api.item.modular_tools.HeadRegistry.HeadProperties; +import aztech.modern_industrialization.items.modulartools.ModularToolItem.ToolType; + +public class DrillHeadPart implements PartKeyProvider { + @Override + public PartKey key() { + return new PartKey("drill_head"); + } + + public PartTemplate simple() { + return new PartTemplate("Drill Head", "drill_head"); + } + + public PartTemplate withModularComponent(ComponentTier tier, int miningLevel, float miningSpeed, + double attackDamage) { + return new PartTemplate("Drill Head", "drill_head").withRegister( + (partContext, part, itemPath, itemId, itemTag, englishName) -> { + var item = PartTemplate.createSimpleItem(englishName, itemPath, partContext, part); + HeadRegistry.register(item, + new HeadProperties(tier, ToolType.DRILL, miningLevel, miningSpeed, attackDamage)); + }); + } +} diff --git a/src/main/java/aztech/modern_industrialization/materials/part/MIParts.java b/src/main/java/aztech/modern_industrialization/materials/part/MIParts.java index 3eaf2fa89..2f02312e3 100644 --- a/src/main/java/aztech/modern_industrialization/materials/part/MIParts.java +++ b/src/main/java/aztech/modern_industrialization/materials/part/MIParts.java @@ -46,17 +46,20 @@ public class MIParts { public static final PartTemplate DOUBLE_INGOT = new PartTemplate("Double Ingot", "double_ingot") .withTexture(new TextureGenParams.DoubleIngot()); - public static final PartTemplate DRILL_HEAD = new PartTemplate("Drill Head", "drill_head"); + public static final DrillHeadPart DRILL_HEAD = new DrillHeadPart(); + public static final RotaryBladePart ROTARY_BLADE = new RotaryBladePart(); + public static final PartTemplate TOOL_CASING = new PartTemplate("Tool Casing", "tool_casing"); public static final PartTemplate DRILL = new PartTemplate("Drill", "drill"); public static final PartTemplate DUST = new PartTemplate("Dust", "dust"); public static final PartTemplate FINE_WIRE = new PartTemplate("Fine Wire", "fine_wire"); public static final PartTemplate GEAR = new PartTemplate("Gear", "gear"); - public static final PartTemplate GEM = new PartTemplate("%s", "gem").withRegister((partContext, part, itemPath, itemId, itemTag, englishName) -> { - var item = PartTemplate.createSimpleItem(englishName, itemPath, partContext, part); - TagsToGenerate.generateTag("c:" + itemPath, item.asItem(), englishName + "s"); - }) + public static final PartTemplate GEM = new PartTemplate("%s", "gem") + .withRegister((partContext, part, itemPath, itemId, itemTag, englishName) -> { + var item = PartTemplate.createSimpleItem(englishName, itemPath, partContext, part); + TagsToGenerate.generateTag("c:" + itemPath, item.asItem(), englishName + "s"); + }) .withTexture(new TextureGenParams.Gem()) .withCustomPath("%s", "%s"); @@ -67,8 +70,10 @@ public class MIParts { public static final PartTemplate INGOT = new PartTemplate("Ingot", "ingot"); public static final PartTemplate LARGE_PLATE = new PartTemplate("Large Plate", "large_plate"); public static final CasingPart MACHINE_CASING = new CasingPart("Machine Casing", "machine_casing"); - public static final CasingPart MACHINE_CASING_PIPE = new CasingPart("Pipe Machine Casing", "machine_casing_pipe"); - public static final CasingPart MACHINE_CASING_SPECIAL = new CasingPart("Special Casing", "machine_casing_special"); + public static final CasingPart MACHINE_CASING_PIPE = new CasingPart("Pipe Machine Casing", + "machine_casing_pipe"); + public static final CasingPart MACHINE_CASING_SPECIAL = new CasingPart("Special Casing", + "machine_casing_special"); public static final PartTemplate NUGGET = new PartTemplate("Nugget", "nugget"); public static final OrePart ORE = new OrePart(false); public static final OrePart ORE_DEEPSLATE = new OrePart(true); @@ -77,25 +82,30 @@ public class MIParts { public static final RawMetalPart RAW_METAL_BLOCK = new RawMetalPart(true); public static final PartTemplate RING = new PartTemplate("Ring", "ring"); public static final PartTemplate ROD = new PartTemplate("Rod", "rod"); - public static final PartTemplate ROD_MAGNETIC = new PartTemplate("Magnetic %s Rod", "rod_magnetic").withOverlay(ROD, "magnetic"); + public static final PartTemplate ROD_MAGNETIC = new PartTemplate("Magnetic %s Rod", "rod_magnetic") + .withOverlay(ROD, "magnetic"); public static final PartTemplate ROTOR = new PartTemplate("Rotor", "rotor"); public static final TankPart TANK = new TankPart(); public static final PartTemplate TINY_DUST = new PartTemplate("Tiny Dust", "tiny_dust"); public static final PartTemplate WIRE = new PartTemplate("Wire", "wire"); - public static final PartTemplate WIRE_MAGNETIC = new PartTemplate("Magnetic %s Wire", "wire_magnetic").withOverlay(WIRE, "magnetic"); + public static final PartTemplate WIRE_MAGNETIC = new PartTemplate("Magnetic %s Wire", "wire_magnetic") + .withOverlay(WIRE, "magnetic"); public static final NuclearFuelPart FUEL_ROD = new NuclearFuelPart(SIMPLE); public static final NuclearFuelPart FUEL_ROD_DEPLETED = new NuclearFuelPart(DEPLETED); public static final NuclearFuelPart FUEL_ROD_DOUBLE = new NuclearFuelPart(DOUBLE); public static final NuclearFuelPart FUEL_ROD_QUAD = new NuclearFuelPart(QUAD); - public static final PartTemplate N_DOPED_PLATE = new PartTemplate("N-Doped %s Plate", "n_doped_plate").withOverlay(PLATE, "n_doped"); - public static final PartTemplate P_DOPED_PLATE = new PartTemplate("P-Doped %s Plate", "p_doped_plate").withOverlay(PLATE, "p_doped"); + public static final PartTemplate N_DOPED_PLATE = new PartTemplate("N-Doped %s Plate", "n_doped_plate") + .withOverlay(PLATE, "n_doped"); + public static final PartTemplate P_DOPED_PLATE = new PartTemplate("P-Doped %s Plate", "p_doped_plate") + .withOverlay(PLATE, "p_doped"); public static final PartTemplate[] ITEM_PURE_NON_METAL = new PartTemplate[] { TINY_DUST, DUST, CRUSHED_DUST }; public static final PartTemplate[] ITEM_PURE_METAL = new PartTemplate[] { INGOT, NUGGET, TINY_DUST, DUST }; - public static final List TAGGED_PARTS_LIST = PartKeyProvider.of(BLOCK, DUST, GEAR, INGOT, NUGGET, ORE, PLATE, TINY_DUST, RAW_METAL, + public static final List TAGGED_PARTS_LIST = PartKeyProvider.of(BLOCK, DUST, GEAR, INGOT, NUGGET, ORE, + PLATE, TINY_DUST, RAW_METAL, RAW_METAL_BLOCK); public static final Set TAGGED_PARTS = new HashSet<>(TAGGED_PARTS_LIST); @@ -111,7 +121,8 @@ public class MIParts { public record CategoryTag(String tag, String englishName) { } - public static final List BLOCKS = PartKeyProvider.of(ORE, BARREL, BLOCK, COIL, MACHINE_CASING, MACHINE_CASING_SPECIAL, + public static final List BLOCKS = PartKeyProvider.of(ORE, BARREL, BLOCK, COIL, MACHINE_CASING, + MACHINE_CASING_SPECIAL, MACHINE_CASING_PIPE, RAW_METAL_BLOCK); } diff --git a/src/main/java/aztech/modern_industrialization/materials/part/RotaryBladePart.java b/src/main/java/aztech/modern_industrialization/materials/part/RotaryBladePart.java new file mode 100644 index 000000000..cc1910d15 --- /dev/null +++ b/src/main/java/aztech/modern_industrialization/materials/part/RotaryBladePart.java @@ -0,0 +1,49 @@ +/* + * MIT License + * + * Copyright (c) 2020 Azercoco & Technici4n + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package aztech.modern_industrialization.materials.part; + +import aztech.modern_industrialization.api.item.modular_tools.ComponentTier; +import aztech.modern_industrialization.api.item.modular_tools.HeadRegistry; +import aztech.modern_industrialization.api.item.modular_tools.HeadRegistry.HeadProperties; +import aztech.modern_industrialization.items.modulartools.ModularToolItem.ToolType; + +public class RotaryBladePart implements PartKeyProvider { + @Override + public PartKey key() { + return new PartKey("rotary_blade"); + } + + public PartTemplate simple() { + return new PartTemplate("Rotary Blade", "rotary_blade"); + } + + public PartTemplate withModularComponent(ComponentTier tier, float miningSpeed, double attackDamage) { + return new PartTemplate("Rotary Blade", "rotary_blade").withRegister( + (partContext, part, itemPath, itemId, itemTag, englishName) -> { + var item = PartTemplate.createSimpleItem(englishName, itemPath, partContext, part); + HeadRegistry.register(item, + new HeadProperties(tier, ToolType.CHAINSAW, -1, miningSpeed, attackDamage)); + }); + } +} diff --git a/src/main/java/aztech/modern_industrialization/materials/part/TankPart.java b/src/main/java/aztech/modern_industrialization/materials/part/TankPart.java index 140658cdd..971bd7a9e 100644 --- a/src/main/java/aztech/modern_industrialization/materials/part/TankPart.java +++ b/src/main/java/aztech/modern_industrialization/materials/part/TankPart.java @@ -28,11 +28,14 @@ import aztech.modern_industrialization.MIBlock; import aztech.modern_industrialization.MIIdentifier; import aztech.modern_industrialization.MITags; +import aztech.modern_industrialization.api.item.modular_tools.EnergyStorageRegistry; +import aztech.modern_industrialization.api.item.modular_tools.EnergyStorageRegistry.StorageProperties; import aztech.modern_industrialization.blocks.storage.StorageBehaviour; import aztech.modern_industrialization.blocks.storage.tank.*; import aztech.modern_industrialization.datagen.tag.TagsToGenerate; import aztech.modern_industrialization.definition.BlockDefinition; import aztech.modern_industrialization.items.SortOrder; +import aztech.modern_industrialization.items.modulartools.ModularToolItem.EnergyType; import aztech.modern_industrialization.proxy.CommonProxy; import java.util.Optional; import java.util.function.BiConsumer; @@ -56,8 +59,10 @@ public class TankPart implements PartKeyProvider { public static final BiConsumer MODEL_GENERATOR = (block, gen) -> { var textureSlot = TextureSlot.create("0"); - var mapping = TextureMapping.singleSlot(textureSlot, new MIIdentifier("block/" + BuiltInRegistries.BLOCK.getKey(block).getPath())); - gen.createTrivialBlock(block, mapping, new ModelTemplate(Optional.of(new MIIdentifier("base/tank")), Optional.empty(), textureSlot)); + var mapping = TextureMapping.singleSlot(textureSlot, + new MIIdentifier("block/" + BuiltInRegistries.BLOCK.getKey(block).getPath())); + gen.createTrivialBlock(block, mapping, + new ModelTemplate(Optional.of(new MIIdentifier("base/tank")), Optional.empty(), textureSlot)); }; @Override @@ -73,7 +78,8 @@ public PartTemplate of(long bucketCapacity) { return of(new PartEnglishNameFormatter.Default("Tank"), bucketCapacity, null); } - public PartTemplate of(PartEnglishNameFormatter englishNameFormatter, long bucketCapacity, @Nullable String maybePathOverridden) { + public PartTemplate of(PartEnglishNameFormatter englishNameFormatter, long bucketCapacity, + @Nullable String maybePathOverridden) { MutableObject> bet = new MutableObject<>(); long capacity = FluidConstants.BUCKET * bucketCapacity; @@ -109,8 +115,12 @@ public PartTemplate of(PartEnglishNameFormatter englishNameFormatter, long bucke FluidStorage.SIDED.registerSelf(bet.getValue()); item.registerItemApi(); - CommonProxy.INSTANCE.registerPartTankClient(block, item, partContext.getMaterialName(), itemPath, bet.getValue(), + CommonProxy.INSTANCE.registerPartTankClient(block, item, partContext.getMaterialName(), itemPath, + bet.getValue(), partContext.get(MEAN_RGB)); + + EnergyStorageRegistry.register(item, + new StorageProperties(null, capacity * 1000, EnergyType.FLUID)); }); if (maybePathOverridden != null) { diff --git a/src/main/java/aztech/modern_industrialization/materials/recipe/StandardRecipes.java b/src/main/java/aztech/modern_industrialization/materials/recipe/StandardRecipes.java index e5b38d7af..d6c9586eb 100644 --- a/src/main/java/aztech/modern_industrialization/materials/recipe/StandardRecipes.java +++ b/src/main/java/aztech/modern_industrialization/materials/recipe/StandardRecipes.java @@ -30,6 +30,7 @@ import aztech.modern_industrialization.MIFluids; import aztech.modern_industrialization.MIItem; import aztech.modern_industrialization.machines.init.MIMachineRecipeTypes; +import aztech.modern_industrialization.materials.MIMaterials; import aztech.modern_industrialization.materials.MaterialBuilder; import aztech.modern_industrialization.materials.part.PartKeyProvider; import aztech.modern_industrialization.materials.recipe.builder.MIRecipeBuilder; @@ -48,40 +49,54 @@ public static void apply(MaterialBuilder.RecipeContext ctx) { // CRAFTING add3By3Crafting(ctx, TINY_DUST, DUST, true); add3By3Crafting(ctx, NUGGET, INGOT, true); - add3By3Crafting(ctx, ctx.get(MAIN_PART), BLOCK, false); // Not in packer due to conflicts with double ingots. + add3By3Crafting(ctx, ctx.get(MAIN_PART), BLOCK, false); // Not in packer due to conflicts with double + // ingots. add3By3Crafting(ctx, RAW_METAL, RAW_METAL_BLOCK, true); - new ShapedRecipeBuilder(ctx, BLADE, 4, "blade", "P", "P", "I").addTaggedPart('P', CURVED_PLATE).addTaggedPart('I', ROD) + new ShapedRecipeBuilder(ctx, BLADE, 4, "blade", "P", "P", "I").addTaggedPart('P', CURVED_PLATE) + .addTaggedPart('I', ROD) .exportToMachine(MIMachineRecipeTypes.PACKER); - new ShapedRecipeBuilder(ctx, ORE, 1, "deepslate_to_ore", " ", " x ", " ").addPart('x', ORE_DEEPSLATE); + new ShapedRecipeBuilder(ctx, ORE, 1, "deepslate_to_ore", " ", " x ", " ").addPart('x', + ORE_DEEPSLATE); - new ShapedRecipeBuilder(ctx, COIL, 1, "coil", "xxx", "x x", "xxx").addTaggedPart('x', CABLE).exportToAssembler(); + new ShapedRecipeBuilder(ctx, COIL, 1, "coil", "xxx", "x x", "xxx").addTaggedPart('x', CABLE) + .exportToAssembler(); new ShapedRecipeBuilder(ctx, LARGE_PLATE, 1, "large_plate", "xx", "xx").addTaggedPart('x', PLATE) .exportToMachine(MIMachineRecipeTypes.PACKER); - new ShapedRecipeBuilder(ctx, ROTOR, 1, "rotor", "bBb", "BRB", "bBb").addTaggedPart('b', BOLT).addTaggedPart('B', BLADE).addTaggedPart('R', - RING); + new ShapedRecipeBuilder(ctx, ROTOR, 1, "rotor", "bBb", "BRB", "bBb").addTaggedPart('b', BOLT) + .addTaggedPart('B', BLADE).addTaggedPart('R', + RING); - new ShapedRecipeBuilder(ctx, GEAR, 1, "gear", "PbP", "bRb", "PbP").addTaggedPart('b', BOLT).addTaggedPart('P', PLATE).addTaggedPart('R', - RING); + new ShapedRecipeBuilder(ctx, GEAR, 1, "gear", "PbP", "bRb", "PbP").addTaggedPart('b', BOLT) + .addTaggedPart('P', PLATE).addTaggedPart('R', + RING); - new ShapedRecipeBuilder(ctx, HAMMER, 1, "hammer", "ppp", "psp", " s ").addTaggedPart('p', LARGE_PLATE).addInput('s', Items.STICK); + new ShapedRecipeBuilder(ctx, HAMMER, 1, "hammer", "ppp", "psp", " s ").addTaggedPart('p', LARGE_PLATE) + .addInput('s', Items.STICK); - new ShapedRecipeBuilder(ctx, RING, 2, "ring", "bRb", "R R", "bRb").addTaggedPart('b', BOLT).addTaggedPart('R', ROD); + new ShapedRecipeBuilder(ctx, RING, 2, "ring", "bRb", "R R", "bRb").addTaggedPart('b', BOLT) + .addTaggedPart('R', ROD); new ShapedRecipeBuilder(ctx, CABLE, 3, "cable", "rrr", "www", "rrr").addInput('r', MIItem.RUBBER_SHEET) .addTaggedPart('w', WIRE).exportToMachine(MIMachineRecipeTypes.PACKER); - new ShapedRecipeBuilder(ctx, TANK, 1, "tank", "###", "#G#", "###").addTaggedPart('#', PLATE).addInput('G', ConventionalItemTags.GLASS_BLOCKS) + new ShapedRecipeBuilder(ctx, TANK, 1, "tank", "###", "#G#", "###").addTaggedPart('#', PLATE) + .addInput('G', ConventionalItemTags.GLASS_BLOCKS) .exportToAssembler(); new ShapedRecipeBuilder(ctx, BARREL, 1, "barrel", "###", "#b#", "###") .addTaggedPart('#', PLATE) .addInput('b', "#c:wooden_barrels") .exportToAssembler(); - new ShapedRecipeBuilder(ctx, DRILL_HEAD, 1, "drill_head", "bcp", "GRc", "bGb").addTaggedPart('G', GEAR).addPart('b', BOLT) + new ShapedRecipeBuilder(ctx, DRILL_HEAD, 1, "drill_head", "bcp", "GRc", "bGb").addTaggedPart('G', GEAR) + .addPart('b', BOLT) .addPart('c', CURVED_PLATE).addPart('R', ROD).addTaggedPart('p', PLATE); + new ShapedRecipeBuilder(ctx, ROTARY_BLADE, 1, "rotary_blade", " d ", "d#d", " d ") + .addTaggedPart('#', GEAR).addInput('d', MIMaterials.DIAMOND.getPart(DUST)); + new ShapedRecipeBuilder(ctx, TOOL_CASING, 1, "tool_casing", "bpb", "c c", "bpb") + .addTaggedPart('b', BOLT).addTaggedPart('p', PLATE).addTaggedPart('c', CURVED_PLATE); // MACERATOR addMaceratorRecycling(ctx, DOUBLE_INGOT, 18); @@ -99,22 +114,32 @@ public static void apply(MaterialBuilder.RecipeContext ctx) { } addMaceratorRecycling(ctx, BLADE, 5); addMaceratorRecycling(ctx, DRILL_HEAD, 7 * 9 + 4); + addMaceratorRecycling(ctx, ROTARY_BLADE, 18); + addMaceratorRecycling(ctx, TOOL_CASING, 36); addMaceratorRecycling(ctx, WIRE, 4); - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.MACERATOR, "ore_to_crushed").addTaggedPartInput(ORE, 1).addPartOutput(CRUSHED_DUST, 3); - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.MACERATOR, "ore_to_raw").addTaggedPartInput(ORE, 1).addPartOutput(RAW_METAL, 3); - - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.MACERATOR, "crushed_dust", 2, (int) (100 * ctx.get(HARDNESS).timeFactor)) - .addTaggedPartInput(CRUSHED_DUST, 1) - .addPartOutput(DUST, 1).addPartOutput(DUST, 1, 0.5); - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.MACERATOR, "raw_metal", 2, (int) (100 * ctx.get(HARDNESS).timeFactor)) - .addTaggedPartInput(RAW_METAL, 1) - .addPartOutput(DUST, 1).addPartOutput(DUST, 1, 0.5); + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.MACERATOR, "ore_to_crushed").addTaggedPartInput(ORE, 1) + .addPartOutput(CRUSHED_DUST, 3); + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.MACERATOR, "ore_to_raw").addTaggedPartInput(ORE, 1) + .addPartOutput(RAW_METAL, 3); + + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.MACERATOR, "crushed_dust", 2, + (int) (100 * ctx.get(HARDNESS).timeFactor)) + .addTaggedPartInput(CRUSHED_DUST, 1) + .addPartOutput(DUST, 1).addPartOutput(DUST, 1, 0.5); + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.MACERATOR, "raw_metal", 2, + (int) (100 * ctx.get(HARDNESS).timeFactor)) + .addTaggedPartInput(RAW_METAL, 1) + .addPartOutput(DUST, 1).addPartOutput(DUST, 1, 0.5); // COMPRESSOR - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.COMPRESSOR, "main").addTaggedPartInput(ctx.get(MAIN_PART), 1).addPartOutput(PLATE, 1); - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.COMPRESSOR, "plate").addTaggedPartInput(PLATE, 1).addPartOutput(CURVED_PLATE, 1); - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.COMPRESSOR, "double_ingot").addTaggedPartInput(DOUBLE_INGOT, 1).addPartOutput(PLATE, 2); - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.COMPRESSOR, "ring").addTaggedPartInput(ROD, 1).addPartOutput(RING, 1); + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.COMPRESSOR, "main") + .addTaggedPartInput(ctx.get(MAIN_PART), 1).addPartOutput(PLATE, 1); + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.COMPRESSOR, "plate").addTaggedPartInput(PLATE, 1) + .addPartOutput(CURVED_PLATE, 1); + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.COMPRESSOR, "double_ingot") + .addTaggedPartInput(DOUBLE_INGOT, 1).addPartOutput(PLATE, 2); + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.COMPRESSOR, "ring").addTaggedPartInput(ROD, 1) + .addPartOutput(RING, 1); // CUTTING MACHINE addCuttingMachine(ctx, "main", ctx.get(MAIN_PART), ROD, 2); addCuttingMachine(ctx, "double_ingot", DOUBLE_INGOT, ROD, 4); @@ -123,27 +148,37 @@ public static void apply(MaterialBuilder.RecipeContext ctx) { new MIRecipeBuilder(ctx, MIMachineRecipeTypes.PACKER, "block").addTaggedPartInput(ctx.get(MAIN_PART), 9) .addItemInput(MIItem.PACKER_BLOCK_TEMPLATE, 1, 0.0).addPartOutput(BLOCK, 1); new MIRecipeBuilder(ctx, MIMachineRecipeTypes.PACKER, "double_ingot").addTaggedPartInput(INGOT, 2) - .addItemInput(MIItem.PACKER_DOUBLE_INGOT_TEMPLATE, 1, 0.0).addPartOutput(DOUBLE_INGOT, 1); + .addItemInput(MIItem.PACKER_DOUBLE_INGOT_TEMPLATE, 1, 0.0) + .addPartOutput(DOUBLE_INGOT, 1); - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.PACKER, "fuel_rod_double").addPartInput(FUEL_ROD, 2).addItemInput("#c:nuclear_alloy_plates", 1) + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.PACKER, "fuel_rod_double").addPartInput(FUEL_ROD, 2) + .addItemInput("#c:nuclear_alloy_plates", 1) .addPartOutput(FUEL_ROD_DOUBLE, 1); - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.PACKER, "fuel_rod_quad").addItemInput("#c:nuclear_alloy_plates", 2) + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.PACKER, "fuel_rod_quad") + .addItemInput("#c:nuclear_alloy_plates", 2) .addPartInput(FUEL_ROD_DOUBLE, 2) .addPartOutput(FUEL_ROD_QUAD, 1); // UNPACKER - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.UNPACKER, "coil").addTaggedPartInput(COIL, 1).addPartOutput(CABLE, 8); + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.UNPACKER, "coil").addTaggedPartInput(COIL, 1) + .addPartOutput(CABLE, 8); // WIREMILL - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.WIREMILL, "wire").addTaggedPartInput(PLATE, 1).addPartOutput(WIRE, 2); - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.WIREMILL, "fine_wire").addTaggedPartInput(WIRE, 1).addPartOutput(FINE_WIRE, 4); + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.WIREMILL, "wire").addTaggedPartInput(PLATE, 1) + .addPartOutput(WIRE, 2); + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.WIREMILL, "fine_wire").addTaggedPartInput(WIRE, 1) + .addPartOutput(FINE_WIRE, 4); // EXTRA ASSEMBLER - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.ASSEMBLER, "rotor").addTaggedPartInput(BLADE, 4).addTaggedPartInput(RING, 1) + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.ASSEMBLER, "rotor").addTaggedPartInput(BLADE, 4) + .addTaggedPartInput(RING, 1) .addFluidInput(MIFluids.SOLDERING_ALLOY, 100).addPartOutput(ROTOR, 1); - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.ASSEMBLER, "gear").addTaggedPartInput(PLATE, 4).addTaggedPartInput(RING, 1) + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.ASSEMBLER, "gear").addTaggedPartInput(PLATE, 4) + .addTaggedPartInput(RING, 1) .addFluidInput(MIFluids.SOLDERING_ALLOY, 100).addPartOutput(GEAR, 2); - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.ASSEMBLER, "drill_head").addTaggedPartInput(PLATE, 1).addTaggedPartInput(CURVED_PLATE, 2) - .addTaggedPartInput(ROD, 1).addTaggedPartInput(GEAR, 2).addFluidInput(MIFluids.SOLDERING_ALLOY, 75) + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.ASSEMBLER, "drill_head").addTaggedPartInput(PLATE, 1) + .addTaggedPartInput(CURVED_PLATE, 2) + .addTaggedPartInput(ROD, 1).addTaggedPartInput(GEAR, 2) + .addFluidInput(MIFluids.SOLDERING_ALLOY, 75) .addPartOutput(DRILL_HEAD, 1); new MIRecipeBuilder(ctx, MIMachineRecipeTypes.ASSEMBLER, "cable_synthetic_rubber") @@ -158,28 +193,45 @@ public static void apply(MaterialBuilder.RecipeContext ctx) { new MIRecipeBuilder(ctx, MIMachineRecipeTypes.ASSEMBLER, "fuel_rod", 16, 200) .addItemInput("modern_industrialization:blastproof_alloy_curved_plate", 2) - .addItemInput(MIItem.LARGE_MOTOR, 1).addItemInput(MIItem.ROBOT_ARM, 2).addTaggedPartInput(ROD, 18) + .addItemInput(MIItem.LARGE_MOTOR, 1).addItemInput(MIItem.ROBOT_ARM, 2) + .addTaggedPartInput(ROD, 18) .addFluidInput(MIFluids.SOLDERING_ALLOY, 500).addFluidInput(MIFluids.HELIUM, 100) .addPartOutput(FUEL_ROD, 1); + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.ASSEMBLER, "rotary_blade") + .addTaggedPartInput(GEAR, 1) + .addItemInput(MIMaterials.DIAMOND.getPart(DUST), 4) + .addPartOutput(ROTARY_BLADE, 1); + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.ASSEMBLER, "tool_casing") + .addTaggedPartInput(PLATE, 2) + .addTaggedPartInput(CURVED_PLATE, 2) + .addFluidInput(MIFluids.SOLDERING_ALLOY, 100) + .addPartOutput(TOOL_CASING, 1); + // HEAT EXCHANGER - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.HEAT_EXCHANGER, "hot_ingot", 8, 10).addPartInput(HOT_INGOT, 1) + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.HEAT_EXCHANGER, "hot_ingot", 8, 10) + .addPartInput(HOT_INGOT, 1) .addFluidInput(MIFluids.CRYOFLUID, 100) - .addPartOutput(INGOT, 1).addFluidOutput(MIFluids.ARGON, 65).addFluidOutput(MIFluids.HELIUM, 25); + .addPartOutput(INGOT, 1).addFluidOutput(MIFluids.ARGON, 65) + .addFluidOutput(MIFluids.HELIUM, 25); - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.POLARIZER, "rod_magnetic", 8, 200).addTaggedPartInput(ROD, 1).addPartOutput(ROD_MAGNETIC, 1); - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.POLARIZER, "wire_magnetic", 8, 200).addTaggedPartInput(WIRE, 1).addPartOutput(WIRE_MAGNETIC, 1); + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.POLARIZER, "rod_magnetic", 8, 200) + .addTaggedPartInput(ROD, 1).addPartOutput(ROD_MAGNETIC, 1); + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.POLARIZER, "wire_magnetic", 8, 200) + .addTaggedPartInput(WIRE, 1).addPartOutput(WIRE_MAGNETIC, 1); new SmeltingRecipeBuilder(ctx, ROD_MAGNETIC, ROD, 0.0, false); new SmeltingRecipeBuilder(ctx, WIRE_MAGNETIC, WIRE, 0.0, false); - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.VACUUM_FREEZER, "hot_ingot", 32, 250).addTaggedPartInput(HOT_INGOT, 1).addPartOutput(INGOT, 1); + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.VACUUM_FREEZER, "hot_ingot", 32, 250) + .addTaggedPartInput(HOT_INGOT, 1).addPartOutput(INGOT, 1); } /** * Add a recycling recipe in the macerator. */ - private static void addMaceratorRecycling(MaterialBuilder.RecipeContext ctx, PartKeyProvider partInput, int tinyDustOutput) { + private static void addMaceratorRecycling(MaterialBuilder.RecipeContext ctx, PartKeyProvider partInput, + int tinyDustOutput) { MIRecipeBuilder builder = new MIRecipeBuilder(ctx, MIMachineRecipeTypes.MACERATOR, partInput); builder.addTaggedPartInput(partInput, 1); if (tinyDustOutput % 9 == 0) { @@ -196,26 +248,32 @@ private static void addMaceratorRecycling(MaterialBuilder.RecipeContext ctx, Par /** * Add 3x3 -> 1 and 1 -> 9 crafting recipes. */ - private static void add3By3Crafting(MaterialBuilder.RecipeContext ctx, PartKeyProvider smallPart, PartKeyProvider bigPart, boolean packer) { + private static void add3By3Crafting(MaterialBuilder.RecipeContext ctx, PartKeyProvider smallPart, + PartKeyProvider bigPart, boolean packer) { if (ctx.hasInternalPart(smallPart) || ctx.hasInternalPart(bigPart)) { // Don't add recipe if it's all external (vanilla already has it) - new ShapedRecipeBuilder(ctx, bigPart, 1, bigPart.key() + "_from_" + smallPart.key(), "yxx", "xxx", "xxx") - .addPart('y', smallPart) - .addTaggedPart('x', smallPart); + new ShapedRecipeBuilder(ctx, bigPart, 1, bigPart.key() + "_from_" + smallPart.key(), "yxx", + "xxx", "xxx") + .addPart('y', smallPart) + .addTaggedPart('x', smallPart); new ShapedRecipeBuilder(ctx, smallPart, 9, smallPart.key() + "_from_" + bigPart.key(), "x") .addPart('x', bigPart); } if (packer) { - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.PACKER, bigPart).addTaggedPartInput(smallPart, 9).addPartOutput(bigPart, 1); + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.PACKER, bigPart).addTaggedPartInput(smallPart, 9) + .addPartOutput(bigPart, 1); } - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.UNPACKER, smallPart).addTaggedPartInput(bigPart, 1).addPartOutput(smallPart, 9); + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.UNPACKER, smallPart).addTaggedPartInput(bigPart, 1) + .addPartOutput(smallPart, 9); } - private static void addCuttingMachine(MaterialBuilder.RecipeContext ctx, String name, PartKeyProvider inputPart, PartKeyProvider outputPart, + private static void addCuttingMachine(MaterialBuilder.RecipeContext ctx, String name, PartKeyProvider inputPart, + PartKeyProvider outputPart, int amount) { - new MIRecipeBuilder(ctx, MIMachineRecipeTypes.CUTTING_MACHINE, name).addTaggedPartInput(inputPart, 1).addPartOutput(outputPart, amount) + new MIRecipeBuilder(ctx, MIMachineRecipeTypes.CUTTING_MACHINE, name).addTaggedPartInput(inputPart, 1) + .addPartOutput(outputPart, amount) .addFluidInput("modern_industrialization:lubricant", 1); } diff --git a/src/main/resources/assets/modern_industrialization/lang/ko_kr.json b/src/main/resources/assets/modern_industrialization/lang/ko_kr.json index 891d5a405..cfdc2baaf 100644 --- a/src/main/resources/assets/modern_industrialization/lang/ko_kr.json +++ b/src/main/resources/assets/modern_industrialization/lang/ko_kr.json @@ -33,14 +33,10 @@ "advancements.modern_industrialization.coke_oven.description": "강철 생산을 위해 코크스로를 제작하세요", "advancements.modern_industrialization.crowbar": "나는 빠루고, 얘는 ...", "advancements.modern_industrialization.crowbar.description": "... 내 친구 빠루야. 기계 및 케이싱을 손보기 위해 빠루를 제작하세요", - "advancements.modern_industrialization.diesel_chainsaw": "텍사스 전기톱 연쇄살인사건", - "advancements.modern_industrialization.diesel_chainsaw.description": "디젤 전기톱을 제작하세요", "advancements.modern_industrialization.diesel_generator": "분노의 질주", "advancements.modern_industrialization.diesel_generator.description": "디젤 발전기를 제작하세요", "advancements.modern_industrialization.diesel_jetpack": "어... 그니까 제트팩이에요!", "advancements.modern_industrialization.diesel_jetpack.description": "디젤 제트팩을 제작하세요", - "advancements.modern_industrialization.diesel_mining_drill": "바싱세의 벽을 넘어", - "advancements.modern_industrialization.diesel_mining_drill.description": "디젤 채광용 드릴을 제작하세요", "advancements.modern_industrialization.digital_circuit": "더이상 나트륨은 필요 없어", "advancements.modern_industrialization.digital_circuit.description": "디지털 회로를 제작하세요", "advancements.modern_industrialization.distillation_tower": "완벽™ 증류", @@ -730,9 +726,7 @@ "item.modern_industrialization.diamond_large_plate": "다이아몬드 대형 판", "item.modern_industrialization.diamond_plate": "다이아몬드 판", "item.modern_industrialization.diamond_tiny_dust": "작은 다이아몬드 가루", - "item.modern_industrialization.diesel_chainsaw": "디젤 전기톱", "item.modern_industrialization.diesel_jetpack": "디젤 제트팩", - "item.modern_industrialization.diesel_mining_drill": "디젤 채광 드릴", "item.modern_industrialization.digital_circuit": "디지털 회로", "item.modern_industrialization.digital_circuit_board": "디지털 회로 판", "item.modern_industrialization.diode": "다이오드", diff --git a/src/main/resources/assets/modern_industrialization/lang/pt_br.json b/src/main/resources/assets/modern_industrialization/lang/pt_br.json index 1be1c2303..9a97ab833 100644 --- a/src/main/resources/assets/modern_industrialization/lang/pt_br.json +++ b/src/main/resources/assets/modern_industrialization/lang/pt_br.json @@ -25,14 +25,10 @@ "advancements.modern_industrialization.chemical_reactor.description": "Fabrique um Reator Químico", "advancements.modern_industrialization.coke_oven": "Coque-Cola", "advancements.modern_industrialization.coke_oven.description": "Fabrique um Forno de Coque para começar a produzir Aço", - "advancements.modern_industrialization.diesel_chainsaw": "O Massacre da Serra Elétrica", - "advancements.modern_industrialization.diesel_chainsaw.description": "Fabrique uma Motosserra à Diesel", "advancements.modern_industrialization.diesel_generator": "Velozes e Furiosos", "advancements.modern_industrialization.diesel_generator.description": "Fabrique um Gerador à Diesel", "advancements.modern_industrialization.diesel_jetpack": "Éli... Quer Dizer, Jetpack!", "advancements.modern_industrialization.diesel_jetpack.description": "Fabrique uma Jetpack à Diesel", - "advancements.modern_industrialization.diesel_mining_drill": "Pelas Paredes de Ba Sing Se", - "advancements.modern_industrialization.diesel_mining_drill.description": "Fabrique uma Broca de Mineração à Diesel", "advancements.modern_industrialization.digital_circuit": "Sem Uso para Sódio Agora", "advancements.modern_industrialization.digital_circuit.description": "Fabrique um Circuito Digital", "advancements.modern_industrialization.distillation_tower": "Destilação TOTAL™", @@ -613,9 +609,7 @@ "item.modern_industrialization.diamond_plate": "Chapa de Diamante", "item.modern_industrialization.diamond_tiny_dust": "Pó Pequeno de Diamante", "item.modern_industrialization.diesel_bucket": "Balde de Diesel", - "item.modern_industrialization.diesel_chainsaw": "Motosserra à Diesel", "item.modern_industrialization.diesel_jetpack": "Jetpack à Diesel", - "item.modern_industrialization.diesel_mining_drill": "Broca de Mineração à Diesel", "item.modern_industrialization.diethyl_ether_bucket": "Balde de Éter Etílico", "item.modern_industrialization.digital_circuit": "Circuito Digital", "item.modern_industrialization.digital_circuit_board": "Placa de Circuito Digital", diff --git a/src/main/resources/assets/modern_industrialization/lang/ru_ru.json b/src/main/resources/assets/modern_industrialization/lang/ru_ru.json index dd4a0996a..29102ca4e 100644 --- a/src/main/resources/assets/modern_industrialization/lang/ru_ru.json +++ b/src/main/resources/assets/modern_industrialization/lang/ru_ru.json @@ -25,14 +25,10 @@ "advancements.modern_industrialization.chemical_reactor.description": "Создай химический реактор", "advancements.modern_industrialization.coke_oven": "Кока кола", "advancements.modern_industrialization.coke_oven.description": "Создай коксовую печь, чтобы начать Производство стали", - "advancements.modern_industrialization.diesel_chainsaw": "Техас, резня бензопилой", - "advancements.modern_industrialization.diesel_chainsaw.description": "Создай Дизельную цепную пилу", "advancements.modern_industrialization.diesel_generator": "Как из рога изобилия", "advancements.modern_industrialization.diesel_generator.description": "Создай дизель-генератор", "advancements.modern_industrialization.diesel_jetpack": "Эли... мы подразумевали Реактивный ранец!", "advancements.modern_industrialization.diesel_jetpack.description": "Создай дизельный реактивный ранец", - "advancements.modern_industrialization.diesel_mining_drill": "Несмотря на стены Ба Синг Се", - "advancements.modern_industrialization.diesel_mining_drill.description": "Создай дизельный горный бур", "advancements.modern_industrialization.digital_circuit": "Больше нет необходимости в Натрии", "advancements.modern_industrialization.digital_circuit.description": "Создай цифровую микросхему", "advancements.modern_industrialization.distillation_tower": "ТОТАЛЬ™ дистилляция", @@ -613,9 +609,7 @@ "item.modern_industrialization.diamond_plate": "Алмазная пластина", "item.modern_industrialization.diamond_tiny_dust": "Алмазный мельчайший порошок", "item.modern_industrialization.diesel_bucket": "Ведро дизельного топлива", - "item.modern_industrialization.diesel_chainsaw": "Дизельная цепная пила", "item.modern_industrialization.diesel_jetpack": "Дизельный реактивный ранец", - "item.modern_industrialization.diesel_mining_drill": "Дизельный горный бур", "item.modern_industrialization.diethyl_ether_bucket": "Ведро диэтилового эфира", "item.modern_industrialization.digital_circuit": "Цифровая микросхема", "item.modern_industrialization.digital_circuit_board": "Цифровая электроплата", diff --git a/src/main/resources/assets/modern_industrialization/lang/zh_cn.json b/src/main/resources/assets/modern_industrialization/lang/zh_cn.json index 700103b0d..d88caba77 100644 --- a/src/main/resources/assets/modern_industrialization/lang/zh_cn.json +++ b/src/main/resources/assets/modern_industrialization/lang/zh_cn.json @@ -25,14 +25,6 @@ "advancements.modern_industrialization.chemical_reactor.description": "制作化学反应釜", "advancements.modern_industrialization.coke_oven": "“焦炭”味可口可乐", "advancements.modern_industrialization.coke_oven.description": "制作焦炉以开始炼钢", - "advancements.modern_industrialization.diesel_chainsaw": "德州电锯杀人狂", - "advancements.modern_industrialization.diesel_chainsaw.description": "制作柴油链锯", - "advancements.modern_industrialization.diesel_generator": "速度与激情", - "advancements.modern_industrialization.diesel_generator.description": "制作柴油发动机", - "advancements.modern_industrialization.diesel_jetpack": "最昂贵的喷气背包", - "advancements.modern_industrialization.diesel_jetpack.description": "制作柴油喷气背包", - "advancements.modern_industrialization.diesel_mining_drill": "挖穿永固城", - "advancements.modern_industrialization.diesel_mining_drill.description": "制作柴油采矿钻头", "advancements.modern_industrialization.digital_circuit": "再也无钠", "advancements.modern_industrialization.digital_circuit.description": "制作数字电路", "advancements.modern_industrialization.distillation_tower": "高效™蒸馏", @@ -580,9 +572,7 @@ "item.modern_industrialization.diamond_large_plate": "大型钻石板", "item.modern_industrialization.diamond_plate": "钻石板", "item.modern_industrialization.diamond_tiny_dust": "小堆钻石粉", - "item.modern_industrialization.diesel_chainsaw": "柴油链锯", "item.modern_industrialization.diesel_jetpack": "柴油喷气背包", - "item.modern_industrialization.diesel_mining_drill": "柴油采矿钻头", "item.modern_industrialization.digital_circuit": "数字电路", "item.modern_industrialization.digital_circuit_board": "数字电路板", "item.modern_industrialization.diode": "二极管", diff --git a/src/main/resources/assets/modern_industrialization/lang/zh_tw.json b/src/main/resources/assets/modern_industrialization/lang/zh_tw.json index 9683e7e5b..476a04ad3 100644 --- a/src/main/resources/assets/modern_industrialization/lang/zh_tw.json +++ b/src/main/resources/assets/modern_industrialization/lang/zh_tw.json @@ -15,12 +15,8 @@ "advancements.modern_industrialization.capacitor.description": "製作電容器", "advancements.modern_industrialization.coke_oven": "“焦炭味”可口可樂", "advancements.modern_industrialization.coke_oven.description": "製作焦爐以開始煉鋼", - "advancements.modern_industrialization.diesel_chainsaw": "德州電鋸殺人狂", - "advancements.modern_industrialization.diesel_chainsaw.description": "製作柴油鏈鋸", "advancements.modern_industrialization.diesel_generator": "速度與激情", "advancements.modern_industrialization.diesel_generator.description": "製作柴油發動機", - "advancements.modern_industrialization.diesel_mining_drill": "挖穿永固城", - "advancements.modern_industrialization.diesel_mining_drill.description": "製作柴油採礦鑽頭", "advancements.modern_industrialization.electric_blast_furnace": "電力挚友", "advancements.modern_industrialization.electric_blast_furnace.description": "製作電力高爐以開始生成鋁", "advancements.modern_industrialization.electric_quarry": "財源滾滾", @@ -347,8 +343,6 @@ "item.modern_industrialization.depleted_uranium_fuel_rod": "枯竭鈾燃料棒", "item.modern_industrialization.depleted_uranium_fuel_rod_double": "枯竭鈾雙聯燃料棒", "item.modern_industrialization.depleted_uranium_fuel_rod_quad": "枯竭鈾四聯燃料棒", - "item.modern_industrialization.diesel_chainsaw": "柴油鏈鋸", - "item.modern_industrialization.diesel_mining_drill": "柴油採礦鑽頭", "item.modern_industrialization.digital_circuit": "數字電路", "item.modern_industrialization.digital_circuit_board": "數字電路板", "item.modern_industrialization.diode": "二極體", diff --git a/src/main/resources/assets/modern_industrialization/models/block/tool_station.json b/src/main/resources/assets/modern_industrialization/models/block/tool_station.json new file mode 100644 index 000000000..810e30523 --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/block/tool_station.json @@ -0,0 +1,12 @@ +{ + "parent": "minecraft:block/cube", + "textures": { + "down": "modern_industrialization:block/tool_station_bottom", + "east": "modern_industrialization:block/tool_station_side", + "north": "modern_industrialization:block/tool_station_front", + "particle": "modern_industrialization:block/tool_station_front", + "south": "modern_industrialization:block/tool_station_front", + "up": "minecraft:block/smithing_table_top", + "west": "modern_industrialization:block/tool_station_side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/aluminum_tool_casing.json b/src/main/resources/assets/modern_industrialization/models/item/aluminum_tool_casing.json new file mode 100644 index 000000000..b56ae69e7 --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/aluminum_tool_casing.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "modern_industrialization:item/aluminum_tool_casing" + }, + "overrides": [ + { + "predicate": { + "custom_model_data": 1 + }, + "model": "modern_industrialization:item/aluminum_tool_casing_drill" + }, + { + "predicate": { + "custom_model_data": 2 + }, + "model": "modern_industrialization:item/aluminum_tool_casing_chainsaw" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/aluminum_tool_casing_chainsaw.json b/src/main/resources/assets/modern_industrialization/models/item/aluminum_tool_casing_chainsaw.json new file mode 100644 index 000000000..2882034f6 --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/aluminum_tool_casing_chainsaw.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer1": "modern_industrialization:item/aluminum_tool_casing", + "layer0": "modern_industrialization:item/modular_chainsaw_blade" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/aluminum_tool_casing_drill.json b/src/main/resources/assets/modern_industrialization/models/item/aluminum_tool_casing_drill.json new file mode 100644 index 000000000..45eef9f5e --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/aluminum_tool_casing_drill.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer1": "modern_industrialization:item/aluminum_tool_casing", + "layer0": "modern_industrialization:item/modular_drill_head" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/area_module.json b/src/main/resources/assets/modern_industrialization/models/item/area_module.json new file mode 100644 index 000000000..143ab2f2a --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/area_module.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "modern_industrialization:item/upgrade_module" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/bane_of_arthropods_module.json b/src/main/resources/assets/modern_industrialization/models/item/bane_of_arthropods_module.json new file mode 100644 index 000000000..143ab2f2a --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/bane_of_arthropods_module.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "modern_industrialization:item/upgrade_module" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/efficiency_module.json b/src/main/resources/assets/modern_industrialization/models/item/efficiency_module.json new file mode 100644 index 000000000..143ab2f2a --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/efficiency_module.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "modern_industrialization:item/upgrade_module" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/fire_aspect_module.json b/src/main/resources/assets/modern_industrialization/models/item/fire_aspect_module.json new file mode 100644 index 000000000..143ab2f2a --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/fire_aspect_module.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "modern_industrialization:item/upgrade_module" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/fortune_module.json b/src/main/resources/assets/modern_industrialization/models/item/fortune_module.json new file mode 100644 index 000000000..143ab2f2a --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/fortune_module.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "modern_industrialization:item/upgrade_module" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/knockback_module.json b/src/main/resources/assets/modern_industrialization/models/item/knockback_module.json new file mode 100644 index 000000000..143ab2f2a --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/knockback_module.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "modern_industrialization:item/upgrade_module" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/looting_module.json b/src/main/resources/assets/modern_industrialization/models/item/looting_module.json new file mode 100644 index 000000000..143ab2f2a --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/looting_module.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "modern_industrialization:item/upgrade_module" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/sharpness_module.json b/src/main/resources/assets/modern_industrialization/models/item/sharpness_module.json new file mode 100644 index 000000000..143ab2f2a --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/sharpness_module.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "modern_industrialization:item/upgrade_module" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/silk_touch_module.json b/src/main/resources/assets/modern_industrialization/models/item/silk_touch_module.json new file mode 100644 index 000000000..143ab2f2a --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/silk_touch_module.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "modern_industrialization:item/upgrade_module" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/smite_module.json b/src/main/resources/assets/modern_industrialization/models/item/smite_module.json new file mode 100644 index 000000000..143ab2f2a --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/smite_module.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "modern_industrialization:item/upgrade_module" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/stainless_steel_tool_casing.json b/src/main/resources/assets/modern_industrialization/models/item/stainless_steel_tool_casing.json new file mode 100644 index 000000000..e7e0688a8 --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/stainless_steel_tool_casing.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "modern_industrialization:item/stainless_steel_tool_casing" + }, + "overrides": [ + { + "predicate": { + "custom_model_data": 1 + }, + "model": "modern_industrialization:item/stainless_steel_tool_casing_drill" + }, + { + "predicate": { + "custom_model_data": 2 + }, + "model": "modern_industrialization:item/stainless_steel_tool_casing_chainsaw" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/stainless_steel_tool_casing_chainsaw.json b/src/main/resources/assets/modern_industrialization/models/item/stainless_steel_tool_casing_chainsaw.json new file mode 100644 index 000000000..4ef16439f --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/stainless_steel_tool_casing_chainsaw.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer1": "modern_industrialization:item/stainless_steel_tool_casing", + "layer0": "modern_industrialization:item/modular_chainsaw_blade" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/stainless_steel_tool_casing_drill.json b/src/main/resources/assets/modern_industrialization/models/item/stainless_steel_tool_casing_drill.json new file mode 100644 index 000000000..cb5bd1693 --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/stainless_steel_tool_casing_drill.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer1": "modern_industrialization:item/stainless_steel_tool_casing", + "layer0": "modern_industrialization:item/modular_drill_head" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/steel_tool_casing.json b/src/main/resources/assets/modern_industrialization/models/item/steel_tool_casing.json new file mode 100644 index 000000000..7dbf90095 --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/steel_tool_casing.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "modern_industrialization:item/steel_tool_casing" + }, + "overrides": [ + { + "predicate": { + "custom_model_data": 1 + }, + "model": "modern_industrialization:item/steel_tool_casing_drill" + }, + { + "predicate": { + "custom_model_data": 2 + }, + "model": "modern_industrialization:item/steel_tool_casing_chainsaw" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/steel_tool_casing_chainsaw.json b/src/main/resources/assets/modern_industrialization/models/item/steel_tool_casing_chainsaw.json new file mode 100644 index 000000000..6f7b161f8 --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/steel_tool_casing_chainsaw.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer1": "modern_industrialization:item/steel_tool_casing", + "layer0": "modern_industrialization:item/modular_chainsaw_blade" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/steel_tool_casing_drill.json b/src/main/resources/assets/modern_industrialization/models/item/steel_tool_casing_drill.json new file mode 100644 index 000000000..32a8922c3 --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/steel_tool_casing_drill.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer1": "modern_industrialization:item/steel_tool_casing", + "layer0": "modern_industrialization:item/modular_drill_head" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/titanium_tool_casing.json b/src/main/resources/assets/modern_industrialization/models/item/titanium_tool_casing.json new file mode 100644 index 000000000..50dc89753 --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/titanium_tool_casing.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "modern_industrialization:item/titanium_tool_casing" + }, + "overrides": [ + { + "predicate": { + "custom_model_data": 1 + }, + "model": "modern_industrialization:item/titanium_tool_casing_drill" + }, + { + "predicate": { + "custom_model_data": 2 + }, + "model": "modern_industrialization:item/titanium_tool_casing_chainsaw" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/titanium_tool_casing_chainsaw.json b/src/main/resources/assets/modern_industrialization/models/item/titanium_tool_casing_chainsaw.json new file mode 100644 index 000000000..a168ee304 --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/titanium_tool_casing_chainsaw.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer1": "modern_industrialization:item/titanium_tool_casing", + "layer0": "modern_industrialization:item/modular_chainsaw_blade" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/models/item/titanium_tool_casing_drill.json b/src/main/resources/assets/modern_industrialization/models/item/titanium_tool_casing_drill.json new file mode 100644 index 000000000..3dfef8ed9 --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/models/item/titanium_tool_casing_drill.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer1": "modern_industrialization:item/titanium_tool_casing", + "layer0": "modern_industrialization:item/modular_drill_head" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/patchouli_books/book/en_us/entries/electric_age/jetpack.json b/src/main/resources/assets/modern_industrialization/patchouli_books/book/en_us/entries/electric_age/jetpack.json index a926c7ec7..bf1ea9739 100644 --- a/src/main/resources/assets/modern_industrialization/patchouli_books/book/en_us/entries/electric_age/jetpack.json +++ b/src/main/resources/assets/modern_industrialization/patchouli_books/book/en_us/entries/electric_age/jetpack.json @@ -1,5 +1,5 @@ { - "name": "Diesel Jetpack and Tools", + "name": "Diesel Jetpack", "category": "modern_industrialization:electric_age", "icon": "modern_industrialization:diesel_jetpack", "pages": [ @@ -12,16 +12,6 @@ "type": "crafting", "recipe": "modern_industrialization:armor/rubber_helmet", "recipe2": "modern_industrialization:armor/rubber_boots" - }, - { - "type": "crafting", - "recipe": "modern_industrialization:tools/diesel_mining_drill", - "text": "This Mining Drill can finally replace your Pickaxes and Shovels. Fill it with powerful fuel for the best speed!$(br2)Toggle between Silk Touch and Fortune III with shift right-click." - }, - { - "type": "crafting", - "recipe": "modern_industrialization:tools/diesel_chainsaw", - "text": "Cutting down trees in style!" } ], "sortnum": 110 diff --git a/src/main/resources/assets/modern_industrialization/patchouli_books/book/en_us/entries/electric_age/modular_tools.json b/src/main/resources/assets/modern_industrialization/patchouli_books/book/en_us/entries/electric_age/modular_tools.json new file mode 100644 index 000000000..547ed00bb --- /dev/null +++ b/src/main/resources/assets/modern_industrialization/patchouli_books/book/en_us/entries/electric_age/modular_tools.json @@ -0,0 +1,108 @@ +{ + "name": "Modular Tools", + "category": "modern_industrialization:electric_age", + "icon": "modern_industrialization:steel_tool_casing", + + "pages": [ + { + "type": "text", + "text": "Electricity isn't just useful in machines - you can power customizable tools with it too!" + }, + { + "type": "crafting", + "recipe": "modern_industrialization:tools/tool_station", + "text": "Unfortunately, you can't customize those tools in the field - you'll need a tool station to install, remove, or modify components of your tools. Be careful - the tool station will drain any energy or fuel stored in a tool when you make modifications." + }, + { + "type": "crafting", + "recipe": "modern_industrialization:materials/steel/craft/tool_casing", + "text": "The tool casing is the foundation of any modular tool. It comes in steel (shown above), aluminum, stainless steel, and titanium versions.$(br2)You can also make these in assemblers to save on the bolts." + }, + { + "type": "text", + "text": "Your tool casing determines the maximum tier of component you can install, and the number of upgrade modules. Steel casings support tier 1 components and up to two modules, aluminium casings support up to tier 2 and up to 3 modules, stainless steel casings support up to tier 3 and up to 4 modules, and titanium casings support up to tier 4 and up to 5 modules." + }, + { + "type": "spotlight", + "item": { + "item": "modern_industrialization:motor" + }, + "title": "Motors", + "text": "All tools require an motor to convert their stored energy into useful work. This is either a motor (of any kind) for an electric tool or a pump (of any kind) for a liquid-fuelled tool." + }, + { + "type": "text", + "text": "These have a maximum EU per operations they support - 1024 for basic components, 2048 for large components, 4096 for advanced components, and 8192 for large advanced components." + }, + { + "type": "spotlight", + "item": { + "item": "modern_industrialization:redstone_battery" + }, + "title": "Energy Storage", + "text": "Your tool also requires some energy storage - either a single battery (except for plutonium batteries) for electric tools or any tank for liquid-fuelled tools.$(br2)As an exception to the usual tier system, you can install any tank in any casing." + }, + { + "type": "spotlight", + "item": { + "item": "modern_industrialization:steel_drill_head" + }, + "title": "Tool Head", + "text": "Finally, your tool's head determines the kind of tool it is - a drill head for a drill and a rotary blade for a chainsaw." + }, + { + "type": "spotlight", + "item": { + "item": "modern_industrialization:area_module" + }, + "title": "Modules", + "text": "You can optionally install upgrade modules to change your tool's properties, for example, adding a fortune or a silk touch module, or even an area module. These increase energy consumption from the baseline of 32 EU/operation." + }, + { + "type": "crafting", + "recipe": "modern_industrialization:tools/area_module", + "text": "Area modules increase the mining radius by one; you can install up to two of them, but they increase energy consumption by 9x" + }, + { + "type": "crafting", + "recipe": "modern_industrialization:tools/fire_aspect_module", + "text": "Adds a level of Fire Aspect, stacks up to 2, and increases energy consumption by 1.5x" + }, + { + "type": "crafting", + "recipe": "modern_industrialization:tools/looting_module", + "text": "Adds a level of Looting, stacks up to 3, and increases energy consumption by 2x" + }, + { + "type": "crafting", + "recipe": "modern_industrialization:tools/knockback_module", + "text": "Adds a level of Knockback, stacks up to 2, and increases energy consumption by 1.25x" + }, + { + "type": "crafting", + "recipe": "modern_industrialization:tools/sharpness_module", + "recipe2": "modern_industrialization:tools/smite_module" + }, + { + "type": "crafting", + "recipe": "modern_industrialization:tools/bane_of_arthropods_module", + "text": "Adds a level of Sharpness, Smite, or Bane of Arthropods, stacks up to 5, and increases energy consumption by 1.25x" + }, + { + "type": "crafting", + "recipe": "modern_industrialization:tools/efficiency_module", + "text": "Adds a level of Efficiency, stacks up to 5, and increases energy consumption by 1.25x" + }, + { + "type": "crafting", + "recipe": "modern_industrialization:tools/fortune_module", + "text": "Adds a level of Fortune, stacks up to 3, and increases energy consumption by 2x" + }, + { + "type": "crafting", + "recipe": "modern_industrialization:tools/silk_touch_module", + "text": "Adds Silk Touch (doesn't stack) and increases energy consumption by 2x" + } + ], + "sortnum": 111 +} \ No newline at end of file diff --git a/src/main/resources/assets/modern_industrialization/patchouli_books/book/ko_kr/entries/electric_age/jetpack.json b/src/main/resources/assets/modern_industrialization/patchouli_books/book/ko_kr/entries/electric_age/jetpack.json index 92cb7f853..0de79bc5b 100644 --- a/src/main/resources/assets/modern_industrialization/patchouli_books/book/ko_kr/entries/electric_age/jetpack.json +++ b/src/main/resources/assets/modern_industrialization/patchouli_books/book/ko_kr/entries/electric_age/jetpack.json @@ -12,16 +12,6 @@ "type": "crafting", "recipe": "modern_industrialization:armor/rubber_helmet", "recipe2": "modern_industrialization:armor/rubber_boots" - }, - { - "type": "crafting", - "recipe": "modern_industrialization:tools/diesel_mining_drill", - "text": "디젤 채광 드릴이 있으면, 더 이상 삽과 곡괭이는 필요없습니다. 강력한 연료로 구동시켜서 속도를 최대한 높이세요!$(br2)웅크리고 우클릭해서 섬세한 손길 혹은 행운 3으로 사용할 수 있습니다." - }, - { - "type": "crafting", - "recipe": "modern_industrialization:tools/diesel_chainsaw", - "text": "나무를 빠르게 벨 수 있습니다." } ], "sortnum": 109 diff --git a/src/main/resources/assets/modern_industrialization/patchouli_books/book/ru_ru/entries/electric_age/jetpack.json b/src/main/resources/assets/modern_industrialization/patchouli_books/book/ru_ru/entries/electric_age/jetpack.json index 9d8c17549..db167cb16 100644 --- a/src/main/resources/assets/modern_industrialization/patchouli_books/book/ru_ru/entries/electric_age/jetpack.json +++ b/src/main/resources/assets/modern_industrialization/patchouli_books/book/ru_ru/entries/electric_age/jetpack.json @@ -12,16 +12,6 @@ "type": "crafting", "recipe": "modern_industrialization:armor/rubber_helmet", "recipe2": "modern_industrialization:armor/rubber_boots" - }, - { - "type": "crafting", - "recipe": "modern_industrialization:tools/diesel_mining_drill", - "text": "Этот шахтёрский бур, наконец, сможет заменить ваши кирки и лопаты. Заполните его мощным топливом для максимальной скорости!$(br2)Переключайтесь между режимами Шёлкового касания и Удачи III, используя Shift+ПКМ." - }, - { - "type": "crafting", - "recipe": "modern_industrialization:tools/diesel_chainsaw", - "text": "Вырубайте деревья стильно!" } ], "sortnum": 109 diff --git a/src/main/resources/assets/modern_industrialization/patchouli_books/book/zh_cn/entries/electric_age/jetpack.json b/src/main/resources/assets/modern_industrialization/patchouli_books/book/zh_cn/entries/electric_age/jetpack.json index 48272456a..b7b195a61 100644 --- a/src/main/resources/assets/modern_industrialization/patchouli_books/book/zh_cn/entries/electric_age/jetpack.json +++ b/src/main/resources/assets/modern_industrialization/patchouli_books/book/zh_cn/entries/electric_age/jetpack.json @@ -12,16 +12,6 @@ "type": "crafting", "recipe": "modern_industrialization:armor/rubber_helmet", "recipe2": "modern_industrialization:armor/rubber_boots" - }, - { - "type": "crafting", - "recipe": "modern_industrialization:tools/diesel_mining_drill", - "text": "这个采矿钻头终于可以取代你的镐和锹了。用强大的燃料填充它以获得最佳速度!$(br2)使用Shift+右键点击在精准采集和时运III模式之间切换。" - }, - { - "type": "crafting", - "recipe": "modern_industrialization:tools/diesel_chainsaw", - "text": "砍树也得有范儿!" } ], "sortnum": 109 diff --git a/src/main/resources/assets/modern_industrialization/textures/block/tool_station_bottom.png b/src/main/resources/assets/modern_industrialization/textures/block/tool_station_bottom.png new file mode 100644 index 000000000..2701c2fb0 Binary files /dev/null and b/src/main/resources/assets/modern_industrialization/textures/block/tool_station_bottom.png differ diff --git a/src/main/resources/assets/modern_industrialization/textures/block/tool_station_front.png b/src/main/resources/assets/modern_industrialization/textures/block/tool_station_front.png new file mode 100644 index 000000000..e1d7d5a93 Binary files /dev/null and b/src/main/resources/assets/modern_industrialization/textures/block/tool_station_front.png differ diff --git a/src/main/resources/assets/modern_industrialization/textures/block/tool_station_side.png b/src/main/resources/assets/modern_industrialization/textures/block/tool_station_side.png new file mode 100644 index 000000000..ef777edd3 Binary files /dev/null and b/src/main/resources/assets/modern_industrialization/textures/block/tool_station_side.png differ diff --git a/src/main/resources/assets/modern_industrialization/textures/gui/container/tool_station.png b/src/main/resources/assets/modern_industrialization/textures/gui/container/tool_station.png new file mode 100644 index 000000000..d1ade9e50 Binary files /dev/null and b/src/main/resources/assets/modern_industrialization/textures/gui/container/tool_station.png differ diff --git a/src/main/resources/assets/modern_industrialization/textures/item/aluminum_tool_casing.png b/src/main/resources/assets/modern_industrialization/textures/item/aluminum_tool_casing.png new file mode 100644 index 000000000..3930f12dd Binary files /dev/null and b/src/main/resources/assets/modern_industrialization/textures/item/aluminum_tool_casing.png differ diff --git a/src/main/resources/assets/modern_industrialization/textures/item/diesel_chainsaw.png b/src/main/resources/assets/modern_industrialization/textures/item/diesel_chainsaw.png deleted file mode 100644 index 2a59df0b0..000000000 Binary files a/src/main/resources/assets/modern_industrialization/textures/item/diesel_chainsaw.png and /dev/null differ diff --git a/src/main/resources/assets/modern_industrialization/textures/item/diesel_mining_drill.png b/src/main/resources/assets/modern_industrialization/textures/item/diesel_mining_drill.png deleted file mode 100644 index 15a8130c1..000000000 Binary files a/src/main/resources/assets/modern_industrialization/textures/item/diesel_mining_drill.png and /dev/null differ diff --git a/src/main/resources/assets/modern_industrialization/textures/item/invar_rotary_blade.png b/src/main/resources/assets/modern_industrialization/textures/item/invar_rotary_blade.png deleted file mode 100644 index ce6ac1a2d..000000000 Binary files a/src/main/resources/assets/modern_industrialization/textures/item/invar_rotary_blade.png and /dev/null differ diff --git a/src/main/resources/assets/modern_industrialization/textures/item/modular_chainsaw_blade.png b/src/main/resources/assets/modern_industrialization/textures/item/modular_chainsaw_blade.png new file mode 100644 index 000000000..05bb7f2a9 Binary files /dev/null and b/src/main/resources/assets/modern_industrialization/textures/item/modular_chainsaw_blade.png differ diff --git a/src/main/resources/assets/modern_industrialization/textures/item/modular_drill_head.png b/src/main/resources/assets/modern_industrialization/textures/item/modular_drill_head.png new file mode 100644 index 000000000..873364e4b Binary files /dev/null and b/src/main/resources/assets/modern_industrialization/textures/item/modular_drill_head.png differ diff --git a/src/main/resources/assets/modern_industrialization/textures/item/stainless_steel_tool_casing.png b/src/main/resources/assets/modern_industrialization/textures/item/stainless_steel_tool_casing.png new file mode 100644 index 000000000..61aee8cf6 Binary files /dev/null and b/src/main/resources/assets/modern_industrialization/textures/item/stainless_steel_tool_casing.png differ diff --git a/src/main/resources/assets/modern_industrialization/textures/item/steam_mining_drill_handler.png b/src/main/resources/assets/modern_industrialization/textures/item/steam_mining_drill_handler.png deleted file mode 100644 index 2322324c1..000000000 Binary files a/src/main/resources/assets/modern_industrialization/textures/item/steam_mining_drill_handler.png and /dev/null differ diff --git a/src/main/resources/assets/modern_industrialization/textures/item/steel_tool_casing.png b/src/main/resources/assets/modern_industrialization/textures/item/steel_tool_casing.png new file mode 100644 index 000000000..3c3c6384c Binary files /dev/null and b/src/main/resources/assets/modern_industrialization/textures/item/steel_tool_casing.png differ diff --git a/src/main/resources/assets/modern_industrialization/textures/item/titanium_tool_casing.png b/src/main/resources/assets/modern_industrialization/textures/item/titanium_tool_casing.png new file mode 100644 index 000000000..28429e818 Binary files /dev/null and b/src/main/resources/assets/modern_industrialization/textures/item/titanium_tool_casing.png differ diff --git a/src/main/resources/assets/modern_industrialization/textures/item/upgrade_module.png b/src/main/resources/assets/modern_industrialization/textures/item/upgrade_module.png new file mode 100644 index 000000000..4a6d3bcb4 Binary files /dev/null and b/src/main/resources/assets/modern_industrialization/textures/item/upgrade_module.png differ diff --git a/src/main/resources/assets/modern_industrialization/textures/materialsets/common/rotary_blade.png b/src/main/resources/assets/modern_industrialization/textures/materialsets/common/rotary_blade.png new file mode 100644 index 000000000..a79061c9e Binary files /dev/null and b/src/main/resources/assets/modern_industrialization/textures/materialsets/common/rotary_blade.png differ diff --git a/src/main/resources/assets/modern_industrialization/textures/materialsets/common/rotary_blade_overlay.png b/src/main/resources/assets/modern_industrialization/textures/materialsets/common/rotary_blade_overlay.png new file mode 100644 index 000000000..4f13b8798 Binary files /dev/null and b/src/main/resources/assets/modern_industrialization/textures/materialsets/common/rotary_blade_overlay.png differ diff --git a/src/main/resources/assets/modern_industrialization/textures/materialsets/common/tool_casing.png b/src/main/resources/assets/modern_industrialization/textures/materialsets/common/tool_casing.png new file mode 100644 index 000000000..6ac5183c4 Binary files /dev/null and b/src/main/resources/assets/modern_industrialization/textures/materialsets/common/tool_casing.png differ diff --git a/src/main/resources/data/minecraft/tags/items/coals.json b/src/main/resources/data/c/items/coals.json similarity index 93% rename from src/main/resources/data/minecraft/tags/items/coals.json rename to src/main/resources/data/c/items/coals.json index 5d4151ace..fee53c7b4 100644 --- a/src/main/resources/data/minecraft/tags/items/coals.json +++ b/src/main/resources/data/c/items/coals.json @@ -1,6 +1,6 @@ -{ - "replace": false, - "values": [ - "modern_industrialization:lignite_coal" - ] -} +{ + "replace": false, + "values": [ + "modern_industrialization:lignite_coal" + ] +} diff --git a/src/main/resources/data/c/tags/items/axes.json b/src/main/resources/data/c/tags/items/axes.json index 15aa8189f..a22514f66 100644 --- a/src/main/resources/data/c/tags/items/axes.json +++ b/src/main/resources/data/c/tags/items/axes.json @@ -1,6 +1,5 @@ { "replace": false, "values": [ - "modern_industrialization:diesel_chainsaw" ] } \ No newline at end of file diff --git a/src/main/resources/data/c/tags/items/hoes.json b/src/main/resources/data/c/tags/items/hoes.json index 15aa8189f..a22514f66 100644 --- a/src/main/resources/data/c/tags/items/hoes.json +++ b/src/main/resources/data/c/tags/items/hoes.json @@ -1,6 +1,5 @@ { "replace": false, "values": [ - "modern_industrialization:diesel_chainsaw" ] } \ No newline at end of file diff --git a/src/main/resources/data/c/tags/items/pickaxes.json b/src/main/resources/data/c/tags/items/pickaxes.json index 348d3180b..fdd35f474 100644 --- a/src/main/resources/data/c/tags/items/pickaxes.json +++ b/src/main/resources/data/c/tags/items/pickaxes.json @@ -1,7 +1,6 @@ { "replace": false, "values": [ - "modern_industrialization:diesel_mining_drill", "modern_industrialization:steam_mining_drill" ] } \ No newline at end of file diff --git a/src/main/resources/data/c/tags/items/shears.json b/src/main/resources/data/c/tags/items/shears.json index 15aa8189f..a22514f66 100644 --- a/src/main/resources/data/c/tags/items/shears.json +++ b/src/main/resources/data/c/tags/items/shears.json @@ -1,6 +1,5 @@ { "replace": false, "values": [ - "modern_industrialization:diesel_chainsaw" ] } \ No newline at end of file diff --git a/src/main/resources/data/c/tags/items/shovels.json b/src/main/resources/data/c/tags/items/shovels.json index 348d3180b..fdd35f474 100644 --- a/src/main/resources/data/c/tags/items/shovels.json +++ b/src/main/resources/data/c/tags/items/shovels.json @@ -1,7 +1,6 @@ { "replace": false, "values": [ - "modern_industrialization:diesel_mining_drill", "modern_industrialization:steam_mining_drill" ] } \ No newline at end of file diff --git a/src/main/resources/data/c/tags/items/swords.json b/src/main/resources/data/c/tags/items/swords.json index 15aa8189f..a22514f66 100644 --- a/src/main/resources/data/c/tags/items/swords.json +++ b/src/main/resources/data/c/tags/items/swords.json @@ -1,6 +1,5 @@ { "replace": false, "values": [ - "modern_industrialization:diesel_chainsaw" ] } \ No newline at end of file diff --git a/src/main/resources/data/modern_industrialization/recipes/electric_age/component/craft/invar_rotary_blade_asbl.json b/src/main/resources/data/modern_industrialization/recipes/electric_age/component/craft/invar_rotary_blade_asbl.json deleted file mode 100644 index 196d5a04f..000000000 --- a/src/main/resources/data/modern_industrialization/recipes/electric_age/component/craft/invar_rotary_blade_asbl.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type" : "minecraft:crafting_shaped", - "pattern" : [ - " d ", - "dGd", - " d " - ], - "key": { - "d" : { - "tag" : "c:diamond_dusts" - }, - "G": { - "tag" : "c:invar_gears" - } - }, - "result": { - "item": "modern_industrialization:invar_rotary_blade" - } -} \ No newline at end of file diff --git a/src/main/resources/data/modern_industrialization/recipes/tools/area_module.json b/src/main/resources/data/modern_industrialization/recipes/tools/area_module.json new file mode 100644 index 000000000..72dc01ed8 --- /dev/null +++ b/src/main/resources/data/modern_industrialization/recipes/tools/area_module.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + " b#", + " " + ], + "key": { + "b": { + "item": "modern_industrialization:analog_circuit_board" + }, + "#": { + "item": "modern_industrialization:copper_fine_wire" + } + }, + "result": { + "item": "modern_industrialization:area_module" + } +} diff --git a/src/main/resources/data/modern_industrialization/recipes/tools/bane_of_arthropods_module.json b/src/main/resources/data/modern_industrialization/recipes/tools/bane_of_arthropods_module.json new file mode 100644 index 000000000..c5cb78460 --- /dev/null +++ b/src/main/resources/data/modern_industrialization/recipes/tools/bane_of_arthropods_module.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "## ", + " b#", + "# " + ], + "key": { + "b": { + "item": "modern_industrialization:analog_circuit_board" + }, + "#": { + "item": "modern_industrialization:copper_fine_wire" + } + }, + "result": { + "item": "modern_industrialization:bane_of_arthropods_module" + } +} diff --git a/src/main/resources/data/modern_industrialization/recipes/tools/diesel_chainsaw.json b/src/main/resources/data/modern_industrialization/recipes/tools/diesel_chainsaw.json deleted file mode 100644 index 2d86c5a89..000000000 --- a/src/main/resources/data/modern_industrialization/recipes/tools/diesel_chainsaw.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type" : "minecraft:crafting_shaped", - "pattern" : [ - " Rr", - "MrR", - "tM " - ], - "key" : { - "M": { - "item" : "modern_industrialization:large_motor" - }, - "r" : { - "item" : "modern_industrialization:invar_rotary_blade" - }, - "t" : { - "item" : "modern_industrialization:aluminum_tank" - }, - "R" : { - "item" : "modern_industrialization:rubber_sheet" - } - }, - "result": { - "item" : "modern_industrialization:diesel_chainsaw" - } -} \ No newline at end of file diff --git a/src/main/resources/data/modern_industrialization/recipes/tools/diesel_mining_drill.json b/src/main/resources/data/modern_industrialization/recipes/tools/diesel_mining_drill.json deleted file mode 100644 index ab178f37b..000000000 --- a/src/main/resources/data/modern_industrialization/recipes/tools/diesel_mining_drill.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type" : "minecraft:crafting_shaped", - "pattern" : [ - "crH", - "MPr", - "tMc" - ], - "key" : { - "P" : { - "item" : "modern_industrialization:large_pump" - }, - "M": { - "item" : "modern_industrialization:large_motor" - }, - "r" : { - "item" : "modern_industrialization:invar_rotary_blade" - }, - "t" : { - "item" : "modern_industrialization:aluminum_tank" - }, - "c": { - "item" : "modern_industrialization:electronic_circuit" - }, - "H" : { - "item" : "modern_industrialization:aluminum_drill_head" - } - }, - "result": { - "item" : "modern_industrialization:diesel_mining_drill" - } -} \ No newline at end of file diff --git a/src/main/resources/data/modern_industrialization/recipes/tools/efficiency_module.json b/src/main/resources/data/modern_industrialization/recipes/tools/efficiency_module.json new file mode 100644 index 000000000..7aa3ff949 --- /dev/null +++ b/src/main/resources/data/modern_industrialization/recipes/tools/efficiency_module.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "## ", + "#b#", + " " + ], + "key": { + "b": { + "item": "modern_industrialization:analog_circuit_board" + }, + "#": { + "item": "modern_industrialization:copper_fine_wire" + } + }, + "result": { + "item": "modern_industrialization:efficiency_module" + } +} diff --git a/src/main/resources/data/modern_industrialization/recipes/tools/fire_aspect_module.json b/src/main/resources/data/modern_industrialization/recipes/tools/fire_aspect_module.json new file mode 100644 index 000000000..33ac43123 --- /dev/null +++ b/src/main/resources/data/modern_industrialization/recipes/tools/fire_aspect_module.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + " b ", + " #" + ], + "key": { + "b": { + "item": "modern_industrialization:analog_circuit_board" + }, + "#": { + "item": "modern_industrialization:copper_fine_wire" + } + }, + "result": { + "item": "modern_industrialization:fire_aspect_module" + } +} diff --git a/src/main/resources/data/modern_industrialization/recipes/tools/fortune_module.json b/src/main/resources/data/modern_industrialization/recipes/tools/fortune_module.json new file mode 100644 index 000000000..bbe83eb60 --- /dev/null +++ b/src/main/resources/data/modern_industrialization/recipes/tools/fortune_module.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "## ", + " b ", + " ##" + ], + "key": { + "b": { + "item": "modern_industrialization:analog_circuit_board" + }, + "#": { + "item": "modern_industrialization:copper_fine_wire" + } + }, + "result": { + "item": "modern_industrialization:fortune_module" + } +} diff --git a/src/main/resources/data/modern_industrialization/recipes/tools/knockback_module.json b/src/main/resources/data/modern_industrialization/recipes/tools/knockback_module.json new file mode 100644 index 000000000..7da04db59 --- /dev/null +++ b/src/main/resources/data/modern_industrialization/recipes/tools/knockback_module.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + " b ", + "# " + ], + "key": { + "b": { + "item": "modern_industrialization:analog_circuit_board" + }, + "#": { + "item": "modern_industrialization:copper_fine_wire" + } + }, + "result": { + "item": "modern_industrialization:knockback_module" + } +} diff --git a/src/main/resources/data/modern_industrialization/recipes/tools/looting_module.json b/src/main/resources/data/modern_industrialization/recipes/tools/looting_module.json new file mode 100644 index 000000000..4143ee260 --- /dev/null +++ b/src/main/resources/data/modern_industrialization/recipes/tools/looting_module.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + " b ", + " # " + ], + "key": { + "b": { + "item": "modern_industrialization:analog_circuit_board" + }, + "#": { + "item": "modern_industrialization:copper_fine_wire" + } + }, + "result": { + "item": "modern_industrialization:looting_module" + } +} diff --git a/src/main/resources/data/modern_industrialization/recipes/tools/sharpness_module.json b/src/main/resources/data/modern_industrialization/recipes/tools/sharpness_module.json new file mode 100644 index 000000000..d028c469d --- /dev/null +++ b/src/main/resources/data/modern_industrialization/recipes/tools/sharpness_module.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "## ", + " b#", + " #" + ], + "key": { + "b": { + "item": "modern_industrialization:analog_circuit_board" + }, + "#": { + "item": "modern_industrialization:copper_fine_wire" + } + }, + "result": { + "item": "modern_industrialization:sharpness_module" + } +} diff --git a/src/main/resources/data/modern_industrialization/recipes/tools/silk_touch_module.json b/src/main/resources/data/modern_industrialization/recipes/tools/silk_touch_module.json new file mode 100644 index 000000000..507c290f3 --- /dev/null +++ b/src/main/resources/data/modern_industrialization/recipes/tools/silk_touch_module.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "## ", + " b ", + "# #" + ], + "key": { + "b": { + "item": "modern_industrialization:analog_circuit_board" + }, + "#": { + "item": "modern_industrialization:copper_fine_wire" + } + }, + "result": { + "item": "modern_industrialization:silk_touch_module" + } +} diff --git a/src/main/resources/data/modern_industrialization/recipes/tools/smite_module.json b/src/main/resources/data/modern_industrialization/recipes/tools/smite_module.json new file mode 100644 index 000000000..72fbb86f1 --- /dev/null +++ b/src/main/resources/data/modern_industrialization/recipes/tools/smite_module.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "## ", + " b#", + " # " + ], + "key": { + "b": { + "item": "modern_industrialization:analog_circuit_board" + }, + "#": { + "item": "modern_industrialization:copper_fine_wire" + } + }, + "result": { + "item": "modern_industrialization:smite_module" + } +} diff --git a/src/main/resources/data/modern_industrialization/recipes/tools/tool_station.json b/src/main/resources/data/modern_industrialization/recipes/tools/tool_station.json new file mode 100644 index 000000000..e1870f259 --- /dev/null +++ b/src/main/resources/data/modern_industrialization/recipes/tools/tool_station.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "ss", + "pp", + "pp" + ], + "key": { + "s": { + "item": "modern_industrialization:steel_ingot" + }, + "p": { + "tag": "minecraft:planks" + } + }, + "result": { + "item": "modern_industrialization:tool_station" + } +} +