more stuff
@@ -1,4 +1,4 @@
|
||||
// 1.20.1 2025-02-20T20:30:41.8392612 Registrate Provider for tfmg [Recipes, Advancements, Loot Tables, Tags (blocks), Tags (items), Tags (fluids), Tags (entity_types), Blockstates, Item models, Lang (en_us/en_ud)]
|
||||
// 1.20.1 2025-02-28T19:36:17.6982441 Registrate Provider for tfmg [Recipes, Advancements, Loot Tables, Tags (blocks), Tags (items), Tags (fluids), Tags (entity_types), Blockstates, Item models, Lang (en_us/en_ud)]
|
||||
ff5a5721633b83465ab501cbdfdc579a0f20e938 assets/tfmg/blockstates/accumulator.json
|
||||
e982a263b6af75821042107fdeff7bd809436d08 assets/tfmg/blockstates/air_intake.json
|
||||
e7f63aadfc892e337d9f87b5e50af8b1c7e4103f assets/tfmg/blockstates/aluminum_bars.json
|
||||
@@ -142,6 +142,8 @@ edaa0018b0c7dffe0b552e5f7dd539c5484600fb assets/tfmg/blockstates/electric_post.j
|
||||
5258f718a70e0e9b9f1433aa67fd7faa0a8f28c5 assets/tfmg/blockstates/electrode_holder.json
|
||||
e452793b4673eaf1821619357692b41c297988f7 assets/tfmg/blockstates/encased_diode.json
|
||||
5cd35edc93b0e5bc3fe86e4fd160ba2a660404ff assets/tfmg/blockstates/encased_potentiometer.json
|
||||
66f1fa15f217954d9a24dec65a327a6e034b2d3f assets/tfmg/blockstates/engine_controller.json
|
||||
d95a6906271097b15b19b7421d871600386137bd assets/tfmg/blockstates/engine_gearbox.json
|
||||
08007e8e0e57b4ad322e9125fd05b010aa9a5a0b assets/tfmg/blockstates/exhaust.json
|
||||
41ad3bce75918278f4f48ca3ecf23b1980f9963d assets/tfmg/blockstates/factory_floor.json
|
||||
10f47e08c249406dd1f2122d1e209998c45d848d assets/tfmg/blockstates/factory_floor_slab.json
|
||||
@@ -418,8 +420,8 @@ a1988ec6a98f23cad8321b46345fbf1c5fd20489 assets/tfmg/blockstates/yellow_rebar_co
|
||||
c58fa20c091e5ecddfb7164cba45538a8f911431 assets/tfmg/blockstates/yellow_rebar_concrete_wall.json
|
||||
0271e2b940bb94cdb7e951b81e277ee633d64d62 assets/tfmg/blockstates/zinc_frame.json
|
||||
1bd66f29acffb67f30bfe94c8535509bd009beab assets/tfmg/blockstates/zinc_truss.json
|
||||
bed3816da4b736c65b2b721c2abf68a6baad8dec assets/tfmg/lang/en_ud.json
|
||||
23d8d0235ab141ddade59ee9bacb4a962d0d2269 assets/tfmg/lang/en_us.json
|
||||
ff30d3fdfb832013df283ea913edc01670913683 assets/tfmg/lang/en_ud.json
|
||||
52885f6f2f3f59e4a0ab8de856589d6a28a62414 assets/tfmg/lang/en_us.json
|
||||
9e6a6b62f5e7528c4e4d4f72f3510edcd8f0c078 assets/tfmg/models/block/aluminum_block.json
|
||||
1d33a893d6ac05f9adaceb7f84423ebe9b195c01 assets/tfmg/models/block/aluminum_cable_hub.json
|
||||
da469bf3233944085f07d4ef437827061e408838 assets/tfmg/models/block/aluminum_cap.json
|
||||
@@ -1169,7 +1171,9 @@ e36f2280b360cbd37267b3351a131ebcfb499fe7 assets/tfmg/models/item/electric_pump.j
|
||||
7b898ca0de43a97cda3733b254c3aa112f6a5251 assets/tfmg/models/item/electromagnetic_coil.json
|
||||
969c1a0cf944e95b0807ba0d9fe0641e052e1a7f assets/tfmg/models/item/empty_circuit_board.json
|
||||
a20d047772ef89454ead4a2ba0879f4a35fdbfc4 assets/tfmg/models/item/empty_spool.json
|
||||
fabcbafee0ac08f1eb9de23d85897dccfb80376e assets/tfmg/models/item/engine_controller.json
|
||||
8a1765bf23403f6f3ac3771183ced343d2bc3f89 assets/tfmg/models/item/engine_cylinder.json
|
||||
32db3976d447778cb15b6ed80ca894e7e6cb3a3d assets/tfmg/models/item/engine_gearbox.json
|
||||
f469a8d7eb37fce928a5fec614dc2473075f98cd assets/tfmg/models/item/etched_circuit_board.json
|
||||
af32c2651e6a26f4600f8e5b8ce687348f7e7990 assets/tfmg/models/item/ethylene_bucket.json
|
||||
941e9eac84bd6bfce1f801ea6a9c98d79d8a7c9d assets/tfmg/models/item/exhaust.json
|
||||
@@ -1195,6 +1199,7 @@ ed2830b2988403aebaca633b2e315878b41f7503 assets/tfmg/models/item/gasoline_bucket
|
||||
b577d1d699bbea896237f71a8f5582bcdfcd4534 assets/tfmg/models/item/generator.json
|
||||
06d25769506a7173b15af2069573b2983b587cc4 assets/tfmg/models/item/glass_cable_insulator.json
|
||||
35bca54df08df5acb0bb3e86537571db39f7d165 assets/tfmg/models/item/glass_insulator_segment.json
|
||||
ba135000708c3c77cb3660ff6ed58132961a44db assets/tfmg/models/item/golden_turbo.json
|
||||
b3aebfc27e431cb0b099c3df6dc30dea1e1b6ec3 assets/tfmg/models/item/graphite_electrode.json
|
||||
f80ea87018220fdac6fe8e4cc7490bcdb90cb5d0 assets/tfmg/models/item/gray_caution_block.json
|
||||
c7d4cc91447bc3512efbe18bc7b2344a42196a88 assets/tfmg/models/item/gray_concrete.json
|
||||
@@ -1488,7 +1493,9 @@ e2fb504cbb8808de330d4ea87030f0d089921e23 assets/tfmg/models/item/surface_scanner
|
||||
dc7cec557984ae6aeaa1cb4136acc12e95123f9c assets/tfmg/models/item/traffic_light.json
|
||||
ceca2b38bca3eca6e17419064b782ad745dd229b assets/tfmg/models/item/transformer.json
|
||||
cd6944ca5fe85883cdc520778f9b2ecf4830c2de assets/tfmg/models/item/transistor_item.json
|
||||
53ebfd2817d21cc7b345f8b8991e883ec1be4e21 assets/tfmg/models/item/transmission.json
|
||||
7bffba77b51ec27a99bd5a20f62c23315c31fe13 assets/tfmg/models/item/turbine_blade.json
|
||||
f56b4e352ffdd38cf71b10c4e2789eade1949e27 assets/tfmg/models/item/turbo.json
|
||||
a11cee5b22052675790c9115cf615b3a2beeee01 assets/tfmg/models/item/unfinished_capacitor.json
|
||||
ce1c112f8068e82082834562d661e7d94bf2a262 assets/tfmg/models/item/unfinished_electric_motor.json
|
||||
d4562d6022360cefd8fe93fc7257a89aa9caa5df assets/tfmg/models/item/unfinished_generator.json
|
||||
@@ -1572,6 +1579,7 @@ a1f3c8498ccc83ea4a9015e4214c596753f58a81 data/forge/tags/blocks/storage_blocks/r
|
||||
d0e3e4382c78a56c7e341aa2009c6e3c8cf75cb4 data/forge/tags/fluids/crude_oil.json
|
||||
71db87b21ddeb2537e4f4b83479106d3827c14e5 data/forge/tags/fluids/diesel.json
|
||||
1901f8375216e7ea7d2746dbc37fa518354ee37b data/forge/tags/fluids/fuel.json
|
||||
a199be216c3e67c6b874b71c4d577a6942cfe884 data/forge/tags/fluids/furnace_gas.json
|
||||
01926303c50719ac274cd63eb7297bd59271a056 data/forge/tags/fluids/gasoline.json
|
||||
5dd542885e85fba3798b2b01d1a1b9b0a6388701 data/forge/tags/fluids/heavy_oil.json
|
||||
2ed9c924fe33eac4bb37bdb8f05c37aa982f36dd data/forge/tags/fluids/kerosene.json
|
||||
@@ -1904,6 +1912,8 @@ b8bdebe81f97872eb5dbb1b645b871922b2fb4b7 data/tfmg/loot_tables/blocks/electric_m
|
||||
657af76ea4fdd97034dadac49f2663671f404212 data/tfmg/loot_tables/blocks/electrode_holder.json
|
||||
7b5b916ebb11d9f7a634add40226533fee29aa82 data/tfmg/loot_tables/blocks/encased_diode.json
|
||||
28a38b257764d5c13546a5328166b54d718584da data/tfmg/loot_tables/blocks/encased_potentiometer.json
|
||||
1f83380841098a03623c745ed8513b69b768f921 data/tfmg/loot_tables/blocks/engine_controller.json
|
||||
a0702614a6cb5299a45b06f2a67feb79c4938f1c data/tfmg/loot_tables/blocks/engine_gearbox.json
|
||||
f110a1f94b2b12bc3301728fdbf0c885c1c5e461 data/tfmg/loot_tables/blocks/exhaust.json
|
||||
dd2ace3ebd61456b31d0069bfd8abe19111f748c data/tfmg/loot_tables/blocks/factory_floor.json
|
||||
a84d11a777ea8334c27703b96830a1e1df7b2d04 data/tfmg/loot_tables/blocks/factory_floor_slab.json
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"variants": {
|
||||
"facing=east": {
|
||||
"model": "tfmg:block/engine_controller/block",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north": {
|
||||
"model": "tfmg:block/engine_controller/block"
|
||||
},
|
||||
"facing=south": {
|
||||
"model": "tfmg:block/engine_controller/block",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west": {
|
||||
"model": "tfmg:block/engine_controller/block",
|
||||
"y": 270
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"variants": {
|
||||
"facing=east": {
|
||||
"model": "tfmg:block/engine_gearbox/block",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north": {
|
||||
"model": "tfmg:block/engine_gearbox/block"
|
||||
},
|
||||
"facing=south": {
|
||||
"model": "tfmg:block/engine_gearbox/block",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west": {
|
||||
"model": "tfmg:block/engine_gearbox/block",
|
||||
"y": 270
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -167,6 +167,8 @@
|
||||
"block.tfmg.energy_meter.tooltip.behaviour1": "‾ǝɔɹnoS ɹǝʍoԀ‾ ǝɥʇ ɟo ‾ʎbɹǝuƎ‾ ǝɥʇ sǝɹnsɐǝW",
|
||||
"block.tfmg.energy_meter.tooltip.behaviour2": "ʎbɹǝuǝ sǝɔɹnos ǝɥʇ uo oɟuı pǝןıɐʇǝp sʍoɥS",
|
||||
"block.tfmg.energy_meter.tooltip.summary": "ʎbɹǝuǝ sǝɹnsɐǝW",
|
||||
"block.tfmg.engine_controller": "ɹǝןןoɹʇuoƆ ǝuıbuƎ",
|
||||
"block.tfmg.engine_gearbox": "xoqɹɐǝ⅁ ǝuıbuƎ",
|
||||
"block.tfmg.exhaust": "ʇsnɐɥxƎ",
|
||||
"block.tfmg.factory_floor": "ɹooןℲ ʎɹoʇɔɐℲ",
|
||||
"block.tfmg.factory_floor_slab": "qɐןS ɹooןℲ ʎɹoʇɔɐℲ",
|
||||
@@ -659,7 +661,7 @@
|
||||
"item.tfmg.debug_cinderblock": "ʞɔoןqɹǝpuıƆ bnqǝᗡ",
|
||||
"item.tfmg.deposit_item": "ɯǝʇI ʇısodǝᗡ",
|
||||
"item.tfmg.diesel_bucket": "ʇǝʞɔnᗺ ןǝsǝıᗡ",
|
||||
"item.tfmg.electricians_wrench": "ɥɔuǝɹM s,uɐıɔıɹʇɔǝןƎ",
|
||||
"item.tfmg.electricians_wrench": "ɥɔuǝɹM uoıʇɐɹnbıɟuoƆ",
|
||||
"item.tfmg.electromagnetic_coil": "ןıoƆ ɔıʇǝubɐɯoɹʇɔǝןƎ",
|
||||
"item.tfmg.empty_circuit_board": "pɹɐoᗺ ʇınɔɹıƆ ʎʇdɯƎ",
|
||||
"item.tfmg.empty_spool": "ןoodS ʎʇdɯƎ",
|
||||
@@ -678,6 +680,7 @@
|
||||
"item.tfmg.fuse": "ǝsnℲ",
|
||||
"item.tfmg.gasoline_bucket": "ʇǝʞɔnᗺ ǝuıןosɐ⅁",
|
||||
"item.tfmg.glass_insulator_segment": "ʇuǝɯbǝS ɹoʇɐןnsuI ssɐן⅁",
|
||||
"item.tfmg.golden_turbo": "oqɹn⟘ uǝpןo⅁",
|
||||
"item.tfmg.graphite_electrode": "ǝpoɹʇɔǝןƎ ǝʇıɥdɐɹ⅁",
|
||||
"item.tfmg.heavy_oil_bucket": "ʇǝʞɔnᗺ ןıO ʎʌɐǝH",
|
||||
"item.tfmg.heavy_plate": "ǝʇɐןԀ ʎʌɐǝH",
|
||||
@@ -767,7 +770,9 @@
|
||||
"item.tfmg.thermite_grenade": "ǝpɐuǝɹ⅁ ǝʇıɯɹǝɥ⟘",
|
||||
"item.tfmg.thermite_powder": "ɹǝpʍoԀ ǝʇıɯɹǝɥ⟘",
|
||||
"item.tfmg.transistor_item": "ɹoʇsısuɐɹ⟘",
|
||||
"item.tfmg.transmission": "uoıssıɯsuɐɹ⟘",
|
||||
"item.tfmg.turbine_blade": "ǝpɐןᗺ ǝuıqɹn⟘",
|
||||
"item.tfmg.turbo": "oqɹn⟘",
|
||||
"item.tfmg.unfinished_capacitor": "ɹoʇıɔɐdɐƆ pǝɥsıuıɟu∩",
|
||||
"item.tfmg.unfinished_electric_motor": "ɹoʇoW ɔıɹʇɔǝןƎ pǝɥsıuıɟu∩",
|
||||
"item.tfmg.unfinished_generator": "ɹoʇɐɹǝuǝ⅁ pǝɥsıuıɟu∩",
|
||||
|
||||
@@ -167,6 +167,8 @@
|
||||
"block.tfmg.energy_meter.tooltip.behaviour1": "Measures the _Energy_ of the _Power Source_",
|
||||
"block.tfmg.energy_meter.tooltip.behaviour2": "Shows detailed info on the sources energy",
|
||||
"block.tfmg.energy_meter.tooltip.summary": "Measures energy",
|
||||
"block.tfmg.engine_controller": "Engine Controller",
|
||||
"block.tfmg.engine_gearbox": "Engine Gearbox",
|
||||
"block.tfmg.exhaust": "Exhaust",
|
||||
"block.tfmg.factory_floor": "Factory Floor",
|
||||
"block.tfmg.factory_floor_slab": "Factory Floor Slab",
|
||||
@@ -659,7 +661,7 @@
|
||||
"item.tfmg.debug_cinderblock": "Debug Cinderblock",
|
||||
"item.tfmg.deposit_item": "Deposit Item",
|
||||
"item.tfmg.diesel_bucket": "Diesel Bucket",
|
||||
"item.tfmg.electricians_wrench": "Electrician's Wrench",
|
||||
"item.tfmg.electricians_wrench": "Configuration Wrench",
|
||||
"item.tfmg.electromagnetic_coil": "Electromagnetic Coil",
|
||||
"item.tfmg.empty_circuit_board": "Empty Circuit Board",
|
||||
"item.tfmg.empty_spool": "Empty Spool",
|
||||
@@ -678,6 +680,7 @@
|
||||
"item.tfmg.fuse": "Fuse",
|
||||
"item.tfmg.gasoline_bucket": "Gasoline Bucket",
|
||||
"item.tfmg.glass_insulator_segment": "Glass Insulator Segment",
|
||||
"item.tfmg.golden_turbo": "Golden Turbo",
|
||||
"item.tfmg.graphite_electrode": "Graphite Electrode",
|
||||
"item.tfmg.heavy_oil_bucket": "Heavy Oil Bucket",
|
||||
"item.tfmg.heavy_plate": "Heavy Plate",
|
||||
@@ -767,7 +770,9 @@
|
||||
"item.tfmg.thermite_grenade": "Thermite Grenade",
|
||||
"item.tfmg.thermite_powder": "Thermite Powder",
|
||||
"item.tfmg.transistor_item": "Transistor",
|
||||
"item.tfmg.transmission": "Transmission",
|
||||
"item.tfmg.turbine_blade": "Turbine Blade",
|
||||
"item.tfmg.turbo": "Turbo",
|
||||
"item.tfmg.unfinished_capacitor": "Unfinished Capacitor",
|
||||
"item.tfmg.unfinished_electric_motor": "Unfinished Electric Motor",
|
||||
"item.tfmg.unfinished_generator": "Unfinished Generator",
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"parent": "tfmg:block/engine_controller/item"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"parent": "tfmg:block/engine_gearbox/item"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "tfmg:item/golden_turbo"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "tfmg:item/transmission"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "tfmg:item/turbo"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"values": [
|
||||
"tfmg:flowing_furnace_gas",
|
||||
"tfmg:furnace_gas"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"bonus_rolls": 0.0,
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
],
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "tfmg:engine_controller"
|
||||
}
|
||||
],
|
||||
"rolls": 1.0
|
||||
}
|
||||
],
|
||||
"random_sequence": "tfmg:blocks/engine_controller"
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"bonus_rolls": 0.0,
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
],
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "tfmg:engine_gearbox"
|
||||
}
|
||||
],
|
||||
"rolls": 1.0
|
||||
}
|
||||
],
|
||||
"random_sequence": "tfmg:blocks/engine_gearbox"
|
||||
}
|
||||
@@ -17,6 +17,16 @@ public class TFMGShapes {
|
||||
public static final VoxelShaper
|
||||
ENGINE = shape(0, 0, 0, 16, 7, 16).add(3, 7, 0, 13, 12, 16)
|
||||
.forDirectional(SOUTH),
|
||||
ENGINE_GEARBOX = shape(0, 0, -1, 3, 5, 15)
|
||||
.add(13, 0, -1, 16, 5, 15)
|
||||
.add(3, 0, -1, 13, 12, 11)
|
||||
.add(3, 0, 11, 13, 11, 15)
|
||||
.add(13, 5, 3, 16, 13, 13)
|
||||
.add(0, 5, 3, 3, 13, 13)
|
||||
.add(13, 5, -1, 16, 7, 1)
|
||||
.add(0, 5, -1, 3, 7, 1)
|
||||
.add(15, 5, 9, 15, 11, 9)
|
||||
.forDirectional(SOUTH),
|
||||
ENGINE_FRONT = shape(0, 0, 1, 16, 7, 16).add(3, 7, 1, 13, 12, 16)
|
||||
.forDirectional(SOUTH),
|
||||
PUMPJACK_HAMMER_PART = shape(0, 2, 0, 16, 14, 16)
|
||||
@@ -98,12 +108,12 @@ public class TFMGShapes {
|
||||
ELECTRICAL_SWITCH_WALL = shape(5, 3, 0, 11, 13, 3)
|
||||
.forHorizontal(SOUTH),
|
||||
|
||||
POLARIZER = shape(4, 8, 0, 12, 12, 2)
|
||||
.add(5, 8, 14, 11, 11, 16)
|
||||
.add(11, 8, 4, 15, 12, 11)
|
||||
.add(1, 8, 4, 5, 12, 11)
|
||||
.add(0, 0, 0, 16, 8, 16)
|
||||
.forHorizontal(NORTH);
|
||||
POLARIZER = shape(4, 8, 0, 12, 12, 2)
|
||||
.add(5, 8, 14, 11, 11, 16)
|
||||
.add(11, 8, 4, 15, 12, 11)
|
||||
.add(1, 8, 4, 5, 12, 11)
|
||||
.add(0, 0, 0, 16, 8, 16)
|
||||
.forHorizontal(NORTH);
|
||||
public static final VoxelShape
|
||||
|
||||
EMPTY = shape(0, 0, 0, 0, 0, 0).build(),
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.drmangotea.tfmg.base.events;
|
||||
|
||||
import com.drmangotea.tfmg.content.engines.engine_controller.EngineControllerClientHandler;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.client.ConfigScreenHandler;
|
||||
import net.minecraftforge.client.event.*;
|
||||
import net.minecraftforge.client.event.RenderLevelStageEvent.Stage;
|
||||
import net.minecraftforge.client.gui.overlay.VanillaGuiOverlay;
|
||||
import net.minecraftforge.event.TickEvent.ClientTickEvent;
|
||||
import net.minecraftforge.event.TickEvent.Phase;
|
||||
import net.minecraftforge.event.TickEvent.RenderTickEvent;
|
||||
import net.minecraftforge.event.entity.EntityMountEvent;
|
||||
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
|
||||
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
|
||||
import net.minecraftforge.event.level.LevelEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.ModContainer;
|
||||
import net.minecraftforge.fml.ModList;
|
||||
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
|
||||
import net.minecraftforge.fml.event.lifecycle.FMLLoadCompleteEvent;
|
||||
|
||||
import static com.jozufozu.flywheel.backend.Backend.isGameActive;
|
||||
|
||||
@EventBusSubscriber(Dist.CLIENT)
|
||||
public class TFMGClientEvents {
|
||||
|
||||
@SubscribeEvent
|
||||
public static void onTick(ClientTickEvent event) {
|
||||
if (!isGameActive())
|
||||
return;
|
||||
|
||||
|
||||
if (event.phase == Phase.START) {
|
||||
EngineControllerClientHandler.tick();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -216,6 +216,7 @@ public class ElectricBlockEntity extends SmartBlockEntity implements IElectric,
|
||||
@Override
|
||||
public void remove() {
|
||||
super.remove();
|
||||
|
||||
this.data.destroyed = true;
|
||||
for (Direction d : Direction.values()) {
|
||||
if (hasElectricitySlot(d))
|
||||
@@ -229,7 +230,7 @@ public class ElectricBlockEntity extends SmartBlockEntity implements IElectric,
|
||||
}
|
||||
if (data.electricalNetworkId != getPos())
|
||||
getOrCreateElectricNetwork().getMembers().remove(this);
|
||||
|
||||
//
|
||||
if (data.electricalNetworkId == getPos())
|
||||
ElectricNetworkManager.networks.get(getLevel())
|
||||
.remove(getData().getId());
|
||||
@@ -239,7 +240,7 @@ public class ElectricBlockEntity extends SmartBlockEntity implements IElectric,
|
||||
public void tick() {
|
||||
super.tick();
|
||||
if (data.connectNextTick) {
|
||||
TFMG.LOGGER.debug("SIGMA A");
|
||||
TFMG.LOGGER.debug("AAAAAAA");
|
||||
onPlaced();
|
||||
data.connectNextTick = false;
|
||||
}
|
||||
|
||||
@@ -32,14 +32,36 @@ public interface IElectric {
|
||||
|
||||
if (!getLevelAccessor().isClientSide())
|
||||
TFMGPackets.getChannel().send(PacketDistributor.ALL.noArg(), new ConnectNeightborsPacket(BlockPos.of(getPos())));
|
||||
TFMG.NETWORK_MANAGER.getOrCreateNetworkFor(this);
|
||||
ElectricalNetwork network = TFMG.NETWORK_MANAGER.getOrCreateNetworkFor(this);
|
||||
setNetwork(getPos());
|
||||
getData().electricalNetworkId = getPos();
|
||||
updateNetwork();
|
||||
|
||||
//BlockPos pos = BlockPos.of(getPos());
|
||||
///// ////
|
||||
//
|
||||
//
|
||||
//for (Direction d : Direction.values()) {
|
||||
// if (hasElectricitySlot(d))
|
||||
// if (getLevelAccessor().getBlockEntity(pos.relative(d)) instanceof IElectric be) {
|
||||
// if (be.hasElectricitySlot(d.getOpposite())) {
|
||||
// if (!be.destroyed()) {
|
||||
//
|
||||
//
|
||||
// for(IElectric member : be.getOrCreateElectricNetwork().members){
|
||||
// network.add(member);
|
||||
// member.setNetwork(this.getData().electricalNetworkId);
|
||||
//
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
//updateNextTick();
|
||||
|
||||
onConnected();
|
||||
sendStuff();
|
||||
updateNextTick();
|
||||
|
||||
}
|
||||
|
||||
default int getMaxVoltage() {
|
||||
@@ -52,6 +74,7 @@ public interface IElectric {
|
||||
|
||||
default void onConnected() {
|
||||
|
||||
|
||||
BlockPos pos = BlockPos.of(getPos());
|
||||
for (Direction d : Direction.values()) {
|
||||
if (hasElectricitySlot(d))
|
||||
@@ -61,7 +84,6 @@ public interface IElectric {
|
||||
getOrCreateElectricNetwork().add(be);
|
||||
if (be.getData().getId() != getData().getId()) {
|
||||
be.setNetwork(getData().getId());
|
||||
TFMG.LOGGER.debug("KONNEQT ");
|
||||
be.onConnected();
|
||||
if (!getLevelAccessor().isClientSide())
|
||||
sendStuff();
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.drmangotea.tfmg.content.electricity.generators.GeneratorBlockEntity;
|
||||
import com.drmangotea.tfmg.content.electricity.storage.AccumulatorBlockEntity;
|
||||
import com.drmangotea.tfmg.content.electricity.utilities.electric_motor.ElectricMotorBlockEntity;
|
||||
import com.drmangotea.tfmg.content.engines.base.AbstractEngineBlockEntity;
|
||||
import com.drmangotea.tfmg.content.engines.engine_controller.EngineControllerBlockEntity;
|
||||
import com.drmangotea.tfmg.content.engines.regular_engine.RegularEngineBlockEntity;
|
||||
import com.drmangotea.tfmg.content.machinery.metallurgy.blast_stove.BlastStoveBlockEntity;
|
||||
import com.drmangotea.tfmg.content.machinery.metallurgy.casting_basin.CastingBasinBlockEntity;
|
||||
@@ -52,18 +53,24 @@ public class DebugCinderBlockItem extends Item {
|
||||
|
||||
BlockPos pos = context.getClickedPos();
|
||||
Level level = context.getLevel();
|
||||
|
||||
if(level.getBlockEntity(pos) instanceof EngineControllerBlockEntity be){
|
||||
context.getPlayer().getPersistentData().remove("IsUsingEngineController");
|
||||
TFMG.LOGGER.debug("REMOVED PERSISTENT DATA");
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
if(level.getBlockEntity(pos) instanceof RegularEngineBlockEntity be){
|
||||
be.updateRotation();
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
if(level.getBlockEntity(pos) instanceof GeneratorBlockEntity be){
|
||||
be.updateStress();
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
if(level.getBlockEntity(pos) instanceof ElectricMotorBlockEntity be){
|
||||
be.onPlaced();
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
//if(level.getBlockEntity(pos) instanceof GeneratorBlockEntity be){
|
||||
// be.updateStress();
|
||||
// return InteractionResult.SUCCESS;
|
||||
//}
|
||||
//if(level.getBlockEntity(pos) instanceof ElectricMotorBlockEntity be){
|
||||
// be.onPlaced();
|
||||
// return InteractionResult.SUCCESS;
|
||||
//}
|
||||
|
||||
if(level.getBlockEntity(pos) instanceof ConcreteHoseBlockEntity be){
|
||||
|
||||
@@ -90,6 +97,10 @@ public class DebugCinderBlockItem extends Item {
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
if(level.getBlockEntity(pos) instanceof IElectric be){
|
||||
|
||||
be.onPlaced();
|
||||
|
||||
|
||||
if(context.getPlayer().isShiftKeyDown()) {
|
||||
TFMG.LOGGER.debug("///////////////////////////////");
|
||||
TFMG.LOGGER.debug("Group Resistance "+be.getData().group.resistance);
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
package com.drmangotea.tfmg.content.engines.engine_controller;
|
||||
|
||||
import com.drmangotea.tfmg.base.TFMGHorizontalDirectionalBlock;
|
||||
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
|
||||
import com.simibubi.create.content.redstone.link.controller.LecternControllerBlockEntity;
|
||||
import com.simibubi.create.foundation.block.IBE;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
|
||||
public class EngineControllerBlock extends TFMGHorizontalDirectionalBlock implements IBE<EngineControllerBlockEntity> {
|
||||
public EngineControllerBlock(Properties p_54120_) {
|
||||
super(p_54120_);
|
||||
}
|
||||
@Override
|
||||
public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand,
|
||||
BlockHitResult hit) {
|
||||
if (!player.isShiftKeyDown() && LecternControllerBlockEntity.playerInRange(player, world, pos)) {
|
||||
if (!world.isClientSide)
|
||||
withBlockEntityDo(world, pos, be -> be.tryStartUsing(player));
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
return InteractionResult.PASS;
|
||||
}
|
||||
@Override
|
||||
public Class<EngineControllerBlockEntity> getBlockEntityClass() {
|
||||
return EngineControllerBlockEntity.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockEntityType<? extends EngineControllerBlockEntity> getBlockEntityType() {
|
||||
return TFMGBlockEntities.ENGINE_CONTROLLER.get();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,153 @@
|
||||
package com.drmangotea.tfmg.content.engines.engine_controller;
|
||||
|
||||
import com.drmangotea.tfmg.TFMG;
|
||||
import com.simibubi.create.content.redstone.link.controller.LinkedControllerClientHandler;
|
||||
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.common.ForgeMod;
|
||||
import net.minecraftforge.fml.DistExecutor;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
public class EngineControllerBlockEntity extends SmartBlockEntity {
|
||||
|
||||
private UUID user;
|
||||
private UUID prevUser;
|
||||
private boolean deactivatedThisTick;
|
||||
|
||||
public EngineControllerBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
|
||||
super(type, pos, state);
|
||||
}
|
||||
|
||||
public ItemStack getController() {
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void write(CompoundTag compound, boolean clientPacket) {
|
||||
super.write(compound, clientPacket);
|
||||
if (user != null)
|
||||
compound.putUUID("User", user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
super.tick();
|
||||
|
||||
if (level.isClientSide) {
|
||||
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> this::tryToggleActive);
|
||||
prevUser = user;
|
||||
}
|
||||
|
||||
if (!level.isClientSide) {
|
||||
deactivatedThisTick = false;
|
||||
|
||||
if (!(level instanceof ServerLevel))
|
||||
return;
|
||||
if (user == null)
|
||||
return;
|
||||
|
||||
Entity entity = ((ServerLevel) level).getEntity(user);
|
||||
if (!(entity instanceof Player)) {
|
||||
stopUsing(null);
|
||||
return;
|
||||
}
|
||||
|
||||
Player player = (Player) entity;
|
||||
if (!playerInRange(player, level, worldPosition) || !playerIsUsingEngineController(player))
|
||||
stopUsing(player);
|
||||
}
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
private void tryToggleActive() {
|
||||
if (user == null && Minecraft.getInstance().player.getUUID().equals(prevUser)) {
|
||||
EngineControllerClientHandler.deactivateInLectern();
|
||||
} else if (prevUser == null && Minecraft.getInstance().player.getUUID().equals(user)) {
|
||||
EngineControllerClientHandler.activateInLectern(worldPosition);
|
||||
}
|
||||
}
|
||||
|
||||
public void tryStopUsing(Player player) {
|
||||
TFMG.LOGGER.debug("Try Stop Using");
|
||||
if (isUsedBy(player))
|
||||
stopUsing(player);
|
||||
}
|
||||
|
||||
public static boolean playerIsUsingEngineController(Player player) {
|
||||
return player.getPersistentData().contains("IsUsingEngineController");
|
||||
}
|
||||
|
||||
public void tryStartUsing(Player player) {
|
||||
|
||||
|
||||
TFMG.LOGGER.debug("TRY START USING");
|
||||
if (!playerInRange(player, level, worldPosition))
|
||||
TFMG.LOGGER.debug("Not in Range");
|
||||
if (playerIsUsingEngineController(player))
|
||||
TFMG.LOGGER.debug("Already Using");
|
||||
if (deactivatedThisTick)
|
||||
TFMG.LOGGER.debug("Deactivated");
|
||||
if (hasUser())
|
||||
TFMG.LOGGER.debug("Already has user");
|
||||
if (!deactivatedThisTick && !hasUser() && !playerIsUsingEngineController(player) && playerInRange(player, level, worldPosition)) {
|
||||
TFMG.LOGGER.debug("START USING");
|
||||
startUsing(player);
|
||||
}
|
||||
}
|
||||
|
||||
private void startUsing(Player player) {
|
||||
|
||||
user = player.getUUID();
|
||||
player.getPersistentData().putBoolean("IsUsingEngineController", true);
|
||||
sendData();
|
||||
}
|
||||
|
||||
private void stopUsing(Player player) {
|
||||
TFMG.LOGGER.debug("STOP USING");
|
||||
user = null;
|
||||
if (player != null)
|
||||
player.getPersistentData().remove("IsUsingEngineController");
|
||||
deactivatedThisTick = true;
|
||||
sendData();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void read(CompoundTag compound, boolean clientPacket) {
|
||||
super.read(compound, clientPacket);
|
||||
|
||||
user = compound.hasUUID("User") ? compound.getUUID("User") : null;
|
||||
}
|
||||
|
||||
public boolean isUsedBy(Player player) {
|
||||
return hasUser() && user.equals(player.getUUID());
|
||||
}
|
||||
|
||||
public boolean hasUser() {
|
||||
return user != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
|
||||
}
|
||||
|
||||
public static boolean playerInRange(Player player, Level world, BlockPos pos) {
|
||||
double reach = 0.4 * player.getAttributeValue(ForgeMod.BLOCK_REACH.get());
|
||||
return player.distanceToSqr(Vec3.atCenterOf(pos)) < reach * reach;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,259 @@
|
||||
package com.drmangotea.tfmg.content.engines.engine_controller;
|
||||
|
||||
import com.drmangotea.tfmg.TFMG;
|
||||
import com.drmangotea.tfmg.content.engines.engine_controller.packets.EngineControllerBindPacket;
|
||||
import com.drmangotea.tfmg.content.engines.engine_controller.packets.EngineControllerInputPacket;
|
||||
import com.drmangotea.tfmg.content.engines.engine_controller.packets.EngineControllerStopControllerPacket;
|
||||
import com.drmangotea.tfmg.registry.TFMGPackets;
|
||||
import com.mojang.blaze3d.platform.InputConstants;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.simibubi.create.*;
|
||||
import com.simibubi.create.content.redstone.link.LinkBehaviour;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.item.TooltipHelper;
|
||||
import com.simibubi.create.foundation.utility.Components;
|
||||
import com.simibubi.create.foundation.utility.ControlsUtil;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.client.KeyMapping;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.client.gui.screens.Screen;
|
||||
import net.minecraft.client.player.LocalPlayer;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
import net.minecraftforge.client.gui.overlay.ForgeGui;
|
||||
import org.lwjgl.glfw.GLFW;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class EngineControllerClientHandler {
|
||||
//public static final IGuiOverlay OVERLAY = LinkedControllerClientHandler::renderOverlay;
|
||||
|
||||
public static Mode MODE = Mode.IDLE;
|
||||
public static int PACKET_RATE = 5;
|
||||
public static Collection<Integer> currentlyPressed = new HashSet<>();
|
||||
private static BlockPos controllerPos;
|
||||
private static BlockPos selectedLocation = BlockPos.ZERO;
|
||||
private static int packetCooldown;
|
||||
|
||||
public static void toggleBindMode(BlockPos location) {
|
||||
if (MODE == Mode.IDLE) {
|
||||
MODE = Mode.BIND;
|
||||
selectedLocation = location;
|
||||
} else {
|
||||
MODE = Mode.IDLE;
|
||||
TFMG.LOGGER.debug("TOGGLE BIND MODE");
|
||||
onReset();
|
||||
}
|
||||
}
|
||||
|
||||
public static void toggle() {
|
||||
if (MODE == Mode.IDLE) {
|
||||
MODE = Mode.ACTIVE;
|
||||
controllerPos = null;
|
||||
} else {
|
||||
MODE = Mode.IDLE;
|
||||
TFMG.LOGGER.debug("TOGGLE");
|
||||
onReset();
|
||||
}
|
||||
}
|
||||
|
||||
public static void activateInLectern(BlockPos lecternAt) {
|
||||
if (MODE == Mode.IDLE) {
|
||||
MODE = Mode.ACTIVE;
|
||||
controllerPos = lecternAt;
|
||||
}
|
||||
}
|
||||
|
||||
public static void deactivateInLectern() {
|
||||
if (MODE == Mode.ACTIVE && inLectern()) {
|
||||
MODE = Mode.IDLE;
|
||||
TFMG.LOGGER.debug("DEACTIVATE");
|
||||
onReset();
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean inLectern() {
|
||||
return controllerPos != null;
|
||||
}
|
||||
|
||||
protected static void onReset() {
|
||||
ControlsUtil.getControls()
|
||||
.forEach(kb -> kb.setDown(ControlsUtil.isActuallyPressed(kb)));
|
||||
packetCooldown = 0;
|
||||
selectedLocation = BlockPos.ZERO;
|
||||
|
||||
if (inLectern())
|
||||
TFMGPackets.getChannel().sendToServer(new EngineControllerStopControllerPacket(controllerPos));
|
||||
controllerPos = null;
|
||||
|
||||
if (!currentlyPressed.isEmpty())
|
||||
TFMGPackets.getChannel().sendToServer(new EngineControllerInputPacket(currentlyPressed, false));
|
||||
currentlyPressed.clear();
|
||||
|
||||
// LinkedControllerItemRenderer.resetButtons();
|
||||
}
|
||||
|
||||
public static void tick() {
|
||||
// LinkedControllerItemRenderer.tick();
|
||||
|
||||
if (MODE == Mode.IDLE)
|
||||
return;
|
||||
if (packetCooldown > 0)
|
||||
packetCooldown--;
|
||||
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
LocalPlayer player = mc.player;
|
||||
ItemStack heldItem = player.getMainHandItem();
|
||||
|
||||
if (player.isSpectator()) {
|
||||
MODE = Mode.IDLE;
|
||||
TFMG.LOGGER.debug("SPEKTATOR");
|
||||
onReset();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!inLectern() && !AllItems.LINKED_CONTROLLER.isIn(heldItem)) {
|
||||
heldItem = player.getOffhandItem();
|
||||
if (!AllItems.LINKED_CONTROLLER.isIn(heldItem)) {
|
||||
MODE = Mode.IDLE;
|
||||
|
||||
//onReset();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (inLectern() && AllBlocks.LECTERN_CONTROLLER.get()
|
||||
.getBlockEntityOptional(mc.level, controllerPos)
|
||||
.map(be -> !be.isUsedBy(mc.player))
|
||||
.orElse(true)) {
|
||||
deactivateInLectern();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mc.screen != null) {
|
||||
MODE = Mode.IDLE;
|
||||
TFMG.LOGGER.debug("NO SCREEN");
|
||||
onReset();
|
||||
return;
|
||||
}
|
||||
|
||||
if (InputConstants.isKeyDown(mc.getWindow()
|
||||
.getWindow(), GLFW.GLFW_KEY_ESCAPE)) {
|
||||
MODE = Mode.IDLE;
|
||||
TFMG.LOGGER.debug("ESCAPE");
|
||||
onReset();
|
||||
return;
|
||||
}
|
||||
|
||||
Vector<KeyMapping> controls = ControlsUtil.getControls();
|
||||
Collection<Integer> pressedKeys = new HashSet<>();
|
||||
for (int i = 0; i < controls.size(); i++) {
|
||||
if (ControlsUtil.isActuallyPressed(controls.get(i)))
|
||||
pressedKeys.add(i);
|
||||
}
|
||||
|
||||
Collection<Integer> newKeys = new HashSet<>(pressedKeys);
|
||||
Collection<Integer> releasedKeys = currentlyPressed;
|
||||
newKeys.removeAll(releasedKeys);
|
||||
releasedKeys.removeAll(pressedKeys);
|
||||
|
||||
if (MODE == Mode.ACTIVE) {
|
||||
// Released Keys
|
||||
if (!releasedKeys.isEmpty()) {
|
||||
TFMGPackets.getChannel().sendToServer(new EngineControllerInputPacket(releasedKeys, false, controllerPos));
|
||||
AllSoundEvents.CONTROLLER_CLICK.playAt(player.level(), player.blockPosition(), 1f, .5f, true);
|
||||
}
|
||||
|
||||
// Newly Pressed Keys
|
||||
if (!newKeys.isEmpty()) {
|
||||
TFMGPackets.getChannel().sendToServer(new EngineControllerInputPacket(newKeys, true, controllerPos));
|
||||
packetCooldown = PACKET_RATE;
|
||||
AllSoundEvents.CONTROLLER_CLICK.playAt(player.level(), player.blockPosition(), 1f, .75f, true);
|
||||
}
|
||||
|
||||
// Keepalive Pressed Keys
|
||||
if (packetCooldown == 0) {
|
||||
if (!pressedKeys.isEmpty()) {
|
||||
TFMGPackets.getChannel().sendToServer(new EngineControllerInputPacket(pressedKeys, true, controllerPos));
|
||||
packetCooldown = PACKET_RATE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (MODE == Mode.BIND) {
|
||||
VoxelShape shape = mc.level.getBlockState(selectedLocation)
|
||||
.getShape(mc.level, selectedLocation);
|
||||
if (!shape.isEmpty())
|
||||
CreateClient.OUTLINER.showAABB("controller", shape.bounds()
|
||||
.move(selectedLocation))
|
||||
.colored(0xB73C2D)
|
||||
.lineWidth(1 / 16f);
|
||||
|
||||
for (Integer integer : newKeys) {
|
||||
LinkBehaviour linkBehaviour = BlockEntityBehaviour.get(mc.level, selectedLocation, LinkBehaviour.TYPE);
|
||||
if (linkBehaviour != null) {
|
||||
TFMGPackets.getChannel().sendToServer(new EngineControllerBindPacket(integer, selectedLocation));
|
||||
Lang.translate("linked_controller.key_bound", controls.get(integer)
|
||||
.getTranslatedKeyMessage()
|
||||
.getString())
|
||||
.sendStatus(mc.player);
|
||||
}
|
||||
MODE = Mode.IDLE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
currentlyPressed = pressedKeys;
|
||||
controls.forEach(kb -> kb.setDown(false));
|
||||
}
|
||||
|
||||
public static void renderOverlay(ForgeGui gui, GuiGraphics graphics, float partialTicks, int width1,
|
||||
int height1) {
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
if (mc.options.hideGui)
|
||||
return;
|
||||
|
||||
if (MODE != Mode.BIND)
|
||||
return;
|
||||
|
||||
PoseStack poseStack = graphics.pose();
|
||||
poseStack.pushPose();
|
||||
Screen tooltipScreen = new Screen(Components.immutableEmpty()) {
|
||||
};
|
||||
tooltipScreen.init(mc, width1, height1);
|
||||
|
||||
Object[] keys = new Object[6];
|
||||
Vector<KeyMapping> controls = ControlsUtil.getControls();
|
||||
for (int i = 0; i < controls.size(); i++) {
|
||||
KeyMapping keyBinding = controls.get(i);
|
||||
keys[i] = keyBinding.getTranslatedKeyMessage()
|
||||
.getString();
|
||||
}
|
||||
|
||||
List<Component> list = new ArrayList<>();
|
||||
list.add(Lang.translateDirect("linked_controller.bind_mode")
|
||||
.withStyle(ChatFormatting.GOLD));
|
||||
list.addAll(TooltipHelper.cutTextComponent(Lang.translateDirect("linked_controller.press_keybind", keys),
|
||||
TooltipHelper.Palette.ALL_GRAY));
|
||||
|
||||
int width = 0;
|
||||
int height = list.size() * mc.font.lineHeight;
|
||||
for (Component iTextComponent : list)
|
||||
width = Math.max(width, mc.font.width(iTextComponent));
|
||||
int x = (width1 / 3) - width / 2;
|
||||
int y = height1 - height - 24;
|
||||
|
||||
|
||||
graphics.renderComponentTooltip(Minecraft.getInstance().font, list, x, y);
|
||||
|
||||
poseStack.popPose();
|
||||
}
|
||||
|
||||
public enum Mode {
|
||||
IDLE, ACTIVE, BIND
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package com.drmangotea.tfmg.content.engines.engine_controller;
|
||||
|
||||
public class EngineControllerClientRenderer {
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package com.drmangotea.tfmg.content.engines.engine_controller;
|
||||
|
||||
public class EngineControllerRenderer {
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.drmangotea.tfmg.content.engines.engine_controller.packets;
|
||||
|
||||
import com.drmangotea.tfmg.content.engines.engine_controller.EngineControllerBlockEntity;
|
||||
import com.simibubi.create.content.redstone.link.LinkBehaviour;
|
||||
import com.simibubi.create.content.redstone.link.controller.LecternControllerBlockEntity;
|
||||
import com.simibubi.create.content.redstone.link.controller.LinkedControllerItem;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraftforge.items.ItemStackHandler;
|
||||
|
||||
public class EngineControllerBindPacket extends EngineControllerPacketBase {
|
||||
|
||||
private int button;
|
||||
private BlockPos linkLocation;
|
||||
|
||||
public EngineControllerBindPacket(int button, BlockPos linkLocation) {
|
||||
super((BlockPos) null);
|
||||
this.button = button;
|
||||
this.linkLocation = linkLocation;
|
||||
}
|
||||
|
||||
public EngineControllerBindPacket(FriendlyByteBuf buffer) {
|
||||
super(buffer);
|
||||
this.button = buffer.readVarInt();
|
||||
this.linkLocation = buffer.readBlockPos();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(FriendlyByteBuf buffer) {
|
||||
super.write(buffer);
|
||||
buffer.writeVarInt(button);
|
||||
buffer.writeBlockPos(linkLocation);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleItem(ServerPlayer player, ItemStack heldItem) {
|
||||
if (player.isSpectator())
|
||||
return;
|
||||
|
||||
ItemStackHandler frequencyItems = LinkedControllerItem.getFrequencyItems(heldItem);
|
||||
LinkBehaviour linkBehaviour = BlockEntityBehaviour.get(player.level(), linkLocation, LinkBehaviour.TYPE);
|
||||
if (linkBehaviour == null)
|
||||
return;
|
||||
|
||||
linkBehaviour.getNetworkKey()
|
||||
.forEachWithContext((f, first) -> frequencyItems.setStackInSlot(button * 2 + (first ? 0 : 1), f.getStack()
|
||||
.copy()));
|
||||
|
||||
heldItem.getTag()
|
||||
.put("Items", frequencyItems.serializeNBT());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleController(ServerPlayer player, EngineControllerBlockEntity lectern) {}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package com.drmangotea.tfmg.content.engines.engine_controller.packets;
|
||||
|
||||
import com.drmangotea.tfmg.content.engines.engine_controller.EngineControllerBlockEntity;
|
||||
import com.simibubi.create.content.redstone.link.controller.LecternControllerBlockEntity;
|
||||
import com.simibubi.create.content.redstone.link.controller.LinkedControllerItem;
|
||||
import com.simibubi.create.content.redstone.link.controller.LinkedControllerServerHandler;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class EngineControllerInputPacket extends EngineControllerPacketBase {
|
||||
|
||||
private Collection<Integer> activatedButtons;
|
||||
private boolean press;
|
||||
|
||||
public EngineControllerInputPacket(Collection<Integer> activatedButtons, boolean press) {
|
||||
this(activatedButtons, press, null);
|
||||
}
|
||||
|
||||
public EngineControllerInputPacket(Collection<Integer> activatedButtons, boolean press, BlockPos lecternPos) {
|
||||
super(lecternPos);
|
||||
this.activatedButtons = activatedButtons;
|
||||
this.press = press;
|
||||
}
|
||||
|
||||
public EngineControllerInputPacket(FriendlyByteBuf buffer) {
|
||||
super(buffer);
|
||||
activatedButtons = new ArrayList<>();
|
||||
press = buffer.readBoolean();
|
||||
int size = buffer.readVarInt();
|
||||
for (int i = 0; i < size; i++)
|
||||
activatedButtons.add(buffer.readVarInt());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(FriendlyByteBuf buffer) {
|
||||
super.write(buffer);
|
||||
buffer.writeBoolean(press);
|
||||
buffer.writeVarInt(activatedButtons.size());
|
||||
activatedButtons.forEach(buffer::writeVarInt);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleController(ServerPlayer player, EngineControllerBlockEntity lectern) {
|
||||
if (lectern.isUsedBy(player))
|
||||
handleItem(player, lectern.getController());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleItem(ServerPlayer player, ItemStack heldItem) {
|
||||
Level world = player.getCommandSenderWorld();
|
||||
UUID uniqueID = player.getUUID();
|
||||
BlockPos pos = player.blockPosition();
|
||||
|
||||
if (player.isSpectator() && press)
|
||||
return;
|
||||
|
||||
LinkedControllerServerHandler.receivePressed(world, pos, uniqueID, activatedButtons.stream()
|
||||
.map(i -> LinkedControllerItem.toFrequency(heldItem, i))
|
||||
.collect(Collectors.toList()), press);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package com.drmangotea.tfmg.content.engines.engine_controller.packets;
|
||||
|
||||
import com.drmangotea.tfmg.content.engines.engine_controller.EngineControllerBlockEntity;
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.content.redstone.link.controller.LecternControllerBlockEntity;
|
||||
import com.simibubi.create.foundation.networking.SimplePacketBase;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraftforge.network.NetworkEvent.Context;
|
||||
|
||||
public abstract class EngineControllerPacketBase extends SimplePacketBase {
|
||||
|
||||
private BlockPos lecternPos;
|
||||
|
||||
public EngineControllerPacketBase(BlockPos lecternPos) {
|
||||
this.lecternPos = lecternPos;
|
||||
}
|
||||
|
||||
public EngineControllerPacketBase(FriendlyByteBuf buffer) {
|
||||
if (buffer.readBoolean()) {
|
||||
lecternPos = new BlockPos(buffer.readInt(), buffer.readInt(), buffer.readInt());
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean inLectern() {
|
||||
return lecternPos != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(FriendlyByteBuf buffer) {
|
||||
buffer.writeBoolean(inLectern());
|
||||
if (inLectern()) {
|
||||
buffer.writeInt(lecternPos.getX());
|
||||
buffer.writeInt(lecternPos.getY());
|
||||
buffer.writeInt(lecternPos.getZ());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handle(Context context) {
|
||||
context.enqueueWork(() -> {
|
||||
ServerPlayer player = context.getSender();
|
||||
if (player == null)
|
||||
return;
|
||||
|
||||
if (inLectern()) {
|
||||
BlockEntity be = player.level().getBlockEntity(lecternPos);
|
||||
if (!(be instanceof EngineControllerBlockEntity))
|
||||
return;
|
||||
handleController(player, (EngineControllerBlockEntity) be);
|
||||
} else {
|
||||
ItemStack controller = player.getMainHandItem();
|
||||
if (!AllItems.LINKED_CONTROLLER.isIn(controller)) {
|
||||
controller = player.getOffhandItem();
|
||||
if (!AllItems.LINKED_CONTROLLER.isIn(controller))
|
||||
return;
|
||||
}
|
||||
handleItem(player, controller);
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
protected abstract void handleItem(ServerPlayer player, ItemStack heldItem);
|
||||
protected abstract void handleController(ServerPlayer player, EngineControllerBlockEntity lectern);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.drmangotea.tfmg.content.engines.engine_controller.packets;
|
||||
|
||||
import com.drmangotea.tfmg.TFMG;
|
||||
import com.drmangotea.tfmg.content.engines.engine_controller.EngineControllerBlockEntity;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
||||
public class EngineControllerStopControllerPacket extends EngineControllerPacketBase {
|
||||
|
||||
public EngineControllerStopControllerPacket(FriendlyByteBuf buffer) {
|
||||
super(buffer);
|
||||
}
|
||||
|
||||
public EngineControllerStopControllerPacket(BlockPos lecternPos) {
|
||||
super(lecternPos);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleController(ServerPlayer player, EngineControllerBlockEntity lectern) {
|
||||
TFMG.LOGGER.debug("Packet- Stop Using");
|
||||
lectern.tryStopUsing(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleItem(ServerPlayer player, ItemStack heldItem) { }
|
||||
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.drmangotea.tfmg.content.engines.engine_gearbox;
|
||||
|
||||
import com.drmangotea.tfmg.base.TFMGShapes;
|
||||
import com.drmangotea.tfmg.registry.TFMGBlockEntities;
|
||||
import com.simibubi.create.content.kinetics.base.HorizontalKineticBlock;
|
||||
import com.simibubi.create.foundation.block.IBE;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.LevelReader;
|
||||
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
|
||||
public class EngineGearboxBlock extends HorizontalKineticBlock implements IBE<EngineGearboxBlockEntity> {
|
||||
public EngineGearboxBlock(Properties p_54120_) {
|
||||
super(p_54120_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state, Direction face) {
|
||||
return face == state.getValue(HORIZONTAL_FACING)||face.getAxis() ==state.getValue(HORIZONTAL_FACING).getClockWise().getAxis();
|
||||
}
|
||||
|
||||
@Override
|
||||
public VoxelShape getShape(BlockState state, BlockGetter blockGetter, BlockPos pos, CollisionContext context) {
|
||||
return TFMGShapes.ENGINE_GEARBOX.get(state.getValue(HORIZONTAL_FACING).getOpposite());
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockPlaceContext context) {
|
||||
return this.defaultBlockState()
|
||||
.setValue(HORIZONTAL_FACING, context.getHorizontalDirection());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Direction.Axis getRotationAxis(BlockState state) {
|
||||
return state.getValue(HORIZONTAL_FACING).getClockWise().getAxis();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<EngineGearboxBlockEntity> getBlockEntityClass() {
|
||||
return EngineGearboxBlockEntity.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockEntityType<? extends EngineGearboxBlockEntity> getBlockEntityType() {
|
||||
return TFMGBlockEntities.ENGINE_GEARBOX.get();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.drmangotea.tfmg.content.engines.engine_gearbox;
|
||||
|
||||
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
public class EngineGearboxBlockEntity extends KineticBlockEntity {
|
||||
public EngineGearboxBlockEntity(BlockEntityType<?> typeIn, BlockPos pos, BlockState state) {
|
||||
super(typeIn, pos, state);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.drmangotea.tfmg.content.engines.engine_gearbox;
|
||||
|
||||
import com.jozufozu.flywheel.api.MaterialManager;
|
||||
import com.simibubi.create.content.kinetics.base.ShaftInstance;
|
||||
import com.simibubi.create.content.kinetics.gearbox.GearboxBlockEntity;
|
||||
|
||||
public class EngineGearboxInstance extends ShaftInstance<GearboxBlockEntity> {
|
||||
public EngineGearboxInstance(MaterialManager materialManager, GearboxBlockEntity blockEntity) {
|
||||
super(materialManager, blockEntity);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.drmangotea.tfmg.content.engines.engine_gearbox;
|
||||
|
||||
import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
|
||||
import com.simibubi.create.content.kinetics.gearbox.GearboxBlockEntity;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
|
||||
|
||||
public class EngineGearboxRenderer extends KineticBlockEntityRenderer<EngineGearboxBlockEntity> {
|
||||
public EngineGearboxRenderer(BlockEntityRendererProvider.Context context) {
|
||||
super(context);
|
||||
}
|
||||
}
|
||||
@@ -54,6 +54,11 @@ import com.drmangotea.tfmg.content.electricity.utilities.transformer.Transformer
|
||||
import com.drmangotea.tfmg.content.electricity.utilities.transformer.TransformerRenderer;
|
||||
import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.VoltageObserverBlockEntity;
|
||||
import com.drmangotea.tfmg.content.engines.base.EngineInstance;
|
||||
import com.drmangotea.tfmg.content.engines.engine_controller.EngineControllerBlock;
|
||||
import com.drmangotea.tfmg.content.engines.engine_controller.EngineControllerBlockEntity;
|
||||
import com.drmangotea.tfmg.content.engines.engine_gearbox.EngineGearboxBlockEntity;
|
||||
import com.drmangotea.tfmg.content.engines.engine_gearbox.EngineGearboxInstance;
|
||||
import com.drmangotea.tfmg.content.engines.engine_gearbox.EngineGearboxRenderer;
|
||||
import com.drmangotea.tfmg.content.engines.regular_engine.RegularEngineBlockEntity;
|
||||
import com.drmangotea.tfmg.content.engines.regular_engine.RegularEngineRenderer;
|
||||
import com.drmangotea.tfmg.content.machinery.metallurgy.blast_furnace.BlastFurnaceHatchBlockEntity;
|
||||
@@ -275,7 +280,19 @@ public class TFMGBlockEntities {
|
||||
.renderer(() -> TFMGSlidingDoorRenderer::new)
|
||||
.validBlocks(TFMGBlocks.HEAVY_CASING_DOOR, TFMGBlocks.STEEL_CASING_DOOR, TFMGBlocks.HEAVY_PLATED_DOOR, TFMGBlocks.ALUMINUM_DOOR)
|
||||
.register();
|
||||
public static final BlockEntityEntry<EngineGearboxBlockEntity> ENGINE_GEARBOX = REGISTRATE
|
||||
.blockEntity("engine_gearbox", EngineGearboxBlockEntity::new)
|
||||
.instance(() -> ShaftInstance::new, false)
|
||||
.validBlocks(TFMGBlocks.ENGINE_GEARBOX)
|
||||
.renderer(() -> EngineGearboxRenderer::new)
|
||||
.register();
|
||||
|
||||
public static final BlockEntityEntry<EngineControllerBlockEntity> ENGINE_CONTROLLER = REGISTRATE
|
||||
.blockEntity("engine_controller", EngineControllerBlockEntity::new)
|
||||
// .instance(() -> ShaftInstance::new, false)
|
||||
.validBlocks(TFMGBlocks.ENGINE_CONTROLLER)
|
||||
//.renderer(() -> EngineGearboxRenderer::new)
|
||||
.register();
|
||||
public static final BlockEntityEntry<IndustrialMixerBlockEntity> INDUSTRIAL_MIXER = REGISTRATE
|
||||
.blockEntity("industrial_mixer", IndustrialMixerBlockEntity::new)
|
||||
.instance(() -> IndustrialMixerInstance::new, true)
|
||||
@@ -316,6 +333,8 @@ public class TFMGBlockEntities {
|
||||
.validBlocks(TFMGBlocks.BLAST_STOVE)
|
||||
.register();
|
||||
|
||||
|
||||
|
||||
public static final BlockEntityEntry<CreativeGeneratorBlockEntity> CREATIVE_GENERATOR = REGISTRATE
|
||||
.blockEntity("creative_generator", CreativeGeneratorBlockEntity::new)
|
||||
.validBlocks(TFMGBlocks.CREATIVE_GENERATOR)
|
||||
|
||||
@@ -64,6 +64,8 @@ import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.Voltag
|
||||
import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.VoltageObserverGenerator;
|
||||
import com.drmangotea.tfmg.content.engines.base.EngineCTBehavior;
|
||||
import com.drmangotea.tfmg.content.engines.base.EngineGenerator;
|
||||
import com.drmangotea.tfmg.content.engines.engine_controller.EngineControllerBlock;
|
||||
import com.drmangotea.tfmg.content.engines.engine_gearbox.EngineGearboxBlock;
|
||||
import com.drmangotea.tfmg.content.engines.regular_engine.RegularEngineBlock;
|
||||
import com.drmangotea.tfmg.content.items.CoalCokeBlockItem;
|
||||
import com.drmangotea.tfmg.content.items.weapons.explosives.napalm.NapalmBombBlock;
|
||||
@@ -169,6 +171,23 @@ public class TFMGBlocks {
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
public static final BlockEntry<EngineGearboxBlock> ENGINE_GEARBOX = REGISTRATE.block("engine_gearbox", EngineGearboxBlock::new)
|
||||
.initialProperties(() -> Blocks.IRON_BLOCK)
|
||||
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.blockstate(BlockStateGen.horizontalBlockProvider(true))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
|
||||
public static final BlockEntry<EngineControllerBlock> ENGINE_CONTROLLER = REGISTRATE.block("engine_controller", EngineControllerBlock::new)
|
||||
.initialProperties(() -> Blocks.IRON_BLOCK)
|
||||
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.blockstate(BlockStateGen.horizontalBlockProvider(true))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
//------------------TANKS------------------//
|
||||
public static final BlockEntry<AluminumTankBlock> ALUMINUM_FLUID_TANK =
|
||||
REGISTRATE.block("aluminum_fluid_tank", AluminumTankBlock::regular)
|
||||
|
||||
@@ -9,6 +9,9 @@ import com.drmangotea.tfmg.content.electricity.base.UpdateInFrontPacket;
|
||||
import com.drmangotea.tfmg.content.electricity.connection.cables.CablePlacePacket;
|
||||
import com.drmangotea.tfmg.content.electricity.connection.cables.CableRemovalPacket;
|
||||
import com.drmangotea.tfmg.content.electricity.electrians_wrench.ElectriciansWrenchPacket;
|
||||
import com.drmangotea.tfmg.content.engines.engine_controller.packets.EngineControllerBindPacket;
|
||||
import com.drmangotea.tfmg.content.engines.engine_controller.packets.EngineControllerInputPacket;
|
||||
import com.drmangotea.tfmg.content.engines.engine_controller.packets.EngineControllerStopControllerPacket;
|
||||
import com.drmangotea.tfmg.content.items.weapons.advanced_potato_cannon.AdvancedPotatoCannonPacket;
|
||||
import com.drmangotea.tfmg.content.items.weapons.quad_potato_cannon.QuadPotatoCannonPacket;
|
||||
import com.drmangotea.tfmg.content.machinery.metallurgy.coke_oven.CokeOvenPacket;
|
||||
@@ -44,6 +47,10 @@ public enum TFMGPackets {
|
||||
CABLE_PACKET(CableRemovalPacket.class, CableRemovalPacket::new, PLAY_TO_CLIENT),
|
||||
CABLE_PLACE_PACKET(CablePlacePacket.class, CablePlacePacket::new, PLAY_TO_CLIENT),
|
||||
ELECTRICIANS_WRENCH_PACKET(ElectriciansWrenchPacket.class, ElectriciansWrenchPacket::new, PLAY_TO_SERVER),
|
||||
ENGINE_CONTROLLER_INPUT(EngineControllerInputPacket.class, EngineControllerInputPacket::new, PLAY_TO_SERVER),
|
||||
ENGINE_CONTROLLER_BIND(EngineControllerBindPacket.class, EngineControllerBindPacket::new, PLAY_TO_SERVER),
|
||||
ENGINE_CONTROLLER_USE_LECTERN(EngineControllerStopControllerPacket.class, EngineControllerStopControllerPacket::new,
|
||||
PLAY_TO_SERVER);
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -61,3 +61,4 @@ description='''${mod_description}'''
|
||||
versionRange="${minecraft_version_range}"
|
||||
ordering="NONE"
|
||||
side="BOTH"
|
||||
|
||||
|
||||
@@ -0,0 +1,346 @@
|
||||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"parent": "block/block",
|
||||
"texture_size": [32, 32],
|
||||
"textures": {
|
||||
"0": "tfmg:block/engine_controller",
|
||||
"1": "tfmg:block/shaft",
|
||||
"2": "tfmg:block/engines/engine_controller_parts",
|
||||
"particle": "tfmg:block/engine_controller"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [6, 9, 2],
|
||||
"to": [10, 13, 10],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [7, 10, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 4, 4], "texture": "#1"},
|
||||
"east": {"uv": [6, 0, 10, 8], "rotation": 90, "texture": "#1"},
|
||||
"south": {"uv": [0, 0, 4, 4], "texture": "#1"},
|
||||
"west": {"uv": [6, 0, 10, 8], "rotation": 90, "texture": "#1"},
|
||||
"up": {"uv": [6, 0, 10, 8], "texture": "#1"},
|
||||
"down": {"uv": [6, 0, 10, 8], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [5, 8, 1],
|
||||
"to": [11, 14, 3],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [3, 10, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [3, 0, 9, 6], "texture": "#2"},
|
||||
"east": {"uv": [3, 7, 9, 9], "rotation": 90, "texture": "#2"},
|
||||
"south": {"uv": [3, 0, 9, 6], "texture": "#2"},
|
||||
"west": {"uv": [3, 9, 9, 7], "rotation": 90, "texture": "#2"},
|
||||
"up": {"uv": [3, 7, 9, 9], "texture": "#2"},
|
||||
"down": {"uv": [3, 7, 9, 9], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [11, 8, 1],
|
||||
"to": [15, 10, 3],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [13, 4, 9, 6], "texture": "#2"},
|
||||
"east": {"uv": [0, 10, 2, 12], "texture": "#2"},
|
||||
"south": {"uv": [9, 4, 13, 6], "texture": "#2"},
|
||||
"up": {"uv": [0, 11, 2, 15], "rotation": 90, "texture": "#2"},
|
||||
"down": {"uv": [0, 11, 2, 15], "rotation": 90, "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [1, 10, 1],
|
||||
"to": [3, 14, 3],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [-2, 10, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [11, 0, 13, 4], "texture": "#2"},
|
||||
"east": {"uv": [11, 0, 13, 4], "texture": "#2"},
|
||||
"south": {"uv": [11, 0, 13, 4], "texture": "#2"},
|
||||
"west": {"uv": [0, 12, 2, 16], "texture": "#2"},
|
||||
"up": {"uv": [0, 8, 2, 10], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [13, 10, 1],
|
||||
"to": [15, 14, 3],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [7, 10, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [11, 0, 13, 4], "texture": "#2"},
|
||||
"east": {"uv": [0, 10, 2, 14], "texture": "#2"},
|
||||
"south": {"uv": [0, 10, 2, 14], "texture": "#2"},
|
||||
"west": {"uv": [11, 0, 13, 4], "texture": "#2"},
|
||||
"up": {"uv": [0, 8, 2, 10], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [1, 8, 1],
|
||||
"to": [5, 10, 3],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [-3, 10, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 4, 13, 6], "texture": "#2"},
|
||||
"south": {"uv": [13, 4, 9, 6], "texture": "#2"},
|
||||
"west": {"uv": [0, 12, 2, 14], "texture": "#2"},
|
||||
"up": {"uv": [0, 12, 2, 16], "rotation": 90, "texture": "#2"},
|
||||
"down": {"uv": [0, 15, 2, 11], "rotation": 90, "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [4, 0, 5],
|
||||
"to": [15, 5, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [5, 0, 4]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 5, 5.5, 7.5], "texture": "#0"},
|
||||
"east": {"uv": [0, 5, 5.5, 7.5], "texture": "#0"},
|
||||
"south": {"uv": [7, 0, 12.5, 2.5], "texture": "#0"},
|
||||
"up": {"uv": [14, 10.5, 8.5, 16], "texture": "#0"},
|
||||
"down": {"uv": [14, 10.5, 8.5, 16], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 0, 0],
|
||||
"to": [4, 5, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [-3, 0, 4]},
|
||||
"faces": {
|
||||
"north": {"uv": [13.5, 0, 15.5, 2.5], "texture": "#0"},
|
||||
"east": {"uv": [6, 8, 14, 10.5], "texture": "#0"},
|
||||
"south": {"uv": [5, 0, 7, 2.5], "texture": "#0"},
|
||||
"west": {"uv": [6, 8, 14, 10.5], "texture": "#0"},
|
||||
"up": {"uv": [16, 8, 14, 16], "texture": "#0"},
|
||||
"down": {"uv": [16, 16, 14, 8], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [2, 5, 5],
|
||||
"to": [14, 12, 14],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [5, 5, 4]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 12, 6, 15.5], "texture": "#0"},
|
||||
"east": {"uv": [11.5, 4.5, 16, 8], "texture": "#0"},
|
||||
"south": {"uv": [0, 12, 6, 15.5], "texture": "#0"},
|
||||
"west": {"uv": [11.5, 4.5, 16, 8], "texture": "#0"},
|
||||
"up": {"uv": [0, 7.5, 6, 12], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [3, 14, 9],
|
||||
"to": [13, 19, 13],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [5, 12, 3]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 5, 3.5], "texture": "#0"},
|
||||
"east": {"uv": [5, 2.5, 7, 5], "texture": "#0"},
|
||||
"south": {"uv": [0, 2.5, 5, 5], "texture": "#0"},
|
||||
"west": {"uv": [5.5, 2.5, 7.5, 5], "texture": "#0"},
|
||||
"up": {"uv": [0, 3, 5, 5], "texture": "#0"},
|
||||
"down": {"uv": [0, 0, 10, 4], "texture": "#missing"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [3, 14, 8],
|
||||
"to": [4, 19, 9],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [5, 12, 3]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 0.5, 2.5], "texture": "#0"},
|
||||
"east": {"uv": [4.5, 0, 5, 2.5], "texture": "#0"},
|
||||
"south": {"uv": [0, 0, 1, 7], "texture": "#0"},
|
||||
"west": {"uv": [5, 2.5, 5.5, 5], "texture": "#0"},
|
||||
"up": {"uv": [0, 2.5, 0.5, 3], "texture": "#0"},
|
||||
"down": {"uv": [0, 0, 1, 1], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [12, 14, 8],
|
||||
"to": [13, 19, 9],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [14, 12, 3]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 0.5, 2.5], "texture": "#0"},
|
||||
"east": {"uv": [7, 2.5, 7.5, 5], "texture": "#0"},
|
||||
"south": {"uv": [0, 0, 1, 7], "texture": "#0"},
|
||||
"west": {"uv": [0, 0, 0.5, 2.5], "texture": "#0"},
|
||||
"up": {"uv": [4.5, 2.5, 5, 3], "texture": "#0"},
|
||||
"down": {"uv": [0, 0, 1, 1], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [4, 18, 8],
|
||||
"to": [12, 19, 9],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [13, 12, 3]},
|
||||
"faces": {
|
||||
"north": {"uv": [0.5, 0, 4.5, 0.5], "texture": "#0"},
|
||||
"east": {"uv": [0, 0, 1, 1], "texture": "#0"},
|
||||
"south": {"uv": [0, 0, 8, 1], "texture": "#0"},
|
||||
"west": {"uv": [0, 0, 1, 1], "texture": "#0"},
|
||||
"up": {"uv": [0.5, 2.5, 4.5, 3], "texture": "#0"},
|
||||
"down": {"uv": [0.5, 0, 4.5, 0.5], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [7, 15, 8],
|
||||
"to": [9, 18, 9],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [13, 12, 3]},
|
||||
"faces": {
|
||||
"north": {"uv": [2, 0.5, 3, 2], "texture": "#0"},
|
||||
"east": {"uv": [2, 0.5, 2.5, 2], "texture": "#0"},
|
||||
"south": {"uv": [0, 0, 2, 3], "texture": "#missing"},
|
||||
"west": {"uv": [2.5, 0.5, 3, 2], "texture": "#0"},
|
||||
"up": {"uv": [0, 0, 2, 1], "texture": "#missing"},
|
||||
"down": {"uv": [0, 0, 2, 1], "texture": "#missing"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [4, 14, 8],
|
||||
"to": [12, 15, 9],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [13, 12, 3]},
|
||||
"faces": {
|
||||
"north": {"uv": [0.5, 2, 4.5, 2.5], "texture": "#0"},
|
||||
"east": {"uv": [0, 0, 1, 1], "texture": "#missing"},
|
||||
"south": {"uv": [0, 0, 8, 1], "texture": "#missing"},
|
||||
"west": {"uv": [0, 0, 1, 1], "texture": "#missing"},
|
||||
"up": {"uv": [0.5, 2, 4.5, 2.5], "texture": "#0"},
|
||||
"down": {"uv": [0, 0, 8, 1], "texture": "#missing"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [5.5, 0, 3],
|
||||
"to": [7.5, 4, 3],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [5, 1, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 9, 12, 13], "texture": "#2"},
|
||||
"east": {"uv": [0, 0, 0, 4], "texture": "#2"},
|
||||
"south": {"uv": [0, 0, 2, 4], "texture": "#2"},
|
||||
"west": {"uv": [0, 0, 0, 4], "texture": "#2"},
|
||||
"up": {"uv": [0, 0, 2, 0], "texture": "#2"},
|
||||
"down": {"uv": [0, 0, 2, 0], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [8, 0, 3],
|
||||
"to": [10, 4, 3],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [5, 1, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 9, 12, 13], "texture": "#2"},
|
||||
"east": {"uv": [0, 0, 0, 4], "texture": "#2"},
|
||||
"south": {"uv": [0, 0, 2, 4], "texture": "#2"},
|
||||
"west": {"uv": [0, 0, 0, 4], "texture": "#2"},
|
||||
"up": {"uv": [0, 0, 2, 0], "texture": "#2"},
|
||||
"down": {"uv": [0, 0, 2, 0], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [10.5, 0, 3],
|
||||
"to": [12.5, 4, 3],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [5, 1, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 9, 12, 13], "texture": "#2"},
|
||||
"east": {"uv": [0, 0, 0, 4], "texture": "#2"},
|
||||
"south": {"uv": [0, 0, 2, 4], "texture": "#2"},
|
||||
"west": {"uv": [0, 0, 0, 4], "texture": "#2"},
|
||||
"up": {"uv": [0, 0, 2, 0], "texture": "#2"},
|
||||
"down": {"uv": [0, 0, 2, 0], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [6.5, 1, 3],
|
||||
"to": [6.5, 3, 7],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [5, 1, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 0, 2], "texture": "#2"},
|
||||
"east": {"uv": [5, 10, 9, 12], "texture": "#2"},
|
||||
"south": {"uv": [0, 0, 0, 2], "texture": "#2"},
|
||||
"west": {"uv": [5, 10, 9, 12], "texture": "#2"},
|
||||
"up": {"uv": [0, 0, 0, 4], "texture": "#2"},
|
||||
"down": {"uv": [0, 0, 0, 4], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [9, 1, 3],
|
||||
"to": [9, 3, 7],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [5, 1, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 0, 2], "texture": "#2"},
|
||||
"east": {"uv": [5, 10, 9, 12], "texture": "#2"},
|
||||
"south": {"uv": [0, 0, 0, 2], "texture": "#2"},
|
||||
"west": {"uv": [5, 10, 9, 12], "texture": "#2"},
|
||||
"up": {"uv": [0, 0, 0, 4], "texture": "#2"},
|
||||
"down": {"uv": [0, 0, 0, 4], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [11.5, 1, 3],
|
||||
"to": [11.5, 3, 7],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [5, 1, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 0, 2], "texture": "#2"},
|
||||
"east": {"uv": [5, 10, 9, 12], "texture": "#2"},
|
||||
"south": {"uv": [0, 0, 0, 2], "texture": "#2"},
|
||||
"west": {"uv": [5, 10, 9, 12], "texture": "#2"},
|
||||
"up": {"uv": [0, 0, 0, 4], "texture": "#2"},
|
||||
"down": {"uv": [0, 0, 0, 4], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [-2, 2, 1],
|
||||
"to": [0, 4, 3],
|
||||
"rotation": {"angle": -22.5, "axis": "x", "origin": [-1, 3, 2]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 11, 12, 13], "texture": "#2"},
|
||||
"east": {"uv": [0, 0, 0, 0], "texture": "#2"},
|
||||
"south": {"uv": [10, 11, 12, 13], "texture": "#2"},
|
||||
"west": {"uv": [10, 11, 12, 13], "texture": "#2"},
|
||||
"up": {"uv": [10, 11, 12, 13], "texture": "#2"},
|
||||
"down": {"uv": [10, 11, 12, 13], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [-2, 4, 1],
|
||||
"to": [-2, 10, 3],
|
||||
"rotation": {"angle": -22.5, "axis": "x", "origin": [-1, 3, 2]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 0, 6], "texture": "#missing"},
|
||||
"east": {"uv": [2, 12, 8, 10], "rotation": 90, "texture": "#2"},
|
||||
"south": {"uv": [0, 0, 0, 6], "texture": "#missing"},
|
||||
"west": {"uv": [2, 10, 8, 12], "rotation": 90, "texture": "#2"},
|
||||
"up": {"uv": [0, 0, 0, 2], "texture": "#missing"},
|
||||
"down": {"uv": [0, 0, 0, 2], "texture": "#missing"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [-3, 10, 1],
|
||||
"to": [-1, 12, 3],
|
||||
"rotation": {"angle": -22.5, "axis": "x", "origin": [-1, 3, 2]},
|
||||
"faces": {
|
||||
"north": {"uv": [4, 13, 6, 15], "texture": "#2"},
|
||||
"east": {"uv": [4, 13, 6, 15], "texture": "#2"},
|
||||
"south": {"uv": [4, 13, 6, 15], "texture": "#2"},
|
||||
"west": {"uv": [4, 13, 6, 15], "texture": "#2"},
|
||||
"up": {"uv": [4, 13, 6, 15], "texture": "#2"},
|
||||
"down": {"uv": [4, 13, 6, 15], "texture": "#2"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {},
|
||||
"groups": [
|
||||
{
|
||||
"name": "steering_wheel",
|
||||
"origin": [-3, 10, 4],
|
||||
"color": 0,
|
||||
"children": [0, 1, 2, 3, 4, 5]
|
||||
},
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,346 @@
|
||||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"parent": "block/block",
|
||||
"texture_size": [32, 32],
|
||||
"textures": {
|
||||
"0": "tfmg:block/engine_controller",
|
||||
"1": "tfmg:block/shaft",
|
||||
"2": "tfmg:block/engines/engine_controller_parts",
|
||||
"particle": "tfmg:block/engine_controller"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [6, 9, 2],
|
||||
"to": [10, 13, 10],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [7, 10, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 4, 4], "texture": "#1"},
|
||||
"east": {"uv": [6, 0, 10, 8], "rotation": 90, "texture": "#1"},
|
||||
"south": {"uv": [0, 0, 4, 4], "texture": "#1"},
|
||||
"west": {"uv": [6, 0, 10, 8], "rotation": 90, "texture": "#1"},
|
||||
"up": {"uv": [6, 0, 10, 8], "texture": "#1"},
|
||||
"down": {"uv": [6, 0, 10, 8], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [5, 8, 1],
|
||||
"to": [11, 14, 3],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [3, 10, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [3, 0, 9, 6], "texture": "#2"},
|
||||
"east": {"uv": [3, 7, 9, 9], "rotation": 90, "texture": "#2"},
|
||||
"south": {"uv": [3, 0, 9, 6], "texture": "#2"},
|
||||
"west": {"uv": [3, 9, 9, 7], "rotation": 90, "texture": "#2"},
|
||||
"up": {"uv": [3, 7, 9, 9], "texture": "#2"},
|
||||
"down": {"uv": [3, 7, 9, 9], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [11, 8, 1],
|
||||
"to": [15, 10, 3],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [13, 4, 9, 6], "texture": "#2"},
|
||||
"east": {"uv": [0, 10, 2, 12], "texture": "#2"},
|
||||
"south": {"uv": [9, 4, 13, 6], "texture": "#2"},
|
||||
"up": {"uv": [0, 11, 2, 15], "rotation": 90, "texture": "#2"},
|
||||
"down": {"uv": [0, 11, 2, 15], "rotation": 90, "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [1, 10, 1],
|
||||
"to": [3, 14, 3],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [-2, 10, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [11, 0, 13, 4], "texture": "#2"},
|
||||
"east": {"uv": [11, 0, 13, 4], "texture": "#2"},
|
||||
"south": {"uv": [11, 0, 13, 4], "texture": "#2"},
|
||||
"west": {"uv": [0, 12, 2, 16], "texture": "#2"},
|
||||
"up": {"uv": [0, 8, 2, 10], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [13, 10, 1],
|
||||
"to": [15, 14, 3],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [7, 10, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [11, 0, 13, 4], "texture": "#2"},
|
||||
"east": {"uv": [0, 10, 2, 14], "texture": "#2"},
|
||||
"south": {"uv": [0, 10, 2, 14], "texture": "#2"},
|
||||
"west": {"uv": [11, 0, 13, 4], "texture": "#2"},
|
||||
"up": {"uv": [0, 8, 2, 10], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [1, 8, 1],
|
||||
"to": [5, 10, 3],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [-3, 10, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [9, 4, 13, 6], "texture": "#2"},
|
||||
"south": {"uv": [13, 4, 9, 6], "texture": "#2"},
|
||||
"west": {"uv": [0, 12, 2, 14], "texture": "#2"},
|
||||
"up": {"uv": [0, 12, 2, 16], "rotation": 90, "texture": "#2"},
|
||||
"down": {"uv": [0, 15, 2, 11], "rotation": 90, "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [4, 0, 5],
|
||||
"to": [15, 5, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [5, 0, 4]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 5, 5.5, 7.5], "texture": "#0"},
|
||||
"east": {"uv": [0, 5, 5.5, 7.5], "texture": "#0"},
|
||||
"south": {"uv": [7, 0, 12.5, 2.5], "texture": "#0"},
|
||||
"up": {"uv": [14, 10.5, 8.5, 16], "texture": "#0"},
|
||||
"down": {"uv": [14, 10.5, 8.5, 16], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 0, 0],
|
||||
"to": [4, 5, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [-3, 0, 4]},
|
||||
"faces": {
|
||||
"north": {"uv": [13.5, 0, 15.5, 2.5], "texture": "#0"},
|
||||
"east": {"uv": [6, 8, 14, 10.5], "texture": "#0"},
|
||||
"south": {"uv": [5, 0, 7, 2.5], "texture": "#0"},
|
||||
"west": {"uv": [6, 8, 14, 10.5], "texture": "#0"},
|
||||
"up": {"uv": [16, 8, 14, 16], "texture": "#0"},
|
||||
"down": {"uv": [16, 16, 14, 8], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [2, 5, 5],
|
||||
"to": [14, 12, 14],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [5, 5, 4]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 12, 6, 15.5], "texture": "#0"},
|
||||
"east": {"uv": [11.5, 4.5, 16, 8], "texture": "#0"},
|
||||
"south": {"uv": [0, 12, 6, 15.5], "texture": "#0"},
|
||||
"west": {"uv": [11.5, 4.5, 16, 8], "texture": "#0"},
|
||||
"up": {"uv": [0, 7.5, 6, 12], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [3, 14, 9],
|
||||
"to": [13, 19, 13],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [5, 12, 3]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 5, 3.5], "texture": "#0"},
|
||||
"east": {"uv": [5, 2.5, 7, 5], "texture": "#0"},
|
||||
"south": {"uv": [0, 2.5, 5, 5], "texture": "#0"},
|
||||
"west": {"uv": [5.5, 2.5, 7.5, 5], "texture": "#0"},
|
||||
"up": {"uv": [0, 3, 5, 5], "texture": "#0"},
|
||||
"down": {"uv": [0, 0, 10, 4], "texture": "#missing"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [3, 14, 8],
|
||||
"to": [4, 19, 9],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [5, 12, 3]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 0.5, 2.5], "texture": "#0"},
|
||||
"east": {"uv": [4.5, 0, 5, 2.5], "texture": "#0"},
|
||||
"south": {"uv": [0, 0, 1, 7], "texture": "#0"},
|
||||
"west": {"uv": [5, 2.5, 5.5, 5], "texture": "#0"},
|
||||
"up": {"uv": [0, 2.5, 0.5, 3], "texture": "#0"},
|
||||
"down": {"uv": [0, 0, 1, 1], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [12, 14, 8],
|
||||
"to": [13, 19, 9],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [14, 12, 3]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 0.5, 2.5], "texture": "#0"},
|
||||
"east": {"uv": [7, 2.5, 7.5, 5], "texture": "#0"},
|
||||
"south": {"uv": [0, 0, 1, 7], "texture": "#0"},
|
||||
"west": {"uv": [0, 0, 0.5, 2.5], "texture": "#0"},
|
||||
"up": {"uv": [4.5, 2.5, 5, 3], "texture": "#0"},
|
||||
"down": {"uv": [0, 0, 1, 1], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [4, 18, 8],
|
||||
"to": [12, 19, 9],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [13, 12, 3]},
|
||||
"faces": {
|
||||
"north": {"uv": [0.5, 0, 4.5, 0.5], "texture": "#0"},
|
||||
"east": {"uv": [0, 0, 1, 1], "texture": "#0"},
|
||||
"south": {"uv": [0, 0, 8, 1], "texture": "#0"},
|
||||
"west": {"uv": [0, 0, 1, 1], "texture": "#0"},
|
||||
"up": {"uv": [0.5, 2.5, 4.5, 3], "texture": "#0"},
|
||||
"down": {"uv": [0.5, 0, 4.5, 0.5], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [7, 15, 8],
|
||||
"to": [9, 18, 9],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [13, 12, 3]},
|
||||
"faces": {
|
||||
"north": {"uv": [2, 0.5, 3, 2], "texture": "#0"},
|
||||
"east": {"uv": [2, 0.5, 2.5, 2], "texture": "#0"},
|
||||
"south": {"uv": [0, 0, 2, 3], "texture": "#missing"},
|
||||
"west": {"uv": [2.5, 0.5, 3, 2], "texture": "#0"},
|
||||
"up": {"uv": [0, 0, 2, 1], "texture": "#missing"},
|
||||
"down": {"uv": [0, 0, 2, 1], "texture": "#missing"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [4, 14, 8],
|
||||
"to": [12, 15, 9],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [13, 12, 3]},
|
||||
"faces": {
|
||||
"north": {"uv": [0.5, 2, 4.5, 2.5], "texture": "#0"},
|
||||
"east": {"uv": [0, 0, 1, 1], "texture": "#missing"},
|
||||
"south": {"uv": [0, 0, 8, 1], "texture": "#missing"},
|
||||
"west": {"uv": [0, 0, 1, 1], "texture": "#missing"},
|
||||
"up": {"uv": [0.5, 2, 4.5, 2.5], "texture": "#0"},
|
||||
"down": {"uv": [0, 0, 8, 1], "texture": "#missing"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [5.5, 0, 3],
|
||||
"to": [7.5, 4, 3],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [5, 1, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 9, 12, 13], "texture": "#2"},
|
||||
"east": {"uv": [0, 0, 0, 4], "texture": "#2"},
|
||||
"south": {"uv": [0, 0, 2, 4], "texture": "#2"},
|
||||
"west": {"uv": [0, 0, 0, 4], "texture": "#2"},
|
||||
"up": {"uv": [0, 0, 2, 0], "texture": "#2"},
|
||||
"down": {"uv": [0, 0, 2, 0], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [8, 0, 3],
|
||||
"to": [10, 4, 3],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [5, 1, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 9, 12, 13], "texture": "#2"},
|
||||
"east": {"uv": [0, 0, 0, 4], "texture": "#2"},
|
||||
"south": {"uv": [0, 0, 2, 4], "texture": "#2"},
|
||||
"west": {"uv": [0, 0, 0, 4], "texture": "#2"},
|
||||
"up": {"uv": [0, 0, 2, 0], "texture": "#2"},
|
||||
"down": {"uv": [0, 0, 2, 0], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [10.5, 0, 3],
|
||||
"to": [12.5, 4, 3],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [5, 1, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 9, 12, 13], "texture": "#2"},
|
||||
"east": {"uv": [0, 0, 0, 4], "texture": "#2"},
|
||||
"south": {"uv": [0, 0, 2, 4], "texture": "#2"},
|
||||
"west": {"uv": [0, 0, 0, 4], "texture": "#2"},
|
||||
"up": {"uv": [0, 0, 2, 0], "texture": "#2"},
|
||||
"down": {"uv": [0, 0, 2, 0], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [6.5, 1, 3],
|
||||
"to": [6.5, 3, 7],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [5, 1, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 0, 2], "texture": "#2"},
|
||||
"east": {"uv": [5, 10, 9, 12], "texture": "#2"},
|
||||
"south": {"uv": [0, 0, 0, 2], "texture": "#2"},
|
||||
"west": {"uv": [5, 10, 9, 12], "texture": "#2"},
|
||||
"up": {"uv": [0, 0, 0, 4], "texture": "#2"},
|
||||
"down": {"uv": [0, 0, 0, 4], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [9, 1, 3],
|
||||
"to": [9, 3, 7],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [5, 1, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 0, 2], "texture": "#2"},
|
||||
"east": {"uv": [5, 10, 9, 12], "texture": "#2"},
|
||||
"south": {"uv": [0, 0, 0, 2], "texture": "#2"},
|
||||
"west": {"uv": [5, 10, 9, 12], "texture": "#2"},
|
||||
"up": {"uv": [0, 0, 0, 4], "texture": "#2"},
|
||||
"down": {"uv": [0, 0, 0, 4], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [11.5, 1, 3],
|
||||
"to": [11.5, 3, 7],
|
||||
"rotation": {"angle": 22.5, "axis": "x", "origin": [5, 1, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 0, 2], "texture": "#2"},
|
||||
"east": {"uv": [5, 10, 9, 12], "texture": "#2"},
|
||||
"south": {"uv": [0, 0, 0, 2], "texture": "#2"},
|
||||
"west": {"uv": [5, 10, 9, 12], "texture": "#2"},
|
||||
"up": {"uv": [0, 0, 0, 4], "texture": "#2"},
|
||||
"down": {"uv": [0, 0, 0, 4], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [-2, 2, 1],
|
||||
"to": [0, 4, 3],
|
||||
"rotation": {"angle": -22.5, "axis": "x", "origin": [-1, 3, 2]},
|
||||
"faces": {
|
||||
"north": {"uv": [10, 11, 12, 13], "texture": "#2"},
|
||||
"east": {"uv": [0, 0, 0, 0], "texture": "#2"},
|
||||
"south": {"uv": [10, 11, 12, 13], "texture": "#2"},
|
||||
"west": {"uv": [10, 11, 12, 13], "texture": "#2"},
|
||||
"up": {"uv": [10, 11, 12, 13], "texture": "#2"},
|
||||
"down": {"uv": [10, 11, 12, 13], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [-2, 4, 1],
|
||||
"to": [-2, 10, 3],
|
||||
"rotation": {"angle": -22.5, "axis": "x", "origin": [-1, 3, 2]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 0, 6], "texture": "#missing"},
|
||||
"east": {"uv": [2, 12, 8, 10], "rotation": 90, "texture": "#2"},
|
||||
"south": {"uv": [0, 0, 0, 6], "texture": "#missing"},
|
||||
"west": {"uv": [2, 10, 8, 12], "rotation": 90, "texture": "#2"},
|
||||
"up": {"uv": [0, 0, 0, 2], "texture": "#missing"},
|
||||
"down": {"uv": [0, 0, 0, 2], "texture": "#missing"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [-3, 10, 1],
|
||||
"to": [-1, 12, 3],
|
||||
"rotation": {"angle": -22.5, "axis": "x", "origin": [-1, 3, 2]},
|
||||
"faces": {
|
||||
"north": {"uv": [4, 13, 6, 15], "texture": "#2"},
|
||||
"east": {"uv": [4, 13, 6, 15], "texture": "#2"},
|
||||
"south": {"uv": [4, 13, 6, 15], "texture": "#2"},
|
||||
"west": {"uv": [4, 13, 6, 15], "texture": "#2"},
|
||||
"up": {"uv": [4, 13, 6, 15], "texture": "#2"},
|
||||
"down": {"uv": [4, 13, 6, 15], "texture": "#2"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {},
|
||||
"groups": [
|
||||
{
|
||||
"name": "steering_wheel",
|
||||
"origin": [-3, 10, 4],
|
||||
"color": 0,
|
||||
"children": [0, 1, 2, 3, 4, 5]
|
||||
},
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,191 @@
|
||||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"1": "tfmg:block/engines/engine_bottom",
|
||||
"2": "tfmg:block/engines/engine_front",
|
||||
"3": "tfmg:block/engines/engine_side",
|
||||
"4": "tfmg:block/engines/engine_top",
|
||||
"6": "tfmg:block/shaft",
|
||||
"7": "tfmg:block/engines/engine_gearbox",
|
||||
"8": "tfmg:block/engines/engine_gearbox_front",
|
||||
"particle": "tfmg:block/engines/engine_back"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [3, 0, -1],
|
||||
"to": [13, 12, 11],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [10, 0, -1]},
|
||||
"faces": {
|
||||
"north": {"uv": [3, 4, 13, 16], "texture": "#2"},
|
||||
"east": {"uv": [12, 3, 0, 15], "texture": "#3"},
|
||||
"south": {"uv": [3, 4, 13, 16], "texture": "#4"},
|
||||
"west": {"uv": [0, 3, 12, 15], "texture": "#3"},
|
||||
"up": {"uv": [3, 0, 13, 12], "texture": "#4"},
|
||||
"down": {"uv": [3, 4, 13, 16], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 5, 11],
|
||||
"to": [3, 13, 13],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 13]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 8, 3, 16], "texture": "#4"},
|
||||
"east": {"uv": [0, 0, 2, 8], "texture": "#4"},
|
||||
"south": {"uv": [13, 5, 16, 13], "texture": "#4"},
|
||||
"west": {"uv": [8, 6, 10, 14], "texture": "#7"},
|
||||
"up": {"uv": [8, 5, 10, 8], "rotation": 90, "texture": "#7"},
|
||||
"down": {"uv": [0, 0, 3, 2], "texture": "#4"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [3, 0, 11],
|
||||
"to": [13, 11, 15],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [10, 0, 3]},
|
||||
"faces": {
|
||||
"east": {"uv": [5, 4, 16, 0], "rotation": 90, "texture": "#4"},
|
||||
"south": {"uv": [3, 5, 13, 16], "texture": "#8"},
|
||||
"west": {"uv": [5, 0, 16, 4], "rotation": 90, "texture": "#4"},
|
||||
"up": {"uv": [3, 12, 13, 16], "texture": "#4"},
|
||||
"down": {"uv": [3, 0, 13, 4], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [13, 0, -1],
|
||||
"to": [16, 5, 15],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [13, 0, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 11, 3, 16], "texture": "#2"},
|
||||
"east": {"uv": [0, 11, 16, 16], "texture": "#3"},
|
||||
"south": {"uv": [13, 11, 16, 16], "texture": "#2"},
|
||||
"west": {"uv": [0, 0, 0, 0], "texture": "#2"},
|
||||
"up": {"uv": [13, 0, 16, 16], "texture": "#4"},
|
||||
"down": {"uv": [13, 0, 16, 16], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 11, 5],
|
||||
"to": [3, 13, 11],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 13]},
|
||||
"faces": {
|
||||
"east": {"uv": [5, 0, 11, 2], "texture": "#4"},
|
||||
"west": {"uv": [2, 6, 8, 8], "texture": "#7"},
|
||||
"up": {"uv": [2, 5, 8, 8], "rotation": 90, "texture": "#7"},
|
||||
"down": {"uv": [13, 5, 16, 11], "texture": "#4"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 5, -1],
|
||||
"to": [3, 7, 5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 2, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [3, 9, 0, 11], "texture": "#2"},
|
||||
"east": {"uv": [0, 0, 0, 0], "texture": "#2"},
|
||||
"south": {"uv": [13, 11, 16, 13], "texture": "#2"},
|
||||
"west": {"uv": [14, 14, 8, 16], "texture": "#7"},
|
||||
"up": {"uv": [0, 0, 3, 6], "texture": "#4"},
|
||||
"down": {"uv": [0, 0, 0, 0], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 7, 3],
|
||||
"to": [3, 13, 5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [13, 5, 16, 11], "texture": "#4"},
|
||||
"east": {"uv": [0, 0, 2, 6], "texture": "#4"},
|
||||
"south": {"uv": [13, 9, 16, 15], "texture": "#4"},
|
||||
"west": {"uv": [0, 6, 2, 12], "texture": "#7"},
|
||||
"up": {"uv": [0, 5, 2, 8], "rotation": 90, "texture": "#7"},
|
||||
"down": {"uv": [0, 0, 3, 2], "texture": "#4"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 0, -1],
|
||||
"to": [3, 5, 15],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [13, 11, 16, 16], "texture": "#2"},
|
||||
"east": {"uv": [0, 0, 0, 0], "texture": "#2"},
|
||||
"south": {"uv": [0, 9, 3, 14], "texture": "#4"},
|
||||
"west": {"uv": [0, 11, 16, 16], "texture": "#3"},
|
||||
"up": {"uv": [0, 0, 3, 16], "texture": "#4"},
|
||||
"down": {"uv": [0, 0, 3, 16], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [13, 5, -1],
|
||||
"to": [16, 7, 5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [13, 2, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 9, 3, 11], "texture": "#2"},
|
||||
"east": {"uv": [8, 14, 14, 16], "texture": "#7"},
|
||||
"south": {"uv": [13, 10, 16, 12], "texture": "#2"},
|
||||
"west": {"uv": [0, 0, 0, 0], "texture": "#2"},
|
||||
"up": {"uv": [0, 0, 3, 6], "texture": "#4"},
|
||||
"down": {"uv": [0, 0, 0, 0], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [13, 7, 3],
|
||||
"to": [16, 13, 5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [13, 4, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 5, 3, 11], "texture": "#4"},
|
||||
"east": {"uv": [8, 6, 10, 12], "texture": "#7"},
|
||||
"south": {"uv": [13, 9, 16, 15], "texture": "#4"},
|
||||
"west": {"uv": [0, 0, 2, 6], "texture": "#4"},
|
||||
"up": {"uv": [0, 5, 2, 8], "rotation": 90, "texture": "#7"},
|
||||
"down": {"uv": [0, 0, 0, 0], "texture": "#4"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [13, 5, 11],
|
||||
"to": [16, 13, 13],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [13, 4, 13]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 8, 3, 16], "texture": "#4"},
|
||||
"east": {"uv": [0, 6, 2, 14], "texture": "#7"},
|
||||
"south": {"uv": [0, 5, 3, 13], "texture": "#4"},
|
||||
"west": {"uv": [0, 0, 2, 8], "texture": "#4"},
|
||||
"up": {"uv": [8, 5, 10, 8], "rotation": 90, "texture": "#7"},
|
||||
"down": {"uv": [0, 0, 0, 0], "texture": "#4"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [13, 11, 5],
|
||||
"to": [16, 13, 11],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [13, 4, 13]},
|
||||
"faces": {
|
||||
"east": {"uv": [2, 6, 8, 8], "texture": "#7"},
|
||||
"west": {"uv": [5, 0, 11, 2], "texture": "#4"},
|
||||
"up": {"uv": [2, 5, 8, 8], "rotation": 90, "texture": "#7"},
|
||||
"down": {"uv": [13, 5, 16, 11], "texture": "#4"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [1, 5, 5],
|
||||
"to": [1, 11, 11],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [1, 6, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#6"},
|
||||
"south": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#6"},
|
||||
"west": {"uv": [2, 8, 8, 14], "texture": "#7"},
|
||||
"up": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#6"},
|
||||
"down": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#6"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [15, 5, 5],
|
||||
"to": [15, 11, 11],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [15, 6, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#6"},
|
||||
"east": {"uv": [2, 8, 8, 14], "texture": "#7"},
|
||||
"south": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#6"},
|
||||
"up": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#6"},
|
||||
"down": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#6"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,205 @@
|
||||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"1": "tfmg:block/engines/engine_bottom",
|
||||
"2": "tfmg:block/engines/engine_front",
|
||||
"3": "tfmg:block/engines/engine_side",
|
||||
"4": "tfmg:block/engines/engine_top",
|
||||
"5": "tfmg:block/shaft_top",
|
||||
"6": "tfmg:block/shaft",
|
||||
"7": "tfmg:block/engines/engine_gearbox",
|
||||
"8": "tfmg:block/engines/engine_gearbox_front",
|
||||
"particle": "tfmg:block/engines/engine_back"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [3, 0, -1],
|
||||
"to": [13, 12, 11],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [10, 0, -1]},
|
||||
"faces": {
|
||||
"north": {"uv": [3, 4, 13, 16], "texture": "#2"},
|
||||
"east": {"uv": [12, 3, 0, 15], "texture": "#3"},
|
||||
"south": {"uv": [3, 4, 13, 16], "texture": "#4"},
|
||||
"west": {"uv": [0, 3, 12, 15], "texture": "#3"},
|
||||
"up": {"uv": [3, 0, 13, 12], "texture": "#4"},
|
||||
"down": {"uv": [3, 4, 13, 16], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 5, 11],
|
||||
"to": [3, 13, 13],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 13]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 8, 3, 16], "texture": "#4"},
|
||||
"east": {"uv": [0, 0, 2, 8], "texture": "#4"},
|
||||
"south": {"uv": [13, 5, 16, 13], "texture": "#4"},
|
||||
"west": {"uv": [8, 6, 10, 14], "texture": "#7"},
|
||||
"up": {"uv": [8, 5, 10, 8], "rotation": 90, "texture": "#7"},
|
||||
"down": {"uv": [0, 0, 3, 2], "texture": "#4"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [3, 0, 11],
|
||||
"to": [13, 11, 15],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [10, 0, 3]},
|
||||
"faces": {
|
||||
"east": {"uv": [5, 4, 16, 0], "rotation": 90, "texture": "#4"},
|
||||
"south": {"uv": [3, 5, 13, 16], "texture": "#8"},
|
||||
"west": {"uv": [5, 0, 16, 4], "rotation": 90, "texture": "#4"},
|
||||
"up": {"uv": [3, 12, 13, 16], "texture": "#4"},
|
||||
"down": {"uv": [3, 0, 13, 4], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [13, 0, -1],
|
||||
"to": [16, 5, 15],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [13, 0, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 11, 3, 16], "texture": "#2"},
|
||||
"east": {"uv": [0, 11, 16, 16], "texture": "#3"},
|
||||
"south": {"uv": [13, 11, 16, 16], "texture": "#2"},
|
||||
"west": {"uv": [0, 0, 0, 0], "texture": "#2"},
|
||||
"up": {"uv": [0, 0, 3, 16], "texture": "#2"},
|
||||
"down": {"uv": [13, 0, 16, 16], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 11, 5],
|
||||
"to": [3, 13, 11],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 13]},
|
||||
"faces": {
|
||||
"east": {"uv": [0, 0, 6, 2], "texture": "#4"},
|
||||
"west": {"uv": [2, 6, 8, 8], "texture": "#7"},
|
||||
"up": {"uv": [2, 5, 8, 8], "rotation": 90, "texture": "#7"},
|
||||
"down": {"uv": [13, 5, 16, 11], "texture": "#4"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 5, -1],
|
||||
"to": [3, 7, 5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 2, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [3, 9, 0, 11], "texture": "#2"},
|
||||
"east": {"uv": [0, 0, 0, 0], "texture": "#2"},
|
||||
"south": {"uv": [13, 11, 16, 13], "texture": "#2"},
|
||||
"west": {"uv": [14, 14, 8, 16], "texture": "#7"},
|
||||
"up": {"uv": [0, 0, 3, 6], "texture": "#4"},
|
||||
"down": {"uv": [0, 0, 0, 0], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 7, 3],
|
||||
"to": [3, 13, 5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [13, 5, 16, 11], "texture": "#4"},
|
||||
"east": {"uv": [0, 0, 2, 6], "texture": "#4"},
|
||||
"south": {"uv": [13, 9, 16, 15], "texture": "#4"},
|
||||
"west": {"uv": [0, 6, 2, 12], "texture": "#7"},
|
||||
"up": {"uv": [0, 5, 2, 8], "rotation": 90, "texture": "#7"},
|
||||
"down": {"uv": [0, 0, 3, 2], "texture": "#4"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 0, -1],
|
||||
"to": [3, 5, 15],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [13, 11, 16, 16], "texture": "#2"},
|
||||
"east": {"uv": [0, 0, 0, 0], "texture": "#2"},
|
||||
"south": {"uv": [0, 9, 3, 14], "texture": "#4"},
|
||||
"west": {"uv": [0, 11, 16, 16], "texture": "#3"},
|
||||
"up": {"uv": [0, 0, 3, 16], "texture": "#2"},
|
||||
"down": {"uv": [0, 0, 3, 16], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [13, 5, -1],
|
||||
"to": [16, 7, 5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [13, 2, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 9, 3, 11], "texture": "#2"},
|
||||
"east": {"uv": [8, 14, 14, 16], "texture": "#7"},
|
||||
"south": {"uv": [13, 10, 16, 12], "texture": "#2"},
|
||||
"west": {"uv": [0, 0, 0, 0], "texture": "#2"},
|
||||
"up": {"uv": [0, 0, 3, 6], "texture": "#4"},
|
||||
"down": {"uv": [0, 0, 0, 0], "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [13, 7, 3],
|
||||
"to": [16, 13, 5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [13, 4, 5]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 5, 3, 11], "texture": "#4"},
|
||||
"east": {"uv": [8, 6, 10, 12], "texture": "#7"},
|
||||
"south": {"uv": [13, 9, 16, 15], "texture": "#4"},
|
||||
"west": {"uv": [0, 0, 0, 0], "texture": "#4"},
|
||||
"up": {"uv": [0, 5, 2, 8], "rotation": 90, "texture": "#7"},
|
||||
"down": {"uv": [0, 0, 0, 0], "texture": "#4"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [13, 5, 11],
|
||||
"to": [16, 13, 13],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [13, 4, 13]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 8, 3, 16], "texture": "#4"},
|
||||
"east": {"uv": [0, 6, 2, 14], "texture": "#7"},
|
||||
"south": {"uv": [0, 5, 3, 13], "texture": "#4"},
|
||||
"west": {"uv": [0, 0, 0, 0], "texture": "#4"},
|
||||
"up": {"uv": [8, 5, 10, 8], "rotation": 90, "texture": "#7"},
|
||||
"down": {"uv": [0, 0, 0, 0], "texture": "#4"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [13, 11, 5],
|
||||
"to": [16, 13, 11],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [13, 4, 13]},
|
||||
"faces": {
|
||||
"east": {"uv": [2, 6, 8, 8], "texture": "#7"},
|
||||
"west": {"uv": [0, 0, 0, 0], "texture": "#4"},
|
||||
"up": {"uv": [2, 5, 8, 8], "rotation": 90, "texture": "#7"},
|
||||
"down": {"uv": [13, 5, 16, 11], "texture": "#4"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 6, 6],
|
||||
"to": [16, 10, 10],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 6, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#6"},
|
||||
"east": {"uv": [6, 6, 10, 10], "texture": "#5"},
|
||||
"south": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#6"},
|
||||
"west": {"uv": [6, 6, 10, 10], "texture": "#5"},
|
||||
"up": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#6"},
|
||||
"down": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#6"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [1, 5, 5],
|
||||
"to": [1, 11, 11],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [1, 6, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#6"},
|
||||
"south": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#6"},
|
||||
"west": {"uv": [2, 8, 8, 14], "texture": "#7"},
|
||||
"up": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#6"},
|
||||
"down": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#6"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [15, 5, 5],
|
||||
"to": [15, 11, 11],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [15, 6, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#6"},
|
||||
"east": {"uv": [2, 8, 8, 14], "texture": "#7"},
|
||||
"south": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#6"},
|
||||
"up": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#6"},
|
||||
"down": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#6"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 697 B |
|
After Width: | Height: | Size: 326 B |
|
After Width: | Height: | Size: 700 B |
|
Before Width: | Height: | Size: 451 B After Width: | Height: | Size: 720 B |
|
After Width: | Height: | Size: 675 B |
|
After Width: | Height: | Size: 514 B |
|
Before Width: | Height: | Size: 361 B After Width: | Height: | Size: 623 B |
BIN
src/main/resources/assets/tfmg/textures/item/golden_turbo.png
Normal file
|
After Width: | Height: | Size: 279 B |
BIN
src/main/resources/assets/tfmg/textures/item/transmission.png
Normal file
|
After Width: | Height: | Size: 279 B |
BIN
src/main/resources/assets/tfmg/textures/item/turbo.png
Normal file
|
After Width: | Height: | Size: 279 B |