diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 339765c99..9f6283efd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -34,7 +34,7 @@ jobs: steps: - name: ๐Ÿ“ฆ Checkout - uses: actions/checkout@v5.0.0 + uses: actions/checkout@v6.0.0 with: fetch-depth: 0 @@ -194,7 +194,7 @@ jobs: - name: ๐Ÿ“„ Format diff id: format_diff if: ${{ steps.read_diff.outputs.diff != '' }} - uses: roamingowl/template-output-with-eta@v2.1.0 + uses: roamingowl/template-output-with-eta@v2.2.0 with: template: | ```markdown @@ -229,7 +229,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5.0.0 + uses: actions/checkout@v6.0.0 with: fetch-depth: 0 @@ -313,7 +313,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v5.0.0 + uses: actions/checkout@v6.0.0 - name: ๐Ÿ”„ Replace strings shell: bash @@ -424,7 +424,7 @@ jobs: steps: - name: ๐Ÿ“ฆ Checkout - uses: actions/checkout@v5.0.0 + uses: actions/checkout@v6.0.0 - name: ๐Ÿ“ฆ Download artifact uses: actions/download-artifact@v6.0.0 @@ -452,7 +452,7 @@ jobs: - name: ๐Ÿ“„ Format diff id: format_diff if: ${{ needs.info.outputs.diff != '' }} - uses: roamingowl/template-output-with-eta@v2.1.0 + uses: roamingowl/template-output-with-eta@v2.2.0 with: template: | ```markdown @@ -461,7 +461,7 @@ jobs: - name: ๐Ÿš€ Create release id: release - uses: softprops/action-gh-release@v2.4.2 + uses: softprops/action-gh-release@v2.5.0 with: name: ${{ needs.info.outputs.project_version }} tag_name: ${{ needs.info.outputs.project_version }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a3beeb00..b01017c23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ - Added fluid/item capacity tooltips to many fluid/item containers @Pyritie - Spring water is now drinkable (it also heats you up a little) @Pyritie ### Bug fixes +- Fixed the horse crank not working at all @Pyritie - Fixed brown gravy recipe @Redeix - Fixed instant mac recipe requiring less cardboard than it gives back @Redeix - Fixed Ad Astra moon cheese nutrition values being inconsistent @Redeix @@ -45,6 +46,7 @@ - Hopefully fixed rockets without a pilot getting stuck and not exploding? (#2137) @Pyritie - Fixed some missing blocks from the GT facade whitelist (#2299) @MoltonMontro - Changed the texture of the ME Stocking Input Bus + Hatch to match the hull used to craft them @Pyritie +- Fixed warped/crimson trees only growing on mars mycelium and not mars dirt @Pyritie ### Translation updates - Chinese (simplified) @jmecn - Japanese @sakura-gondra diff --git a/config/DistantHorizons.toml b/config/DistantHorizons.toml new file mode 100644 index 000000000..a6f048e16 --- /dev/null +++ b/config/DistantHorizons.toml @@ -0,0 +1,818 @@ +_version = 3 + +[client] + # + # Should Distant Horizon's config button appear in Minecraft's options screen next to the fov slider? + showDhOptionsButtonInMinecraftUi = true + + [client.advanced] + + [client.advanced.graphics] + + [client.advanced.graphics.quality] + # + # The radius of the mod's render distance. (measured in chunks) + lodChunkRenderDistanceRadius = 256 + # + # This indicates how quickly LODs decrease in quality the further away they are. + # Higher settings will render higher quality fake chunks farther away, + # but will increase memory and GPU usage. + horizontalQuality = "MEDIUM" + # + # What is the maximum detail LODs should be drawn at? + # Higher settings will increase memory and GPU usage. + # + # CHUNK: render 1 LOD for each Chunk. + # HALF_CHUNK: render 4 LODs for each Chunk. + # FOUR_BLOCKS: render 16 LODs for each Chunk. + # TWO_BLOCKS: render 64 LODs for each Chunk. + # BLOCK: render 256 LODs for each Chunk (width of one block). + # + # Lowest Quality: CHUNK + # Highest Quality: BLOCK + maxHorizontalResolution = "BLOCK" + # + # This indicates how well LODs will represent + # overhangs, caves, floating islands, etc. + # Higher options will make the world more accurate, butwill increase memory and GPU usage. + # + # Lowest Quality: HEIGHT_MAP + # Highest Quality: EXTREME + verticalQuality = "MEDIUM" + # + # How should LOD transparency be handled. + # + # COMPLETE: LODs will render transparent. + # FAKE: LODs will be opaque, but shaded to match the blocks underneath. + # DISABLED: LODs will be opaque. + transparency = "COMPLETE" + # + # What blocks shouldn't be rendered as LODs? + # + # NONE: Represent all blocks in the LODs + # NON_COLLIDING: Only represent solid blocks in the LODs (tall grass, torches, etc. won't count for a LOD's height) + blocksToIgnore = "NON_COLLIDING" + # + # Should the blocks underneath avoided blocks gain the color of the avoided block? + # + # True: a red flower will tint the grass below it red. + # False: skipped blocks will not change color of surface below them. + tintWithAvoidedBlocks = true + # + # What the value should vanilla Minecraft's texture LodBias be? + # If set to 0 the mod wont overwrite vanilla's default (which so happens to also be 0) + lodBias = "0.0" + # + # How should LODs be shaded? + # + # AUTO: Uses the same side shading as vanilla Minecraft blocks. + # ENABLED: Simulates Minecraft's block shading for LODs. + # Can be used to force LOD shading when using some shaders. + # DISABLED: All LOD sides will be rendered with the same brightness. + lodShading = "AUTO" + # + # How should the sides and bottom of grass block LODs render? + # + # AS_GRASS: all sides of dirt LOD's render using the top (green) color. + # FADE_TO_DIRT: sides fade from grass to dirt. + # AS_DIRT: sides render entirely as dirt. + grassSideRendering = "FADE_TO_DIRT" + # + # If true LODs will fade away as you get closer to them. + # If false LODs will cut off abruptly at a set distance from the camera. + # This setting is affected by the vanilla overdraw prevention config. + ditherDhFade = true + # + # How should vanilla Minecraft fade into Distant Horizons LODs? + # + # NONE: Fastest, there will be a pronounced border between DH and MC rendering. + # SINGLE_PASS: Fades after MC's transparent pass, opaque blocks underwater won't be faded. + # DOUBLE_PASS: Slowest, fades after both MC's opaque and transparent passes, provides the smoothest transition. + vanillaFadeMode = "DOUBLE_PASS" + # + # How bright LOD colors are. + # + # 0 = black + # 1 = normal + # 2 = near white + brightnessMultiplier = "1.0" + # + # How saturated LOD colors are. + # + # 0 = black and white + # 1 = normal + # 2 = very saturated + saturationMultiplier = "1.0" + # + # This is the same as vanilla Biome Blending settings for Lod area. + # Note that anything other than '0' will greatly effect Lod building time. + # + # '0' equals to Vanilla Biome Blending of '1x1' or 'OFF', + # '1' equals to Vanilla Biome Blending of '3x3', + # '2' equals to Vanilla Biome Blending of '5x5'... + lodBiomeBlending = 3 + + [client.advanced.graphics.ssao] + # + # Enable Screen Space Ambient Occlusion + enableSsao = true + # + # Determines how many points in space are sampled for the occlusion test. + # Higher numbers will improve quality and reduce banding, but will increase GPU load. + sampleCount = 6 + # + # Determines the radius Screen Space Ambient Occlusion is applied, measured in blocks. + radius = "4.0" + # + # Determines how dark the Screen Space Ambient Occlusion effect will be. + strength = "0.2" + # + # Increasing the value can reduce banding at the cost of reducing the strength of the effect. + bias = "0.02" + # + # Determines how dark the occlusion shadows can be. + # 0 = totally black at the corners + # 1 = no shadow + minLight = "0.25" + # + # The radius, measured in pixels, that blurring is calculated for the SSAO. + # Higher numbers will reduce banding at the cost of GPU performance. + blurRadius = 2 + + [client.advanced.graphics.genericRendering] + # + # If true non terrain objects will be rendered in DH's terrain. + # This includes beacon beams and clouds. + enableGenericRendering = true + # + # If true LOD beacon beams will be rendered. + enableBeaconRendering = true + # + # Sets the maximum height at which beacons will render.This will only affect new beacons coming into LOD render distance.Beacons currently visible in LOD chunks will not be affected. + beaconRenderHeight = 6000 + # + # If true LOD clouds will be rendered. + enableCloudRendering = true + # + # Can be disabled to use much slower but more compatible direct rendering. + # Disabling this can be used to fix some crashes on Mac. + enableInstancedRendering = true + + [client.advanced.graphics.fog] + # + # Determines if fog is drawn on DH LODs. + enableDhFog = true + # + # What color should fog use? + # + # USE_WORLD_FOG_COLOR: Use the world's fog color. + # USE_SKY_COLOR: Use the sky's color. + colorMode = "USE_WORLD_FOG_COLOR" + # + # Should Minecraft's fog render? + # Note: Other mods may conflict with this setting. + enableVanillaFog = false + # + # At what distance should the far fog start? + # + # 0.0: Fog starts at the player's position. + # 1.0: Fog starts at the closest edge of the vanilla render distance. + # 1.414: Fog starts at the corner of the vanilla render distance. + farFogStart = "0.4" + # + # Where should the far fog end? + # + # 0.0: Fog ends at player's position. + # 1.0: Fog ends at the closest edge of the vanilla render distance. + # 1.414: Fog ends at the corner of the vanilla render distance. + farFogEnd = "1.0" + # + # What is the minimum fog thickness? + # + # 0.0: No fog. + # 1.0: Fully opaque fog. + farFogMin = "0.0" + # + # What is the maximum fog thickness? + # + # 0.0: No fog. + # 1.0: Fully opaque fog. + farFogMax = "1.0" + # + # How should the fog thickness should be calculated? + # + # LINEAR: Linear based on distance (will ignore 'density') + # EXPONENTIAL: 1/(e^(distance*density)) + # EXPONENTIAL_SQUARED: 1/(e^((distance*density)^2) + farFogFalloff = "EXPONENTIAL_SQUARED" + # + # Used in conjunction with the Fog Falloff. + farFogDensity = "2.5" + + [client.advanced.graphics.fog.heightFog] + # + # How should height effect the fog thickness? + # Note: height fog is combined with the other fog settings. + # + # SPHERICAL: Fog is calculated based on camera distance. + # CYLINDRICAL: Ignore height, fog is calculated based on horizontal distance. + # + # MAX: max(heightFog, farFog) + # ADDITION: heightFog + farFog + # MULTIPLY: heightFog * farFog + # INVERSE_MULTIPLY: 1 - (1-heightFog) * (1-farFog) + # LIMITED_ADDITION: farFog + max(farFog, heightFog) + # MULTIPLY_ADDITION: farFog + farFog * heightFog + # INVERSE_MULTIPLY_ADDITION: farFog + 1 - (1-heightFog) * (1-farFog) + # AVERAGE: farFog*0.5 + heightFog*0.5 + heightFogMixMode = "SPHERICAL" + # + # Where should the height fog start? + # + # ABOVE_CAMERA: Height fog starts at the camera and goes towards the sky + # BELOW_CAMERA: Height fog starts at the camera and goes towards the void + # ABOVE_AND_BELOW_CAMERA: Height fog starts from the camera to goes towards both the sky and void + # ABOVE_SET_HEIGHT: Height fog starts from a set height and goes towards the sky + # BELOW_SET_HEIGHT: Height fog starts from a set height and goes towards the void + # ABOVE_AND_BELOW_SET_HEIGHT: Height fog starts from a set height and goes towards both the sky and void + heightFogDirection = "BELOW_SET_HEIGHT" + # + # If the height fog is calculated around a set height, what is that height position? + heightFogBaseHeight = "80.0" + # + # Should the start of the height fog be offset? + # + # 0.0: Fog start with no offset. + # 1.0: Fog start with offset of the entire world's height. (Includes depth) + heightFogStart = "0.0" + # + # Should the end of the height fog be offset? + # + # 0.0: Fog end with no offset. + # 1.0: Fog end with offset of the entire world's height. (Include depth) + heightFogEnd = "0.6" + # + # What is the minimum fog thickness? + # + # 0.0: No fog. + # 1.0: Fully opaque fog. + heightFogMin = "0.0" + # + # What is the maximum fog thickness? + # + # 0.0: No fog. + # 1.0: Fully opaque fog. + heightFogMax = "1.0" + # + # How should the height fog thickness should be calculated? + # + # LINEAR: Linear based on height (will ignore 'density') + # EXPONENTIAL: 1/(e^(height*density)) + # EXPONENTIAL_SQUARED: 1/(e^((height*density)^2) + heightFogFalloff = "EXPONENTIAL_SQUARED" + # + # What is the height fog's density? + heightFogDensity = "20.0" + + [client.advanced.graphics.noiseTexture] + # + # Should a noise texture be applied to LODs? + # + # This is done to simulate textures and make the LODs appear more detailed. + enableNoiseTexture = true + # + # How many steps of noise should be applied to LODs? + noiseSteps = 4 + # + # How intense should the noise should be? + noiseIntensity = "5.0" + # + # Defines how far should the noise texture render before it fades away. (in blocks) + # Set to 0 to disable noise from fading away + noiseDropoff = 1024 + + [client.advanced.graphics.culling] + # + # Determines how far from the camera Distant Horizons will start rendering. + # Measured as a percentage of the vanilla render distance. + # + # 0 = auto, overdraw will change based on the vanilla render distance. + # + # Higher values will prevent LODs from rendering behind vanilla blocks at a higher distance, + # but may cause holes in the world. + # Holes are most likely to appear when flying through unloaded terrain. + # + # Increasing the vanilla render distance increases the effectiveness of this setting. + overdrawPrevention = "0.0" + # + # If enabled caves won't be rendered. + # + # Note: for some world types this can cause + # overhangs or walls for floating objects. + # Tweaking the caveCullingHeight, can resolve some + # of those issues. + enableCaveCulling = true + # + # At what Y value should cave culling start? + # Lower this value if you get walls for areas with 0 light. + caveCullingHeight = 60 + # + # If false all beacons near the camera won't be drawn to prevent vanilla overdraw. + # If true all beacons will be rendered. + # + # Generally this should be left as true. It's main purpose is for debugging + # beacon updating/rendering. + disableBeaconDistanceCulling = true + # + # If true LODs outside the player's camera + # aren't drawn, increasing GPU performance. + # + # If false all LODs are drawn, even those behind + # the player's camera, decreasing GPU performance. + # + # Disable this if you see LODs disappearing at the corners of your vision. + disableFrustumCulling = false + # + # Identical to the other frustum culling option + # only used when a shader mod is present using the DH API + # and the shadow pass is being rendered. + # + # Disable this if shadows render incorrectly. + disableShadowPassFrustumCulling = false + # + # A comma separated list of block resource locations that won't be rendered by DH. + # Air is always included in this list. + # Requires a restart to change. + ignoredRenderBlockCsv = "minecraft:barrier,minecraft:structure_void,minecraft:light,minecraft:tripwire,minecraft:brown_mushroom" + # + # A comma separated list of block resource locations that shouldn't be rendered + # if they are in a 0 sky light underground area. + # Air is always included in this list. + # Requires a restart to change. + ignoredRenderCaveBlockCsv = "minecraft:glow_lichen,minecraft:rail,minecraft:water,minecraft:lava,minecraft:bubble_column,minecraft:cave_vines_plant,minecraft:vine,minecraft:cave_vines,minecraft:short_grass,minecraft:tall_grass,minecraft:small_dripleaf,minecraft:big_dripleaf,minecraft:big_dripleaf_stem,minecraft:sculk_vein" + + [client.advanced.graphics.experimental] + # + # This is the earth size ratio when applying the curvature shader effect. + # Note: Enabling this feature may cause rendering bugs. + # + # 0 = flat/disabled + # 1 = 1 to 1 (6,371,000 blocks) + # 100 = 1 to 100 (63,710 blocks) + # 10000 = 1 to 10000 (637.1 blocks) + # + # Note: Due to current limitations, the min value is 50 + # and the max value is 5000. Any values outside this range + # will be set to 0 (disabled). + earthCurveRatio = 0 + + [client.advanced.multiplayer] + # + # How should multiplayer save folders should be named? + # + # NAME_ONLY: Example: "Minecraft Server" + # IP_ONLY: Example: "192.168.1.40" + # NAME_IP: Example: "Minecraft Server IP 192.168.1.40" + # NAME_IP_PORT: Example: "Minecraft Server IP 192.168.1.40:25565"NAME_IP_PORT_MC_VERSION: Example: "Minecraft Server IP 192.168.1.40:25565 GameVersion 1.16.5" + serverFolderNameMode = "NAME_ONLY" + + [client.advanced.autoUpdater] + # + # Automatically check for updates on game launch? + enableAutoUpdater = true + # + # Should Distant Horizons silently, automatically download and install new versions? + # This setting is force disabled on dedicated servers for stability reasons. + enableSilentUpdates = false + # + # If DH should use the nightly (provided by Gitlab), or stable (provided by Modrinth) build. + # If [AUTO] is selected DH will update to new stable releases if the current jar is a stable jar + # and will update to new nightly builds if the current jar is a nightly jar (IE the version number ends in '-dev'). + updateBranch = "AUTO" + + [client.advanced.debugging] + # + # What renderer is active? + # + # DEFAULT: Default lod renderer + # DEBUG: Debug testing renderer + # DISABLED: Disable rendering + rendererMode = "DEFAULT" + # + # Should specialized colors/rendering modes be used? + # + # OFF: LODs will be drawn with their normal colors. + # SHOW_DETAIL: LODs' color will be based on their detail level. + # SHOW_BLOCK_MATERIAL: LODs' color will be based on their material. + # SHOW_OVERLAPPING_QUADS: LODs will be drawn with total white, but overlapping quads will be drawn with red. + debugRendering = "OFF" + # + # If enabled this will disable (most) vanilla Minecraft rendering. + # + # NOTE: Do not report any issues when this mode is on! + # This setting is only for fun and debugging. + # Mod compatibility is not guaranteed. + lodOnlyMode = false + # + # If enabled the LODs will render as wireframe. + renderWireframe = false + # + # If true the F8 key can be used to cycle through the different debug modes. + # and the F6 key can be used to enable and disable LOD rendering. + enableDebugKeybindings = false + # + # Stops vertex colors from being passed. + # Useful for debugging shaders + enableWhiteWorld = false + # + # If true overlapping quads will be rendered as bright red for easy identification. + # If false the quads will be rendered normally. + showOverlappingQuadErrors = false + # + # If true OpenGL Buffer garbage collection will be logged + # this also includes the number of live buffers. + logBufferGarbageCollection = false + + [client.advanced.debugging.debugWireframe] + # + # If enabled, various wireframes for debugging internal functions will be drawn. + # + # NOTE: There WILL be performance hit! + # Additionally, only stuff that's loaded after you enable this + # will render their debug wireframes. + enableRendering = false + # + # Render queued world gen tasks? + showWorldGenQueue = false + # + # Render queued network sync on load tasks? + showNetworkSyncOnLoadQueue = false + # + # Render LOD section status? + showRenderSectionStatus = false + # + # A white box will be drawn when an LOD starts rendering + # and a purple box when an LOD stops rendering. + # + # This can be used to debug Quad Tree holes. + showRenderSectionToggling = false + # + # Render Quad Tree Rendering status? + showQuadTreeRenderStatus = false + # + # Render full data update/lock status? + showFullDataUpdateStatus = false + + [client.advanced.debugging.openGl] + # + # Defines how OpenGL errors are handled. + # Requires rebooting Minecraft to change. + # Will catch OpenGL errors thrown by other mods. + overrideVanillaGLLogger = true + # + # If true each Open GL error will only be logged once. + # Enabling this may cause some error logs to be missed. + # Does nothing if overrideVanillaGLLogger is set to false. + # + # Generally this can be kept as 'true' to prevent log spam. + # However, Please set this to 'false' if a developer needs your log to debug a GL issue. + onlyLogGlErrorsOnce = true + # + # Defines how OpenGL errors are handled. + # May incorrectly catch OpenGL errors thrown by other mods. + # + # IGNORE: Do nothing. + # LOG: write an error to the log. + # LOG_THROW: write to the log and throw an exception. + # Warning: this should only be enabled when debugging the LOD renderer + # as it may break Minecraft's renderer when an exception is thrown. + glErrorHandlingMode = "IGNORE" + # + # Massively reduces FPS. + # Should only be used if mysterious EXCEPTION_ACCESS_VIOLATION crashes are happening in DH's rendering code for troubleshooting. + validateBufferIdsBeforeRendering = false + + [client.advanced.debugging.f3Screen] + # + # Shows the player's LOD position. + showPlayerPos = true + # + # Defines what internal detail level the player position will be shown as. + # Internal detail level means: 6 = 1x1 block, 7 = 2x2 blocks, etc. + playerPosSectionDetailLevel = 6 + # + # Shows info about each thread pool. + showThreadPools = true + # + # Shows the combined memory use and array counts for all DH pooled objects. + showCombinedObjectPools = false + # + # Shows the memory use and array counts for each DH object pool. + showSeparatedObjectPools = false + # + # Shows how many chunks are queud for processing and the max count that can be queued. + showQueuedChunkUpdateCount = true + # + # Shows what levels are loaded and world gen/rendering info about those levels. + showLevelStatus = true + + [client.advanced.debugging.exampleConfigScreen] + boolTest = false + byteTest = "8" + intTest = 69420 + doubleTest = "420.69" + shortTest = "69" + longTest = "42069" + floatTest = "0.42069" + stringTest = "Test input box" + listTest = ["option 1", "option 2", "option 3"] + mapTest = "{}" + linkableTest = 420 + +[common] + + [common.worldGenerator] + # + # Should Distant Horizons slowly generate LODs + # outside the vanilla render distance? + # Depending on the generator mode, this will import existing chunks + # and/or generating missing chunks. + enableDistantGeneration = true + # + # How detailed should LODs be generated outside the vanilla render distance? + # + # PRE_EXISTING_ONLY + # Only create LOD data for already generated chunks. + # + # + # SURFACE + # Generate the world surface, + # this does NOT include trees, + # or structures. + # + # FEATURES + # Generate everything except structures. + # WARNING: This may cause world generator bugs or instability when paired with certain world generator mods. + # + # INTERNAL_SERVER + # Ask the local server to generate/load each chunk. + # This is the most compatible and will generate structures correctly, + # but may cause server/simulation lag. + # Note: unlike other modes this option DOES save generated chunks to + # Minecraft's region files. + distantGeneratorMode = "INTERNAL_SERVER" + # + # How should distant generator progress be displayed? + # + # OVERLAY: may be the same as CHAT for some Minecraft versions + # CHAT + # LOG + # DISABLED + showGenerationProgress = "DISABLED" + # + # How often should the distant generator progress be displayed? + generationProgressDisplayIntervalInSeconds = 2 + # + # For how many seconds should instructions for disabling the distant generator progress be displayed? + # Setting this to 0 hides the instructional message so the world gen progress is shown immediately when it starts. + generationProgressDisableMessageDisplayTimeInSeconds = 20 + # + # When logging generation progress also include the rate at which chunks + # are being generated. + # This can be useful for troubleshooting performance. + generationProgressIncludeChunksPerSecond = true + + [common.lodBuilding] + # + # Enabling this will drastically increase chunk processing time + # and you may need to increase your CPU load to handle it. + # + # Normally DH will attempt to skip creating LODs for chunks it's already seen + # and that haven't changed. + # + # However sometimes that logic incorrectly prevents LODs from being updated. + # Disabling this check may fix issues where LODs aren't updated after + # blocks have been changed. + disableUnchangedChunkCheck = false + # + # What algorithm should be used to compress new LOD data? + # This setting will only affect new or updated LOD data, + # any data already generated when this setting is changed will be + # unaffected until it needs to be re-written to the database. + # + # UNCOMPRESSED + # Should only be used for testing, is worse in every way vs [LZ4]. + # Expected Compression Ratio: 1.0 + # Estimated average DTO read speed: 6.09 milliseconds + # Estimated average DTO write speed: 6.01 milliseconds + # + # LZ4 + # A good option if you're CPU limited and have plenty of hard drive space. + # Expected Compression Ratio: 0.4513 + # Estimated average DTO read speed: 3.25 ms + # Estimated average DTO write speed: 5.99 ms + # + # Z_STD + # A good option if you're CPU limited and have plenty of hard drive space. + # Expected Compression Ratio: 0.2606 + # Estimated average DTO read speed: 9.31 ms + # Estimated average DTO write speed: 15.13 ms + # + # LZMA2 + # Slow but very good compression. + # Expected Compression Ratio: 0.2 + # Estimated average DTO read speed: 13.29 ms + # Estimated average DTO write speed: 70.95 ms + dataCompression = "Z_STD" + # + # How should block data be compressed when creating LOD data? + # This setting will only affect new or updated LOD data, + # any data already generated when this setting is changed will be + # unaffected until it is modified or re-loaded. + # + # MERGE_SAME_BLOCKS + # Every block/biome change is recorded in the database. + # This is what DH 2.0 and 2.0.1 all used by default and will store a lot of data. + # Expected Compression Ratio: 1.0 + # + # VISUALLY_EQUAL + # Only visible block/biome changes are recorded in the database. + # Hidden blocks (IE ores) are ignored. + # Expected Compression Ratio: 0.7 + worldCompression = "VISUALLY_EQUAL" + # + # True: Recalculate chunk height maps before chunks can be used by DH. + # This can fix problems with worlds created by World Painter or + # other external tools where the heightmap format may be incorrect. + # False: Assume any height maps handled by Minecraft are correct. + # + # Fastest: False + # Most Compatible: True + recalculateChunkHeightmaps = false + # + # If true LOD generation for pre-existing chunks will attempt to pull the lighting data + # saved in Minecraft's Region files. + # If false DH will pull in chunks without lighting and re-light them. + # + # Setting this to true will result in faster LOD generation + # for already generated worlds, but is broken by most lighting mods. + # + # Set this to false if LODs are black. + pullLightingForPregeneratedChunks = false + # + # When DH pulls in pre-existing chunks it will attempt to + # run any missing world generation steps; for example: + # if a chunk has the status SURFACE, DH will skip BIOMES + # and SURFACE, but will run FEATURES. + # + # However if for some reason the chunks are malformed + # or there's some other issue that causes the status + # to be incorrect that can either cause world gen + # lock-ups and/or crashes. + # If either of those happen try setting this to True. + assumePreExistingChunksAreFinished = false + + [common.lodBuilding.experimental] + # + # When active DH will attempt to fill missing LOD data + # with any data that is present in the tree, preventing holes when moving + # when a N-sized generator (or server) is active. + # + # This is only used when N-sized world generation is available + # and/or when on a server where [generateOnlyInHighestDetail] is false. + # + # Experimental: + # Enabling this option will increase CPU and harddrive use + # and may cause rendering bugs. + upsampleLowerDetailLodsToFillHoles = false + + [common.multiThreading] + # + # How many threads should be used by Distant Horizons? + numberOfThreads = 8 + # + # A value between 1.0 and 0.0 that represents the percentage + # of time each thread can run before going idle. + # + # This can be used to reduce CPU usage if the thread count + # is already set to 1 for the given option, or more finely + # tune CPU performance. + threadRunTimeRatio = "1.0" + + [common.logging] + # + # If enabled, the mod will log information about the world generation process. + # This can be useful for debugging. + logWorldGenEvent = "LOG_ERROR_TO_CHAT_AND_INFO_TO_FILE" + # + # If enabled, the mod will log performance about the world generation process. + # This can be useful for debugging. + logWorldGenPerformance = "LOG_ERROR_TO_CHAT_AND_INFO_TO_FILE" + # + # If enabled, the mod will log information about the world generation process. + # This can be useful for debugging. + logWorldGenLoadEvent = "LOG_ERROR_TO_CHAT_AND_INFO_TO_FILE" + # + # If enabled, the mod will log information about the renderer buffer process. + # This can be useful for debugging. + logRendererBufferEvent = "LOG_ERROR_TO_CHAT_AND_INFO_TO_FILE" + # + # If enabled, the mod will log information about the renderer OpenGL process. + # This can be useful for debugging. + logRendererGLEvent = "LOG_ERROR_TO_CHAT_AND_INFO_TO_FILE" + # + # If enabled, the mod will log information about network operations. + # This can be useful for debugging. + logNetworkEvent = "LOG_ERROR_TO_CHAT_AND_WARNING_TO_FILE" + + [common.logging.warning] + # + # If enabled, a chat message will be displayed if Java doesn't have enough + # memory allocated to run DH well. + showLowMemoryWarningOnStartup = true + # + # If enabled, a chat message will be displayed if DH detects + # that any pooled objects have been garbage collected. + showPoolInsufficientMemoryWarning = true + # + # If enabled, a chat message will be displayed if vanilla MC's + # render distance is higher than the recommended amount. + showHighVanillaRenderDistanceWarning = true + # + # If enabled, a chat message will be displayed when a replay is started + # giving some basic information about how DH will function. + showReplayWarningOnStartup = true + # + # If enabled, a chat message will be displayed when DH has too many chunks + # queued for updating. + showUpdateQueueOverloadedChatWarning = false + # + # If enabled, a chat message will be displayed when a potentially problematic + # mod is installed alongside DH. + showModCompatibilityWarningsOnStartup = true + +[server] + # + # Makes the server send level keys for each world. + # Disable this if you use alternative ways to send level keys. + sendLevelKeys = true + # + # Prefix of the level keys sent to the clients. + # If the mod is running behind a proxy, each backend should use a unique value. + # If this value is empty, level key will be based on the server's seed hash. + levelKeyPrefix = "" + # + # How many LOD generation requests per second should a client send? + # Also limits the number of client requests allowed to stay in the server's queue. + generationRequestRateLimit = 20 + # + # Defines the distance allowed to generate around the player. + maxGenerationRequestDistance = 4096 + # + # Defines the X-coordinate of the central point for generation boundaries, in blocks. + generationBoundsX = 0 + # + # Defines the Z-coordinate of the central point for generation boundaries, in blocks. + generationBoundsZ = 0 + # + # Defines the radius around the central point within which generation is allowed, in blocks. + # If this value is set to 0, generation bounds are disabled. + generationBoundsRadius = 0 + # + # If true, clients will receive real-time LOD updates for chunks outside the client's render distance. + enableRealTimeUpdates = true + # + # Defines the distance the player will receive updates around. + realTimeUpdateDistanceRadiusInChunks = 256 + # + # If true, clients will receive updated LODs when joining or loading new LODs. + synchronizeOnLoad = true + # + # How many LOD sync requests per second should a client send? + # Also limits the amount of player's requests allowed to stay in the server's queue. + syncOnLoadRateLimit = 50 + # + # Defines the distance allowed to be synchronized around the player. + # Should be the same or larger than maxGenerationRequestDistance in most cases. + maxSyncOnLoadRequestDistance = 4096 + # + # Maximum per-player speed for uploading LODs to the clients, in KB/s. + # Value of 0 disables the limit. + playerBandwidthLimit = 500 + # + # Maximum global speed for uploading LODs to the clients, in KB/s. + # Value of 0 disables the limit. + globalBandwidthLimit = 0 + # + # Enables adaptive transfer speed based on client performance. + # If true, DH will automatically adjust transfer rate to minimize connection lag. + # If false, transfer speed will remain fixed. + enableAdaptiveTransferSpeed = false + + [server.experimental] + # + # When enabled on the client, this allows loading lower detail levels as needed to speed up terrain generation. + # This must also be enabled on the server; otherwise, it will have no effect. + # For better performance when switching LOD detail levels, enabling [upsampleLowerDetailLodsToFillHoles] is recommended. + enableNSizedGeneration = false + diff --git a/config/ftbquests/quests/chapters/applied_energistics_2.snbt b/config/ftbquests/quests/chapters/applied_energistics_2.snbt index cbf9211a4..8a53c009a 100644 --- a/config/ftbquests/quests/chapters/applied_energistics_2.snbt +++ b/config/ftbquests/quests/chapters/applied_energistics_2.snbt @@ -218,13 +218,6 @@ id: "432E105A84AEA630" type: "checkmark" } - { - dimension: "ad_astra:moon" - disable_toast: true - icon: "tfg:marker/moon" - id: "6A4F5147475443C5" - type: "dimension" - } ] title: "{quests.ae2.fluix_liquid.title}" x: -3.5d diff --git a/config/ftbquests/quests/chapters/lv__low_voltage.snbt b/config/ftbquests/quests/chapters/lv__low_voltage.snbt index f36f38569..f7f68851e 100644 --- a/config/ftbquests/quests/chapters/lv__low_voltage.snbt +++ b/config/ftbquests/quests/chapters/lv__low_voltage.snbt @@ -36,6 +36,13 @@ x: -2.0d y: 12.5d } + { + id: "5A47760FCD164E74" + linked_quest: "61F58B402F1AE40B" + shape: "heart" + x: -7.5d + y: 4.5d + } ] quests: [ { @@ -1597,6 +1604,7 @@ { description: ["{quests.low_voltage.cupronickel_ingot.desc}"] id: "6042514C8FC54334" + shape: "diamond" subtitle: "{quests.low_voltage.cupronickel_ingot.subtitle}" tasks: [{ id: "701DEB748320107C" diff --git a/config/ftbquests/quests/chapters/mv__medium_voltage.snbt b/config/ftbquests/quests/chapters/mv__medium_voltage.snbt index 3cfa63777..73613f8a4 100644 --- a/config/ftbquests/quests/chapters/mv__medium_voltage.snbt +++ b/config/ftbquests/quests/chapters/mv__medium_voltage.snbt @@ -39,6 +39,7 @@ "53DC6E32C41C94C3" "1A29EFBCEA017F99" ] + dependency_requirement: "one_completed" description: [ "{quests.medium_voltage.mv_biomass.desc.1}" "{@pagebreak}" @@ -775,24 +776,6 @@ x: -10.0d y: 10.0d } - { - dependencies: ["10FB27DD3C7BEC2F"] - description: ["{quests.medium_voltage.mv_tank.desc}"] - icon: "gtceu:lv_super_tank" - id: "6C53B01A05FFF1DC" - optional: true - shape: "heart" - size: 2.0d - subtitle: "{quests.medium_voltage.mv_tank.subtitle}" - tasks: [{ - id: "47EA273D728C158F" - item: "gtceu:lv_super_tank" - type: "item" - }] - title: "{quests.medium_voltage.mv_tank.title}" - x: -14.0d - y: 10.0d - } { dependencies: ["10FB27DD3C7BEC2F"] description: ["{quests.medium_voltage.mv_pvc.desc}"] @@ -1437,6 +1420,7 @@ description: ["{quests.medium_voltage.mv_seawater.desc}"] id: "45449ECE4F8128E7" optional: true + shape: "diamond" subtitle: "{quests.medium_voltage.mv_seawater.subtitle}" tasks: [{ id: "77395198DC98E3A5" diff --git a/config/ftbquests/quests/chapters/questsmetallurgy.snbt b/config/ftbquests/quests/chapters/questsmetallurgy.snbt index 5b8e901f7..210362d91 100644 --- a/config/ftbquests/quests/chapters/questsmetallurgy.snbt +++ b/config/ftbquests/quests/chapters/questsmetallurgy.snbt @@ -50,13 +50,14 @@ { id: "19CF6D922179DFF9" linked_quest: "11C45DBB20ED7647" + shape: "heart" x: 9.0d y: -34.0d } { id: "3249AB9EB552BB77" linked_quest: "4B79026C8D2DACC4" - x: 20.5d + x: 17.5d y: -28.0d } ] @@ -286,7 +287,6 @@ description: ["{quests.metal_age.bellows.desc}"] hide_dependency_lines: true id: "021D3DEEB15A3D17" - shape: "rsquare" subtitle: "{quests.metal_age.bellows.subtitle}" tasks: [{ id: "588EB07E980386F9" @@ -1203,6 +1203,8 @@ dependencies: ["3C173357029AB649"] description: ["{quests.metal_age.copper_diving.desc}"] id: "70FE6706B43FC5FC" + optional: true + shape: "heart" subtitle: "{quests.metal_age.copper_diving.subtitle}" tasks: [ { diff --git a/config/ftbquests/quests/chapters/questssteam_age.snbt b/config/ftbquests/quests/chapters/questssteam_age.snbt index 660a1750c..b4b4653b1 100644 --- a/config/ftbquests/quests/chapters/questssteam_age.snbt +++ b/config/ftbquests/quests/chapters/questssteam_age.snbt @@ -487,8 +487,8 @@ } ] title: "{quests.steam_age.miner.title}" - x: -7.0d - y: 14.0d + x: -12.0d + y: 15.0d } { dependencies: [ @@ -577,6 +577,8 @@ description: ["{quests.steam_age.steam_bloomery.desc}"] icon: "gtceu:steam_bloomery" id: "0805CCABC8E7F6CF" + optional: true + shape: "heart" size: 1.5d subtitle: "{quests.steam_age.steam_bloomery.subtitle}" tasks: [ @@ -790,6 +792,7 @@ description: ["{quests.steam_age.coiling_machine.desc}"] id: "072F6E48A1C5ECE9" optional: true + size: 1.25d subtitle: "{quests.steam_age.coiling_machine.subtitle}" tasks: [{ id: "07B7D41ACDCD1DEA" @@ -797,8 +800,8 @@ type: "item" }] title: "{quests.steam_age.coiling_machine.title}" - x: -12.0d - y: 15.0d + x: -7.0d + y: 14.0d } { dependencies: ["2C35D4E01AEC02AA"] @@ -1652,6 +1655,7 @@ description: ["{quests.steam_age.fuel_sources.desc}"] icon: "createdeco:decal_fire" id: "753A53733C6DFA04" + shape: "circle" subtitle: "{quests.steam_age.fuel_sources.subtitle}" tasks: [{ id: "38A3F9A1D2F11EE3" @@ -1675,6 +1679,30 @@ x: -3.5d y: -2.0d } + { + dependencies: ["2C35D4E01AEC02AA"] + description: ["{quests.steam_age.supers.desc}"] + icon: "gtceu:ulv_super_chest" + id: "671405A9F3A8DFDB" + optional: true + shape: "heart" + subtitle: "{quests.steam_age.supers.subtitle}" + tasks: [{ + id: "5F5A6967B674C05A" + item: { + Count: 1 + id: "ftbfiltersystem:smart_filter" + tag: { + "ftbfiltersystem:filter": "or(item(gtceu:ulv_super_chest)item(gtceu:lv_super_chest)item(gtceu:mv_super_chest)item(gtceu:hv_super_chest)item(gtceu:ev_super_chest)item(gtceu:iv_quantum_chest)item(gtceu:luv_quantum_chest)item(gtceu:zpm_quantum_chest)item(gtceu:uv_quantum_chest)item(gtceu:uhv_quantum_chest)item(gtceu:ulv_super_tank)item(gtceu:lv_super_tank)item(gtceu:mv_super_tank)item(gtceu:hv_super_tank)item(gtceu:ev_super_tank)item(gtceu:iv_quantum_tank)item(gtceu:luv_quantum_tank)item(gtceu:zpm_quantum_tank)item(gtceu:uv_quantum_tank)item(gtceu:uhv_quantum_tank))" + } + } + title: "{quests.steam_age.supers.task}" + type: "item" + }] + title: "{quests.steam_age.supers.title}" + x: -12.0d + y: 13.0d + } ] subtitle: ["{quests.steam_age.subtitle}"] title: "{quests.steam_age}" diff --git a/config/ftbquests/quests/chapters/questsstoneage.snbt b/config/ftbquests/quests/chapters/questsstoneage.snbt index a8ebfefce..9c7ebc5ef 100644 --- a/config/ftbquests/quests/chapters/questsstoneage.snbt +++ b/config/ftbquests/quests/chapters/questsstoneage.snbt @@ -8,15 +8,7 @@ images: [ { height: 1.0d - image: "tfc:item/grass_block_top" - rotation: 0.0d - width: 1.0d - x: -3.0d - y: 10.5d - } - { - height: 1.0d - image: "minecraft:block/blue_ice" + image: "ad_astra:textures/gui/sprites/snowflake.png" rotation: 0.0d width: 1.0d x: -6.0d @@ -24,36 +16,33 @@ } { height: 1.0d - image: "minecraft:block/lava_still" + image: "ad_astra:textures/gui/sprites/fire.png" rotation: 0.0d width: 1.0d x: 0.0d y: 10.5d } + { + height: 1.0d + image: "tfc:textures/gui/book/icons/thermometer.png" + rotation: 0.0d + width: 1.0d + x: -3.0d + y: 10.5d + } ] order_index: 0 - quest_links: [ - { - id: "409385C6F6640BEA" - linked_quest: "427814F6E9386772" - shape: "gear" - size: 4.0d - x: 0.0d - y: 0.0d - } - { - disable_toast: true - id: "40D0029A2097C68F" - linked_quest: "3D7B0F3134C30364" - shape: "octagon" - size: 3.0d - x: 4.5d - y: 0.0d - } - ] + quest_links: [{ + id: "409385C6F6640BEA" + linked_quest: "427814F6E9386772" + shape: "gear" + size: 4.0d + x: 4.0d + y: 0.0d + }] quests: [ { - dependencies: ["3D7B0F3134C30364"] + dependencies: ["427814F6E9386772"] description: [ "{quests.stone_age.find_rock.desc}" "{@pagebreak}" @@ -82,10 +71,11 @@ y: 0.0d } { - dependencies: ["3D7B0F3134C30364"] + dependencies: ["427814F6E9386772"] description: ["{quests.stone_age.find_potable_water.desc}"] icon: "createdeco:decal_fluid" id: "1D40CAE675C4BB91" + shape: "circle" size: 1.0d subtitle: "{quests.stone_age.find_potable_water.subtitle}" tasks: [{ @@ -96,7 +86,7 @@ type: "gamestage" }] title: "{quests.stone_age.find_potable_water.title}" - x: 4.5d + x: 4.0d y: 6.0d } { @@ -434,7 +424,7 @@ type: "item" }] title: "{quests.stone_age.water_jug.title}" - x: 7.0d + x: 6.5d y: 6.0d } { @@ -509,7 +499,7 @@ type: "item" }] title: "{quests.stone_age.leather_flask.title}" - x: 1.5d + x: 1.0d y: 6.0d } { @@ -540,7 +530,7 @@ type: "item" }] title: "{quests.stone_age.iron_flask.title}" - x: 2.5d + x: 2.0d y: 8.0d } { @@ -549,6 +539,7 @@ guide_page: "tfc:field_guide tfc:getting_started/pottery" hide_dependency_lines: true id: "021921B4D2044B3B" + shape: "diamond" subtitle: "{quests.stone_age.find_clay.subtitle}" tasks: [ { @@ -601,7 +592,6 @@ guide_page: "tfc:field_guide tfc:getting_started/finding_ores" hide_dependency_lines: true id: "669F84C6A2A64145" - shape: "diamond" subtitle: "{quests.stone_age.native_ores.subtitle}" tasks: [{ id: "0B70FD35D2C27E4C" @@ -1386,7 +1376,7 @@ guide_page: "tfc:field_guide tfc:mechanics/support_beams" icon: "createdeco:decal_warning" id: "618090A6D0D3B2F1" - shape: "diamond" + shape: "circle" size: 1.0d subtitle: "{quests.stone_age.hazards.subtitle}" tasks: [{ @@ -1399,7 +1389,7 @@ y: 10.5d } { - dependencies: ["3D7B0F3134C30364"] + dependencies: ["427814F6E9386772"] description: ["{quests.stone_age.foods.desc}"] id: "0FB8FD84B13F10C6" subtitle: "{quests.stone_age.foods.subtitle}" @@ -1416,7 +1406,7 @@ type: "item" }] title: "{quests.stone_age.foods.title}" - x: 4.5d + x: 4.0d y: -5.0d } { @@ -1495,6 +1485,7 @@ guide_page: "tfc:field_guide tfc:getting_started/food_and_water 5" icon: "minecraft:apple" id: "749B3C8698D34E91" + shape: "circle" size: 1.5d subtitle: "{quests.stone_age.nutrition.subtitle}" tasks: [{ @@ -1502,7 +1493,7 @@ type: "checkmark" }] title: "{quests.stone_age.nutrition.title}" - x: 3.0d + x: 2.5d y: -5.0d } { @@ -1666,7 +1657,7 @@ type: "item" }] title: "{quests.stone_age.leather.title}" - x: 1.5d + x: 1.0d y: 13.5d } { @@ -1688,28 +1679,37 @@ type: "checkmark" }] title: "{quests.stone_age.hydration.title}" - x: 6.0d + x: 5.5d y: 4.5d } { - dependencies: ["3D7B0F3134C30364"] + dependencies: ["427814F6E9386772"] description: ["{quests.stone_age.temperature.desc}"] icon: "minecraft:sunflower" id: "38839D3E049215CE" + shape: "circle" subtitle: "{quests.stone_age.temperature.subtitle}" tasks: [{ id: "5EF087A092F21202" type: "checkmark" }] title: "{quests.stone_age.temperature.title}" - x: 1.0d + x: 0.5d y: 3.0d } { dependencies: ["38839D3E049215CE"] description: ["{quests.stone_age.insulation.desc}"] + icon: { + Count: 1 + id: "tfcambiental:straw_hat" + tag: { + Damage: 0 + } + } id: "4521BB8892B386AF" - size: 2.0d + shape: "circle" + size: 1.5d subtitle: "{quests.stone_age.insulation.subtitle}" tasks: [{ id: "139FA72AB6F06E57" @@ -1834,7 +1834,7 @@ type: "item" }] title: "{quests.stone_age.glass_bottles.title}" - x: 6.5d + x: 6.0d y: 8.0d } { @@ -1848,7 +1848,7 @@ type: "checkmark" }] title: "{quests.stone_age.water_bucket.title}" - x: 4.5d + x: 4.0d y: 9.0d } { diff --git a/config/ftbquests/quests/chapters/space_survival.snbt b/config/ftbquests/quests/chapters/space_survival.snbt index 6732d30da..e5c942a16 100644 --- a/config/ftbquests/quests/chapters/space_survival.snbt +++ b/config/ftbquests/quests/chapters/space_survival.snbt @@ -822,6 +822,7 @@ ] dependency_requirement: "one_completed" description: ["{quests.space_survival.spice.desc}"] + icon: "tfg:spice" id: "0CA5B715B76E4A5B" shape: "hexagon" size: 1.5d @@ -1108,15 +1109,23 @@ Count: 1 ForgeCaps: { "tfc:food": { - creationDate: -9223372036854775808L + creationDate: -2L + foodData: { + dairy: 0.0f + decay: 0.0f + food: 0 + fruit: 0.0f + grain: 0.0f + meat: 0.0f + sat: 0.0f + veg: 0.0f + water: 0.0f + } + ingredients: [ ] traits: [ ] } - "tfc:item_heat": { - heat: 0.0f - ticks: 0L - } } - id: "betterend:cave_pumpkin_pie" + id: "tfg:food/cooked_dino_nugget" } id: "1AC201876984D248" optional: true diff --git a/config/ftbquests/quests/chapters/tips__tools.snbt b/config/ftbquests/quests/chapters/tips__tools.snbt index d6eb2d162..33f0a8573 100644 --- a/config/ftbquests/quests/chapters/tips__tools.snbt +++ b/config/ftbquests/quests/chapters/tips__tools.snbt @@ -84,7 +84,7 @@ { dependencies: [ "125563A12EE5C296" - "5088768AAA28FCBA" + "56CA2EB7812529C5" ] description: ["{quests.tfg_tips.red_steel_backpack.desc}"] id: "4B79026C8D2DACC4" @@ -1170,6 +1170,7 @@ dependencies: ["037CDA933FBE2CBE"] description: ["{quests.tfg_tips.olive_oil.desc}"] id: "13FC17F88DFEB8A8" + optional: true size: 1.5d subtitle: "{quests.tfg_tips.olive_oil.subtitle}" tasks: [{ @@ -1231,9 +1232,13 @@ y: 12.0d } { - dependencies: ["037CDA933FBE2CBE"] + dependencies: [ + "037CDA933FBE2CBE" + "5B2696206205CB2E" + ] description: ["{quests.tfg_tips.glowstone_lamp.desc}"] id: "61F58B402F1AE40B" + optional: true shape: "heart" size: 2.0d subtitle: "{quests.tfg_tips.glowstone_lamp.subtitle}" @@ -1256,6 +1261,7 @@ dependencies: ["037CDA933FBE2CBE"] description: ["{quests.tfg_tips.tallow.desc}"] id: "54E6994D5CC693A7" + optional: true size: 1.15d subtitle: "{quests.tfg_tips.tallow.subtitle}" tasks: [{ @@ -1278,6 +1284,7 @@ dependencies: ["037CDA933FBE2CBE"] description: ["{quests.tfg_tips.creosote.desc}"] id: "72C1E430FF6D2DD8" + optional: true size: 1.0d subtitle: "{quests.tfg_tips.creosote.subtitle}" tasks: [{ @@ -1304,6 +1311,7 @@ description: ["{quests.tfg_tips.lava_lamp.desc}"] icon: "minecraft:lava_bucket" id: "4EBABACAB444244D" + optional: true shape: "square" size: 1.75d subtitle: "{quests.tfg_tips.lava_lamp.subtitle}" @@ -2447,6 +2455,7 @@ dependencies: ["037CDA933FBE2CBE"] description: ["{quests.tfg_tips.tools_tips.seed_oil.desc}"] id: "30B9137740247627" + optional: true size: 1.25d subtitle: "{quests.tfg_tips.tools_tips.seed_oil.subtitle}" tasks: [{ @@ -2469,6 +2478,7 @@ dependencies: ["037CDA933FBE2CBE"] description: ["{quests.tfg_tips.tools_tips.soybean_oil.desc}"] id: "6C0A087006DF8679" + optional: true size: 1.25d subtitle: "{quests.tfg_tips.tools_tips.soybean_oil.subtitle}" tasks: [{ diff --git a/defaultconfigs/createhorsepower-server.toml b/defaultconfigs/createhorsepower-server.toml index 84f77de94..521d4e8b8 100644 --- a/defaultconfigs/createhorsepower-server.toml +++ b/defaultconfigs/createhorsepower-server.toml @@ -1,34 +1,34 @@ - -#General Settings -[general] - #Base rpm creatures can spin the horse crank. - #Range: > 1 - creatureRPMRange = 16 - #How much stress small creatures can produce for the horse crank. - #Range: > 1 - smallCreatureStressRange = 8 - #How much stress medium creatures can produce for the horse crank. - #Range: > 1 - mediumCreatureStressRange = 12 - #How much stress large creatures can produce for the horse crank. - #Range: > 1 - largeCreatureStressRange = 16 - -#Path Category -[paths] - #Types of blocks valid as "Poor" quality, - poor_path_block = ["tfc:rooted_dirt/sandy_loam", "tfc:clay/sandy_loam", "tfc:dirt/sandy_loam", "tfc:rooted_dirt/loam", "tfc:clay/loam", "tfc:clay/silt", "tfc:dirt/loam", "tfc:rooted_dirt/silt", "tfc:dirt/silt", "tfc:dirt/silty_loam", "tfc:clay/silty_loam", "tfc:rooted_dirt/silty_loam", "tfc:peat_grass", "tfc:clay_grass/silty_loam", "tfc:grass/silty_loam", "tfc:clay_grass/sandy_loam", "tfc:grass/sandy_loam", "tfc:clay_grass/loam", "tfc:grass/loam", "tfc:clay_grass/silt", "tfc:grass/silt", "tfg:grass/mars_dirt", "tfg:grass/sangnum_mycelium", "tfg:grass/amber_mycelium", "tfg:grass/rusticus_mycelium", "tfg:grass/sangnum_clay_mycelium", "tfg:grass/amber_clay_mycelium", "tfg:grass/rusticus_clay_mycelium", "tfg:grass/sangnum_kaolin_mycelium", "tfg:grass/amber_kaolin_mycelium", "tfg:grass/rusticus_kaolin_mycelium"] - #Types of blocks valid as "Normal" quality, - normal_path_block = ["tfc:rock/gravel/granite", "tfc:rock/gravel/diorite", "tfc:rock/gravel/gabbro", "tfc:rock/gravel/shale", "tfc:rock/gravel/claystone", "tfc:rock/gravel/limestone", "tfc:rock/gravel/conglomerate", "tfc:rock/gravel/dolomite", "tfc:rock/gravel/chert", "tfc:rock/gravel/schist", "tfc:rock/gravel/phyllite", "tfc:rock/gravel/slate", "tfc:rock/gravel/quartzite", "tfc:rock/gravel/dacite", "tfc:rock/gravel/andesite", "tfc:rock/gravel/basalt", "tfc:rock/gravel/rhyolite", "tfc:rock/gravel/chalk", "tfc:rock/gravel/marble", "tfg:rock/gravel_dripstone", "tfg:rock/gravel_deepslate", "tfg:rock/gravel_blackstone", "tfg:rock/gravel_moon", "tfg:rock/gravel_moon_deepslate", "tfg:rock/gravel_glacio", "tfg:rock/gravel_mars", "tfg:rock/gravel_venus", "tfg:rock/gravel_mercury", "tfg:rock/gravel_crackrack", "tfc:grass_path/silt", "tfc:grass_path/loam", "tfc:grass_path/sandy_loam", "tfc:grass_path/silty_loam", "tfg:grass/mars_path", "rnr:hoggin"] - #Types of blocks valid as "Great" quality, - great_path_block = ["rnr:rock/gravel_road/chert", "rnr:rock/gravel_road/chalk", "rnr:rock/gravel_road/rhyolite", "rnr:rock/gravel_road/basalt", "rnr:rock/gravel_road/andesite", "rnr:rock/gravel_road/claystone", "rnr:rock/gravel_road/limestone", "rnr:rock/gravel_road/conglomerate", "rnr:rock/gravel_road/dolomite", "rnr:rock/sett_road/granite", "rnr:rock/sett_road/diorite", "rnr:rock/sett_road/chalk", "rnr:rock/sett_road/rhyolite", "rnr:rock/sett_road/basalt", "rnr:rock/sett_road/quartzite", "rnr:rock/sett_road/dacite", "rnr:rock/sett_road/andesite", "rnr:rock/cobbled_road/chert", "rnr:rock/cobbled_road/dolomite", "rnr:rock/gravel_road/granite", "rnr:rock/gravel_road/marble", "rnr:rock/gravel_road/schist", "rnr:rock/gravel_road/phyllite", "rnr:rock/gravel_road/slate", "rnr:rock/gravel_road/quartzite", "rnr:rock/gravel_road/dacite", "rnr:rock/macadam_road/rhyolite", "rnr:rock/macadam_road/chalk", "rnr:rock/macadam_road/chert", "rnr:rock/macadam_road/dolomite", "rnr:rock/macadam_road/conglomerate", "rnr:rock/macadam_road/limestone", "rnr:rock/macadam_road/gabbro", "rnr:rock/macadam_road/claystone", "rnr:rock/macadam_road/shale", "rnr:rock/macadam_road/gneiss", "rnr:rock/macadam_road/marble", "rnr:rock/macadam_road/schist", "rnr:rock/macadam_road/phyllite", "rnr:rock/macadam_road/slate", "rnr:rock/macadam_road/quartzite", "rnr:rock/macadam_road/dacite", "rnr:rock/macadam_road/andesite", "rnr:rock/macadam_road/basalt", "rnr:rock/gravel_road/diorite", "rnr:rock/gravel_road/gabbro", "rnr:rock/gravel_road/shale", "rnr:rock/macadam_road/diorite", "rnr:rock/macadam_road/granite", "rnr:rock/cobbled_road/conglomerate", "rnr:rock/cobbled_road/limestone", "rnr:rock/cobbled_road/claystone", "rnr:rock/cobbled_road/shale", "rnr:rock/cobbled_road/gabbro", "rnr:rock/cobbled_road/diorite", "rnr:rock/cobbled_road/granite", "rnr:rock/cobbled_road/phyllite", "rnr:rock/cobbled_road/schist", "rnr:rock/cobbled_road/slate", "rnr:rock/cobbled_road/quartzite", "rnr:rock/cobbled_road/dacite", "rnr:rock/cobbled_road/andesite", "rnr:rock/cobbled_road/rhyolite", "rnr:rock/cobbled_road/basalt", "rnr:rock/cobbled_road/chalk", "rnr:rock/cobbled_road/gneiss", "rnr:rock/cobbled_road/marble", "rnr:rock/sett_road/chert", "rnr:rock/sett_road/dolomite", "rnr:rock/sett_road/conglomerate", "rnr:rock/sett_road/limestone", "rnr:rock/sett_road/claystone", "rnr:rock/sett_road/shale", "rnr:rock/sett_road/gabbro", "rnr:rock/flagstones/gneiss", "rnr:rock/flagstones/marble", "rnr:black_sandstone_flagstones", "rnr:brown_sandstone_flagstones", "rnr:green_sandstone_flagstones", "rnr:pink_sandstone_flagstones", "rnr:red_sandstone_flagstones", "rnr:white_sandstone_flagstones", "rnr:yellow_sandstone_flagstones", "rnr:concrete_road_sett", "rnr:brick_road", "rnr:rock/sett_road/marble", "rnr:rock/sett_road/gneiss", "rnr:rock/sett_road/schist", "rnr:rock/sett_road/phyllite", "rnr:rock/sett_road/slate", "rnr:rock/sett_road/quartzite", "rnr:rock/sett_road/dacite", "rnr:rock/flagstones/chert", "rnr:rock/flagstones/dolomite", "rnr:rock/flagstones/conglomerate", "rnr:rock/flagstones/limestone", "rnr:rock/flagstones/claystone", "rnr:rock/flagstones/shale", "rnr:rock/flagstones/gabbro", "rnr:rock/flagstones/diorite", "rnr:rock/flagstones/granite", "rnr:rock/flagstones/schist", "rnr:rock/flagstones/phyllite", "rnr:rock/flagstones/slate", "rnr:rock/flagstones/quartzite", "rnr:rock/flagstones/andesite", "rnr:rock/flagstones/dacite", "rnr:rock/flagstones/basalt", "rnr:rock/flagstones/rhyolite", "rnr:rock/flagstones/chalk"] - -#Creature Category -[workers] - #Valid "Small" creatures - small_creatures = ["tfc:wolf", "tfc:dog", "tfc:pig", "tfc:sheep", "tfc:goat", "tfc:alpaca", "tfg:glacian_ram", "tfg:wraptor", "species:springaling", "tfg:surfer"] - #Valid "Medium" creatures - medium_creatures = ["tfc:cow", "tfc:donkey", "tfc:dolphin", "wan_ancient_beasts:glider", "wan_ancient_beasts:soarer"] - #Valid "Large" creatures - large_creatures = ["tfc:horse", "tfc:mule", "tfc:musk_ox", "tfc:yak", "tfg:sniffer", "wan_ancient_beasts:walker", "species:cruncher"] +#Base rpm creatures can spin the horse crank. +#Range: > 1 +creatureRPMRange = 16 +#How much stress small creatures can produce for the horse crank. +#Range: > 1 +smallCreatureStressRange = 8 +#How much stress medium creatures can produce for the horse crank. +#Range: > 1 +mediumCreatureStressRange = 12 +#How much stress large creatures can produce for the horse crank. +#Range: > 1 +largeCreatureStressRange = 16 +#The multiplier for "Poor" paths +#Range: 0.0 ~ 1.7976931348623157E308 +poorMultiplier = 0.5 +#The multiplier for "Normal" paths +#Range: 0.0 ~ 1.7976931348623157E308 +normalMultiplier = 1.0 +#The multiplier for "Great" paths +#Range: 0.0 ~ 1.7976931348623157E308 +greatMultiplier = 2.0 +#Types of blocks valid as "Poor" quality +poorPathBlock = ["tfc:rooted_dirt/sandy_loam", "tfc:clay/sandy_loam", "tfc:dirt/sandy_loam", "tfc:rooted_dirt/loam", "tfc:clay/loam", "tfc:clay/silt", "tfc:dirt/loam", "tfc:rooted_dirt/silt", "tfc:dirt/silt", "tfc:dirt/silty_loam", "tfc:clay/silty_loam", "tfc:rooted_dirt/silty_loam", "tfc:peat_grass", "tfc:clay_grass/silty_loam", "tfc:grass/silty_loam", "tfc:clay_grass/sandy_loam", "tfc:grass/sandy_loam", "tfc:clay_grass/loam", "tfc:grass/loam", "tfc:clay_grass/silt", "tfc:grass/silt", "tfg:grass/mars_dirt", "tfg:grass/sangnum_mycelium", "tfg:grass/amber_mycelium", "tfg:grass/rusticus_mycelium", "tfg:grass/sangnum_clay_mycelium", "tfg:grass/amber_clay_mycelium", "tfg:grass/rusticus_clay_mycelium", "tfg:grass/sangnum_kaolin_mycelium", "tfg:grass/amber_kaolin_mycelium", "tfg:grass/rusticus_kaolin_mycelium"] +#Types of blocks valid as "Normal" quality +normalPathBlock = ["tfc:rock/gravel/granite", "tfc:rock/gravel/diorite", "tfc:rock/gravel/gabbro", "tfc:rock/gravel/shale", "tfc:rock/gravel/claystone", "tfc:rock/gravel/limestone", "tfc:rock/gravel/conglomerate", "tfc:rock/gravel/dolomite", "tfc:rock/gravel/chert", "tfc:rock/gravel/schist", "tfc:rock/gravel/phyllite", "tfc:rock/gravel/slate", "tfc:rock/gravel/quartzite", "tfc:rock/gravel/dacite", "tfc:rock/gravel/andesite", "tfc:rock/gravel/basalt", "tfc:rock/gravel/rhyolite", "tfc:rock/gravel/chalk", "tfc:rock/gravel/marble", "tfg:rock/gravel_dripstone", "tfg:rock/gravel_deepslate", "tfg:rock/gravel_blackstone", "tfg:rock/gravel_moon", "tfg:rock/gravel_moon_deepslate", "tfg:rock/gravel_glacio", "tfg:rock/gravel_mars", "tfg:rock/gravel_venus", "tfg:rock/gravel_mercury", "tfg:rock/gravel_crackrack", "tfc:grass_path/silt", "tfc:grass_path/loam", "tfc:grass_path/sandy_loam", "tfc:grass_path/silty_loam", "tfg:grass/mars_path", "rnr:hoggin"] +#Types of blocks valid as "Great" quality +greatPathBlock = ["rnr:rock/gravel_road/chert", "rnr:rock/gravel_road/chalk", "rnr:rock/gravel_road/rhyolite", "rnr:rock/gravel_road/basalt", "rnr:rock/gravel_road/andesite", "rnr:rock/gravel_road/claystone", "rnr:rock/gravel_road/limestone", "rnr:rock/gravel_road/conglomerate", "rnr:rock/gravel_road/dolomite", "rnr:rock/sett_road/granite", "rnr:rock/sett_road/diorite", "rnr:rock/sett_road/chalk", "rnr:rock/sett_road/rhyolite", "rnr:rock/sett_road/basalt", "rnr:rock/sett_road/quartzite", "rnr:rock/sett_road/dacite", "rnr:rock/sett_road/andesite", "rnr:rock/cobbled_road/chert", "rnr:rock/cobbled_road/dolomite", "rnr:rock/gravel_road/granite", "rnr:rock/gravel_road/marble", "rnr:rock/gravel_road/schist", "rnr:rock/gravel_road/phyllite", "rnr:rock/gravel_road/slate", "rnr:rock/gravel_road/quartzite", "rnr:rock/gravel_road/dacite", "rnr:rock/macadam_road/rhyolite", "rnr:rock/macadam_road/chalk", "rnr:rock/macadam_road/chert", "rnr:rock/macadam_road/dolomite", "rnr:rock/macadam_road/conglomerate", "rnr:rock/macadam_road/limestone", "rnr:rock/macadam_road/gabbro", "rnr:rock/macadam_road/claystone", "rnr:rock/macadam_road/shale", "rnr:rock/macadam_road/gneiss", "rnr:rock/macadam_road/marble", "rnr:rock/macadam_road/schist", "rnr:rock/macadam_road/phyllite", "rnr:rock/macadam_road/slate", "rnr:rock/macadam_road/quartzite", "rnr:rock/macadam_road/dacite", "rnr:rock/macadam_road/andesite", "rnr:rock/macadam_road/basalt", "rnr:rock/gravel_road/diorite", "rnr:rock/gravel_road/gabbro", "rnr:rock/gravel_road/shale", "rnr:rock/macadam_road/diorite", "rnr:rock/macadam_road/granite", "rnr:rock/cobbled_road/conglomerate", "rnr:rock/cobbled_road/limestone", "rnr:rock/cobbled_road/claystone", "rnr:rock/cobbled_road/shale", "rnr:rock/cobbled_road/gabbro", "rnr:rock/cobbled_road/diorite", "rnr:rock/cobbled_road/granite", "rnr:rock/cobbled_road/phyllite", "rnr:rock/cobbled_road/schist", "rnr:rock/cobbled_road/slate", "rnr:rock/cobbled_road/quartzite", "rnr:rock/cobbled_road/dacite", "rnr:rock/cobbled_road/andesite", "rnr:rock/cobbled_road/rhyolite", "rnr:rock/cobbled_road/basalt", "rnr:rock/cobbled_road/chalk", "rnr:rock/cobbled_road/gneiss", "rnr:rock/cobbled_road/marble", "rnr:rock/sett_road/chert", "rnr:rock/sett_road/dolomite", "rnr:rock/sett_road/conglomerate", "rnr:rock/sett_road/limestone", "rnr:rock/sett_road/claystone", "rnr:rock/sett_road/shale", "rnr:rock/sett_road/gabbro", "rnr:rock/flagstones/gneiss", "rnr:rock/flagstones/marble", "rnr:black_sandstone_flagstones", "rnr:brown_sandstone_flagstones", "rnr:green_sandstone_flagstones", "rnr:pink_sandstone_flagstones", "rnr:red_sandstone_flagstones", "rnr:white_sandstone_flagstones", "rnr:yellow_sandstone_flagstones", "rnr:concrete_road_sett", "rnr:brick_road", "rnr:rock/sett_road/marble", "rnr:rock/sett_road/gneiss", "rnr:rock/sett_road/schist", "rnr:rock/sett_road/phyllite", "rnr:rock/sett_road/slate", "rnr:rock/sett_road/quartzite", "rnr:rock/sett_road/dacite", "rnr:rock/flagstones/chert", "rnr:rock/flagstones/dolomite", "rnr:rock/flagstones/conglomerate", "rnr:rock/flagstones/limestone", "rnr:rock/flagstones/claystone", "rnr:rock/flagstones/shale", "rnr:rock/flagstones/gabbro", "rnr:rock/flagstones/diorite", "rnr:rock/flagstones/granite", "rnr:rock/flagstones/schist", "rnr:rock/flagstones/phyllite", "rnr:rock/flagstones/slate", "rnr:rock/flagstones/quartzite", "rnr:rock/flagstones/andesite", "rnr:rock/flagstones/dacite", "rnr:rock/flagstones/basalt", "rnr:rock/flagstones/rhyolite", "rnr:rock/flagstones/chalk", "greate:andesite_shaft", "greate:steel_shaft", "greate:andesite_cogwheel", "greate:steel_cogwheel", "greate:large_andesite_cogwheel", "greate:large_steel_cogwheel"] +#Valid "Small" creatures +smallCreatures = ["tfc:wolf", "tfc:dog", "tfc:pig", "tfc:sheep", "tfc:goat", "tfc:alpaca", "tfg:glacian_ram", "tfg:wraptor", "species:springaling", "tfg:surfer"] +#Valid "Medium" creatures +mediumCreatures = ["tfc:cow", "tfc:donkey", "tfc:dolphin", "wan_ancient_beasts:glider", "wan_ancient_beasts:soarer"] +#Valid "Large" creatures +largeCreatures = ["tfc:horse", "tfc:mule", "tfc:musk_ox", "tfc:yak", "tfg:sniffer", "wan_ancient_beasts:walker", "species:cruncher"] diff --git a/kubejs/assets/gtceu/lang/en_us.json b/kubejs/assets/gtceu/lang/en_us.json index 4bd56737f..e7842f2ab 100644 --- a/kubejs/assets/gtceu/lang/en_us.json +++ b/kubejs/assets/gtceu/lang/en_us.json @@ -132,7 +132,6 @@ "material.gtceu.damascus_steel": "Swine-steel", "material.gtceu.air": "Earth Air", "material.gtceu.liquid_air": "Liquid Earth Air", - "material.gtceu.fish_oil": "Tallowate", "material.gtceu.cooperite": "Cooperite", "material.gtceu.armalcolite": "Armalcolite", "material.gtceu.desh": "Desh", @@ -206,6 +205,7 @@ "gtceu.jei.bedrock_fluid.heavy_ammoniacal_water": "Martian Heavy Ammoniacal Water", "gtceu.jei.bedrock_fluid.liquid_ice": "Martian Ice", "gtceu.recipe.category.ingot_molding": "Material Molding", + "block.gtceu.wire_coil.tooltip_cracking": "ยง8Cracking Unit, Coal Liquefaction Tower,ยงr\nยง8Moon and Ostrum Harvesters:ยงr", "tagprefix.sword_head": "%s Sword Head", "tagprefix.pickaxe_head": "%s Pickaxe Head", "tagprefix.shovel_head": "%s Shovel Head", diff --git a/kubejs/assets/gtceu/lang/zh_cn.json b/kubejs/assets/gtceu/lang/zh_cn.json index 3394f3270..851079756 100644 --- a/kubejs/assets/gtceu/lang/zh_cn.json +++ b/kubejs/assets/gtceu/lang/zh_cn.json @@ -13,8 +13,8 @@ "block.gtceu.evaporation_tower": "่’ธๅ‘ๅก”", "block.gtceu.ostrum_harvester": "็ดซ้‡‘้‡‡้›†ๅ™จ", "block.gtceu.moon_dust_harvester": "ๆœˆๅฃค้‡‡้›†ๅ™จ", - "block.gtceu.coal_liquefaction_tower": "็…ค็‚ญๆถฒๅŒ–ๅก”", "block.tfg.ostrum_linear_accelerator": "็ดซ้‡‘็บฟๆ€งๅŠ ้€Ÿๅ™จ", + "block.gtceu.coal_liquefaction_tower": "็…ค็‚ญๆถฒๅŒ–ๅก”", "block.gtceu.ulv_super_tank": "ๅŸบ็ก€่ถ…็บง็ผธ", "block.gtceu.ulv_super_chest": "ๅŸบ็ก€่ถ…็บง็ฎฑ", "block.gtceu.ulv_hermetic_casing": "ๅŸบ็ก€ๅฏ†ๅฐๆœบๆขฐๆ–นๅ—", @@ -63,6 +63,8 @@ "gtceu.tooltip.machine.nuclear_fuel_factory_2": "ยง7ๅฐ†ๅŽŸๅง‹ๆ”พๅฐ„ๆ€งๆๆ–™ๅŠ ๅทฅๆˆ่ฃ‚ๅ˜็‡ƒๆ–™ยงr", "gtceu.tooltip.machine.steam_bloomery_1": "ยง7็”จ่’ธๆฑฝๅŠจๅŠ›ๅ‡็บงไฝ ็š„้”ป้“็‚‰๏ผยงr", "gtceu.tooltip.machine.steam_bloomery_2": "ยง7ๅฐ†ๅซ้“็Ÿฟ็ฒ‰ๆˆ–้”ญๅŠ ๅทฅๆˆ็”Ÿ้“ๆ–นๅฏใ€‚\nไฝฟ็”จ็„ฆ็…คๆˆ–ๆ— ็ƒŸ็…คๅฏๅ€ๅขžไบง้‡ใ€‚\nๆ”ฏๆŒๆœ€ๅคš8็ป„้…ๆ–นๅนถ่กŒๅค„็†๏ผŒ็›ธๅบ”่ฐƒๆ•ด่’ธๆฑฝ้œ€ๆฑ‚ใ€‚ยงr", + "gtceu.tooltip.machine.coal_liquefaction_tower_1": "ยง7็ขณ็ด ๅฅถๆ˜”ๅˆถ้€ ๆœบยงr", + "gtceu.tooltip.machine.coal_liquefaction_tower_2": "ยง7ไปŽ็ขณ่ดจๅ›บไฝ“ไธŽๆ‚้…šๆฒนไธญๆๅ–ๆฐ”ไฝ“็‡ƒๆ–™ยงr", "item.gtceu.tiny_wood_dust": "ๅฐๆ’ฎ่ฝฏๆœจๆต†", "item.gtceu.small_wood_dust": "ๅฐๅ †่ฝฏๆœจๆต†", "item.gtceu.wood_dust": "่ฝฏๆœจๆต†", @@ -130,14 +132,13 @@ "material.gtceu.damascus_steel": "็Œช็ต้’ข", "material.gtceu.air": "ๅœฐ็ƒ็ฉบๆฐ”", "material.gtceu.liquid_air": "ๆถฒๆ€ๅœฐ็ƒ็ฉบๆฐ”", - "material.gtceu.fish_oil": "่„‚้…ธ็›", "material.gtceu.cooperite": "็กซ้“‚็Ÿฟ", "material.gtceu.armalcolite": "้˜ฟๅง†้˜ฟๅฐ”ๆŸฏๅฐ”็Ÿฟ", "material.gtceu.desh": "ๆˆดๆ–ฏ", "material.gtceu.ostrum": "็ดซ้‡‘", "material.gtceu.calorite": "่€็ƒญ้‡‘ๅฑž", "material.gtceu.etrium": "ๅŸƒๅฟ’ๆฉ", - "material.gtceu.tarkianite": "ๅก”ๅŸบๅฎ‰็Ÿณ", + "material.gtceu.tarkianite": "ๅก”ๅŸบๅฎ‰็Ÿฟ", "material.gtceu.aluminium_silicate": "็ก…้…ธ้“", "material.gtceu.rocket_alloy_t1": "Rๅž‹้“้’ข็ซ็ฎญๅˆ้‡‘", "material.gtceu.rocket_alloy_t2": "ASM 4914 ้’›ๅˆ้‡‘็ซ็ฎญๅˆ้‡‘", @@ -204,7 +205,7 @@ "gtceu.jei.bedrock_fluid.heavy_ammoniacal_water": "็ซๆ˜Ÿ้‡ๆฐจๆฐด", "gtceu.jei.bedrock_fluid.liquid_ice": "็ซๆ˜Ÿๅ†ฐ", "gtceu.recipe.category.ingot_molding": "ๅŽ‹ๆจก", - "tagprefix.sword_head": "%sๅ‰‘ๅคด", + "tagprefix.sword_head": "%sๅ‰‘่บซ", "tagprefix.pickaxe_head": "%s้•ๅคด", "tagprefix.shovel_head": "%s้“ฒๅคด", "tagprefix.axe_head": "%sๆ–งๅคด", @@ -214,13 +215,13 @@ "tagprefix.hammer_head": "%s้”คๅคด", "tagprefix.saw_head": "%s้”ฏๅคด", "tagprefix.knife_head": "%sๅˆ€ๅคด", - "tagprefix.butchery_knife_head": "%sๅฑ ๅˆ€ๅคด", + "tagprefix.butchery_knife_head": "%sๅฑ ๅฎฐๅˆ€ๅคด", "tagprefix.mining_hammer_head": "%s้‡‡็Ÿฟ้”คๅคด", "tagprefix.spade_head": "%s้”นๅคด", "tagprefix.double_ingot": "%sๅŒ้”ญ", - "tagprefix.poor_raw": "่ดซ็˜ %sๅŽŸ็Ÿฟ", - "tagprefix.rich_raw": "ๅฏŒ้›†%sๅŽŸ็Ÿฟ", - "tagprefix.dusty_raw": "็งฏๅฐ˜%sๅŽŸ็Ÿฟ", + "tagprefix.poor_raw": "่ดซ็˜ ็ฒ—%s", + "tagprefix.rich_raw": "ๅฏŒ้›†็ฒ—%s", + "tagprefix.dusty_raw": "็งฏๅฐ˜็ฒ—%s", "tagprefix.gabbro": "่พ‰้•ฟๅฒฉ%s็Ÿฟ็Ÿณ", "tagprefix.shale": "้กตๅฒฉ%s็Ÿฟ็Ÿณ", "tagprefix.claystone": "้ปๅœŸๅฒฉ%s็Ÿฟ็Ÿณ", diff --git a/kubejs/assets/gtceu/models/block/cube_3_layer/all.json b/kubejs/assets/gtceu/models/block/cube_3_layer/all.json new file mode 100644 index 000000000..bd4649c5f --- /dev/null +++ b/kubejs/assets/gtceu/models/block/cube_3_layer/all.json @@ -0,0 +1,24 @@ +{ + "parent": "gtceu:block/cube_3_layer/default", + "textures": { + "particle": "#bot_all", + "bot_down": "#bot_all", + "bot_up": "#bot_all", + "bot_north": "#bot_all", + "bot_east": "#bot_all", + "bot_south": "#bot_all", + "bot_west": "#bot_all", + "mid_down": "#mid_all", + "mid_up": "#mid_all", + "mid_north": "#mid_all", + "mid_east": "#mid_all", + "mid_south": "#mid_all", + "mid_west": "#mid_all", + "top_down": "#top_all", + "top_up": "#top_all", + "top_north": "#top_all", + "top_east": "#top_all", + "top_south": "#top_all", + "top_west": "#top_all" + } +} diff --git a/kubejs/assets/gtceu/models/block/cube_3_layer/all_translucent.json b/kubejs/assets/gtceu/models/block/cube_3_layer/all_translucent.json new file mode 100644 index 000000000..7e9b40eb4 --- /dev/null +++ b/kubejs/assets/gtceu/models/block/cube_3_layer/all_translucent.json @@ -0,0 +1,25 @@ +{ + "parent": "gtceu:block/cube_3_layer/default", + "render_type": "translucent", + "textures": { + "particle": "#bot_all", + "bot_down": "#bot_all", + "bot_up": "#bot_all", + "bot_north": "#bot_all", + "bot_east": "#bot_all", + "bot_south": "#bot_all", + "bot_west": "#bot_all", + "mid_down": "#mid_all", + "mid_up": "#mid_all", + "mid_north": "#mid_all", + "mid_east": "#mid_all", + "mid_south": "#mid_all", + "mid_west": "#mid_all", + "top_down": "#top_all", + "top_up": "#top_all", + "top_north": "#top_all", + "top_east": "#top_all", + "top_south": "#top_all", + "top_west": "#top_all" + } +} diff --git a/kubejs/assets/gtceu/models/block/cube_3_layer/default.json b/kubejs/assets/gtceu/models/block/cube_3_layer/default.json new file mode 100644 index 000000000..4919daa49 --- /dev/null +++ b/kubejs/assets/gtceu/models/block/cube_3_layer/default.json @@ -0,0 +1,43 @@ +{ + "parent": "block/block", + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bot_down", "cullface": "down", "tintindex": 0 }, + "up": { "texture": "#bot_up", "cullface": "up", "tintindex": 0 }, + "north": { "texture": "#bot_north", "cullface": "north", "tintindex": 0 }, + "south": { "texture": "#bot_south", "cullface": "south", "tintindex": 0 }, + "west": { "texture": "#bot_west", "cullface": "west", "tintindex": 0 }, + "east": { "texture": "#bot_east", "cullface": "east", "tintindex": 0 } + } + }, + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "shade": false, + "faces": { + "down": { "texture": "#mid_down", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#mid_up", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#mid_north", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#mid_south", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#mid_west", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#mid_east", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "shade": false, + "faces": { + "down": { "texture": "#top_down", "cullface": "down", "tintindex": 2 }, + "up": { "texture": "#top_up", "cullface": "up", "tintindex": 2 }, + "north": { "texture": "#top_north", "cullface": "north", "tintindex": 2 }, + "south": { "texture": "#top_south", "cullface": "south", "tintindex": 2 }, + "west": { "texture": "#top_west", "cullface": "west", "tintindex": 2 }, + "east": { "texture": "#top_east", "cullface": "east", "tintindex": 2 } + } + } + ] +} diff --git a/kubejs/assets/gtceu/models/block/material_sets/chonky/block.json b/kubejs/assets/gtceu/models/block/material_sets/chonky/block.json new file mode 100644 index 000000000..9f753d696 --- /dev/null +++ b/kubejs/assets/gtceu/models/block/material_sets/chonky/block.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/cube_3_layer/all", + "textures": { + "bot_all": "gtceu:block/material_sets/chonky/block", + "mid_all": "gtceu:block/material_sets/chonky/block_secondary", + "top_all": "gtceu:block/material_sets/chonky/block_overlay" + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/models/block/material_sets/chonky/frame_gt.json b/kubejs/assets/gtceu/models/block/material_sets/chonky/frame_gt.json new file mode 100644 index 000000000..e98a4e16d --- /dev/null +++ b/kubejs/assets/gtceu/models/block/material_sets/chonky/frame_gt.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/cube_3_layer/all_translucent", + "textures": { + "bot_all": "gtceu:block/material_sets/chonky/frame_gt", + "mid_all": "gtceu:block/material_sets/chonky/frame_gt_secondary", + "top_all": "gtceu:block/material_sets/chonky/frame_gt_overlay" + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/block.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/block.json new file mode 100644 index 000000000..495c503ae --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/block.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:item/material_sets/chonky/block" +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/bolt.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/bolt.json new file mode 100644 index 000000000..e77b96e4f --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/bolt.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/bolt", + "layer1": "gtceu:item/material_sets/chonky/bolt_secondary", + "layer2": "gtceu:item/material_sets/chonky/bolt_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/foil.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/foil.json new file mode 100644 index 000000000..dca6eed74 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/foil.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/foil", + "layer1": "gtceu:item/material_sets/chonky/foil_secondary", + "layer2": "gtceu:item/material_sets/chonky/foil_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/frame_gt.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/frame_gt.json new file mode 100644 index 000000000..61f59e8b9 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/frame_gt.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:item/material_sets/chonky/frame_gt" +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/gear.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/gear.json new file mode 100644 index 000000000..b0265d2c0 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/gear.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/gear", + "layer1": "gtceu:item/material_sets/chonky/gear_secondary", + "layer2": "gtceu:item/material_sets/chonky/gear_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/gear_small.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/gear_small.json new file mode 100644 index 000000000..dd51c5c7f --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/gear_small.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/gear_small", + "layer1": "gtceu:item/material_sets/chonky/gear_small_secondary", + "layer2": "gtceu:item/material_sets/chonky/gear_small_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/ingot.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/ingot.json new file mode 100644 index 000000000..d7347df75 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/ingot.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/ingot", + "layer1": "gtceu:item/material_sets/chonky/ingot_secondary", + "layer2": "gtceu:item/material_sets/chonky/ingot_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/ingot_double.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/ingot_double.json new file mode 100644 index 000000000..bffa7f1e1 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/ingot_double.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/ingot_double", + "layer1": "gtceu:item/material_sets/chonky/ingot_double_secondary", + "layer2": "gtceu:item/material_sets/chonky/ingot_double_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/ingot_hot.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/ingot_hot.json new file mode 100644 index 000000000..db6a4ec37 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/ingot_hot.json @@ -0,0 +1,9 @@ +{ + "parent": "gtceu:item/material_sets/chonky/ingot", + "textures": { + "layer0":"gtceu:item/material_sets/chonky/ingot", + "layer1":"gtceu:item/material_sets/chonky/ingot_secondary", + "layer2":"gtceu:item/material_sets/chonky/ingot_overlay", + "layer3":"gtceu:item/material_sets/chonky/ingot_hot_overlay" + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/nugget.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/nugget.json new file mode 100644 index 000000000..1b994d90c --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/nugget.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/nugget", + "layer1": "gtceu:item/material_sets/chonky/nugget_secondary", + "layer2": "gtceu:item/material_sets/chonky/nugget_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/plate.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/plate.json new file mode 100644 index 000000000..662218a13 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/plate.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/plate", + "layer1": "gtceu:item/material_sets/chonky/plate_secondary", + "layer2": "gtceu:item/material_sets/chonky/plate_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/plate_dense.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/plate_dense.json new file mode 100644 index 000000000..479760975 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/plate_dense.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/plate_dense", + "layer1": "gtceu:item/material_sets/chonky/plate_dense_secondary", + "layer2": "gtceu:item/material_sets/chonky/plate_dense_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/plate_double.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/plate_double.json new file mode 100644 index 000000000..ba5f9b677 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/plate_double.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/plate_double", + "layer1": "gtceu:item/material_sets/chonky/plate_double_secondary", + "layer2": "gtceu:item/material_sets/chonky/plate_double_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/ring.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/ring.json new file mode 100644 index 000000000..665aa603b --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/ring.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/ring", + "layer1": "gtceu:item/material_sets/chonky/ring_secondary", + "layer2": "gtceu:item/material_sets/chonky/ring_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/rod.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/rod.json new file mode 100644 index 000000000..05da66ead --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/rod.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/rod", + "layer1": "gtceu:item/material_sets/chonky/rod_secondary", + "layer2": "gtceu:item/material_sets/chonky/rod_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/rod_long.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/rod_long.json new file mode 100644 index 000000000..2856de974 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/rod_long.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/rod_long", + "layer1": "gtceu:item/material_sets/chonky/rod_long_secondary", + "layer2": "gtceu:item/material_sets/chonky/rod_long_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/rotor.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/rotor.json new file mode 100644 index 000000000..e411f89b0 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/rotor.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/rotor", + "layer1": "gtceu:item/material_sets/chonky/rotor_secondary", + "layer2": "gtceu:item/material_sets/chonky/rotor_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/round.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/round.json new file mode 100644 index 000000000..8be0d3752 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/round.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/round", + "layer1": "gtceu:item/material_sets/chonky/round_secondary", + "layer2": "gtceu:item/material_sets/chonky/round_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/screw.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/screw.json new file mode 100644 index 000000000..45d4b4464 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/screw.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/screw", + "layer1": "gtceu:item/material_sets/chonky/screw_secondary", + "layer2": "gtceu:item/material_sets/chonky/screw_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/spring.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/spring.json new file mode 100644 index 000000000..3999b33c5 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/spring.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/spring", + "layer1": "gtceu:item/material_sets/chonky/spring_secondary", + "layer2": "gtceu:item/material_sets/chonky/spring_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/spring_small.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/spring_small.json new file mode 100644 index 000000000..71ffb6a0b --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/spring_small.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/spring_small", + "layer1": "gtceu:item/material_sets/chonky/spring_small_secondary", + "layer2": "gtceu:item/material_sets/chonky/spring_small_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_buzz_saw.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_buzz_saw.json new file mode 100644 index 000000000..1481a0e52 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_buzz_saw.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/tool_head_buzz_saw", + "layer1": "gtceu:item/material_sets/chonky/tool_head_buzz_saw_secondary", + "layer2": "gtceu:item/material_sets/chonky/tool_head_buzz_saw_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_chainsaw.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_chainsaw.json new file mode 100644 index 000000000..b97e0c3a9 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_chainsaw.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/tool_head_chainsaw", + "layer1": "gtceu:item/material_sets/chonky/tool_head_chainsaw_secondary", + "layer2": "gtceu:item/material_sets/chonky/tool_head_chainsaw_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_drill.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_drill.json new file mode 100644 index 000000000..74085a203 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_drill.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/tool_head_drill", + "layer1": "gtceu:item/material_sets/chonky/tool_head_drill_secondary", + "layer2": "gtceu:item/material_sets/chonky/tool_head_drill_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_screwdriver.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_screwdriver.json new file mode 100644 index 000000000..5e81cc3b4 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_screwdriver.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/tool_head_screwdriver", + "layer1": "gtceu:item/material_sets/chonky/tool_head_screwdriver_secondary", + "layer2": "gtceu:item/material_sets/chonky/tool_head_screwdriver_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_wrench.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_wrench.json new file mode 100644 index 000000000..af4a2f5d9 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_wrench.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/tool_head_wrench", + "layer1": "gtceu:item/material_sets/chonky/tool_head_wrench_secondary", + "layer2": "gtceu:item/material_sets/chonky/tool_head_wrench_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/turbine_blade.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/turbine_blade.json new file mode 100644 index 000000000..4778455f1 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/turbine_blade.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/turbine_blade", + "layer1": "gtceu:item/material_sets/chonky/turbine_blade_secondary", + "layer2": "gtceu:item/material_sets/chonky/turbine_blade_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/wire_fine.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/wire_fine.json new file mode 100644 index 000000000..5a734e877 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/wire_fine.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/wire_fine", + "layer1": "gtceu:item/material_sets/chonky/wire_fine_secondary", + "layer2": "gtceu:item/material_sets/chonky/wire_fine_overlay" + } +} diff --git a/kubejs/assets/gtceu/textures/block/material_sets/chonky/block.png b/kubejs/assets/gtceu/textures/block/material_sets/chonky/block.png new file mode 100644 index 000000000..d456c5965 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/material_sets/chonky/block.png differ diff --git a/kubejs/assets/gtceu/textures/block/material_sets/chonky/block_overlay.png b/kubejs/assets/gtceu/textures/block/material_sets/chonky/block_overlay.png new file mode 100644 index 000000000..baf443562 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/material_sets/chonky/block_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/block/material_sets/chonky/block_secondary.png b/kubejs/assets/gtceu/textures/block/material_sets/chonky/block_secondary.png new file mode 100644 index 000000000..6b7c18018 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/material_sets/chonky/block_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/block/material_sets/chonky/frame_gt.png b/kubejs/assets/gtceu/textures/block/material_sets/chonky/frame_gt.png new file mode 100644 index 000000000..d4ad8581b Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/material_sets/chonky/frame_gt.png differ diff --git a/kubejs/assets/gtceu/textures/block/material_sets/chonky/frame_gt_overlay.png b/kubejs/assets/gtceu/textures/block/material_sets/chonky/frame_gt_overlay.png new file mode 100644 index 000000000..bf82e85e4 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/material_sets/chonky/frame_gt_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/block/material_sets/chonky/frame_gt_secondary.png b/kubejs/assets/gtceu/textures/block/material_sets/chonky/frame_gt_secondary.png new file mode 100644 index 000000000..bf4df82cf Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/material_sets/chonky/frame_gt_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/bolt.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/bolt.png new file mode 100644 index 000000000..156644f37 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/bolt.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/bolt_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/bolt_overlay.png new file mode 100644 index 000000000..a6eb6cb3f Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/bolt_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/bolt_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/bolt_secondary.png new file mode 100644 index 000000000..344589a8d Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/bolt_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/foil.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/foil.png new file mode 100644 index 000000000..60e99db47 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/foil.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/foil_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/foil_overlay.png new file mode 100644 index 000000000..1e4c20601 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/foil_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/foil_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/foil_secondary.png new file mode 100644 index 000000000..a66c6cdda Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/foil_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear.png new file mode 100644 index 000000000..96da2eebd Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_overlay.png new file mode 100644 index 000000000..658a48b00 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_secondary.png new file mode 100644 index 000000000..372125edc Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_small.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_small.png new file mode 100644 index 000000000..36d3fc087 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_small.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_small_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_small_overlay.png new file mode 100644 index 000000000..d71c7ee5b Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_small_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_small_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_small_secondary.png new file mode 100644 index 000000000..d11fceb51 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_small_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot.png new file mode 100644 index 000000000..0c739c564 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_double.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_double.png new file mode 100644 index 000000000..2c889a4d6 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_double.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_double_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_double_overlay.png new file mode 100644 index 000000000..b6344c952 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_double_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_double_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_double_secondary.png new file mode 100644 index 000000000..4a7e09631 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_double_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_hot.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_hot.png new file mode 100644 index 000000000..0c739c564 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_hot.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_hot_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_hot_overlay.png new file mode 100644 index 000000000..66495dfa3 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_hot_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_hot_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_hot_secondary.png new file mode 100644 index 000000000..8bba7db7e Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_hot_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_overlay.png new file mode 100644 index 000000000..f9df6e60d Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_secondary.png new file mode 100644 index 000000000..8bba7db7e Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/nugget.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/nugget.png new file mode 100644 index 000000000..2950dd58f Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/nugget.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/nugget_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/nugget_overlay.png new file mode 100644 index 000000000..2012f8c33 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/nugget_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/nugget_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/nugget_secondary.png new file mode 100644 index 000000000..8a2166461 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/nugget_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate.png new file mode 100644 index 000000000..c5852b31f Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_dense.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_dense.png new file mode 100644 index 000000000..f402c662d Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_dense.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_dense_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_dense_overlay.png new file mode 100644 index 000000000..881627b64 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_dense_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_dense_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_dense_secondary.png new file mode 100644 index 000000000..ec537401b Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_dense_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_double.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_double.png new file mode 100644 index 000000000..eb91a8825 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_double.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_double_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_double_overlay.png new file mode 100644 index 000000000..cc7c6e60a Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_double_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_double_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_double_secondary.png new file mode 100644 index 000000000..df0a19900 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_double_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_overlay.png new file mode 100644 index 000000000..98bb6f503 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_secondary.png new file mode 100644 index 000000000..89211c946 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/ring.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ring.png new file mode 100644 index 000000000..37fd22e4d Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ring.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/ring_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ring_overlay.png new file mode 100644 index 000000000..4cb2f1b8c Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ring_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/ring_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ring_secondary.png new file mode 100644 index 000000000..00c57fd32 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ring_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod.png new file mode 100644 index 000000000..7861a5568 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_long.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_long.png new file mode 100644 index 000000000..aac16b378 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_long.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_long_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_long_overlay.png new file mode 100644 index 000000000..bf3ff7771 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_long_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_long_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_long_secondary.png new file mode 100644 index 000000000..b36c0bb6c Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_long_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_overlay.png new file mode 100644 index 000000000..9063b94be Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_secondary.png new file mode 100644 index 000000000..e77a57cb3 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/rotor.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rotor.png new file mode 100644 index 000000000..12733d7d4 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rotor.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/rotor_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rotor_overlay.png new file mode 100644 index 000000000..d567d4eb2 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rotor_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/rotor_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rotor_secondary.png new file mode 100644 index 000000000..d6bfa4c80 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rotor_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/round.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/round.png new file mode 100644 index 000000000..b85f9e915 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/round.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/round_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/round_overlay.png new file mode 100644 index 000000000..05589c8cc Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/round_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/round_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/round_secondary.png new file mode 100644 index 000000000..1c99631cd Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/round_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/screw.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/screw.png new file mode 100644 index 000000000..980f4e98a Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/screw.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/screw_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/screw_overlay.png new file mode 100644 index 000000000..b287140b2 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/screw_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/screw_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/screw_secondary.png new file mode 100644 index 000000000..d80e57b98 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/screw_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring.png new file mode 100644 index 000000000..c4c81adf0 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_overlay.png new file mode 100644 index 000000000..53d28ec22 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_secondary.png new file mode 100644 index 000000000..f9d70dabc Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_small.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_small.png new file mode 100644 index 000000000..a8975e211 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_small.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_small_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_small_overlay.png new file mode 100644 index 000000000..401a0972b Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_small_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_small_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_small_secondary.png new file mode 100644 index 000000000..71fc8e5e7 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_small_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_buzz_saw.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_buzz_saw.png new file mode 100644 index 000000000..9ef67bf86 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_buzz_saw.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_buzz_saw_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_buzz_saw_overlay.png new file mode 100644 index 000000000..bdae8fcf8 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_buzz_saw_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_buzz_saw_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_buzz_saw_secondary.png new file mode 100644 index 000000000..485a43548 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_buzz_saw_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_chainsaw.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_chainsaw.png new file mode 100644 index 000000000..da3df1085 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_chainsaw.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_chainsaw_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_chainsaw_overlay.png new file mode 100644 index 000000000..4d2ba9f4d Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_chainsaw_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_chainsaw_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_chainsaw_secondary.png new file mode 100644 index 000000000..03bbe678f Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_chainsaw_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_drill.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_drill.png new file mode 100644 index 000000000..a941ed464 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_drill.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_drill_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_drill_overlay.png new file mode 100644 index 000000000..97569c6c5 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_drill_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_drill_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_drill_secondary.png new file mode 100644 index 000000000..5ebc3dcc4 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_drill_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_screwdriver.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_screwdriver.png new file mode 100644 index 000000000..69e290f23 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_screwdriver.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_screwdriver_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_screwdriver_overlay.png new file mode 100644 index 000000000..ef831b9cc Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_screwdriver_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_screwdriver_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_screwdriver_secondary.png new file mode 100644 index 000000000..78760659e Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_screwdriver_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_wrench.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_wrench.png new file mode 100644 index 000000000..a3898bc25 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_wrench.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_wrench_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_wrench_overlay.png new file mode 100644 index 000000000..f26a211aa Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_wrench_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_wrench_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_wrench_secondary.png new file mode 100644 index 000000000..217cb691c Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_wrench_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/turbine_blade.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/turbine_blade.png new file mode 100644 index 000000000..46349c3c7 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/turbine_blade.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/turbine_blade_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/turbine_blade_overlay.png new file mode 100644 index 000000000..74ffd68e7 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/turbine_blade_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/turbine_blade_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/turbine_blade_secondary.png new file mode 100644 index 000000000..e1f7d5ff5 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/turbine_blade_secondary.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/wire_fine.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/wire_fine.png new file mode 100644 index 000000000..9dd582679 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/wire_fine.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/wire_fine_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/wire_fine_overlay.png new file mode 100644 index 000000000..8cc50d44b Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/wire_fine_overlay.png differ diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/wire_fine_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/wire_fine_secondary.png new file mode 100644 index 000000000..de7589ef7 Binary files /dev/null and b/kubejs/assets/gtceu/textures/item/material_sets/chonky/wire_fine_secondary.png differ diff --git a/kubejs/assets/tfg/lang/en_us.json b/kubejs/assets/tfg/lang/en_us.json index 14b27bc2f..a285f22cf 100644 --- a/kubejs/assets/tfg/lang/en_us.json +++ b/kubejs/assets/tfg/lang/en_us.json @@ -1162,7 +1162,7 @@ "material.tfg.aromatic_feedstock": "Aromatic Feedstock", "material.tfg.reformed_aromatic_feedstock": "Reformed Aromatic Feedstock", "material.tfg.reformate_gas": "Reformate Gas", - "material.tfg.cracker_off_gas": "Cracked Off-Gas", + "material.tfg.cracker_off_gas": "Cracked Reformate Off-Gas", "ore_vein.tfg.deep_sheldonite": "Cooperite & Bornite", "ore_vein.tfg.deep_garnet_amethyst": "Amethyst & Garnet", "ore_vein.tfg.deep_garnet_opal": "Opal & Garnet", @@ -2907,9 +2907,6 @@ "quests.medium_voltage.mv_polyethylene.title": "Polyethylene", "quests.medium_voltage.mv_polyethylene.subtitle": "Baby's first polymer!", "quests.medium_voltage.mv_polyethylene.desc": "If you want to be less fancy, just call it plastic.\n\nFor the polymerization process, add &aOxygen&r, which gives better returns than Air, then solidify like you would with Rubber.\n\n&aPolyethylene (PE)&r is the key to unlocking &6many new things&r. It's commonly used as &dSheets&r, or in &dFluid&r form.\n\n&l&3Lore:&r&o The OreDict and fluid name for Polyethylene in 1.12.2 GTCEu was &bplastic&f, for cross-mod compatibility.", - "quests.medium_voltage.mv_tank.title": "Super Tank", - "quests.medium_voltage.mv_tank.subtitle": "Super Tanks are OP!", - "quests.medium_voltage.mv_tank.desc": "No, but seriously.\n\nThis is the &cu&6l&et&ai&bm&9a&5t&4e&r portable Fluid storage solution. &64,000 buckets of storage&r - in one single block without any regards to temperature or acidity!\n\nLike Drums, Super Tanks &6keep their fluids when broken&r, and can be cleared in the crafting grid.\n\nIf you hunger for &9even more&r storage, take a look at higher tier Super Tanks or AE2 Fluid Storage Cells.", "quests.medium_voltage.mv_pvc.title": "Polyvinyl Chloride", "quests.medium_voltage.mv_pvc.subtitle": "You've already made one polymer, what's two?", "quests.medium_voltage.mv_pvc.desc": "&aPolyvinyl Chloride (PVC)&r is the 3rd-most produced plastic in real life. Here in CEu, it can be substituted for Polyethylene in the production of &aPlastic Circuit Boards&r and other items to increase the yield. It is required from &5EV&r onwards to wrap Cables.\n\nPVC item pipes also have the &6highest throughput&r available for a while, but most of your setups right now won't need such speed. Still, it's good to keep this knowledge in your pocket.\n\n&9Pro tip:&r The fluid form of PVC is never used in base GTCEu, so feel free to solidify all of it into sheets.", @@ -3104,7 +3101,7 @@ "quests.metal_age.weak_steel.task3": "1 Part Black Bronze", "quests.metal_age.highcarb_black_steel.title": "Black Steel Ingredients", "quests.metal_age.highcarb_black_steel.subtitle": "Conservation of matter does not apply", - "quests.metal_age.highcarb_black_steel.desc": "The final two anvils are made out of complex alloys that will require a lot of metal to be created. Weak Steel and Pig Iron can be welded to create High Carbon Black Steel, which can then be worked on an anvil into Black Steel.", + "quests.metal_age.highcarb_black_steel.desc": "The final two anvils are made out of complex alloys that will require a lot of metal to be created. Weak Steel and Pig Iron can be welded to create High Carbon Black Steel, which can then be worked on an anvil into Black Steel.\n\nOnce you get a Steam Alloy Smelter, use that instead to &6double your output&r.", "quests.metal_age.black_steel_anvil.title": "T5 Anvil: Black Steel", "quests.metal_age.black_steel_anvil.subtitle": "Steam power is within your grasp", "quests.metal_age.black_steel_anvil.desc": "With the Black Steel Anvil you'll now be able to work Black Steel Ingots into different items.\n\nYou've also now opened up a massive new section in the Early Automation chapter related to high pressure Steam Power!\n\nFrom here, you can either dive straight into industrialization or finish up the last tier of anvils if you'd like. You can't avoid colored steel forever, though!", @@ -3129,17 +3126,17 @@ "quests.metal_age.weak_blue_steel.sterling_silver": "1 Part Sterling Silver", "quests.metal_age.weak_blue_steel.bismuth_bronze": "1 Part Bismuth Bronze", "quests.metal_age.highcarb_red_steel.title": "Red Steel Ingredients", - "quests.metal_age.highcarb_red_steel.subtitle": "Could deleting matter like this power a nuclear bomb?", - "quests.metal_age.highcarb_red_steel.desc": "Red Steel first starts as High Carbon Red Steel, which is made by welding Weak Red Steel and Black Steel. It needs to be worked on the Anvil to turn it into Red Steel", + "quests.metal_age.highcarb_red_steel.subtitle": "Minecraft is not a physics simulator", + "quests.metal_age.highcarb_red_steel.desc": "Red Steel first starts as High Carbon Red Steel, which is made by welding Weak Red Steel and Black Steel. It needs to be worked on the Anvil to turn it into Red Steel.\n\nIf you have a Steam Alloy Smelter, use that instead to &6double your output&r.", "quests.metal_age.highcarb_blu_steel.title": "Blue Steel Ingredients", "quests.metal_age.highcarb_blu_steel.subtitle": "Lavoisier is rolling in his grave", - "quests.metal_age.highcarb_blu_steel.desc": "Blue Steel first starts as High Carbon Blue Steel, which is made by welding Weak Blue Steel and Black Steel. It needs to be worked on the Anvil to turn it into Blue Steel", + "quests.metal_age.highcarb_blu_steel.desc": "Blue Steel first starts as High Carbon Blue Steel, which is made by welding Weak Blue Steel and Black Steel. It needs to be worked on the Anvil to turn it into Blue Steel.\n\nIf you have a Steam Alloy Smelter, use that instead to &6double your output&r.", "quests.metal_age.redblu_anvil.title": "T6 Anvil: Red or Blue Steel", "quests.metal_age.redblu_anvil.subtitle": "It's over", "quests.metal_age.redblu_anvil.desc": "The final tier of Anvil! With the Tier 6 Anvil you'll be able to work both Red and Blue Steel Ingots into different items.\n\nThis marks the end of TerraFirmaCraft's progression. Now it's time to finish the Industrial Age and create your very first Low Voltage circuitry.", "quests.metal_age.red_steel_flask.title": "Red Steel Flask", "quests.metal_age.red_steel_flask.subtitle": "This got nothing on the Iron Flask", - "quests.metal_age.red_steel_flask.desc": "The Red Steel Flask is the best Flask available. It may hold the same amount of liquid as an Iron Flask, but the Red Steel Flask never breaks.", + "quests.metal_age.red_steel_flask.desc": "The Red Steel Flask is the best Flask available. It may hold the same amount of liquid as an Iron Flask, but the Red Steel Flask never breaks.\n\nFor the Silk, Phantoms can be found all over the Beneath, but are more common in the bottom layer.", "quests.metal_age.redblu_buckets.title": "Bucket Components", "quests.metal_age.redblu_buckets.subtitle": "Bucket Fusion Reactor", "quests.metal_age.redblu_buckets.desc": "The final task in the Metallurgy Age is creating a Bucket. Unlike the wooden bucket and other fluid containers you've been using until now, the Bucket can be used to carry Lava and move around source blocks of other fluids.", @@ -3660,6 +3657,10 @@ "quests.steam_age.steel_mech_press.subtitle": "Almost a Forge Hammer", "quests.steam_age.steel_mech_press.desc.1": "The High Pressure Steam Forge Hammer is right around the corner and can do almost everything that this machine can do, but if you're desperate for some higher tier automatic welding recipes, this is your ticket.\n\nIf you're unfamiliar with the Forge Hammer, both it and the Steel Mechanical Press can crush ores (without byproducts), turn rock into cobble into gravel into sand, and crack bricks. However, only the Forge Hammer can provide a &3cheaper recipe for metal plates&r...", "quests.steam_age.steel_mech_press.desc.2": "&l&3Lore:&r&o The Create Mechanical Press used to be a key piece of late steam age progression prior to version 0.9 of TerraFirmaGreg, because it produced plates at an even better ratio of 5 to 4. However, its implementation was actually \"20 percent of the time, you get nothing\", which caused many people to proclaim how much they loved gambling while using it.", + "quests.steam_age.supers.title": "Super Chests and Super Drums", + "quests.steam_age.supers.subtitle": "Super Storage Drawers", + "quests.steam_age.supers.desc": "This is the &cu&6l&et&ai&bm&9a&5t&4e&r portable item and storage solution if you have a lot of single items or fluids. While these &dBasic&r (&8ULV&r) ones start out relatively small, higher tiers of Super chests and drums can hold an insane amount of stuff - all in one single block without any regards to temperature or acidity!\n\nLike Drums, Super Tanks and Chests &6keep their contents when broken&r, can be cleared in the crafting grid, and can automatically void any overflow.\n\nIf you hunger for &9even more&r storage, take a look at higher tier Quantum Chests and Tanks or AE2 Storage Cells.", + "quests.steam_age.supers.task": "Any super chest or tank", "quests.stone_age": "Stone Age", "quests.stone_age.subtitle": "Humble Beginnings", "quests.stone_age.foods.title": "Hungry?", @@ -4224,8 +4225,8 @@ "quests.tfg_tips.glider.subtitle": "This is not Breath of the Wild", "quests.tfg_tips.glider.desc": "A &dHang Glider&r can be used to glide along the air. You &ccannot gain altitude&r with this but it can be useful to traverse long distances if you jump from high up.\nGreat synergy with &bJetpacks&r though!", "quests.tfg_tips.reinforced_glider.title": "Reinforced Glider", - "quests.tfg_tips.reinforced_glider.subtitle": "Elytra well spent...?", - "quests.tfg_tips.reinforced_glider.desc": "If you combine an &aElytra&r, made in &6HV&r, with a &aHang Glider&r, you'll obtain a &dReinforced Glider.&r It has greater durability and a higher velocity ceiling.", + "quests.tfg_tips.reinforced_glider.subtitle": "Light as a feather!", + "quests.tfg_tips.reinforced_glider.desc": "A &dReinforced Hang Glider&r is the improved version of a &aHang Glider&r. With an upgraded &aAluminium&r frame and a fabric made of either &aReinforced Fabric&r or &aLightweight Cloth&r, you can now soar through the skies at &cdouble the speed&r!\nIt also has &cmore durability&r than the normal hang glider, and can be &crepaired&r in an assembler.\n\n&3Pro tip:&r\nUsing either &aSilk Cloth&r or &aPhantom Silk&r obtained in the &4Beneath&r reduces the fabric cost by &e2/3rds&r for both crafting and repairing!\nOnce you enter &6HV&r, you can also use &aPolycaprolactam Fabric&r as one of the fabrics with a reduced cost.", "quests.tfg_tips.immersive_aircraft.title": "Immersive Aircraft", "quests.tfg_tips.immersive_aircraft.subtitle": "Fly across the skies, with style.", "quests.tfg_tips.immersive_aircraft.desc": "&2Immersive Aircraft&r is a mod all about aircrafts, allowing traversing large distances in the skies.", diff --git a/kubejs/assets/tfg/lang/ru_ru.json b/kubejs/assets/tfg/lang/ru_ru.json index 8bb890f33..0417d1fa0 100644 --- a/kubejs/assets/tfg/lang/ru_ru.json +++ b/kubejs/assets/tfg/lang/ru_ru.json @@ -3032,115 +3032,115 @@ "quests.metal_age.this_is_a_bucket.desc": "ะŸะพะทะดั€ะฐะฒะปัะตะผ ั ัะพะทะดะฐะฝะธะตะผ ะฒะตะดั€ะฐ. ะ’ะตะบ ะผะตั‚ะฐะปะปัƒั€ะณะธะธ ะพั„ะธั†ะธะฐะปัŒะฝะพ ะทะฐะฒะตั€ัˆะตะฝ.\n\nะขะตะฟะตั€ัŒ ะผะพะถะตัˆัŒ ะฟั€ะธัั‚ัƒะฟะฐั‚ัŒ ะบ ัะพะทะดะฐะฝะธัŽ ะบะพะผะฟะพะฝะตะฝั‚ะพะฒ ะฝะธะทะบะพะณะพ ะฝะฐะฟั€ัะถะตะฝะธั!", "quests.ore_proc": "ะŸะตั€ะตั€ะฐะฑะพั‚ะบะฐ ั€ัƒะด", "quests.ore_proc.subtitle": "ะ’ัั‘, ั‡ั‚ะพ ะฒะฐะผ ะฝัƒะถะฝะพ, ั‡ั‚ะพะฑั‹ ะฟะพะปัƒั‡ะฐั‚ัŒ ะฟะพ ะผะฐะบัะธะผัƒะผัƒ ะพั‚ ะฒะฐัˆะธั… ั€ัƒะด", - "quests.ore_proc.native_ore.title": "Welcome to Ore Processing", - "quests.ore_proc.native_ore.subtitle": "To Process, Ore Not To Process", - "quests.ore_proc.native_ore.desc": "An important part of &6GregTech&r is its &dOre Processing Mechanics&r, but it can get pretty complicated, so this chapter is here to help!\n\nTo start with, you should be aware of the &6Ore Processing Diagram&r tab in EMI - Press the Show Uses key (default &bU&r) on any item related to ore processing and look for the tab with the vanilla Iron Ore icon. This diagram may look overwhelming at first, but we'll take it step by step.\n\nA major part of GregTech philosophy is that there's not just one way to solve a problem, but we've marked everything important with a &estar&r, so if you're completely lost, try following those!", - "quests.ore_proc.native_ore.task": "I agree to not just dump everything in a furnace", - "quests.ore_proc.robot_arm.title": "Ore processing with GregTech's own tools", - "quests.ore_proc.robot_arm.subtitle": "Providing answers to its own problems", - "quests.ore_proc.robot_arm.desc": "GregTech comes with its own tools to help solve ore processing logistics.\n\nThe &6Robot Arm&r can move precice numbers of items into a machine, such as only moving flawed gems into a Laser Engraver once you have two of them. The &6Tag Filter&r can filter items by tag, such as '&5*purified_ores*&r' to match all Purified Ores.\n\nThe &4Smart Filter&r can filter items depending on their &6recipe&r. For example, if you use it with a robot arm on an electrolyzer, and set the robot arm to supply exact, it will only move your dusts into the electrolyzer once it has as many inputs as the recipe requires!", - "quests.ore_proc.ae2.title": "Ore processing with Applied Energistics 2", - "quests.ore_proc.ae2.subtitle": "A tag storage bus? What's that?", - "quests.ore_proc.ae2.desc": "AE2 is great at moving items around without tons of spaghetti cables! You can use the &dTag Storage Bus&r to tell your network where to put items that match an item's tag, which you can view by pressing F3 + H. For example, if you want to send all your Purified Ores to a chest, slap a Tag Storage Bus on it and set its filter to '&5*purified_ores*&r'.\n\nThere's many online guides on how to set up an AE2 system, but a subnet to handle all ore processing before it goes into your main storage is a solid choice!", - "quests.ore_proc.gtcy.title": "Ore processing but bigger", - "quests.ore_proc.gtcy.subtitle": "When size does matter", - "quests.ore_proc.gtcy.desc": "Once you get to IV, you'll gain access to multiblock versions of all of GregTech's single block machines. They do the exact same recipes as their single block cousins, but are more flexible - you can put lots of huge Input Buses on them, you can overclock them with higher tier &6Energy Hatches&r instead of making new ones every tier, and they even support &6Parallel Hatches&r to do multiple recipes simultaneously!\n\nAll of these machines require alloys created with the &bAlloy Blast Smelter&r, found at the end of &dEV&r.", - "quests.ore_proc.copper_tier.title": "Copper Age Ore Processing", - "quests.ore_proc.copper_tier.desc": "This row is for the very basics of ore processing. There's no byproducts and no automation.", - "quests.ore_proc.bronze_tier.title": "Bronze Age Ore Processing", - "quests.ore_proc.bronze_tier.desc": "This row is for what's available once you've obtained any Bronze Anvil.", - "quests.ore_proc.steel_tier.title": "Steel Age Ore Processing", - "quests.ore_proc.steel_tier.desc": "A Steel Anvil unlocks your first byproducts from ore washing.", - "quests.ore_proc.steam_tier.title": "Steam Age Ore Processing", - "quests.ore_proc.steam_tier.desc": "Steam machines give access to your second byproducts from centrifuging.", - "quests.ore_proc.lv_tier.title": "&7LV&r Ore Processing", - "quests.ore_proc.lv_tier.desc": "LV comes with a ton of machines that can process your ores in many different ways. The most important is probably the Thermal Centrifuge.", - "quests.ore_proc.mv_tier.title": "&bMV&r Ore Processing", - "quests.ore_proc.mv_tier.desc": "Not much happens at MV except that the electrolyzer becomes much more powerful.", - "quests.ore_proc.hv_tier.title": "&6HV&r Ore Processing", - "quests.ore_proc.hv_tier.desc": "HV Macerators now output byproducts! If you don't have a dedicated ore processing setup yet, now is definitely the time to build one.", - "quests.ore_proc.ev_tier.title": "&5EV&r Ore Processing", - "quests.ore_proc.ev_tier.desc": "EV is the first tier where you'll need to need to start splitting up your ore processing into different \"lines\".", - "quests.ore_proc.iv_tier.title": "&9IV&r Ore Processing", - "quests.ore_proc.iv_tier.desc": "With IV comes the big huge multiblocks to really ramp up your ore processing speeds.", - "quests.ore_proc.luv_tier.title": "&dLuV&r Ore Processing", - "quests.ore_proc.luv_tier.desc": "LuV's Naquadah line will be a real test of your ore processing. Can your machines keep up?", - "quests.ore_proc.raw_ore.title": "Raw Ore", - "quests.ore_proc.raw_ore.desc": "This column shows ways to process raw ore, the first step of ore processing!", - "quests.ore_proc.crushed_ore.title": "Crushed Ore", - "quests.ore_proc.crushed_ore.desc": "This column shows how to process crushed ore, which is almost always the second step.", - "quests.ore_proc.purified_ore.title": "Purified Ore", - "quests.ore_proc.purified_ore.desc": "This column shows what to do with your purified ore.", - "quests.ore_proc.refined_ore.title": "Refined Ore", - "quests.ore_proc.refined_ore.desc": "The only thing you can really do with refined ore is crush it.", - "quests.ore_proc.impure_dust.title": "Impure Dust", - "quests.ore_proc.impure_dust.desc": "Wash that dirty dust!", - "quests.ore_proc.purified_dust.title": "Purified Dust", - "quests.ore_proc.purified_dust.desc": "This column shows what you can do with your purified dust.", - "quests.ore_proc.dust_processed.title": "Your final dust", - "quests.ore_proc.dust_processed.subtitle": "Or is it?", - "quests.ore_proc.dust_processed.desc": "&6Dusts&r are the final form of almost every ore.\n\nFrom here, you can put it in a &cFurnace&r, send it to &estorage&r, or even start using it right away! Some dusts will require one last step before they become truly useful.\n\nRemember to keep your &6ore processing line&r in top shape! You'll want to keep expanding and upgrading it as you progress, so you can spend less time mining and more time gregging.", - "quests.ore_proc.macerator_byproduct.title": "Crushing with byproducts", - "quests.ore_proc.macerator_byproduct.subtitle": "I can get even more from my ores!", - "quests.ore_proc.macerator_byproduct.desc": "While looking at &bEMI&r, you've probably noticed that your &dMacerator&r or &dMillstone&r lists more &boutputs&r than what you're actually getting.\n\nGregTech doesn't communicate this very well, but these extra slots are only available in &6HV&r. Once you make it to that tier, the &6HV&r macerator becomes incredibly powerful, giving a huge amount of bonus byproducts from each ore.", - "quests.ore_proc.macerator_byproduct.task": "Either an HV Macerator or HS Crushing Wheels", - "quests.ore_proc.sodium_persulfate.title": "Bathe them in Sodium Persulfate", - "quests.ore_proc.sodium_persulfate.subtitle": "Not just for circuit board etching", - "quests.ore_proc.sodium_persulfate.desc": "Once you get to LV, you may be interested in using a &bChemical Bath&r with &dSodium persulfate&r to get some extra byproducts. Not all ores can be processed this way, but the ones that can, will get around a &670 percent&r chance of byproducts, compared to the &630 percent&r of the &bOre Washer&r.\n\nSodium persulfate can be a little annoying to mass produce, though if you want, &9Sea Water&r is a great starting point.\n\nThe quest on the left gives some examples that might be worth the investment.", - "quests.ore_proc.sodium_ores.title": "Sodium Persulfate bathing examples", - "quests.ore_proc.sodium_ores.subtitle": "A useful time saver", - "quests.ore_proc.sodium_ores.desc": "Here's some recommendations for Sodium Persulfate bathing:\n\n- &6Crushed Aluminium&r: for &dRutile&r (Titanium)\n\n- &6Crushed Bauxite&r: &dGallium&r\n\n- &6Crushed Cobalt&r: &dCobaltite&r for &dArsenic&r", - "quests.ore_proc.ore_washer.title": "Bathe them in Water", - "quests.ore_proc.ore_washer.subtitle": "The standard option for most ores", - "quests.ore_proc.ore_washer.desc": "Most ores don't need any fancy bathing setups, and running them through an &dOre Washer&r or &9Bulk Washing&r with an &dEncased Fan&r will suffice.\n\nIf you use the &bOre Washer&r, make sure to use &9Distilled Water&r to double the speed of the recipe.\n\nDon't have access to either of these yet? You can just throw your crushed ores into water to purify them, though this won't get you any byproducts.", - "quests.ore_proc.ore_washer.task": "Any Ore Washer", - "quests.ore_proc.mercury_ores.title": "Bathe them in Mercury", - "quests.ore_proc.mercury_ores.subtitle": "Don't stick your finger in it", - "quests.ore_proc.mercury_ores.desc": "Bathing certain ores in &dMercury&r can give some other useful byproducts. Not all ores can be processed this way, but the ones that can, will get around a &670 percent&r chance of byproducts, compared to the &630 percent&r of the &bOre Washer&r.\n\n&dMercury&r can be easily obtained from &cRedstone&r or &cCinnabar&r.\n\nThe quest on the right gives some examples are good to process in Mercury.", - "quests.ore_proc.mercury.title": "Mercury bathing examples", - "quests.ore_proc.mercury.subtitle": "Liquid metal bath time", - "quests.ore_proc.mercury.desc": "Here's some recommendations for Mercury bathing:\n\n- &6Crushed Platinum&r: &dPalladium&r\n\n- &6Crushed Cooperite&r: &dPalladium&r\n\n- &6Crushed Nickel&r: &dPlatinum&r\n\n- &6Crushed Gold&r: &dSilver&r", - "quests.ore_proc.indium.title": "The Indium Line", - "quests.ore_proc.indium.subtitle": "We say line, but really it's just a two step process", - "quests.ore_proc.indium.desc": "The &6Indium Line&r shouldn't be needed before &9IV&r, but it will require purified &bSphalerite&r and &bGalena&r.", - "quests.ore_proc.platline.title": "The Infamous Platline", - "quests.ore_proc.platline.subtitle": "GregTech players vs Mekanism players when they need Osmium:", - "quests.ore_proc.platline.desc": "The &6Platinum Line&r will be your first real challenge to process, providing you with essential platinum-group metals: &bPlatinum&r, &bPalladium&r, &bRuthenium&r, &bRhodium&r, &bIridium&r, and &bOsmium&r.\n\nWhile there's easier ways to obtain &bPlatinum&r and &bPalladium&r, this line will be &amandatory&r for accessing the others.\n\nThe Platline can be started at &6HV&r, but you wonโ€™t be able to complete it fully until later in &5EV&r.", - "quests.ore_proc.electro_separator.title": "Electromagnetic Separator", - "quests.ore_proc.electro_separator.subtitle": "Probably the least useful GregTech machine", - "quests.ore_proc.electro_separator.desc": "The &6Electromagnetic Separator&r can extract things like Iron and Gold from &dRefined Ores&r, which you can get by crushing your purified ones. For now, we recommend using it primarily for &dNaquadah&r. If you need more &aNeodymium&r, you can also process &dBastnasite&r.", - "quests.ore_proc.electro_separator.task": "Any Electromagnetic Separator", - "quests.ore_proc.macerator_separator.title": "The Macerator", - "quests.ore_proc.macerator_separator.subtitle": "(again)", - "quests.ore_proc.macerator_separator.desc": "The macerator can sometimes yield different byproducts from your Purified ores than other routes, but these are still locked to &6HV&r like every other macerator byproduct.", - "quests.ore_proc.macerator_separator.task": "Any Macerator", - "quests.ore_proc.thermal_centrifuge.title": "The Thermal Centrifuge", - "quests.ore_proc.thermal_centrifuge.subtitle": "The go-to for most purified ores", - "quests.ore_proc.thermal_centrifuge.desc": "For all your other Purified Ores that doesn't need special treatment, it's best to run them through the &dThermal Centrifuge&r. This machine can produce byproducts at a reliable rate, while only using electricity. It's quite slow, however, so we suggest making multiple machines.", - "quests.ore_proc.thermal_centrifuge.task": "Any Thermal Centrifuge", - "quests.ore_proc.sifter.title": "The Sifter", - "quests.ore_proc.sifter.subtitle": "The Skyblock Simulator", - "quests.ore_proc.sifter.desc": "The &6Sifter&r should be used for all your &aGems&r. It gives far more yield per ore than any other method, and is the only way to obtain Exquisite and Flawless gems before &6HV&r laser engraving.", - "quests.ore_proc.sifter.task": "Any Sifter", - "quests.ore_proc.centrifuge_sifter.title": "Centrifuging the dust", - "quests.ore_proc.centrifuge_sifter.subtitle": "Byproducts of byproducts", - "quests.ore_proc.centrifuge_sifter.desc": "The &6Sifter&r can output &6Purified Dust&r, which you can toss into a centrifuge for a few extra byproducts.", - "quests.ore_proc.centrifuge_sifter.task": "Any Centrifuge", - "quests.ore_proc.electrolyzer.title": "Further refinement", - "quests.ore_proc.electrolyzer.subtitle": "An encore for ore!", - "quests.ore_proc.electrolyzer.desc": "Certain &6Dusts&r have no direct use. For example, &2Tantalite&r must be processed in an &6Electrolyzer&r to extract the raw elements of &dTantalum&r and &dManganese&r.\n\nMost of these recipes will only be available with an &bMV Electrolyzer&r, so come back to this later!", - "quests.ore_proc.electrolyzer.task": "Any Electrolyzer", - "quests.ore_proc.packer.title": "The Packer", - "quests.ore_proc.packer.subtitle": "It's real fast", - "quests.ore_proc.packer.desc": "Back in the old days of GregTech, this little bad boy saw a lot of useโ€”you used to get a ton of &6Small&r and &6Tiny Dusts&r from ore processing.\n\nNowadays, it's only really useful for automatic packing, such as &dRare Earth&r in a &6Centrifuge&r returning many &6Small Piles of Dust&r.\n\nDon't forget: a &eRobot Arm&r set to Supply Exact mode can be useful to avoid clogging the input slots.", - "quests.ore_proc.packer.task": "Any Packer", - "quests.ore_proc.bauxite.title": "The Bauxite Line", - "quests.ore_proc.bauxite.subtitle": "New to modern GregTech versions!", - "quests.ore_proc.bauxite.desc": "You &ocould&r just electrolyze all your Bauxite dust to get a measly 6 Aluminium and 1 Rutile per 15 Bauxite... Or you could try out the &6Bauxite Line&r!\n\nThis new processing line returns about 2x as much &bAluminium&r and 3x as much &4Rutile&r per Bauxite, while also giving you a bunch of Gallium, Iron, Neodymium, and Chromium for free!", - "quests.ore_proc.gem_slurry.title": "Gem Slurries", - "quests.ore_proc.gem_slurry.subtitle": "We... are the crystalโ€”hblrlrlr", - "quests.ore_proc.gem_slurry.desc": "&6Gem Slurries&r are optional but short processing lines for Ruby, Sapphire, and Green Sapphire to squeeze a bit more resources out of them. Compared to electrolysis:\n\n- &cRuby Slurry&r returns almost 3x as much Aluminium and Chromium\n\n- &9Sapphire Slurry&r returns 2x as much Aluminium\n\n- &aGreen Sapphire Slurry&r returns 2x as much Aluminium and a little extra Beryllium\n\nAnd on top of that, they all have a small chance to return some extra Titanium, Iron, and Vanadium too!", - "quests.ore_proc.gem_slurry.task": "Any Gem Slurry Ore", + "quests.ore_proc.native_ore.title": "ะ”ะพะฑั€ะพ ะฟะพะถะฐะปะพะฒะฐั‚ัŒ ะฒ ะฟะตั€ะตั€ะฐะฑะพั‚ะบัƒ ั€ัƒะดั‹", + "quests.ore_proc.native_ore.subtitle": "ะŸะตั€ะตั€ะฐะฑะฐั‚ั‹ะฒะฐั‚ัŒ ะธะปะธ ะฝะต ะฟะตั€ะตั€ะฐะฑะฐั‚ั‹ะฒะฐั‚ัŒ", + "quests.ore_proc.native_ore.desc": "ะ’ะฐะถะฝะพะน ั‡ะฐัั‚ัŒัŽ &6GregTech&r ัะฒะปััŽั‚ัั ะตะณะพ &dะœะตั…ะฐะฝะธะบะธ ะŸะตั€ะตั€ะฐะฑะพั‚ะบะธ ะ ัƒะดั‹&r, ะฝะพ ะพะฝะธ ะผะพะณัƒั‚ ะพะบะฐะทะฐั‚ัŒัั ะดะพะฒะพะปัŒะฝะพ ัะปะพะถะฝั‹ะผะธ, ะฟะพัั‚ะพะผัƒ ัั‚ะฐ ะณะปะฐะฒะฐ ัะพะทะดะฐะฝะฐ, ั‡ั‚ะพะฑั‹ ะฟะพะผะพั‡ัŒ!\n\nะ”ะปั ะฝะฐั‡ะฐะปะฐ ัั‚ะพะธั‚ ะพะฑั€ะฐั‚ะธั‚ัŒ ะฒะฝะธะผะฐะฝะธะต ะฝะฐ ะฒะบะปะฐะดะบัƒ &6Ore Processing Diagram&r ะฒ EMI โ€” ะฝะฐะถะผะธั‚ะต ะบะปะฐะฒะธัˆัƒ ะฟั€ะพัะผะพั‚ั€ะฐ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะน (ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ &bU&r) ะฝะฐ ะปัŽะฑะพะผ ะฟั€ะตะดะผะตั‚ะต, ัะฒัะทะฐะฝะฝะพะผ ั ะฟะตั€ะตั€ะฐะฑะพั‚ะบะพะน ั€ัƒะดั‹, ะธ ะฝะฐะนะดะธั‚ะต ะฒะบะปะฐะดะบัƒ ั ะธะบะพะฝะบะพะน ะฒะฐะฝะธะปัŒะฝะพะน ะถะตะปะตะทะฝะพะน ั€ัƒะดั‹. ะะฐ ะฟะตั€ะฒั‹ะน ะฒะทะณะปัะด ัั‚ะฐ ะดะธะฐะณั€ะฐะผะผะฐ ะผะพะถะตั‚ ะฟะพะบะฐะทะฐั‚ัŒัั ะฟะตั€ะตะณั€ัƒะถะตะฝะฝะพะน, ะฝะพ ะผั‹ ั€ะฐะทะฑะตั€ั‘ะผ ะฒัั‘ ัˆะฐะณ ะทะฐ ัˆะฐะณะพะผ.\n\nะ‘ะพะปัŒัˆะฐั ั‡ะฐัั‚ัŒ ั„ะธะปะพัะพั„ะธะธ GregTech ะทะฐะบะปัŽั‡ะฐะตั‚ัั ะฒ ั‚ะพะผ, ั‡ั‚ะพ ะดะปั ั€ะตัˆะตะฝะธั ะฟั€ะพะฑะปะตะผั‹ ััƒั‰ะตัั‚ะฒัƒะตั‚ ะฝะต ะพะดะธะฝ ะฟัƒั‚ัŒ, ะฝะพ ะผั‹ ะพั‚ะผะตั‚ะธะปะธ ะฒัั‘ ะฒะฐะถะฝะพะต &eะทะฒั‘ะทะดะพั‡ะบะพะน&r, ั‚ะฐะบ ั‡ั‚ะพ ะตัะปะธ ะฒั‹ ะฟะพะปะฝะพัั‚ัŒัŽ ะฟะพั‚ะตั€ัะปะธััŒ โ€” ะฟะพะฟั€ะพะฑัƒะนั‚ะต ัะปะตะดะพะฒะฐั‚ัŒ ัั‚ะธะผ ะพั‚ะผะตั‚ะบะฐะผ!", + "quests.ore_proc.native_ore.task": "ะฏ ัะพะณะปะฐัะตะฝ ะฝะต ะทะฐะบะธะดั‹ะฒะฐั‚ัŒ ะฒัั‘ ะฟะพะดั€ัะด ะฒ ะฟะตั‡ัŒ", + "quests.ore_proc.robot_arm.title": "ะŸะตั€ะตั€ะฐะฑะพั‚ะบะฐ ั€ัƒะดั‹ ั ะฟะพะผะพั‰ัŒัŽ ะธะฝัั‚ั€ัƒะผะตะฝั‚ะพะฒ GregTech", + "quests.ore_proc.robot_arm.subtitle": "ะ ะตัˆะฐั ัะพะฑัั‚ะฒะตะฝะฝั‹ะต ะฟั€ะพะฑะปะตะผั‹ ัะพะฑัั‚ะฒะตะฝะฝั‹ะผะธ ัั€ะตะดัั‚ะฒะฐะผะธ", + "quests.ore_proc.robot_arm.desc": "GregTech ะฟะพัั‚ะฐะฒะปัะตั‚ัั ั ัะพะฑัั‚ะฒะตะฝะฝั‹ะผะธ ะธะฝัั‚ั€ัƒะผะตะฝั‚ะฐะผะธ, ะบะพั‚ะพั€ั‹ะต ะฟะพะผะพะณะฐัŽั‚ ั€ะตัˆะฐั‚ัŒ ะปะพะณะธัั‚ะธะบัƒ ะฟะตั€ะตั€ะฐะฑะพั‚ะบะธ ั€ัƒะดั‹.\n\n&6ะ ะพะฑะพั‚ะธะทะธั€ะพะฒะฐะฝะฝั‹ะน ะœะฐะฝะธะฟัƒะปัั‚ะพั€&r ะผะพะถะตั‚ ะฟะตั€ะตะผะตั‰ะฐั‚ัŒ ั‚ะพั‡ะฝะพะต ะบะพะปะธั‡ะตัั‚ะฒะพ ะฟั€ะตะดะผะตั‚ะพะฒ ะฒ ะผะฐัˆะธะฝัƒ โ€” ะฝะฐะฟั€ะธะผะตั€, ะฟะพะผะตั‰ะฐั‚ัŒ ะฒ ะ›ะฐะทะตั€ะฝั‹ะน ะ“ั€ะฐะฒั‘ั€ ั‚ะพะปัŒะบะพ ะฟะพะฒั€ะตะถะดั‘ะฝะฝั‹ะต (flawed) ะดั€ะฐะณะพั†ะตะฝะฝั‹ะต ะบะฐะผะฝะธ ะธ ั‚ะพะปัŒะบะพ ั‚ะพะณะดะฐ, ะบะพะณะดะฐ ัƒ ะฒะฐั ะตัั‚ัŒ ั€ะพะฒะฝะพ ะดะฒะฐ.\n\n&6ะขะตะณ-ะคะธะปัŒั‚ั€&r ะฟะพะทะฒะพะปัะตั‚ ั„ะธะปัŒั‚ั€ะพะฒะฐั‚ัŒ ะฟั€ะตะดะผะตั‚ั‹ ะฟะพ ั‚ะตะณัƒ, ะฝะฐะฟั€ะธะผะตั€ '&5*purified_ores*&r', ั‡ั‚ะพะฑั‹ ะฒั‹ะฑะธั€ะฐั‚ัŒ ะฒัะต ะพั‡ะธั‰ะตะฝะฝั‹ะต ั€ัƒะดั‹.\n\n&4ะฃะผะฝั‹ะน ะคะธะปัŒั‚ั€&r ะผะพะถะตั‚ ั„ะธะปัŒั‚ั€ะพะฒะฐั‚ัŒ ะฟั€ะตะดะผะตั‚ั‹ ะฒ ะทะฐะฒะธัะธะผะพัั‚ะธ ะพั‚ ะธั… &6ั€ะตั†ะตะฟั‚ะฐ&r. ะะฐะฟั€ะธะผะตั€, ะตัะปะธ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะตะณะพ ะฒะผะตัั‚ะต ั ั€ะพะฑะพั‚ะธะทะธั€ะพะฒะฐะฝะฝะพะน ั€ัƒะบะพะน ะฝะฐ ัะปะตะบั‚ั€ะพะปะธะทั‘ั€ะต ะธ ัƒัั‚ะฐะฝะพะฒะธั‚ัŒ ั€ัƒะบะต ั‚ะพั‡ะฝัƒัŽ ะฟะพะดะฐั‡ัƒ (exact), ะพะฝะฐ ะฑัƒะดะตั‚ ะฟะตั€ะตะผะตั‰ะฐั‚ัŒ ะฟั‹ะปัŒ (dusts) ะฒ ัะปะตะบั‚ั€ะพะปะธะทั‘ั€ ั‚ะพะปัŒะบะพ ั‚ะพะณะดะฐ, ะบะพะณะดะฐ ะธั… ะบะพะปะธั‡ะตัั‚ะฒะพ ัะพะพั‚ะฒะตั‚ัั‚ะฒัƒะตั‚ ั‚ั€ะตะฑะพะฒะฐะฝะธัะผ ั€ะตั†ะตะฟั‚ะฐ!", + "quests.ore_proc.ae2.title": "ะŸะตั€ะตั€ะฐะฑะพั‚ะบะฐ ั€ัƒะดั‹ ั Applied Energistics 2", + "quests.ore_proc.ae2.subtitle": "ะจะธะฝะฐ ั…ั€ะฐะฝะตะฝะธั ะฟะพ ั‚ะตะณะฐะผ? ะงั‚ะพ ัั‚ะพ ั‚ะฐะบะพะต?", + "quests.ore_proc.ae2.desc": "AE2 ะพั‚ะปะธั‡ะฝะพ ะฟะพะดั…ะพะดะธั‚ ะดะปั ะฟะตั€ะตะผะตั‰ะตะฝะธั ะฟั€ะตะดะผะตั‚ะพะฒ ะฑะตะท ะบะธะปะพะผะตั‚ั€ะพะฒ ะบะฐะฑะตะปัŒะฝะพะน ะปะฐะฟัˆะธ! ะ’ั‹ ะผะพะถะตั‚ะต ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ &dะจะธะฝัƒ ะฅั€ะฐะฝะตะฝะตะฝะธั ะฟะพ ะขะตะณะฐะผ&r, ั‡ั‚ะพะฑั‹ ัƒะบะฐะทะฐั‚ัŒ ะฒะฐัˆะตะน ัะตั‚ะธ, ะบัƒะดะฐ ัะบะปะฐะดั‹ะฒะฐั‚ัŒ ะฟั€ะตะดะผะตั‚ั‹, ัะพะพั‚ะฒะตั‚ัั‚ะฒัƒัŽั‰ะธะต ั‚ะตะณัƒ ะฒั‹ะฑั€ะฐะฝะฝะพะณะพ ะฟั€ะตะดะผะตั‚ะฐ. ะŸะพัะผะพั‚ั€ะตั‚ัŒ ะตะณะพ ะผะพะถะฝะพ, ะฝะฐะถะฐะฒ F3 + H. ะะฐะฟั€ะธะผะตั€, ะตัะปะธ ะฒั‹ ั…ะพั‚ะธั‚ะต ะพั‚ะฟั€ะฐะฒะปัั‚ัŒ ะฒัะต ะžั‡ะธั‰ะตะฝะฝั‹ะต ะ ัƒะดั‹ ะฒ ััƒะฝะดัƒะบ, ะฟั€ะพัั‚ะพ ัƒัั‚ะฐะฝะพะฒะธั‚ะต ะฝะฐ ะฝะตะณะพ ะจะธะฝัƒ ะฅั€ะฐะฝะตะฝะตะฝะธั ะฟะพ ะขะตะณะฐะผ ะธ ะทะฐะดะฐะนั‚ะต ั„ะธะปัŒั‚ั€ '&5*purified_ores*&r'.\n\nะกัƒั‰ะตัั‚ะฒัƒะตั‚ ะผะฝะพะถะตัั‚ะฒะพ ะพะฝะปะฐะนะฝ-ะณะฐะนะดะพะฒ ะฟะพ ะฝะฐัั‚ั€ะพะนะบะต AE2, ะฝะพ ะพั‚ะดะตะปัŒะฝะฐั ะฟะพะดัะตั‚ัŒ (subnet) ะดะปั ะพะฑั€ะฐะฑะพั‚ะบะธ ะฒัะตะน ั€ัƒะดั‹ ะฟะตั€ะตะด ะฟะพะฟะฐะดะฐะฝะธะตะผ ะฒ ะฒะฐัˆะต ะพัะฝะพะฒะฝะพะต ั…ั€ะฐะฝะธะปะธั‰ะต โ€” ะพั‡ะตะฝัŒ ั…ะพั€ะพัˆะฐั ะธะดะตั!", + "quests.ore_proc.gtcy.title": "ะŸะตั€ะตั€ะฐะฑะพั‚ะบะฐ ั€ัƒะดั‹, ะฝะพ ะบั€ัƒะฟะฝะตะต", + "quests.ore_proc.gtcy.subtitle": "ะšะพะณะดะฐ ั€ะฐะทะผะตั€ ะดะตะนัั‚ะฒะธั‚ะตะปัŒะฝะพ ะธะผะตะตั‚ ะทะฝะฐั‡ะตะฝะธะต", + "quests.ore_proc.gtcy.desc": "ะšะพะณะดะฐ ะฒั‹ ะดะพะฑะธั€ะฐะตั‚ะตััŒ ะดะพ IV, ะฒะฐะผ ะพั‚ะบั€ั‹ะฒะฐะตั‚ัั ะดะพัั‚ัƒะฟ ะบ ะผัƒะปัŒั‚ะธะฑะปะพั‡ะฝั‹ะผ ะฒะตั€ัะธัะผ ะฒัะตั… ะพะดะฝะพะฑะปะพั‡ะฝั‹ั… ะผะฐัˆะธะฝ GregTech. ะžะฝะธ ะฒั‹ะฟะพะปะฝััŽั‚ ั‚ะต ะถะต ั€ะตั†ะตะฟั‚ั‹, ั‡ั‚ะพ ะธ ะธั… ะพะดะฝะพะฑะปะพั‡ะฝั‹ะต ะฐะฝะฐะปะพะณะธ, ะฝะพ ะณะพั€ะฐะทะดะพ ะณะธะฑั‡ะต โ€” ะฒั‹ ะผะพะถะตั‚ะต ัƒัั‚ะฐะฝะพะฒะธั‚ัŒ ะฝะฐ ะฝะธั… ะผะฝะพะถะตัั‚ะฒะพ ะพะณั€ะพะผะฝั‹ั… ะ’ั…ะพะดะฝั‹ั… ะ›ัŽะบะพะผ, ะผะพะถะตั‚ะต ั€ะฐะทะณะพะฝัั‚ัŒ ะธั… ั ะฟะพะผะพั‰ัŒัŽ ะญะฝะตั€ะณะตั‚ะธั‡ะตัะบะธั… ะ’ั…ะพะดะฝั‹ั… ะ ะฐะทัŠะตะผะพะฒ ะฑะพะปะตะต ะฒั‹ัะพะบะพะณะพ ัƒั€ะพะฒะฝั, ะฒะผะตัั‚ะพ ัะพะทะดะฐะฝะธั ะฝะพะฒะพะน ะผะฐัˆะธะฝั‹ ะฝะฐ ะบะฐะถะดั‹ะน ั‚ะธั€, ะฐ ั‚ะฐะบะถะต ะผะพะถะตั‚ะต ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ &6ะŸะฐั€ะฐะปะปะตะปัŒะฝั‹ะต ะ ะฐะทัŠะตะผั‹&r ะดะปั ะฒั‹ะฟะพะปะฝะตะฝะธั ะฝะตัะบะพะปัŒะบะธั… ั€ะตั†ะตะฟั‚ะพะฒ ะพะดะฝะพะฒั€ะตะผะตะฝะฝะพ!\n\nะ’ัะต ัั‚ะธ ะผะฐัˆะธะฝั‹ ั‚ั€ะตะฑัƒัŽั‚ ัะฟะปะฐะฒะพะฒ, ัะพะทะดะฐะฒะฐะตะผั‹ั… ะฒ &bะ”ะพะผะตะฝะฝะพะน ะŸะตั‡ะธ ะดะปั ะกะฟะปะฐะฒะพะฒ&r, ะดะพัั‚ัƒะฟะฝะพะน ะฒ ะบะพะฝั†ะต ั‚ะธั€ะฐ &dEV&r.", + "quests.ore_proc.copper_tier.title": "ะŸะตั€ะตั€ะฐะฑะพั‚ะบะฐ ั€ัƒะด ะฒ ะœะตะดะฝะพะน ะญะฟะพั…ะต", + "quests.ore_proc.copper_tier.desc": "ะญั‚ะพั‚ ั€ัะด ะพะฟะธัั‹ะฒะฐะตั‚ ัะฐะผั‹ะต ะฑะฐะทะพะฒั‹ะต ัะฟะพัะพะฑั‹ ะฟะตั€ะตั€ะฐะฑะพั‚ะบะธ ั€ัƒะดั‹. ะะธะบะฐะบะธั… ะฟะพะฑะพั‡ะฝั‹ั… ะฟั€ะพะดัƒะบั‚ะพะฒ ะธ ะฝะธะบะฐะบะพะน ะฐะฒั‚ะพะผะฐั‚ะธะทะฐั†ะธะธ.", + "quests.ore_proc.bronze_tier.title": "ะŸะตั€ะตั€ะฐะฑะพั‚ะบะฐ ั€ัƒะด ะฒ ะ‘ั€ะพะฝะทะพะฒะพะน ะญะฟะพั…ะต", + "quests.ore_proc.bronze_tier.desc": "ะญั‚ะพั‚ ั€ัะด ะฟะพัะฒัั‰ั‘ะฝ ั‚ะพะผัƒ, ั‡ั‚ะพ ัั‚ะฐะฝะพะฒะธั‚ัั ะดะพัั‚ัƒะฟะฝะพ ะฟะพัะปะต ะฟะพะปัƒั‡ะตะฝะธั ะปัŽะฑะพะน ะ‘ั€ะพะฝะทะพะฒะพะน ะะฐะบะพะฒะฐะปัŒะฝะธ.", + "quests.ore_proc.steel_tier.title": "ะŸะตั€ะตั€ะฐะฑะพั‚ะบะฐ ั€ัƒะด ะฒ ะกั‚ะฐะปัŒะฝะพะน ะญะฟะพั…ะต", + "quests.ore_proc.steel_tier.desc": "ะกั‚ะฐะปัŒะฝะฐั ะะฐะบะพะฒะฐะปัŒะฝั ะพั‚ะบั€ั‹ะฒะฐะตั‚ ะฒะฐัˆะธ ะฟะตั€ะฒั‹ะต ะฟะพะฑะพั‡ะฝั‹ะต ะฟั€ะพะดัƒะบั‚ั‹ ะพั‚ ะฟั€ะพะผั‹ะฒะบะธ ั€ัƒะดั‹.", + "quests.ore_proc.steam_tier.title": "ะŸะตั€ะตั€ะฐะฑะพั‚ะบะฐ ั€ัƒะด ะฒ ะŸะฐั€ะพะฒะพะน ะญะฟะพั…ะต", + "quests.ore_proc.steam_tier.desc": "ะŸะฐั€ะพะฒั‹ะต ะผะฐัˆะธะฝั‹ ะดะฐัŽั‚ ะดะพัั‚ัƒะฟ ะบะพ ะฒั‚ะพั€ั‹ะผ ะฟะพะฑะพั‡ะฝั‹ะผ ะฟั€ะพะดัƒะบั‚ะฐะผ โ€” ะพั‚ ั†ะตะฝั‚ั€ะธั„ัƒะณะธั€ะพะฒะฐะฝะธั.", + "quests.ore_proc.lv_tier.title": "ะŸะตั€ะตั€ะฐะฑะพั‚ะบะฐ ั€ัƒะด ะฒ &7LV&r", + "quests.ore_proc.lv_tier.desc": "LV ะฟั€ะธะฝะพัะธั‚ ะผะฝะพะถะตัั‚ะฒะพ ะผะฐัˆะธะฝ, ัะฟะพัะพะฑะฝั‹ั… ะฟะตั€ะตั€ะฐะฑะฐั‚ั‹ะฒะฐั‚ัŒ ั€ัƒะดั‹ ั€ะฐะทะปะธั‡ะฝั‹ะผะธ ัะฟะพัะพะฑะฐะผะธ. ะกะฐะผะพะน ะฒะฐะถะฝะพะน, ะฒะตั€ะพัั‚ะฝะพ, ัะฒะปัะตั‚ัั ะขะตั€ะผะฐะปัŒะฝะฐั ะฆะตะฝั‚ั€ะธั„ัƒะณะฐ.", + "quests.ore_proc.mv_tier.title": "ะŸะตั€ะตั€ะฐะฑะพั‚ะบะฐ ั€ัƒะด ะฒ &bMV&r", + "quests.ore_proc.mv_tier.desc": "ะะฐ MV ะฟั€ะพะธัั…ะพะดะธั‚ ะฝะตะผะฝะพะณะพะต, ะบั€ะพะผะต ั‚ะพะณะพ, ั‡ั‚ะพ ัะปะตะบั‚ั€ะพะปะธะทั‘ั€ ัั‚ะฐะฝะพะฒะธั‚ัั ะบัƒะดะฐ ะฑะพะปะตะต ะผะพั‰ะฝั‹ะผ.", + "quests.ore_proc.hv_tier.title": "ะŸะตั€ะตั€ะฐะฑะพั‚ะบะฐ ั€ัƒะด ะฒ &6HV&r", + "quests.ore_proc.hv_tier.desc": "HV ะ”ั€ะพะฑะธั‚ะตะปะธ ั‚ะตะฟะตั€ัŒ ะฒั‹ะดะฐัŽั‚ ะฟะพะฑะพั‡ะฝั‹ะต ะฟั€ะพะดัƒะบั‚ั‹! ะ•ัะปะธ ัƒ ะฒะฐั ะฒัั‘ ะตั‰ั‘ ะฝะตั‚ ะฒั‹ะดะตะปะตะฝะฝะพะน ัะธัั‚ะตะผั‹ ะฟะตั€ะตั€ะฐะฑะพั‚ะบะธ ั€ัƒะด, ัะตะนั‡ะฐั ะพะฟั€ะตะดะตะปั‘ะฝะฝะพ ัะฐะผะพะต ะฒั€ะตะผั ะตั‘ ะฟะพัั‚ั€ะพะธั‚ัŒ.", + "quests.ore_proc.ev_tier.title": "ะŸะตั€ะตั€ะฐะฑะพั‚ะบะฐ ั€ัƒะด ะฒ &5EV&r", + "quests.ore_proc.ev_tier.desc": "EV โ€” ะฟะตั€ะฒั‹ะน ั‚ะธั€, ะฝะฐ ะบะพั‚ะพั€ะพะผ ะฒะฐะผ ะฟะพั‚ั€ะตะฑัƒะตั‚ัั ั€ะฐะทะฑะธะฒะฐั‚ัŒ ะฟะตั€ะตั€ะฐะฑะพั‚ะบัƒ ั€ัƒะดั‹ ะฝะฐ ั€ะฐะทะฝั‹ะต ยซะปะธะฝะธะธยป.", + "quests.ore_proc.iv_tier.title": "ะŸะตั€ะตั€ะฐะฑะพั‚ะบะฐ ั€ัƒะด ะฒ &9IV&r", + "quests.ore_proc.iv_tier.desc": "ะะฐ IV ัั‚ะฐะฝะพะฒัั‚ัั ะดะพัั‚ัƒะฟะฝั‹ ะพะณั€ะพะผะฝั‹ะต ะผัƒะปัŒั‚ะธะฑะปะพะบะธ, ะบะพั‚ะพั€ั‹ะต ะทะฝะฐั‡ะธั‚ะตะปัŒะฝะพ ัƒัะบะพั€ัั‚ ะฟะตั€ะตั€ะฐะฑะพั‚ะบัƒ ั€ัƒะด.", + "quests.ore_proc.luv_tier.title": "ะŸะตั€ะตั€ะฐะฑะพั‚ะบะฐ ั€ัƒะด ะฒ &dLuV&r", + "quests.ore_proc.luv_tier.desc": "ะ›ะธะฝะธั ะะฐะบะฒะฐะดะฐ ัƒั€ะพะฒะฝั LuV ัั‚ะฐะฝะตั‚ ะฝะฐัั‚ะพัั‰ะธะผ ะธัะฟั‹ั‚ะฐะฝะธะตะผ ะฒะฐัˆะตะน ัะธัั‚ะตะผั‹ ะฟะตั€ะตั€ะฐะฑะพั‚ะบะธ ั€ัƒะด. ะกะฟั€ะฐะฒัั‚ัั ะปะธ ะฒะฐัˆะธ ะผะฐัˆะธะฝั‹?", + "quests.ore_proc.raw_ore.title": "ะกั‹ั€ะฐั ะ ัƒะดะฐ", + "quests.ore_proc.raw_ore.desc": "ะญั‚ะพั‚ ัั‚ะพะปะฑะตั† ะฟะพะบะฐะทั‹ะฒะฐะตั‚ ัะฟะพัะพะฑั‹ ะพะฑั€ะฐะฑะพั‚ะบะธ ัั‹ั€ะพะน ั€ัƒะดั‹ โ€” ะฟะตั€ะฒั‹ะน ัˆะฐะณ ะฟะตั€ะตั€ะฐะฑะพั‚ะบะธ ั€ัƒะด!", + "quests.ore_proc.crushed_ore.title": "ะ”ั€ะพะฑะปั‘ะฝะฝะฐั ะ ัƒะดะฐ", + "quests.ore_proc.crushed_ore.desc": "ะญั‚ะพั‚ ัั‚ะพะปะฑะตั† ะฟะพะบะฐะทั‹ะฒะฐะตั‚, ะบะฐะบ ะฟะตั€ะตั€ะฐะฑะพั‚ะฐั‚ัŒ ะดั€ะพะฑะปั‘ะฝะฝัƒัŽ ั€ัƒะดัƒ, ั‡ั‚ะพ ะฟะพั‡ั‚ะธ ะฒัะตะณะดะฐ ัะฒะปัะตั‚ัั ะฒั‚ะพั€ั‹ะผ ัˆะฐะณะพะผ.", + "quests.ore_proc.purified_ore.title": "ะžั‡ะธั‰ะตะฝะฝะฐั ะ ัƒะดะฐ", + "quests.ore_proc.purified_ore.desc": "ะญั‚ะพั‚ ัั‚ะพะปะฑะตั† ะฟะพะบะฐะทั‹ะฒะฐะตั‚, ั‡ั‚ะพ ะผะพะถะฝะพ ัะดะตะปะฐั‚ัŒ ั ะพั‡ะธั‰ะตะฝะฝะพะน ั€ัƒะดะพะน.", + "quests.ore_proc.refined_ore.title": "ะžะฑั€ะฐะฑะพั‚ะฐะฝะฝะฐั ะ ัƒะดะฐ", + "quests.ore_proc.refined_ore.desc": "ะ•ะดะธะฝัั‚ะฒะตะฝะฝะพะต, ั‡ั‚ะพ ะดะตะนัั‚ะฒะธั‚ะตะปัŒะฝะพ ะผะพะถะฝะพ ัะดะตะปะฐั‚ัŒ ั ะพะฑั€ะฐะฑะพั‚ะฐะฝะฝะพะน ั€ัƒะดะพะน โ€” ัั‚ะพ ั€ะฐะทะดั€ะพะฑะธั‚ัŒ ะตั‘.", + "quests.ore_proc.impure_dust.title": "ะ“ั€ัะทะฝะฐั ะบัƒั‡ะบะฐ ะฟั‹ะปะธ", + "quests.ore_proc.impure_dust.desc": "ะžั‚ะผะพะน ัั‚ัƒ ะณั€ัะทะฝัƒัŽ ะฟั‹ะปัŒ!", + "quests.ore_proc.purified_dust.title": "ะžั‡ะธั‰ะตะฝะฝะฐั ะบัƒั‡ะบะฐ ะฟั‹ะปะธ", + "quests.ore_proc.purified_dust.desc": "ะญั‚ะพั‚ ัั‚ะพะปะฑะตั† ะฟะพะบะฐะทั‹ะฒะฐะตั‚, ั‡ั‚ะพ ะผะพะถะฝะพ ัะดะตะปะฐั‚ัŒ ั ะพั‡ะธั‰ะตะฝะฝะพะน ะฟั‹ะปัŒัŽ.", + "quests.ore_proc.dust_processed.title": "ะ’ะฐัˆะฐ ะฟะพัะปะตะดะฝัั ะฟั‹ะปัŒ", + "quests.ore_proc.dust_processed.subtitle": "ะ ะผะพะถะตั‚ ะธ ะฝะตั‚?", + "quests.ore_proc.dust_processed.desc": "&6ะšัƒั‡ะบะธ ะŸั‹ะปะธ&r โ€” ัั‚ะพ ะพะบะพะฝั‡ะฐั‚ะตะปัŒะฝะฐั ั„ะพั€ะผะฐ ะฟะพั‡ั‚ะธ ะบะฐะถะดะพะน ั€ัƒะดั‹.\n\nะžั‚ััŽะดะฐ ะฒั‹ ะผะพะถะตั‚ะต ะพั‚ะฟั€ะฐะฒะธั‚ัŒ ะตั‘ ะฒ &cะŸะตั‡ัŒ&r, ัะปะพะถะธั‚ัŒ ะฒ &eั…ั€ะฐะฝะธะปะธั‰ะต&r ะธะปะธ ะดะฐะถะต ะฝะฐั‡ะฐั‚ัŒ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะฟั€ัะผะพ ัะตะนั‡ะฐั! ะะตะบะพั‚ะพั€ั‹ะต ะฟั‹ะปะธ ะฟะพั‚ั€ะตะฑัƒัŽั‚ ะตั‰ั‘ ะพะดะฝะพะณะพ ะฟะพัะปะตะดะฝะตะณะพ ัˆะฐะณะฐ, ะฟั€ะตะถะดะต ั‡ะตะผ ัั‚ะฐะฝัƒั‚ ะฟะพ-ะฝะฐัั‚ะพัั‰ะตะผัƒ ะฟะพะปะตะทะฝั‹ะผะธ.\n\nะะต ะทะฐะฑั‹ะฒะฐะนั‚ะต ะฟะพะดะดะตั€ะถะธะฒะฐั‚ัŒ ัะฒะพัŽ &6ะปะธะฝะธัŽ ะฟะตั€ะตั€ะฐะฑะพั‚ะบะธ ั€ัƒะด&r ะฒ ะธะดะตะฐะปัŒะฝะพะผ ัะพัั‚ะพัะฝะธะธ! ะŸะพ ะผะตั€ะต ั€ะฐะทะฒะธั‚ะธั ะฒะฐะผ ะทะฐั…ะพั‡ะตั‚ัั ั€ะฐััˆะธั€ัั‚ัŒ ะธ ัƒะปัƒั‡ัˆะฐั‚ัŒ ะตั‘, ั‡ั‚ะพะฑั‹ ั‚ั€ะฐั‚ะธั‚ัŒ ะผะตะฝัŒัˆะต ะฒั€ะตะผะตะฝะธ ะฝะฐ ัˆะฐั…ั‚ั‘ั€ัั‚ะฒะพ ะธ ะฑะพะปัŒัˆะต ะฝะฐ ะณั€ะตะณั‚ะตั‡ั‡ะธะฝะณ.", + "quests.ore_proc.macerator_byproduct.title": "ะ”ั€ะพะฑะปะตะฝะธะต ั ะฟะพะฑะพั‡ะฝั‹ะผะธ ะฟั€ะพะดัƒะบั‚ะฐะผะธ", + "quests.ore_proc.macerator_byproduct.subtitle": "ะœะพะถะฝะพ ะฒั‹ะถะฐั‚ัŒ ะตั‰ั‘ ะฑะพะปัŒัˆะต ะธะท ั€ัƒะดั‹!", + "quests.ore_proc.macerator_byproduct.desc": "ะŸั€ะพัะผะฐั‚ั€ะธะฒะฐั &bEMI&r, ะฒั‹, ะฒะตั€ะพัั‚ะฝะพ, ะทะฐะผะตั‚ะธะปะธ, ั‡ั‚ะพ ะฒะฐัˆ &dะ˜ะทะผะตะปัŒั‡ะธั‚ะตะปัŒ&r ะธะปะธ &dะ–ะตั€ะฝะพะฒ&r ะฟะพะบะฐะทั‹ะฒะฐัŽั‚ ะฑะพะปัŒัˆะต &bะฒั‹ั…ะพะดะพะฒ&r, ั‡ะตะผ ะฒั‹ ั„ะฐะบั‚ะธั‡ะตัะบะธ ะฟะพะปัƒั‡ะฐะตั‚ะต.\n\nGregTech ะพะฑัŠััะฝัะตั‚ ัั‚ะพ ะฝะต ะพั‡ะตะฝัŒ ััะฝะพ, ะฝะพ ัั‚ะธ ะดะพะฟะพะปะฝะธั‚ะตะปัŒะฝั‹ะต ัะปะพั‚ั‹ ะดะพัั‚ัƒะฟะฝั‹ ั‚ะพะปัŒะบะพ ะฝะฐ ัƒั€ะพะฒะฝะต &6HV&r. ะšะพะณะดะฐ ะฒั‹ ะดะพัั‚ะธะณะฝะตั‚ะต ัั‚ะพะณะพ ั‚ะธั€ะฐ, &6HV&r-ะธะทะผะตะปัŒั‡ะธั‚ะตะปัŒ ัั‚ะฐะฝะตั‚ ะฝะตะฒะตั€ะพัั‚ะฝะพ ะผะพั‰ะฝั‹ะผ, ะดะฐะฒะฐั ะพะณั€ะพะผะฝะพะต ะบะพะปะธั‡ะตัั‚ะฒะพ ะฑะพะฝัƒัะฝั‹ั… ะฟะพะฑะพั‡ะฝั‹ั… ะฟั€ะพะดัƒะบั‚ะพะฒ ั ะบะฐะถะดะพะน ั€ัƒะดั‹.", + "quests.ore_proc.macerator_byproduct.task": "ะ›ะธะฑะพ HV ะ˜ะทะผะตะปัŒั‡ะธั‚ะตะปัŒ, ะปะธะฑะพ HS Crushing Wheels", + "quests.ore_proc.sodium_persulfate.title": "ะšัƒะฟะฐะฝะธะต ะฒ ะฟะตั€ััƒะปัŒั„ะฐั‚ะต ะฝะฐั‚ั€ะธั", + "quests.ore_proc.sodium_persulfate.subtitle": "ะะต ั‚ะพะปัŒะบะพ ะดะปั ั‚ั€ะฐะฒะปะตะฝะธั ะฟะปะฐั‚", + "quests.ore_proc.sodium_persulfate.desc": "ะšะพะณะดะฐ ะฒั‹ ะดะพะฑะตั€ั‘ั‚ะตััŒ ะดะพ LV, ะฒะฐั ะผะพะถะตั‚ ะทะฐะธะฝั‚ะตั€ะตัะพะฒะฐั‚ัŒ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะต &bะฅะธะผะธั‡ะตัะบะพะน ะ’ะฐะฝะฝั‹&r ั &dะŸะตั€ััƒะปัŒั„ะฐั‚ะพะผ ะฝะฐั‚ั€ะธั&r, ั‡ั‚ะพะฑั‹ ะฟะพะปัƒั‡ะธั‚ัŒ ะดะพะฟะพะปะฝะธั‚ะตะปัŒะฝั‹ะต ะฟะพะฑะพั‡ะฝั‹ะต ะฟั€ะพะดัƒะบั‚ั‹. ะะต ะฒัะต ั€ัƒะดั‹ ะผะพะถะฝะพ ะพะฑั€ะฐะฑะพั‚ะฐั‚ัŒ ั‚ะฐะบะธะผ ัะฟะพัะพะฑะพะผ, ะฝะพ ั‚ะต, ะบะพั‚ะพั€ั‹ะต ะผะพะถะฝะพ, ะดะฐะดัƒั‚ ะฟั€ะธะผะตั€ะฝะพ &670 ะฟั€ะพั†ะตะฝั‚ะพะฒ&r ัˆะฐะฝัะฐ ะฝะฐ ะฟะพะฑะพั‡ะบัƒ, ะฟะพ ัั€ะฐะฒะฝะตะฝะธัŽ ั &630 ะฟั€ะพั†ะตะฝั‚ะฐะผะธ&r ัƒ &bะ ัƒะดะพะฟั€ะพะผั‹ะฒะพั‡ะฝะพะน ะœะฐัˆะธะฝะพะน&r.\n\nะŸะตั€ััƒะปัŒั„ะฐั‚ ะฝะฐั‚ั€ะธั ะผะพะถะตั‚ ะฑั‹ั‚ัŒ ะฝะตะผะฝะพะณะพ ั€ะฐะทะดั€ะฐะถะฐัŽั‰ะธะผ ะฒ ะผะฐััะพะฒะพะผ ะฟั€ะพะธะทะฒะพะดัั‚ะฒะต, ะฝะพ &9ะœะพั€ัะบะฐั ะ’ะพะดะฐ&r โ€” ะพั‚ะปะธั‡ะฝั‹ะน ะธัั‚ะพั‡ะฝะธะบ.\n\nะšะฒะตัั‚ ัะฝะธะทัƒ ะฟั€ะธะฒะพะดะธั‚ ะฟั€ะธะผะตั€ั‹, ะบะพั‚ะพั€ั‹ะต ะผะพะณัƒั‚ ัั‚ะพะธั‚ัŒ ะฒะปะพะถะตะฝะธะน.", + "quests.ore_proc.sodium_ores.title": "ะŸั€ะธะผะตั€ั‹ ะบัƒะฟะฐะฝะธั ะฒ ะฟะตั€ััƒะปัŒั„ะฐั‚ะต", + "quests.ore_proc.sodium_ores.subtitle": "ะŸะพะปะตะทะฝั‹ะน ัะฟะพัะพะฑ ััะบะพะฝะพะผะธั‚ัŒ ะฒั€ะตะผั", + "quests.ore_proc.sodium_ores.desc": "ะ’ะพั‚ ะฝะตัะบะพะปัŒะบะพ ั€ะตะบะพะผะตะฝะดะฐั†ะธะน ะฟะพ ะบัƒะฟะฐะฝะธัŽ ะฒ ะฟะตั€ััƒะปัŒั„ะฐั‚ะต ะฝะฐั‚ั€ะธั:\n\n- &6ะ”ั€ะพะฑะปั‘ะฝะฝั‹ะน ะฐะปัŽะผะธะฝะธะน&r: ะดะปั &dะ ัƒั‚ะธะปะฐ&r (ะขะธั‚ะฐะฝ)\n\n- &6ะ”ั€ะพะฑะปั‘ะฝะฝะฐั ะฑะพะบัะธั‚ะพะฒะฐั ั€ัƒะดะฐ&r: &dะ“ะฐะปะปะธะน&r\n\n- &6ะ”ั€ะพะฑะปั‘ะฝะฝั‹ะน ะบะพะฑะฐะปัŒั‚&r: &dะšะพะฑะฐะปัŒั‚ะธั‚&r ะดะปั &dะœั‹ัˆัŒัะบะฐ&r", + "quests.ore_proc.ore_washer.title": "ะšัƒะฟะฐะฝะธะต ะฒ ะฒะพะดะต", + "quests.ore_proc.ore_washer.subtitle": "ะกั‚ะฐะฝะดะฐั€ั‚ะฝั‹ะน ะฒะฐั€ะธะฐะฝั‚ ะดะปั ะฑะพะปัŒัˆะธะฝัั‚ะฒะฐ ั€ัƒะด", + "quests.ore_proc.ore_washer.desc": "ะ‘ะพะปัŒัˆะธะฝัั‚ะฒะพ ั€ัƒะด ะฝะต ั‚ั€ะตะฑัƒัŽั‚ ะฝะธะบะฐะบะพะน ะพัะพะฑะพะน ะฒะฐะฝะฝั‹ โ€” ะดะพัั‚ะฐั‚ะพั‡ะฝะพ ะฟั€ะพะฟัƒัั‚ะธั‚ัŒ ะธั… ั‡ะตั€ะตะท &dะ ัƒะดะพะฟั€ะพะผั‹ะฒะพั‡ะฝัƒัŽ ะœะฐัˆะธะฝัƒ&r ะธะปะธ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ &9ะœะฐััะพะฒะพะต ะœั‹ั‚ัŒั‘&r ั &dะ’ะตะฝั‚ะธะปัั‚ะพั€ะพะผ ะฒ ะšะพั€ะฟัƒัะต&r.\n\nะ•ัะปะธ ะธัะฟะพะปัŒะทัƒะตั‚ะต &bะ ัƒะดะพะฟั€ะพะผั‹ะฒะพั‡ะฝะฐั ะœะฐัˆะธะฝะฐ&r, ัƒะฑะตะดะธั‚ะตััŒ, ั‡ั‚ะพ ะฟั€ะธะผะตะฝัะตั‚ะต &9ะ”ะธัั‚ะธะปะปะธั€ะพะฒะฐะฝะฝัƒัŽ ะฒะพะดัƒ&r โ€” ะพะฝะฐ ัƒะดะฒะฐะธะฒะฐะตั‚ ัะบะพั€ะพัั‚ัŒ ั€ะตั†ะตะฟั‚ะฐ.\n\nะะตั‚ ะดะพัั‚ัƒะฟะฐ ะฝะธ ะบ ั‚ะพะผัƒ, ะฝะธ ะบ ะดั€ัƒะณะพะผัƒ? ะŸั€ะพัั‚ะพ ะฑั€ะพััŒั‚ะต ะดั€ะพะฑะปั‘ะฝัƒัŽ ั€ัƒะดัƒ ะฒ ะฒะพะดัƒ, ั‡ั‚ะพะฑั‹ ะพั‡ะธัั‚ะธั‚ัŒ ะตั‘ โ€” ั…ะพั‚ั ะฟะพะฑะพั‡ะฝั‹ั… ะฟั€ะพะดัƒะบั‚ะพะฒ ั‚ะฐะบะพะน ัะฟะพัะพะฑ ะฝะต ะดะฐัั‚.", + "quests.ore_proc.ore_washer.task": "ะ›ัŽะฑะฐั ะ ัƒะดะพะฟั€ะพะผั‹ะฒะพั‡ะฝะฐั ะœะฐัˆะธะฝะฐ", + "quests.ore_proc.mercury_ores.title": "ะšัƒะฟะฐะฝะธะต ะฒ ั€ั‚ัƒั‚ะธ", + "quests.ore_proc.mercury_ores.subtitle": "ะะต ััƒะน ั‚ัƒะดะฐ ะฟะฐะปะตั†", + "quests.ore_proc.mercury_ores.desc": "ะšัƒะฟะฐะฝะธะต ะฝะตะบะพั‚ะพั€ั‹ั… ั€ัƒะด ะฒ &dะ ั‚ัƒั‚ะธ&r ะผะพะถะตั‚ ะดะฐั‚ัŒ ะฟะพะปะตะทะฝั‹ะต ะฟะพะฑะพั‡ะฝั‹ะต ะฟั€ะพะดัƒะบั‚ั‹. ะะต ะฒัะต ั€ัƒะดั‹ ะผะพะถะฝะพ ะพะฑั€ะฐะฑะพั‚ะฐั‚ัŒ ั‚ะฐะบะธะผ ัะฟะพัะพะฑะพะผ, ะฝะพ ั‚ะต, ั‡ั‚ะพ ะผะพะถะฝะพ, ะดะฐะดัƒั‚ ะฟั€ะธะผะตั€ะฝะพ &670 ะฟั€ะพั†ะตะฝั‚ะพะฒ&r ัˆะฐะฝัะฐ ะฝะฐ ะฟะพะฑะพั‡ะบัƒ, ะฟะพ ัั€ะฐะฒะฝะตะฝะธัŽ ั &630 ะฟั€ะพั†ะตะฝั‚ะฐะผะธ&r ัƒ &bะ ัƒะดะพะฟั€ะพะผั‹ะฒะพั‡ะฝะพะน ะœะฐัˆะธะฝะพะน&r.\n\n&dะ ั‚ัƒั‚ัŒ&r ะปะตะณะบะพ ะฟะพะปัƒั‡ะธั‚ัŒ ะธะท &cะ ะตะดัั‚ะพัƒะฝะฐ&r ะธะปะธ &cะšะธะฝะพะฒะฐั€ะธ&r.\n\nะšะฒะตัั‚ ัะฝะธะทัƒ ะฟั€ะธะฒะพะดะธั‚ ั…ะพั€ะพัˆะธะต ะฟั€ะธะผะตั€ั‹ ั€ัƒะด ะดะปั ะพะฑั€ะฐะฑะพั‚ะบะธ ั€ั‚ัƒั‚ัŒัŽ.", + "quests.ore_proc.mercury.title": "ะŸั€ะธะผะตั€ั‹ ะบัƒะฟะฐะฝะธั ะฒ ั€ั‚ัƒั‚ะธ", + "quests.ore_proc.mercury.subtitle": "ะ’ั€ะตะผั ะฒะฐะฝะฝั‹ ั ะถะธะดะบะธะผ ะผะตั‚ะฐะปะปะพะผ", + "quests.ore_proc.mercury.desc": "ะ’ะพั‚ ะฝะตัะบะพะปัŒะบะพ ั€ะตะบะพะผะตะฝะดะฐั†ะธะน ะฟะพ ะบัƒะฟะฐะฝะธัŽ ะฒ ั€ั‚ัƒั‚ะธ:\n\n- &6ะ”ั€ะพะฑะปั‘ะฝะฝะฐั ะฟะปะฐั‚ะธะฝะพะฒะฐั ั€ัƒะดะฐ&r: &dะŸะฐะปะปะฐะดะธะน&r\n\n- &6ะ”ั€ะพะฑะปั‘ะฝะฝะฐั ะบัƒะฟะตั€ะธั‚ะพะฒะฐั ั€ัƒะดะฐ&r: &dะŸะฐะปะปะฐะดะธะน&r\n\n- &6ะ”ั€ะพะฑะปั‘ะฝะฝั‹ะน ะฝะธะบะตะปัŒ&r: &dะŸะปะฐั‚ะธะฝะฐ&r\n\n- &6ะ”ั€ะพะฑะปั‘ะฝะฝะพะต ะทะพะปะพั‚ะพ&r: &dะกะตั€ะตะฑั€ะพ&r", + "quests.ore_proc.indium.title": "ะ›ะธะฝะธั ะ˜ะฝะดะธั", + "quests.ore_proc.indium.subtitle": "ะœั‹ ะฝะฐะทั‹ะฒะฐะตะผ ัั‚ะพ ะปะธะฝะธะตะน, ะฝะพ ะฝะฐ ัะฐะผะพะผ ะดะตะปะต ัั‚ะพ ะฒัะตะณะพ ะดะฒะฐ ัˆะฐะณะฐ", + "quests.ore_proc.indium.desc": "&6ะ›ะธะฝะธั ะ˜ะฝะดะธั&r ะฒะฐะผ, ัะบะพั€ะตะต ะฒัะตะณะพ, ะฝะต ะฟะพะฝะฐะดะพะฑะธั‚ัั ะดะพ &9IV&r, ะฝะพ ะพะฝะฐ ะฟะพั‚ั€ะตะฑัƒะตั‚ ะพั‡ะธั‰ะตะฝะฝั‹ะต &bะกั„ะฐะปะตั€ะธั‚&r ะธ &bะ“ะฐะปะตะฝัƒ&r.", + "quests.ore_proc.platline.title": "ะขะฐ ัะฐะผะฐั ะทะฝะฐะผะตะฝะธั‚ะฐั ะŸะปะฐั‚ะธะฝะพะฒะฐั ะ›ะธะฝะธั", + "quests.ore_proc.platline.subtitle": "ะ˜ะณั€ะพะบะธ GregTech vs. ะธะณั€ะพะบะธ Mekanism, ะบะพะณะดะฐ ะธะผ ะฝัƒะถะตะฝ ะžัะผะธะน:", + "quests.ore_proc.platline.desc": "&6ะŸะปะฐั‚ะธะฝะพะฒะฐั ะ›ะธะฝะธั&r ัั‚ะฐะฝะตั‚ ะฒะฐัˆะธะผ ะฟะตั€ะฒั‹ะผ ัะตั€ัŒั‘ะทะฝั‹ะผ ะธัะฟั‹ั‚ะฐะฝะธะตะผ ะฒ ะฟะตั€ะตั€ะฐะฑะพั‚ะบะต ั€ัƒะดั‹, ะพะฑะตัะฟะตั‡ะธะฒะฐั ะดะพัั‚ัƒะฟ ะบ ะฒะฐะถะฝะตะนัˆะธะผ ะผะตั‚ะฐะปะปะฐะผ ะฟะปะฐั‚ะธะฝะพะฒะพะน ะณั€ัƒะฟะฟั‹: &bะŸะปะฐั‚ะธะฝะฐ&r, &bะŸะฐะปะปะฐะดะธะน&r, &bะ ัƒั‚ะตะฝะธะน&r, &bะ ะพะดะธะน&r, &bะ˜ั€ะธะดะธะน&r ะธ &bะžัะผะธะน&r.\n\nะฅะพั‚ั ััƒั‰ะตัั‚ะฒัƒัŽั‚ ัะฟะพัะพะฑั‹ ะฟั€ะพั‰ะต ะฟะพะปัƒั‡ะธั‚ัŒ &bะŸะปะฐั‚ะธะฝัƒ&r ะธ &bะŸะฐะปะปะฐะดะธะน&r, ัั‚ะฐ ะปะธะฝะธั ะฑัƒะดะตั‚ &aะพะฑัะทะฐั‚ะตะปัŒะฝะพะน&r ะดะปั ะดะพัั‚ัƒะฟะฐ ะบะพ ะฒัะตะผ ะพัั‚ะฐะปัŒะฝั‹ะผ.\n\nะะฐั‡ะฐั‚ัŒ ะŸะปะฐั‚ะธะฝะพะฒัƒัŽ ะ›ะธะฝะธัŽ ะผะพะถะฝะพ ะฝะฐ &6HV&r, ะฝะพ ะฟะพะปะฝะพัั‚ัŒัŽ ะทะฐะฒะตั€ัˆะธั‚ัŒ ะตั‘ ะฒั‹ ะฝะต ัะผะพะถะตั‚ะต ะดะพ ะฑะพะปะตะต ะฟะพะทะดะฝะตะณะพ &5EV&r.", + "quests.ore_proc.electro_separator.title": "ะญะปะตะบั‚ั€ะพะผะฐะณะฝะธั‚ะฝั‹ะน ัะตะฟะฐั€ะฐั‚ะพั€", + "quests.ore_proc.electro_separator.subtitle": "ะ’ะตั€ะพัั‚ะฝะพ, ัะฐะผะฐั ะฑะตัะฟะพะปะตะทะฝะฐั ะผะฐัˆะธะฝะฐ GregTech", + "quests.ore_proc.electro_separator.desc": "&6ะญะปะตะบั‚ั€ะพะผะฐะณะฝะธั‚ะฝั‹ะน ัะตะฟะฐั€ะฐั‚ะพั€&r ะผะพะถะตั‚ ะธะทะฒะปะตะบะฐั‚ัŒ ะถะตะปะตะทะพ ะธ ะทะพะปะพั‚ะพ ะธะท &dะžะฑั€ะฐะฑะพั‚ะฐะฝะฝั‹ั… ั€ัƒะด&r, ะบะพั‚ะพั€ั‹ะต ะฒั‹ ะฟะพะปัƒั‡ะธั‚ะต ะดั€ะพะฑะปะตะฝะธะตะผ ะพั‡ะธั‰ะตะฝะฝั‹ั… ั€ัƒะด. ะะฐ ะดะฐะฝะฝั‹ะน ะผะพะผะตะฝั‚ ะผั‹ ั€ะตะบะพะผะตะฝะดัƒะตะผ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะตะณะพ ะฒ ะฟะตั€ะฒัƒัŽ ะพั‡ะตั€ะตะดัŒ ะดะปั &dะะฐะบะฒะฐะดั‹&r. ะ•ัะปะธ ะฒะฐะผ ะฝัƒะถะฝะพ ะฑะพะปัŒัˆะต &aะะตะพะดะธะผะฐ&r, ะผะพะถะฝะพ ั‚ะฐะบะถะต ะฟะตั€ะตั€ะฐะฑะฐั‚ั‹ะฒะฐั‚ัŒ &dะ‘ะฐัั‚ะฝะตะทะธั‚&r.", + "quests.ore_proc.electro_separator.task": "ะ›ัŽะฑะพะน ะญะปะตะบั‚ั€ะพะผะฐะณะฝะธั‚ะฝั‹ะน ะกะตะฟะฐั€ะฐั‚ะพั€", + "quests.ore_proc.macerator_separator.title": "ะ˜ะทะผะตะปัŒั‡ะธั‚ะตะปัŒ", + "quests.ore_proc.macerator_separator.subtitle": "(ัะฝะพะฒะฐ)", + "quests.ore_proc.macerator_separator.desc": "ะ˜ะทะผะตะปัŒั‡ะธั‚ะตะปัŒ ะธะฝะพะณะดะฐ ะผะพะถะตั‚ ะดะฐะฒะฐั‚ัŒ ะดั€ัƒะณะธะต ะฟะพะฑะพั‡ะฝั‹ะต ะฟั€ะพะดัƒะบั‚ั‹ ะธะท ะพั‡ะธั‰ะตะฝะฝั‹ั… ั€ัƒะด, ั‡ะตะผ ะดั€ัƒะณะธะต ะผะฐั€ัˆั€ัƒั‚ั‹, ะฝะพ ะฒัั‘ ัั‚ะพ ะพัั‚ะฐั‘ั‚ัั ะฟั€ะธะฒัะทะฐะฝะฝั‹ะผ ะบ ัƒั€ะพะฒะฝัŽ &6HV&r, ะบะฐะบ ะธ ะปัŽะฑั‹ะต ะดั€ัƒะณะธะต ะฟะพะฑะพั‡ะฝั‹ะต ะฟั€ะพะดัƒะบั‚ั‹ ะธะทะผะตะปัŒั‡ะตะฝะธั.", + "quests.ore_proc.macerator_separator.task": "ะ›ัŽะฑะพะน ะ˜ะทะผะตะปัŒั‡ะธั‚ะตะปัŒ", + "quests.ore_proc.thermal_centrifuge.title": "ะขะตั€ะผะฐะปัŒะฝะฐั ั†ะตะฝั‚ั€ะธั„ัƒะณะฐ", + "quests.ore_proc.thermal_centrifuge.subtitle": "ะ›ัƒั‡ัˆะธะน ะฒะฐั€ะธะฐะฝั‚ ะดะปั ะฑะพะปัŒัˆะธะฝัั‚ะฒะฐ ะพั‡ะธั‰ะตะฝะฝั‹ั… ั€ัƒะด", + "quests.ore_proc.thermal_centrifuge.desc": "ะ”ะปั ะฒัะตั… ะพัั‚ะฐะปัŒะฝั‹ั… ะžั‡ะธั‰ะตะฝะฝั‹ั… ั€ัƒะด, ะบะพั‚ะพั€ั‹ะต ะฝะต ั‚ั€ะตะฑัƒัŽั‚ ะพัะพะฑะพะน ะพะฑั€ะฐะฑะพั‚ะบะธ, ะปัƒั‡ัˆะต ะฒัะตะณะพ ะฟั€ะพะฟัƒัั‚ะธั‚ัŒ ะธั… ั‡ะตั€ะตะท &dะขะตั€ะผะฐะปัŒะฝัƒัŽ ั†ะตะฝั‚ั€ะธั„ัƒะณัƒ&r. ะญั‚ะฐ ะผะฐัˆะธะฝะฐ ะฟั€ะพะธะทะฒะพะดะธั‚ ะฟะพะฑะพั‡ะฝั‹ะต ะฟั€ะพะดัƒะบั‚ั‹ ั ั…ะพั€ะพัˆะตะน ัั‚ะฐะฑะธะปัŒะฝะพัั‚ัŒัŽ, ะธัะฟะพะปัŒะทัƒั ั‚ะพะปัŒะบะพ ัะปะตะบั‚ั€ะธั‡ะตัั‚ะฒะพ. ะžะดะฝะฐะบะพ ะพะฝะฐ ะดะพะฒะพะปัŒะฝะพ ะผะตะดะปะตะฝะฝะฐั, ะฟะพัั‚ะพะผัƒ ะผั‹ ั€ะตะบะพะผะตะฝะดัƒะตะผ ัะดะตะปะฐั‚ัŒ ะฝะตัะบะพะปัŒะบะพ ั‚ะฐะบะธั… ะผะฐัˆะธะฝ.", + "quests.ore_proc.thermal_centrifuge.task": "ะ›ัŽะฑะฐั ะขะตั€ะผะฐะปัŒะฝะฐั ั†ะตะฝั‚ั€ะธั„ัƒะณะฐ", + "quests.ore_proc.sifter.title": "ะŸั€ะพัะตะธะฒะฐั‚ะตะปัŒ", + "quests.ore_proc.sifter.subtitle": "ะกะธะผัƒะปัั‚ะพั€ ัะบะฐะนะฑะปะพะบะฐ", + "quests.ore_proc.sifter.desc": "&6ะŸั€ะพัะตะธะฒะฐั‚ะตะปัŒ&r ะดะพะปะถะตะฝ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒัั ะดะปั ะฒัะตั… ะฒะฐัˆะธั… &aะกะฐะผะพั†ะฒะตั‚ะพะฒ&r. ะžะฝ ะดะฐั‘ั‚ ะทะฝะฐั‡ะธั‚ะตะปัŒะฝะพ ะฑะพะปัŒัˆะต ะฒั‹ั…ะพะดะฐ ั ะพะดะฝะพะน ั€ัƒะดั‹, ั‡ะตะผ ะปัŽะฑั‹ะต ะดั€ัƒะณะธะต ะผะตั‚ะพะดั‹, ะธ ัั‚ะพ ะตะดะธะฝัั‚ะฒะตะฝะฝั‹ะน ัะฟะพัะพะฑ ะฟะพะปัƒั‡ะธั‚ัŒ ะะตะฟั€ะตะฒะทะพะนะดั‘ะฝะฝั‹ะต ะธ ะ‘ะตะทัƒะฟั€ะตั‡ะฝั‹ะต ัะฐะผะพั†ะฒะตั‚ั‹ ะดะพ ะปะฐะทะตั€ะฝะพะน ะณั€ะฐะฒะธั€ะพะฒะบะธ ะฝะฐ &6HV&r.", + "quests.ore_proc.sifter.task": "ะ›ัŽะฑะพะน ะŸั€ะพัะตะธะฒะฐั‚ะตะปัŒ", + "quests.ore_proc.centrifuge_sifter.title": "ะฆะตะฝั‚ั€ะธั„ัƒะณะธั€ะพะฒะฐะฝะธะต ะฟั‹ะปะธ", + "quests.ore_proc.centrifuge_sifter.subtitle": "ะŸะพะฑะพั‡ะฝั‹ะต ะฟั€ะพะดัƒะบั‚ั‹ ะพั‚ ะฟะพะฑะพั‡ะฝั‹ั… ะฟั€ะพะดัƒะบั‚ะพะฒ", + "quests.ore_proc.centrifuge_sifter.desc": "&6ะŸั€ะพัะตะธะฒะฐั‚ะตะปัŒ&r ะผะพะถะตั‚ ะฒั‹ะดะฐะฒะฐั‚ัŒ &6ะžั‡ะธั‰ะตะฝะฝัƒัŽ ะฟั‹ะปัŒ&r, ะบะพั‚ะพั€ัƒัŽ ะผะพะถะฝะพ ะพั‚ะฟั€ะฐะฒะธั‚ัŒ ะฒ ั†ะตะฝั‚ั€ะธั„ัƒะณัƒ, ั‡ั‚ะพะฑั‹ ะฟะพะปัƒั‡ะธั‚ัŒ ะตั‰ั‘ ะฝะตะผะฝะพะณะพ ะฟะพะฑะพั‡ะฝั‹ั… ะฟั€ะพะดัƒะบั‚ะพะฒ.", + "quests.ore_proc.centrifuge_sifter.task": "ะ›ัŽะฑะฐั ะฆะตะฝั‚ั€ะธั„ัƒะณะฐ", + "quests.ore_proc.electrolyzer.title": "ะ”ะฐะปัŒะฝะตะนัˆะฐั ะฟะตั€ะตั€ะฐะฑะพั‚ะบะฐ", + "quests.ore_proc.electrolyzer.subtitle": "ะะฝะบะพั€ ะดะปั ั€ัƒะดั‹!", + "quests.ore_proc.electrolyzer.desc": "ะะตะบะพั‚ะพั€ั‹ะต &6ะšัƒั‡ะบะธ ะŸั‹ะปะธ&r ะฝะต ะธะผะตัŽั‚ ะฟั€ัะผะพะณะพ ะฟั€ะธะผะตะฝะตะฝะธั. ะะฐะฟั€ะธะผะตั€, &2ะขะฐะฝั‚ะฐะปะธั‚&r ะฝัƒะถะฝะพ ะพะฑั€ะฐะฑะพั‚ะฐั‚ัŒ ะฒ &6ะญะปะตะบั‚ั€ะพะปะธะทั‘ั€ะต&r, ั‡ั‚ะพะฑั‹ ะธะทะฒะปะตั‡ัŒ ัั‹ั€ัŒะตะฒั‹ะต ัะปะตะผะตะฝั‚ั‹ &dะขะฐะฝั‚ะฐะปะฐ&r ะธ &dะœะฐั€ะณะฐะฝั†ะฐ&r.\n\nะ‘ะพะปัŒัˆะธะฝัั‚ะฒะพ ัั‚ะธั… ั€ะตั†ะตะฟั‚ะพะฒ ะฑัƒะดะตั‚ ะดะพัั‚ัƒะฟะฝะพ ั‚ะพะปัŒะบะพ ั &bMV ะญะปะตะบั‚ั€ะพะปะธะทั‘ั€ะพะผ&r, ั‚ะฐะบ ั‡ั‚ะพ ะฒะพะทะฒั€ะฐั‰ะฐะนั‚ะตััŒ ะบ ัั‚ะพะผัƒ ะฟะพะทะถะต!", + "quests.ore_proc.electrolyzer.task": "ะ›ัŽะฑะพะน ะญะปะตะบั‚ั€ะพะปะธะทั‘ั€", + "quests.ore_proc.packer.title": "ะฃะฟะฐะบะพะฒั‰ะธะบ", + "quests.ore_proc.packer.subtitle": "ะžะฝ ั€ะตะฐะปัŒะฝะพ ะฑั‹ัั‚ั€ั‹ะน", + "quests.ore_proc.packer.desc": "ะ’ ัั‚ะฐั€ั‹ะต ะฒั€ะตะผะตะฝะฐ GregTech ัั‚ะพั‚ ะผะฐะปะตะฝัŒะบะธะน ะฟะฐั€ะตะฝัŒ ะธัะฟะพะปัŒะทะพะฒะฐะปัั ะพั‡ะตะฝัŒ ะฐะบั‚ะธะฒะฝะพ โ€” ะธะท ะฟะตั€ะตั€ะฐะฑะพั‚ะบะธ ั€ัƒะดั‹ ะฟะพะปัƒั‡ะฐะปะพััŒ ะผะฝะพะณะพ &6ะœะฐะปั‹ั…&r ะธ &6ะšั€ะพัˆะตั‡ะฝั‹ั… ะšัƒั‡ะตะบ ะŸั‹ะปะธ&r.\n\nะกะตะนั‡ะฐั ะพะฝ ะฒ ะพัะฝะพะฒะฝะพะผ ะฟะพะปะตะทะตะฝ ะดะปั ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะพะน ัƒะฟะฐะบะพะฒะบะธ, ะฝะฐะฟั€ะธะผะตั€, &dะ ะตะดะบะพะทะตะผะตะปัŒะฝั‹ั…&r ัะปะตะผะตะฝั‚ะพะฒ ะฒ &6ะฆะตะฝั‚ั€ะธั„ัƒะณะต&r, ะฒะพะทะฒั€ะฐั‰ะฐั ะผะฝะพะถะตัั‚ะฒะพ &6ะœะฐะปั‹ั… ะšัƒั‡ะตะบ ะŸั‹ะปะธ&r.\n\nะะต ะทะฐะฑั‹ะฒะฐะนั‚ะต: &eะ ะพะฑะพั‚ะธะทะธั€ะพะฒะฐะฝะฝั‹ะน ะœะฐะฝะธะฟัƒะปัั‚ะพั€&r ะฒ ั€ะตะถะธะผะต Supply Exact ะผะพะถะตั‚ ะฑั‹ั‚ัŒ ะฟะพะปะตะทะตะฝ, ั‡ั‚ะพะฑั‹ ะฝะต ะทะฐะฑะธะฒะฐั‚ัŒ ะฒั…ะพะดะฝั‹ะต ัะปะพั‚ั‹.", + "quests.ore_proc.packer.task": "ะ›ัŽะฑะพะน ะฃะฟะฐะบะพะฒั‰ะธะบ", + "quests.ore_proc.bauxite.title": "ะ›ะธะฝะธั ะ‘ะพะบัะธั‚ะพะฒ", + "quests.ore_proc.bauxite.subtitle": "ะะพะฒะธะฝะบะฐ ะดะปั ัะพะฒั€ะตะผะตะฝะฝั‹ั… ะฒะตั€ัะธะน GregTech!", + "quests.ore_proc.bauxite.desc": "ะ’ั‹ &oะผะพะถะตั‚ะต&r ะฟั€ะพัั‚ะพ ัะปะตะบั‚ั€ะพะปะธะทะพะฒะฐั‚ัŒ ะฒััŽ ะฒะฐัˆัƒ ะ‘ะพะบัะธั‚ะพะฒัƒัŽ ะฟั‹ะปัŒ, ั‡ั‚ะพะฑั‹ ะฟะพะปัƒั‡ะธั‚ัŒ ะถะฐะปะบะธะต 6 ะฐะปัŽะผะธะฝะธั ะธ 1 ั€ัƒั‚ะธะป ั 15 ะฑะพะบัะธั‚ะพะฒ... ะ˜ะปะธ ะฒั‹ ะผะพะถะตั‚ะต ะฟะพะฟั€ะพะฑะพะฒะฐั‚ัŒ &6ะ›ะธะฝะธัŽ ะ‘ะพะบัะธั‚ะพะฒ&r!\n\nะญั‚ะฐ ะฝะพะฒะฐั ะปะธะฝะธั ะฟะตั€ะตั€ะฐะฑะพั‚ะบะธ ะดะฐั‘ั‚ ะฟั€ะธะผะตั€ะฝะพ ะฒ 2 ั€ะฐะทะฐ ะฑะพะปัŒัˆะต &bะะปัŽะผะธะฝะธั&r ะธ ะฒ 3 ั€ะฐะทะฐ ะฑะพะปัŒัˆะต &4ะ ัƒั‚ะธะปะฐ&r ั ะบะฐะถะดะพะณะพ ะฑะพะบัะธั‚ะฐ, ะฐ ั‚ะฐะบะถะต ะฑะตัะฟะปะฐั‚ะฝะพ ะดะฐั‘ั‚ ะฝะตะผะฝะพะณะพ ะ“ะฐะปะปะธั, ะ–ะตะปะตะทะฐ, ะะตะพะดะธะผะฐ ะธ ะฅั€ะพะผะฐ!", + "quests.ore_proc.gem_slurry.title": "ะ”ั€ะพะฑะปั‘ะฝะฝั‹ะต ะ ัƒะดั‹ (ะกะฐะผะพั†ะฒะตั‚ั‹)", + "quests.ore_proc.gem_slurry.subtitle": "ะœั‹... ะบั€ะธัั‚ะฐะปะปั‹...", + "quests.ore_proc.gem_slurry.desc": "&6ะ”ั€ะพะฑะปั‘ะฝะฝั‹ะต ะกะฐะผะพั†ะฒะตั‚ั‹&r โ€” ัั‚ะพ ะพะฟั†ะธะพะฝะฐะปัŒะฝั‹ะต, ะฝะพ ะบะพั€ะพั‚ะบะธะต ะปะธะฝะธะธ ะฟะตั€ะตั€ะฐะฑะพั‚ะบะธ ะดะปั ะ ัƒะฑะธะฝะพะฒ, ะกะฐะฟั„ะธั€ะพะฒ ะธ ะ—ะตะปั‘ะฝั‹ั… ะกะฐะฟั„ะธั€ะพะฒ, ั‡ั‚ะพะฑั‹ ะฒั‹ะถะฐั‚ัŒ ะฝะตะผะฝะพะณะพ ะฑะพะปัŒัˆะต ั€ะตััƒั€ัะพะฒ ะธะท ะฝะธั…. ะ’ ัั€ะฐะฒะฝะตะฝะธะธ ั ัะปะตะบั‚ั€ะพะปะธะทะพะผ:\n\n- &cะ”ั€ะพะฑะปะตะฝะฝั‹ะน ะ ัƒะฑะธะฝ&r ะดะฐั‘ั‚ ะฟะพั‡ั‚ะธ ะฒ 3 ั€ะฐะทะฐ ะฑะพะปัŒัˆะต ะะปัŽะผะธะฝะธั ะธ ะฅั€ะพะผะฐ\n\n- &9ะ”ั€ะพะฑะปะตะฝะฝั‹ะน ะกะฐะฟั„ะธั€&r ะดะฐั‘ั‚ ะฒ 2 ั€ะฐะทะฐ ะฑะพะปัŒัˆะต ะะปัŽะผะธะฝะธั\n\n- &aะ”ั€ะพะฑะปะตะฝะฝั‹ะน ะ—ะตะปั‘ะฝั‹ะน ะกะฐะฟั„ะธั€&r ะดะฐั‘ั‚ ะฒ 2 ั€ะฐะทะฐ ะฑะพะปัŒัˆะต ะะปัŽะผะธะฝะธั ะธ ะฝะตะผะฝะพะณะพ ะ‘ะตั€ะธะปะปะธั\n\nะ˜ ะฒะดะพะฑะฐะฒะพะบ, ะฒัะต ะพะฝะธ ะธะผะตัŽั‚ ะฝะตะฑะพะปัŒัˆะพะน ัˆะฐะฝั ะดะฐั‚ัŒ ะฝะตะผะฝะพะณะพ ะขะธั‚ะฐะฝะฐ, ะ–ะตะปะตะทะฐ ะธ ะ’ะฐะฝะฐะดะธั!", + "quests.ore_proc.gem_slurry.task": "ะ›ัŽะฑะพะน ะ”ั€ะพะฑะปะตะฝะฝั‹ะน ะกะฐะผะพั†ะฒะตั‚", "quests.space_survival": "ะกะพะฒะตั‚ั‹ - ะšะพัะผะธั‡ะตัะบะพะต ะฒั‹ะถะธะฒะฐะฝะธะต", "quests.space_survival.subtitle": "ะ•ะดะธะฝัั‚ะฒะตะฝะฝะพะต ะผะตัั‚ะพ, ะบะพั‚ะพั€ะพะต ะฝะต ะฑั‹ะปะพ ะธัะฟะพั€ั‡ะตะฝะพ ะบะฐะฟะธั‚ะฐะปะธะทะผะพะผ... ะšะพัะผะพั!", "quests.space_survival.preparations.title": "Pre-Launch Preparations", diff --git a/kubejs/assets/tfg/lang/zh_cn.json b/kubejs/assets/tfg/lang/zh_cn.json index 3658b1b1c..4cd8a8005 100644 --- a/kubejs/assets/tfg/lang/zh_cn.json +++ b/kubejs/assets/tfg/lang/zh_cn.json @@ -1040,7 +1040,7 @@ "item.tfg.etching_diamond_tip": "่š€ๅˆป้’ป็Ÿณ้’ปๅคด", "item.tfg.spade_head_extruder_mold": "ๆจกๅคด๏ผˆ้”นๅคด๏ผ‰", "item.tfg.mining_hammer_head_extruder_mold": "ๆจกๅคด๏ผˆ้‡‡็Ÿฟ้”คๅคด๏ผ‰", - "item.tfg.sword_head_extruder_mold": "ๆจกๅคด๏ผˆๅ‰‘ๅคด๏ผ‰", + "item.tfg.sword_head_extruder_mold": "ๆจกๅคด๏ผˆๅ‰‘่บซ๏ผ‰", "item.tfg.pickaxe_head_extruder_mold": "ๆจกๅคด๏ผˆ้•ๅคด๏ผ‰", "item.tfg.shovel_head_extruder_mold": "ๆจกๅคด๏ผˆ้“ฒๅคด๏ผ‰", "item.tfg.axe_head_extruder_mold": "ๆจกๅคด๏ผˆๆ–งๅคด๏ผ‰", @@ -1251,6 +1251,12 @@ "material.tfg.zirconium_bromide": "ๆบดๅŒ–้”†(IV)", "material.tfg.zirconium_diboride": "ไบŒ็กผๅŒ–้”†", "material.tfg.boron_carbide": "็ขณๅŒ–็กผ", + "material.tfg.syngas": "ๅˆๆˆๆฐ”", + "material.tfg.raw_aromatic_mix": "็ฒ—่Šณ้ฆ™ๆททๅˆ็‰ฉ", + "material.tfg.aromatic_feedstock": "่Šณ้ฆ™ๅŽŸๆ–™", + "material.tfg.reformed_aromatic_feedstock": "้‡ๆ•ด่Šณ้ฆ™ๅŽŸๆ–™", + "material.tfg.reformate_gas": "้‡ๆ•ดๆฐ”", + "material.tfg.cracker_off_gas": "่ฃ‚ๅŒ–้‡ๆ•ดๅฐพๆฐ”", "ore_vein.tfg.deep_sheldonite": "็กซ้“‚็Ÿฟ, ๆ–‘้“œ็Ÿฟ", "ore_vein.tfg.deep_garnet_amethyst": "็ดซๆฐดๆ™ถ, ็Ÿณๆฆด็Ÿณ", "ore_vein.tfg.deep_garnet_opal": "่›‹็™ฝ็Ÿณ, ็Ÿณๆฆด็Ÿณ", @@ -1293,7 +1299,7 @@ "ore_vein.tfg.normal_sphalerite": "้—ช้”Œ็Ÿฟ, ้ป„้“็Ÿฟ", "ore_vein.tfg.normal_spodumene": "้”‚่พ‰็Ÿณ, ้”‚ไบ‘ๆฏ", "ore_vein.tfg.normal_sulfur": "็กซ, ้ป„้“็Ÿฟ", - "ore_vein.tfg.normal_tarkianite": "ๅก”ๅŸบๅฎ‰็Ÿณ, ๆฒน็ ‚", + "ore_vein.tfg.normal_tarkianite": "ๅก”ๅŸบๅฎ‰็Ÿฟ, ๆฒน็ ‚", "ore_vein.tfg.normal_tetrahedrite": "้ป้“œ็Ÿฟ (ๆ™ฎ้€š)", "ore_vein.tfg.surface_bismuthinite": "่พ‰้“‹็Ÿฟ (ๅœฐ่กจ)", "ore_vein.tfg.surface_cassiterite": "้”ก็Ÿณ็Ÿฟ (ๅœฐ่กจ)", @@ -4148,7 +4154,7 @@ "quests.tfg_tips.grappling_hook.desc": "ๅฐ†2ไธช&a้ป„้บป็ปณ&rไธŽ1ไธช&b้”ป้“้•ๅคด&r็ป„ๅˆ๏ผŒไพฟๅฏๅˆถไฝœๅ‡บ&dๆŠ“้’ฉ&r๏ผๅฎƒๆ˜ฏ็ฟป่ถŠๅด‡ๅฑฑๅณปๅฒญใ€ๆŽข็ดขๅทจๆดžๆทฑๆธŠใ€็บตๆจชๅคฉๅœฐๅ››ๆ–น็š„็†ๆƒณๅทฅๅ…ทใ€‚ๆŠ“้’ฉๅ†…็ฝฎ&eๅ‡็บง็ณป็ปŸ&r๏ผŒๅฏ่ฎฉไฝ ้šๅฟƒๆ‰€ๆฌฒๅœฐ่‡ช็”ฑๆญ้…ไธŽๆ”น้€ ไฝ ็š„&dๆŠ“้’ฉ&rใ€‚", "quests.tfg_tips.grapple_repair.title": "ๆŠ“้’ฉ่ญฆๅ‘Š", "quests.tfg_tips.grapple_repair.subtitle": "่ฏท้˜…่ฏปๆœฌ่ฏดๆ˜Ž๏ผŒๅฆๅˆ™ไฝ ๆ—ฅๅŽๅฏ่ƒฝไผšๅŽๆ‚”๏ผ", - "quests.tfg_tips.grapple_repair.desc": "&dๆŠ“้’ฉ&r็š„ๆ‰€ๆœ‰&aๅ‡็บง&rๆ•ฐๆฎ้ƒฝๅ‚จๅญ˜ๅœจ็‰ฉๅ“็š„NBTๆ ‡็ญพๅ†…ใ€‚่ฟ™ๆ„ๅ‘ณ็€่‹ฅๅฐ่ฏ•ไฝฟ็”จ&cๅฆไธ€ไธช&rๆŠ“้’ฉ่ฟ›่กŒไฟฎๅค๏ผŒ&l&cๅฐ†ไผšๆฐธไน…ๆŸๆฏๆ‰€ๆœ‰ๅ‡็บงๆ•ฐๆฎ๏ผ&r\n\nๆญฃ็กฎไฟฎๅคๆ–นๅผ๏ผšๅฐ†ไฝ ็š„&dๆŠ“้’ฉ&rไธŽไธ€ไบ›&b้”ป้“็ฒ‰&rๆ”พๅ…ฅ&3ๅทฅไฝœๅฐ&r่ฟ›่กŒไฟฎๅคใ€‚\n\nๅฆๅค–๏ผŒๅœจไธปไธ–็•ŒไธŽๅนฝๅ†ฅไธ–็•Œไน‹้—ด็ฉฟๆขญๆ—ถๅˆ‡ๅ‹ฟไฝฟ็”จๆŠ“้’ฉ๏ผŒ่ฟ™ๆ˜ฏ้žๅธธๅฑ้™ฉ็š„ใ€‚", + "quests.tfg_tips.grapple_repair.desc": "&dๆŠ“้’ฉ&r็š„ๆ‰€ๆœ‰&aๅ‡็บง&rๆ•ฐๆฎ้ƒฝๅ‚จๅญ˜ๅœจ็‰ฉๅ“็š„NBTๆ ‡็ญพๅ†…ใ€‚่ฟ™ๆ„ๅ‘ณ็€่‹ฅๅฐ่ฏ•ไฝฟ็”จ&cๅฆไธ€ไธช&rๆŠ“้’ฉ่ฟ›่กŒไฟฎๅค๏ผŒ&l&cๅฐ†ไผšๆฐธไน…ๆŸๆฏๆ‰€ๆœ‰ๅ‡็บงๆ•ฐๆฎ๏ผ&r\n\nๆญฃ็กฎไฟฎๅคๆ–นๅผ๏ผšๅฐ†ไฝ ็š„&dๆŠ“้’ฉ&rไธŽไธ€ไบ›&b้”ป้“็ฒ‰&rๆ”พๅ…ฅ&3ๅทฅไฝœๅฐ&r่ฟ›่กŒไฟฎๅคใ€‚\n\nๅฆๅค–๏ผŒๅœจไธปไธ–็•ŒไธŽๅนฝๅ†ฅไน‹ๅœฐไน‹้—ด็ฉฟๆขญๆ—ถๅˆ‡ๅ‹ฟไฝฟ็”จๆŠ“้’ฉ๏ผŒ่ฟ™ๆ˜ฏ้žๅธธๅฑ้™ฉ็š„ใ€‚", "quests.tfg_tips.grapple_upgrades.title": "ๅ‡็บงไฝ ็š„ๆŠ“้’ฉ", "quests.tfg_tips.grapple_upgrades.subtitle": "ๅฝ“็„ถๆ˜ฏๅ›ด็ป•TFGๅนณ่กก่ฟ‡ไบ†๏ผ", "quests.tfg_tips.grapple_upgrades.desc.1": "ๅ‡็บง&dๆŠ“้’ฉ&r้œ€่ฆ้€š่ฟ‡&3ๅทฅไฝœๅฐ&rไธบๅ…ถๆทปๅŠ ๆˆ–็งป้™ค็‰ฉๅ“ใ€‚\n\n่‹ฅๆƒณๆŸฅ็œ‹&dๆŠ“้’ฉ&rๆ‰€ๆœ‰็š„ๅฏๅ‡็บงๅ†…ๅฎน๏ผŒๅฏๆŒ‰&2EMI&r็š„\"็”จ้€”\"้”ฎใ€‚\nๆฏไธช่‡ชๅฎšไน‰้…ๆ–น้ƒฝไผš้™„ๆœ‰ๆ–‡ๅญ—๏ผŒ่ฏดๆ˜Žๅ…ถๆ‰€่ƒฝๅธฆๆฅ็š„ๅ…ทไฝ“ๆ”นๅ˜ใ€‚", @@ -4305,8 +4311,8 @@ "quests.tfg_tips.glider.subtitle": "่ฟ™ไธๆ˜ฏ่’้‡Žไน‹ๆฏ", "quests.tfg_tips.glider.desc": "&dๆ‚ฌๆŒ‚ๅผๆป‘็ฟ”็ฟผ&rๅฏ็”จไบŽ็ฉบไธญๆป‘็ฟ”ใ€‚่™ฝ็„ถไฝ &cๆ— ๆณ•ๆๅ‡้ซ˜ๅบฆ&r๏ผŒไฝ†ไปŽ้ซ˜ๅค„่ทƒไธ‹ๆ—ถ๏ผŒๅฎƒๅฐ†ๆˆไธบ้•ฟ้€”็ฉฟ่ถŠ็š„็ปไฝณๅทฅๅ…ทใ€‚\nไธŽ&bๅ–ทๆฐ”่ƒŒๅŒ…&rๆ˜ฏ็ป้…๏ผ", "quests.tfg_tips.reinforced_glider.title": "ๅผบๅŒ–ๆป‘็ฟ”็ฟผ", - "quests.tfg_tips.reinforced_glider.subtitle": "้ž˜็ฟ…็”จๅพ—ๅ€ผ...๏ผŸ", - "quests.tfg_tips.reinforced_glider.desc": "ๅฐ†&6HV&r้˜ถๆฎตๅˆถไฝœ็š„&a้ž˜็ฟ…&rไธŽ&aๆ‚ฌๆŒ‚ๅผๆป‘็ฟ”็ฟผ&r็ป“ๅˆ๏ผŒ่Žทๅพ—&dๅผบๅŒ–ๆป‘็ฟ”็ฟผ&rใ€‚่€ไน…ๆ›ด้ซ˜๏ผŒ้€ŸๅบฆไธŠ้™ๆ›ด้ซ˜ใ€‚", + "quests.tfg_tips.reinforced_glider.subtitle": "่ฝปๅฆ‚้ธฟๆฏ›๏ผ", + "quests.tfg_tips.reinforced_glider.desc": "&dๅผบๅŒ–ๆ‚ฌๆŒ‚ๆป‘็ฟ”็ฟผ&rๆ˜ฏ&aๆ‚ฌๆŒ‚ๆป‘็ฟ”็ฟผ&r็š„ๆ”น่ฟ›็‰ˆๆœฌใ€‚ๅฎƒ้‡‡็”จไบ†ๅ‡็บง็š„&a้“&rๅˆถๆก†ๆžถ๏ผŒไปฅๅŠ็”ฑ&aๅผบๅŒ–ๅธƒๆ–™&rๆˆ–&a่ฝป่ดจๅธƒๆ–™&rๅˆถๆˆ็š„็ฟผ้ข๏ผŒ็Žฐๅœจไฝ ๅฏไปฅไปฅ&cๅŒๅ€้€Ÿๅบฆ&r็ฟฑ็ฟ”ๅคฉ้™…๏ผ\nๅฎƒไนŸๆฏ”ๆ™ฎ้€šๆป‘็ฟ”็ฟผๆ‹ฅๆœ‰&cๆ›ด้ซ˜็š„่€ไน…ๅบฆ&r๏ผŒๅนถไธ”ๅฏไปฅๅœจ็ป„่ฃ…ๆœบไธญ&cไฟฎๅค&rใ€‚\n\n&3ไธ“ไธšๆ็คบ๏ผš&r\nไฝฟ็”จๅœจ&4ๅนฝๅ†ฅไน‹ๅœฐ&r็ปดๅบฆ่Žทๅพ—็š„&aไธ่ดจๅธƒๆ–™&rๆˆ–&aๅนปๅฝฑไธ&r๏ผŒ่ƒฝๅœจๅˆถไฝœๅ’Œไฟฎๅคๆ—ถๅฐ†ๅธƒๆ–™ๆถˆ่€—้™ไฝŽ&eไธ‰ๅˆ†ไน‹ไบŒ&r๏ผ\nๅฝ“ไฝ ่ฟ›ๅ…ฅ&6HV&r้˜ถๆฎตๅŽ๏ผŒไนŸๅฏไปฅไฝฟ็”จ&a่šๅทฑๅ†…้…ฐ่ƒบๅธƒๆ–™&rไฝœไธบๅ…ถไธญไธ€็งๅธƒๆ–™๏ผŒๅนถไบซๅ—ๆถˆ่€—้™ไฝŽ็š„ๆ•ˆๆžœใ€‚", "quests.tfg_tips.immersive_aircraft.title": "ๆฒ‰ๆตธๅผ้ฃžๆœบ", "quests.tfg_tips.immersive_aircraft.subtitle": "็ฟฑ็ฟ”ๅคฉ็ฉบ๏ผŒ้ฃŽๆ ผ็‹ฌๅ…ท", "quests.tfg_tips.immersive_aircraft.desc": "&2ๆฒ‰ๆตธๅผ้ฃžๆœบ&rๆจก็ป„ไธ“ๆณจไบŽ้ฃžๆœบ๏ผŒ่ฎฉไฝ ่ƒฝๅคŸ็ฟฑ็ฟ”ๅคฉ็ฉบ่ทจ่ถŠ้•ฟ้€”ใ€‚", diff --git a/kubejs/client_scripts/example.js b/kubejs/client_scripts/example.js deleted file mode 100644 index c283f7462..000000000 --- a/kubejs/client_scripts/example.js +++ /dev/null @@ -1,3 +0,0 @@ -// priority: 1 - -console.log('TerraFirmaGreg the best modpack in the world :)') \ No newline at end of file diff --git a/kubejs/data/tfg/worldgen/configured_feature/mars/tree/crimson.json b/kubejs/data/tfg/worldgen/configured_feature/mars/tree/crimson.json index 40b85088f..7c0687012 100644 --- a/kubejs/data/tfg/worldgen/configured_feature/mars/tree/crimson.json +++ b/kubejs/data/tfg/worldgen/configured_feature/mars/tree/crimson.json @@ -4,7 +4,8 @@ "features": [ "tfg:mars/tree/crimson_amber", "tfg:mars/tree/crimson_rusticus", - "tfg:mars/tree/crimson_sangnum" + "tfg:mars/tree/crimson_sangnum", + "tfg:mars/tree/crimson_dirt" ] } } \ No newline at end of file diff --git a/kubejs/data/tfg/worldgen/configured_feature/mars/tree/crimson_dirt.json b/kubejs/data/tfg/worldgen/configured_feature/mars/tree/crimson_dirt.json new file mode 100644 index 000000000..2d006ee26 --- /dev/null +++ b/kubejs/data/tfg/worldgen/configured_feature/mars/tree/crimson_dirt.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:huge_fungus", + "config": { + "decor_state": { + "Name": "beneath:wood/leaves/crimson" + }, + "hat_state": { + "Name": "minecraft:nether_wart_block" + }, + "planted": false, + "replaceable_blocks": { + "type": "minecraft:replaceable" + }, + "stem_state": { + "Name": "beneath:wood/log/crimson", + "Properties": { + "axis": "y", + "branch_direction": "down" + } + }, + "valid_base_block": { + "Name": "tfg:grass/mars_dirt" + } + } +} \ No newline at end of file diff --git a/kubejs/data/tfg/worldgen/configured_feature/mars/tree/warped.json b/kubejs/data/tfg/worldgen/configured_feature/mars/tree/warped.json index ae09354ad..4efc472cf 100644 --- a/kubejs/data/tfg/worldgen/configured_feature/mars/tree/warped.json +++ b/kubejs/data/tfg/worldgen/configured_feature/mars/tree/warped.json @@ -4,7 +4,8 @@ "features": [ "tfg:mars/tree/warped_amber", "tfg:mars/tree/warped_rusticus", - "tfg:mars/tree/warped_sangnum" + "tfg:mars/tree/warped_sangnum", + "tfg:mars/tree/warped_dirt" ] } } \ No newline at end of file diff --git a/kubejs/data/tfg/worldgen/configured_feature/mars/tree/warped_dirt.json b/kubejs/data/tfg/worldgen/configured_feature/mars/tree/warped_dirt.json new file mode 100644 index 000000000..2b5789a94 --- /dev/null +++ b/kubejs/data/tfg/worldgen/configured_feature/mars/tree/warped_dirt.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:huge_fungus", + "config": { + "decor_state": { + "Name": "beneath:wood/leaves/warped" + }, + "hat_state": { + "Name": "minecraft:warped_wart_block" + }, + "planted": false, + "replaceable_blocks": { + "type": "minecraft:replaceable" + }, + "stem_state": { + "Name": "beneath:wood/log/warped", + "Properties": { + "axis": "y", + "branch_direction": "down" + } + }, + "valid_base_block": { + "Name": "tfg:grass/mars_dirt" + } + } +} \ No newline at end of file diff --git a/kubejs/data/tfg/worldgen/placed_feature/mars/tree/crimson_dirt.json b/kubejs/data/tfg/worldgen/placed_feature/mars/tree/crimson_dirt.json new file mode 100644 index 000000000..3aae30456 --- /dev/null +++ b/kubejs/data/tfg/worldgen/placed_feature/mars/tree/crimson_dirt.json @@ -0,0 +1,4 @@ +{ + "feature": "tfg:mars/tree/crimson_dirt", + "placement": [] +} \ No newline at end of file diff --git a/kubejs/data/tfg/worldgen/placed_feature/mars/tree/warped_dirt.json b/kubejs/data/tfg/worldgen/placed_feature/mars/tree/warped_dirt.json new file mode 100644 index 000000000..349608694 --- /dev/null +++ b/kubejs/data/tfg/worldgen/placed_feature/mars/tree/warped_dirt.json @@ -0,0 +1,4 @@ +{ + "feature": "tfg:mars/tree/warped_amber", + "placement": [] +} \ No newline at end of file diff --git a/kubejs/server_scripts/ad_astra/recipes.js b/kubejs/server_scripts/ad_astra/recipes.js index 3e7a73a00..250a1732d 100644 --- a/kubejs/server_scripts/ad_astra/recipes.js +++ b/kubejs/server_scripts/ad_astra/recipes.js @@ -8,426 +8,6 @@ const registerAdAstraRecipes = (event) => { event.remove({ mod: 'ad_astra' }) - //#region Rocket parts - - event.recipes.gtceu.shaped('ad_astra:launch_pad', [ - 'BAB', - 'AAA', - 'BAB' - ], { - A: '#forge:plates/steel', - B: '#forge:rods/steel' - }).addMaterialInfo().id('tfg:launch_pad') - - //#region Tier 1 rocket - - event.recipes.gtceu.assembler('tfg:rocket_nose_cone_t1') - .itemInputs( - 'gtceu:hv_emitter', - ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t1'), 1), - ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 3)) - .inputFluids(Fluid.of('gtceu:polyethylene', 144 * 16)) - .itemOutputs('ad_astra:rocket_nose_cone') - .duration(1200) - .circuit(2) - .EUt(480) - .addMaterialInfo(true, true) - - - event.recipes.gtceu.pyrolyse_oven('tfg:pyrolyse_vitrified_asbestos_dust') - .inputFluids(Fluid.of('gtceu:nitrogen', 100)) - .itemInputs('gtceu:asbestos_dust') - .itemOutputs('gtceu:vitrified_asbestos_dust') - .duration(80) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.mixer('tfg:rocket_alloy_t1') - .itemInputs('6x #forge:dusts/aluminium', '2x #forge:dusts/stainless_steel') - .inputFluids(Fluid.of('gtceu:red_steel', 144)) - .itemOutputs('9x #forge:dusts/rocket_alloy_t1') - .duration(580) - .circuit(2) - .EUt(480) - - event.recipes.gtceu.chemical_bath('tfg:rocket_alloy_cool_down_water') - .itemInputs('#forge:hot_ingots/rocket_alloy_t1') - .inputFluids(Fluid.of('minecraft:water', 100)) - .itemOutputs('#forge:ingots/rocket_alloy_t1') - .duration(400) - .EUt(120) - - event.recipes.gtceu.chemical_bath('tfg:rocket_alloy_cool_down_distilled_water') - .itemInputs('#forge:hot_ingots/rocket_alloy_t1') - .inputFluids(Fluid.of('gtceu:distilled_water', 100)) - .itemOutputs('#forge:ingots/rocket_alloy_t1') - .duration(250) - .EUt(120) - - event.recipes.gtceu.assembler(`tfg:rocket_fin_t1`) - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, TFGHelpers.getMaterial('rocket_alloy_t1'), 1), - ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 1) - ) - .itemOutputs('ad_astra:rocket_fin') - .duration(150) - .circuit(2) - .EUt(GTValues.VA[GTValues.HV]) - .addMaterialInfo(true) - - - event.recipes.gtceu.assembler('tfg:rocket_steel_engine') - .itemInputs( - ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 2), - '2x #gtceu:circuits/hv', - 'gtceu:hv_electric_pump', - '2x gtceu:power_thruster', - ChemicalHelper.get(TagPrefix.rotor, GTMaterials.StainlessSteel, 1) - ) - .inputFluids(Fluid.of('gtceu:blue_steel', 144 * 8)) - .itemOutputs('ad_astra:steel_engine') - .duration(600) - .circuit(2) - .EUt(GTValues.VA[GTValues.HV]) - .addMaterialInfo(true, true) - - event.recipes.gtceu.assembler('ad_astra:assembler_tier_1_rocket') - .itemInputs( - ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t1'), 8), - '4x ad_astra:rocket_fin', - '1x ad_astra:steel_engine', - '1x ad_astra:rocket_nose_cone', - '16x #forge:insulation_t1', - '4x #gtceu:circuits/hv' - ) - .inputFluids(Fluid.of('gtceu:silicon', 144 * 16)) - .itemOutputs('ad_astra:tier_1_rocket') - .duration(1200) - .circuit(2) - .EUt(GTValues.VA[GTValues.HV]) - .addMaterialInfo(true, true) - - //#endregion - - - //region tier 2 rocket - - event.remove({ mod: 'gtceu', input: 'gtceu:hot_rocket_alloy_t2_ingot' }) - - event.recipes.gtceu.alloy_blast_smelter('gtceu:alloy_blast_smelter/rocket_alloy_t2') - .itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium') - .inputFluids(Fluid.of('gtceu:vanadium', 144 * 4), Fluid.of('gtceu:distilled_water', 16000)) - .outputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144 * 32)) - .duration(1320 * 20) - .circuit(2) - .blastFurnaceTemp(3200) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.alloy_blast_smelter('gtceu:alloy_blast_smelter/rocket_alloy_t2_gas') - .itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium') - .inputFluids(Fluid.of('gtceu:vanadium', 144 * 4), Fluid.of('gtceu:distilled_water', 16000), Fluid.of('gtceu:helium', 3200)) - .outputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144 * 32)) - .duration(17688) - .circuit(12) - .blastFurnaceTemp(3200) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/cool_molten_rocket_alloy_t2') - .notConsumable('gtceu:ingot_casting_mold') - .inputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144), Fluid.of('tfg:cryogenized_fluix', 288)) - .itemOutputs('#forge:ingots/rocket_alloy_t2') - .duration(120) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.mixer('tfg:rocket_alloy_t2') - .itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium') - .inputFluids(Fluid.of('gtceu:vanadium', 144 * 4)) - .itemOutputs('32x #forge:dusts/rocket_alloy_t2') - .duration(15 * 20) - .circuit(5) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/cool_rocket_alloy_t2') - .itemInputs('#forge:hot_ingots/rocket_alloy_t2') - .inputFluids(Fluid.of('gtceu:distilled_water', 500), Fluid.of('tfg:cryogenized_fluix', 288)) - .itemOutputs('#forge:ingots/rocket_alloy_t2') - .duration(120) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.assembler('tfg:rocket_fin_t2') - .itemInputs('#forge:plates/rocket_alloy_t2', - '#forge:double_plates/titanium') - .itemOutputs('tfg:rocket_fin_t2') - .duration(180) - .circuit(3) - .EUt(GTValues.VA[GTValues.EV]) - .addMaterialInfo(true) - - event.recipes.gtceu.assembler('tfg:rocket_cone_t2') - .itemInputs('gtceu:ev_emitter', '#forge:dense_plates/rocket_alloy_t2', '#forge:double_plates/titanium', - '#forge:double_plates/desh') - .itemOutputs('tfg:rocket_cone_t2') - .duration(1440) - .circuit(3) - .EUt(GTValues.VA[GTValues.EV]) - .addMaterialInfo(true) - - - event.recipes.gtceu.assembler('tfg:rocket_desh_engine') - .itemInputs( - ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.Titanium, 4), - '2x #gtceu:circuits/ev', - 'gtceu:ev_electric_pump', - '3x gtceu:advanced_power_thruster', - ChemicalHelper.get(TagPrefix.rod, GTMaterials.NeodymiumMagnetic, 4), - ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Titanium, 1)) - .inputFluids(Fluid.of('gtceu:desh', 144 * 12)) - .itemOutputs('ad_astra:desh_engine') - .duration(800) - .circuit(3) - .EUt(GTValues.VA[GTValues.EV]) - .addMaterialInfo(true, true) - - event.recipes.gtceu.assembler('ad_astra:tier_2_rocket') - .itemInputs( - ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t2'), 12), - '4x tfg:rocket_fin_t2', - '1x ad_astra:desh_engine', - '1x tfg:rocket_cone_t2', - '12x #forge:insulation_t2/roll', - '4x #gtceu:circuits/ev' - ) - .inputFluids(Fluid.of('gtceu:titanium', 144 * 16)) - .itemOutputs('ad_astra:tier_2_rocket') - .duration(1440) - .circuit(3) - .EUt(GTValues.VA[GTValues.EV]) - .addMaterialInfo(true, true) - - //#endregion - - //region Tier 3 DISABLED UNTIL IV - event.remove({ id: "gtceu:vacuum_freezer/cool_hot_rocket_alloy_t3_ingot" }) - event.remove({ id: "gtceu:vacuum_freezer/rocket_alloy_t3" }) - /* - event.recipes.gtceu.vacuum_freezer('tfg:cool_rocket_alloy_t3') - .inputFluids(Fluid.of('gtceu:molten_rocket_alloy_t3', 144), Fluid.of('gtceu:ice', 4000)) - .notConsumable('gtceu:ingot_casting_mold') - .itemOutputs('#forge:ingots/rocket_alloy_t3') - .duration(800) - .EUt(GTValues.VA[GTValues.HV]) - event.recipes.gtceu.vacuum_freezer('tfg:cool_hot_rocket_alloy_t3') - .itemInputs('#forge:hot_ingots/rocket_alloy_t3') - .inputFluids(Fluid.of('gtceu:liquid_helium', 500)) - .itemOutputs('#forge:ingots/rocket_alloy_t3') - .outputFluids(Fluid.of('gtceu:helium', 250)) - .duration(400) - .EUt(GTValues.VA[GTValues.HV]) - - //Add some unique cooling thing for molten ingots - - event.recipes.gtceu.assembler('tfg:rocket_fin_t3') - .itemInputs('#forge:plates/rocket_alloy_t3', '#forge:double_plates/tungsten_steel') - .itemOutputs('tfg:rocket_fin_t3') - .duration(220) - .circuit(4) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - event.recipes.gtceu.assembler('tfg:rocket_cone_t3') - .itemInputs('gtceu:iv_emitter', '#forge:dense_plates/rocket_alloy_t3', '#forge:double_plates/tungsten_steel', - '#forge:double_plates/ostrum', 'gtceu:plutonium_nugget') //change this to the pellet - .itemOutputs('tfg:rocket_cone_t3') - .duration(1700) - .circuit(4) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - event.recipes.gtceu.assembler('tfg:elite_power_thruster') - .itemInputs('gtceu:ev_electric_motor', '2x #forge:rings/titanium', '#forge:rods/titanium', - 'gtceu:ultimet_rotor', '2x gtceu:aluminium_single_cable') - .itemOutputs('tfg:elite_power_thruster') - .duration(200) - .EUt(GTValues.VA[GTValues.LV]) - .addMaterialInfo(true) - - event.recipes.gtceu.assembler('tfg:rocket_ostrum_engine') - .itemInputs( - '6x #forge:double_plates/tungsten_steel', - '4x #gtceu:circuits/iv', - 'gtceu:iv_electric_pump', - '3x tfg:elite_power_thruster', - '4x #forge:insulation_t3/cryo', - '6x #forge:rods/magnetic_neodymium', - '#forge:rotors/tungsten_steel') - .inputFluids(Fluid.of('gtceu:ostrum', 144 * 16)) - .itemOutputs('ad_astra:ostrum_engine') - .duration(960) - .circuit(4) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true, true) - - event.recipes.gtceu.assembler('tfg:rocket_ostrum_tank') - .itemInputs( - '4x #forge:double_plates/rocket_alloy_t3', - 'gtceu:iv_electric_pump', - 'tfg:elite_power_thruster', - '2x #forge:insulation_t3/cryo') - .inputFluids(Fluid.of('gtceu:ostrum', 144 * 4)) - .itemOutputs('ad_astra:ostrum_tank') - .duration(400) - .circuit(4) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true, true) - - event.recipes.gtceu.assembler('ad_astra:tier_3_rocket') - .itemInputs( - '16x #forge:dense_plates/rocket_alloy_t3', - '4x tfg:rocket_fin_t3', - '1x ad_astra:ostrum_engine', - '2x ad_astra:ostrum_tank', - '1x tfg:rocket_cone_t3', - '8x #forge:insulation_t3/sheet' - ) - .inputFluids(Fluid.of('gtceu:bromine', 1000 * 16)) - .itemOutputs('ad_astra:tier_3_rocket') - .duration(1700) - .circuit(4) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true, true) - - //#endregion -*/ - //#region space suits NETHERITE STUFF DISABLED UNTIL IV - - event.recipes.gtceu.forming_press('space_suit_fabric') - .itemInputs( - '#forge:foils/aluminium', - 'gtceu:carbon_fiber_mesh', - '#forge:foils/silicone_rubber', - 'tfg:polycaprolactam_fabric' - ) - .itemOutputs('2x tfg:space_suit_fabric') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.HV]) - .addMaterialInfo(true) - - event.recipes.gtceu.forming_press('better_space_suit_fabric') - .itemInputs( - '#forge:foils/polybenzimidazole', - 'gtceu:carbon_fiber_mesh', - '#forge:aerogels', - 'tfg:glacian_wool' - ) - .itemOutputs('2x tfg:better_space_suit_fabric') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - event.recipes.gtceu.shaped('ad_astra:space_helmet', [ - 'AAA', - 'ADA', - 'BBB' - ], { - A: 'gtceu:tempered_glass', - B: 'tfg:space_suit_fabric', - D: '#forge:small_fluid_pipes/polyethylene' - }).addMaterialInfo().id('tfg:space_helmet') - - event.recipes.gtceu.assembler('ad_astra:netherite_space_helmet') - .itemInputs( - 'ad_astra:space_helmet', - '2x #forge:plates/tungsten_steel', - '1x #forge:plates/ostrum', - '3x tfg:better_space_suit_fabric', - '5x gtceu:laminated_glass' - ) - .itemOutputs('ad_astra:netherite_space_helmet') - .duration(400) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - event.recipes.gtceu.shaped('ad_astra:space_suit', [ - 'B B', - 'BDB', - 'BBB' - ], { - B: 'tfg:space_suit_fabric', - D: 'ad_astra:oxygen_gear' - }).addMaterialInfo().id('tfg:space_suit') - - event.shapeless('ad_astra:space_suit', ['ad_astra:space_suit']) - .id('tfg:empty_space_suit') - - event.recipes.gtceu.assembler('ad_astra:netherite_space_suit') - .itemInputs( - 'ad_astra:space_suit', - '3x #forge:plates/tungsten_steel', - '2x #forge:plates/ostrum', - '5x tfg:better_space_suit_fabric' - ) - .itemOutputs('ad_astra:netherite_space_suit') - .duration(400) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - event.shapeless('ad_astra:netherite_space_suit', ['ad_astra:netherite_space_suit']) - .id('tfg:empty_netherite_space_suit') - - event.recipes.gtceu.shaped('ad_astra:space_pants', [ - 'BAB', - 'B B', - 'B B' - ], { - A: 'gtceu:hv_electric_motor', - B: 'tfg:space_suit_fabric', - }).addMaterialInfo().id('tfg:space_pants') - - event.recipes.gtceu.assembler('ad_astra:netherite_space_pants') - .itemInputs( - 'ad_astra:space_pants', - '2x #forge:plates/tungsten_steel', - '2x #forge:plates/ostrum', - '4x tfg:better_space_suit_fabric' - ) - .itemOutputs('ad_astra:netherite_space_pants') - .duration(400) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - event.recipes.gtceu.shaped('ad_astra:space_boots', [ - 'B B', - 'A A' - ], { - A: '#forge:plates/polyphenylene_sulfide', - B: 'tfg:space_suit_fabric' - }).addMaterialInfo().id('tfg:space_boots') - - event.recipes.gtceu.assembler('ad_astra:netherite_space_boots') - .itemInputs( - 'ad_astra:space_boots', - '1x #forge:plates/tungsten_steel', - '1x #forge:plates/ostrum', - '2x tfg:better_space_suit_fabric' - ) - .itemOutputs('ad_astra:netherite_space_boots') - .duration(400) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - - event.recipes.gtceu.shaped('ad_astra:oxygen_gear', [ - 'BAB', - 'ECE', - 'BDB' - ], { - A: '#gtceu:circuits/hv', - B: '#forge:tiny_fluid_pipes/stainless_steel', - C: 'gtceu:hv_electric_pump', - D: 'gtceu:fluid_detector_cover', - E: 'ad_astra:gas_tank' - }).addMaterialInfo().id('tfg:oxygen_gear') - - //#endregion //#region Gas tanks @@ -919,28 +499,6 @@ const registerAdAstraRecipes = (event) => { event.stonecutting('ad_astra:encased_etrium_block', '#tfg:ad_astra_etrium_blocks') event.stonecutting('ad_astra:etrium_plateblock', '#tfg:ad_astra_etrium_blocks') - event.recipes.tfc.loom( - '8x ad_astra:glacian_fur', - '8x tfg:glacian_wool', - 8, - 'ad_astra:block/glacian_fur' - ) - - event.recipes.gtceu.assembler('tfg:assembler/glacian_fur') - .itemInputs('tfg:glacian_wool') - .circuit(10) - .itemOutputs('ad_astra:glacian_fur') - .duration(100) - .EUt(4) - - event.shaped('minecraft:pink_bed', [ - 'AAA', - 'BBB' - ], { - A: 'ad_astra:glacian_fur', - B: '#tfc:lumber' - }).id('tfg:shaped/glacian_bed') - //#endregion //#region Space stations @@ -949,10 +507,10 @@ const registerAdAstraRecipes = (event) => { type: "ad_astra:space_station_recipe", dimension: "ad_astra:earth_orbit", ingredients: [ - { count: 43, ingredient: { item: "gtceu:aluminium_frame" }}, - { count: 24, ingredient: { item: "gtceu:glass_plate" }}, - { count: 4, ingredient: { item: "minecraft:glowstone_dust" }}, - { count: 1, ingredient: { item: "ad_astra:launch_pad" }} + { count: 43, ingredient: { item: "gtceu:aluminium_frame" } }, + { count: 24, ingredient: { item: "gtceu:glass_plate" } }, + { count: 4, ingredient: { item: "minecraft:glowstone_dust" } }, + { count: 1, ingredient: { item: "ad_astra:launch_pad" } } ], structure: "tfg:orbit/space_station" }) @@ -961,10 +519,10 @@ const registerAdAstraRecipes = (event) => { type: "ad_astra:space_station_recipe", dimension: "ad_astra:moon_orbit", ingredients: [ - { count: 43, ingredient: { item: "gtceu:aluminium_frame" }}, - { count: 24, ingredient: { item: "gtceu:glass_plate" }}, - { count: 4, ingredient: { item: "minecraft:glowstone_dust" }}, - { count: 1, ingredient: { item: "ad_astra:launch_pad" }} + { count: 43, ingredient: { item: "gtceu:aluminium_frame" } }, + { count: 24, ingredient: { item: "gtceu:glass_plate" } }, + { count: 4, ingredient: { item: "minecraft:glowstone_dust" } }, + { count: 1, ingredient: { item: "ad_astra:launch_pad" } } ], structure: "tfg:orbit/space_station" }) @@ -973,10 +531,46 @@ const registerAdAstraRecipes = (event) => { type: "ad_astra:space_station_recipe", dimension: "ad_astra:mars_orbit", ingredients: [ - { count: 43, ingredient: { item: "gtceu:aluminium_frame" }}, - { count: 24, ingredient: { item: "gtceu:glass_plate" }}, - { count: 4, ingredient: { item: "minecraft:glowstone_dust" }}, - { count: 1, ingredient: { item: "ad_astra:launch_pad" }} + { count: 43, ingredient: { item: "gtceu:aluminium_frame" } }, + { count: 24, ingredient: { item: "gtceu:glass_plate" } }, + { count: 4, ingredient: { item: "minecraft:glowstone_dust" } }, + { count: 1, ingredient: { item: "ad_astra:launch_pad" } } + ], + structure: "tfg:orbit/space_station" + }) + + event.custom({ + type: "ad_astra:space_station_recipe", + dimension: "ad_astra:venus_orbit", + ingredients: [ + { count: 43, ingredient: { item: "gtceu:aluminium_frame" } }, + { count: 24, ingredient: { item: "gtceu:glass_plate" } }, + { count: 4, ingredient: { item: "minecraft:glowstone_dust" } }, + { count: 1, ingredient: { item: "ad_astra:launch_pad" } } + ], + structure: "tfg:orbit/space_station" + }) + + event.custom({ + type: "ad_astra:space_station_recipe", + dimension: "ad_astra:mercury_orbit", + ingredients: [ + { count: 43, ingredient: { item: "gtceu:aluminium_frame" } }, + { count: 24, ingredient: { item: "gtceu:glass_plate" } }, + { count: 4, ingredient: { item: "minecraft:glowstone_dust" } }, + { count: 1, ingredient: { item: "ad_astra:launch_pad" } } + ], + structure: "tfg:orbit/space_station" + }) + + event.custom({ + type: "ad_astra:space_station_recipe", + dimension: "ad_astra:glacio_orbit", + ingredients: [ + { count: 43, ingredient: { item: "gtceu:aluminium_frame" } }, + { count: 24, ingredient: { item: "gtceu:glass_plate" } }, + { count: 4, ingredient: { item: "minecraft:glowstone_dust" } }, + { count: 1, ingredient: { item: "ad_astra:launch_pad" } } ], structure: "tfg:orbit/space_station" }) @@ -984,45 +578,12 @@ const registerAdAstraRecipes = (event) => { //#endregion //#region Wood - event.remove({ type: 'greate:cutting', input: '#ad_astra:aeronos_caps' }) - event.remove({ type: 'greate:cutting', input: 'ad_astra:aeronos_planks' }) - event.remove({ type: 'greate:cutting', input: '#ad_astra:strophar_caps' }) - event.remove({ type: 'greate:cutting', input: 'ad_astra:glacian_log' }) - event.remove({ type: 'greate:cutting', input: 'ad_astra:stripped_glacian_log' }) - event.remove({ type: 'greate:cutting', input: 'ad_astra:strophar_planks' }) - event.remove({ type: 'greate:cutting', input: 'ad_astra:glacian_planks' }) - - global.AD_ASTRA_WOOD.forEach(wood => { - woodBuilder(event, wood.name, wood.lumber, wood.logs, wood.log, wood.stripped_log, wood.plank, wood.stair, wood.slab, wood.door, wood.trapdoor, wood.fence, wood.fence_gate, wood.support, wood.pressure_plate, wood.button) - }) - - event.shaped('16x ad_astra:aeronos_ladder', [ - 'A A', - 'ABA', - 'A A' - ], { - A: 'tfg:wood/lumber/aeronos', - B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1), - }).id('tfg:shaped/aeronos_ladder') - - event.shaped('16x ad_astra:strophar_ladder', [ - 'A A', - 'ABA', - 'A A' - ], { - A: 'tfg:wood/lumber/strophar', - B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1), - }).id('tfg:shaped/strophar_ladder') - - - generateGreenHouseRecipe(event, '8x tfg:saplings/strophar', 'tfg:semiheavy_ammoniacal_water', 16000, - '64x ad_astra:strophar_stem', 'tfg:green_house/strophar_mushroom', 'ad_astra:mars', 8, - '16x ad_astra:strophar_cap', GTValues.VA[GTValues.MV]) - generateGreenHouseRecipe(event, '8x tfg:saplings/aeronos', 'tfg:semiheavy_ammoniacal_water', 16000, - '64x ad_astra:aeronos_stem', 'tfg:green_house/aeronos_mushroom', 'ad_astra:mars', 8, - '16x ad_astra:aeronos_cap', GTValues.VA[GTValues.MV]) - generateGreenHouseRecipe(event, '8x tfg:saplings/glacian', 'tfg:semiheavy_ammoniacal_water', 16000, - '64x ad_astra:glacian_log', 'tfg:green_house/glacian_tree', 'ad_astra:mars', 8, - '8x species:alphacene_moss_block', GTValues.VA[GTValues.MV]) + event.remove({ type: 'greate:cutting', input: '#ad_astra:aeronos_caps' }) + event.remove({ type: 'greate:cutting', input: 'ad_astra:aeronos_planks' }) + event.remove({ type: 'greate:cutting', input: '#ad_astra:strophar_caps' }) + event.remove({ type: 'greate:cutting', input: 'ad_astra:glacian_log' }) + event.remove({ type: 'greate:cutting', input: 'ad_astra:stripped_glacian_log' }) + event.remove({ type: 'greate:cutting', input: 'ad_astra:strophar_planks' }) + event.remove({ type: 'greate:cutting', input: 'ad_astra:glacian_planks' }) //#endregion } diff --git a/kubejs/server_scripts/ad_astra/tags.js b/kubejs/server_scripts/ad_astra/tags.js index fd670d96c..b6578ed62 100644 --- a/kubejs/server_scripts/ad_astra/tags.js +++ b/kubejs/server_scripts/ad_astra/tags.js @@ -11,7 +11,6 @@ const registerAdAstraFluidTags = (event) => { // Using this to represent 'breathable air' instead of oxygen event.removeAllTagsFrom('ad_astra:oxygen') - event.removeAll('ad_astra:fuel') event.removeAll('ad_astra:efficient_fuel') @@ -52,38 +51,6 @@ const registerAdAstraItemTags = (event) => { event.add('c:hidden_from_recipe_viewers', 'ad_astra:alphacene_mushroom') event.add('c:hidden_from_recipe_viewers', 'ad_astra:strophar_mushroom') - event.add('gtceu:ppe_armor', '#ad_astra:space_suit_items') - event.add('minecraft:trimmable_armor', '#ad_astra:space_suit_items') - - event.add('forge:cobblestone', 'ad_astra:moon_cobblestone') - event.add('forge:cobblestone', 'ad_astra:mars_cobblestone') - event.add('forge:cobblestone', 'ad_astra:venus_cobblestone') - event.add('forge:cobblestone', 'ad_astra:mercury_cobblestone') - event.add('forge:cobblestone', 'ad_astra:glacio_cobblestone') - - // Insulation Tier 1 - event.add('forge:insulation_t1', 'gtceu:borosilicate_glass_dust') - event.add('forge:insulation_t1', 'gtceu:vitrified_asbestos_dust') - - //Insulation Tier 2 - event.add('forge:insulation_t2/sheet', 'tfg:aes_insulation_sheet') - event.add('forge:insulation_t2/roll', 'tfg:aes_insulation_roll') - - //Insulation Tier3 - event.add('forge:insulation_t3/foam', 'tfg:aes_polyurethane') - event.add('forge:insulation_t3/sheet', 'tfg:mli_shielding') - event.add('forge:insulation_t3/cryo', 'tfg:silica_aerogel') - - event.add('forge:aerogels', 'tfg:silica_aerogel') - - //Rocket Engines - event.add('ad_astra:rocket_engine', 'ad_astra:steel_engine') - event.add('ad_astra:rocket_engine', 'ad_astra:desh_engine') - event.add('ad_astra:rocket_engine', 'ad_astra:ostrum_engine') - - //Rocket Tank - event.add('ad_astra:rocket_tank', 'ad_astra:ostrum_tank') - // Deco blocks const DECO_BLOCKS = [ 'iron', 'steel', 'desh', 'calorite', 'ostrum' ]; DECO_BLOCKS.forEach(block => { @@ -100,46 +67,6 @@ const registerAdAstraItemTags = (event) => { event.add('tfg:ad_astra_etrium_blocks', 'ad_astra:encased_etrium_block') event.add('tfg:ad_astra_etrium_blocks', 'ad_astra:etrium_plateblock') event.add('tfg:ad_astra_etrium_blocks', 'ad_astra:etrium_panel') - - event.add('tfc:foods', 'ad_astra:cheese') - event.add('tfc:foods/dairy', 'ad_astra:cheese') - event.add('tfc:foods/usable_in_sandwich', 'ad_astra:cheese') - event.add('tfc:foods/usable_in_jam_sandwich', 'ad_astra:cheese') - event.add('tfc:foods/usable_in_jam_sandwich_2', 'ad_astra:cheese') - event.add('firmalife:foods/cheeses', 'ad_astra:cheese') - - event.add('ad_astra:space_suit_items', 'gtceu:quarktech_helmet') - event.add('ad_astra:space_suit_items', 'gtceu:quarktech_chestplate') - event.add('ad_astra:space_suit_items', 'gtceu:advanced_quarktech_chestplate') - event.add('ad_astra:space_suit_items', 'gtceu:quarktech_leggings') - event.add('ad_astra:space_suit_items', 'gtceu:quarktech_boots') - - event.add('ad_astra:freeze_resistant_armor', 'gtceu:quarktech_helmet') - event.add('ad_astra:freeze_resistant_armor', 'gtceu:quarktech_chestplate') - event.add('ad_astra:freeze_resistant_armor', 'gtceu:advanced_quarktech_chestplate') - event.add('ad_astra:freeze_resistant_armor', 'gtceu:quarktech_leggings') - event.add('ad_astra:freeze_resistant_armor', 'gtceu:quarktech_boots') - - event.add('ad_astra:heat_resistant_armor', 'gtceu:quarktech_helmet') - event.add('ad_astra:heat_resistant_armor', 'gtceu:quarktech_chestplate') - event.add('ad_astra:heat_resistant_armor', 'gtceu:advanced_quarktech_chestplate') - event.add('ad_astra:heat_resistant_armor', 'gtceu:quarktech_leggings') - event.add('ad_astra:heat_resistant_armor', 'gtceu:quarktech_boots') - - event.remove('minecraft:wool', 'ad_astra:glacian_fur') - - event.add('tfc:compost_greens', 'ad_astra:aeronos_cap') - event.add('tfc:compost_greens', 'ad_astra:strophar_cap') - - // these are log tags - event.remove('ad_astra:aeronos_caps', 'ad_astra:aeronos_cap') - event.remove('ad_astra:strophar_caps', 'ad_astra:strophar_cap') - event.add('minecraft:wart_blocks', 'ad_astra:aeronos_cap') - event.add('minecraft:wart_blocks', 'ad_astra:strophar_cap') - - event.add('tfc:makes_tannin', '#ad_astra:glacian_logs') - event.add('tfc:makes_tannin', '#tfc:crimson_logs') - event.add('tfc:makes_tannin', '#tfc:warped_logs') global.AD_ASTRA_WOOD.forEach(wood => { @@ -159,13 +86,6 @@ const registerAdAstraItemTags = (event) => { event.add('tfg:softwood', wood.logs) } }) - - event.add('forge:smooth_stone_slab', 'ad_astra:polished_moon_stone_slab') - event.add('forge:smooth_stone_slab', 'ad_astra:polished_mars_stone_slab') - event.add('forge:smooth_stone_slab', 'ad_astra:polished_venus_stone_slab') - event.add('forge:smooth_stone_slab', 'ad_astra:polished_mercury_stone_slab') - event.add('forge:smooth_stone_slab', 'ad_astra:polished_glacio_stone_slab') - event.add('forge:smooth_stone_slab', 'ad_astra:polished_permafrost_slab') } const registerAdAstraBlockTags = (event) => { @@ -175,273 +95,6 @@ const registerAdAstraBlockTags = (event) => { event.add('c:hidden_from_recipe_viewers', item) }) - // All new stones - global.EXTRATERRESTRIAL_RAW_ROCKS.forEach(rock => { - event.add('forge:stone', rock) - event.add('tfc:breaks_when_isolated', rock) - event.add('tfc:rock/raw', rock) - event.add('minecraft:mineable/pickaxe', rock) - event.add('tfc:can_carve', rock) - // Collapse tags also require a collapse recipe to work. - // Don't add the recipe if you don't want them to actually collapse! - event.add('tfc:can_collapse', rock) - event.add('tfc:can_trigger_collapse', rock) - event.add('tfc:can_start_collapse', rock) - event.add('tfc:powderkeg_breaking_blocks', rock) - event.add('tfc:bloomery_insulation', rock) - event.add('firmalife:oven_insulation', rock) - event.add('tfc:forge_insulation', rock) - }) - - global.EXTRATERRESTRIAL_HARDENED_ROCKS.forEach(rock => { - event.add('minecraft:mineable/pickaxe', rock) - event.add('tfc:can_collapse', rock) - event.add('tfc:can_trigger_collapse', rock) - event.add('tfc:powderkeg_breaking_blocks', rock) - event.add('tfc:bloomery_insulation', rock) - event.add('firmalife:oven_insulation', rock) - event.add('tfc:forge_insulation', rock) - event.add('tfc:can_carve', rock) - }) - - // Moon - event.add('ad_astra:moon_stone_replaceables', 'ad_astra:moon_sand') - event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/hardened_moon_stone') - event.add('ad_astra:moon_stone_replaceables', 'tfc:sand/white') - event.add('ad_astra:moon_stone_replaceables', 'tfc:sand/black') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/diorite') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/gabbro') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/basalt') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/rhyolite') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/andesite') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/dacite') - event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/gravel_moon') - event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/gravel_moon_deepslate') - event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/gravel_glacio') - event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/hardened_moon_deepslate') - event.add('ad_astra:moon_stone_replaceables', 'ad_astra:glacio_stone') - event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/hardened_glacio_stone') - event.add('ad_astra:moon_stone_replaceables', 'ad_astra:glacio_cobblestone') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/basalt') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/basalt') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/gabbro') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/gabbro') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/diorite') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/diorite') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/rhyolite') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/rhyolite') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/andesite') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/andesite') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/dacite') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/dacite') - - // Mars - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/dacite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/dacite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/dacite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/basalt') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/basalt') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/basalt') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/gabbro') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/gabbro') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/gabbro') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/diorite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/diorite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/diorite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/rhyolite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/rhyolite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/rhyolite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/andesite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/andesite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/andesite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/chert') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/chert') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/chert') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/conglomerate') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/conglomerate') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/conglomerate') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/claystone') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/claystone') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/claystone') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/limestone') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/limestone') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/limestone') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/dolomite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/dolomite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/dolomite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/shale') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/shale') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/shale') - event.add('ad_astra:mars_stone_replaceables', 'ad_astra:mars_stone') - event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/hardened_mars_stone') - event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/gravel_mars') - event.add('ad_astra:mars_stone_replaceables', 'minecraft:red_sandstone') - event.add('ad_astra:mars_stone_replaceables', 'ad_astra:venus_stone') - event.add('ad_astra:mars_stone_replaceables', 'ad_astra:venus_sandstone') - event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/hardened_venus_stone') - event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/gravel_venus') - event.add('ad_astra:mars_stone_replaceables', 'gtceu:red_granite') - event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/hardened_red_granite') - event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/gravel_red_granite') - event.add('ad_astra:mars_stone_replaceables', 'create:ochrum') - event.add('tfg:mars_soil', 'minecraft:red_sand') - event.add('tfg:mars_soil', 'ad_astra:mars_sand') - event.add('tfg:mars_soil', 'ad_astra:venus_sand') - event.add('tfg:mars_soil', 'tfg:rock/gravel_venus') - event.add('tfg:mars_soil', 'tfg:rock/gravel_mars') - event.add('tfg:mars_soil', 'tfc:rock/gravel/dacite') - event.add('tfg:mars_soil', 'tfc:rock/gravel/basalt') - event.add('tfg:mars_soil', 'tfc:rock/gravel/gabbro') - event.add('tfg:mars_soil', 'tfc:rock/gravel/diorite') - event.add('tfg:mars_soil', 'tfc:rock/gravel/rhyolite') - event.add('tfg:mars_soil', 'tfc:rock/gravel/andesite') - event.add('tfg:mars_soil', 'tfc:rock/gravel/conglomerate') - event.add('tfg:mars_soil', 'tfc:rock/gravel/claystone') - event.add('tfg:mars_soil', 'tfc:rock/gravel/limestone') - event.add('tfg:mars_soil', 'tfc:rock/gravel/dolomite') - event.add('tfg:mars_soil', 'tfc:rock/gravel/shale') - event.add('tfg:mars_soil', 'tfc:sand/black') - event.add('tfg:mars_soil', 'tfc:sand/red') - event.add('tfg:mars_soil', 'tfc:sand/pink') - event.add('tfg:mars_soil', 'tfg:grass/mars_dirt') - event.add('tfg:mars_soil', 'tfg:grass/mars_clay_dirt') - event.add('tfg:mars_soil', 'tfg:grass/amber_mycelium') - event.add('tfg:mars_soil', 'tfg:grass/rusticus_mycelium') - event.add('tfg:mars_soil', 'tfg:grass/sangnum_mycelium') - event.add('tfg:mars_soil', 'tfg:grass/amber_clay_mycelium') - event.add('tfg:mars_soil', 'tfg:grass/rusticus_clay_mycelium') - event.add('tfg:mars_soil', 'tfg:grass/sangnum_clay_mycelium') - event.add('tfg:mars_soil', 'tfg:grass/amber_kaolin_mycelium') - event.add('tfg:mars_soil', 'tfg:grass/rusticus_kaolin_mycelium') - event.add('tfg:mars_soil', 'tfg:grass/sangnum_kaolin_mycelium') - event.add('ad_astra:mars_stone_replaceables', '#tfg:mars_soil') - event.add('minecraft:animals_spawnable_on', '#tfg:mars_soil') - event.add('minecraft:animals_spawnable_on', '#tfg:mars_plants') - event.add('minecraft:valid_spawn', '#minecraft:animals_spawnable_on') - - // Venus - event.add('ad_astra:venus_stone_replaceables', 'ad_astra:venus_stone') - event.add('ad_astra:venus_stone_replaceables', 'tfg:rock/hardened_venus_stone') - event.add('ad_astra:venus_stone_replaceables', 'gtceu:red_granite') - event.add('ad_astra:venus_stone_replaceables', 'tfg:rock/hardened_red_granite') - event.add('ad_astra:venus_stone_replaceables', 'ad_astra:moon_deepslate') - event.add('ad_astra:venus_stone_replaceables', 'tfg:rock/hardened_moon_deepslate') - event.add('ad_astra:venus_stone_replaceables', 'minecraft:deepslate') - event.add('ad_astra:venus_stone_replaceables', 'tfg:rock/hardened_deepslate') - event.add('ad_astra:venus_stone_replaceables', 'minecraft:dripstone_block') - event.add('ad_astra:venus_stone_replaceables', 'tfg:rock/hardened_dripstone') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/granite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/granite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/diorite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/diorite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/gabbro') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/gabbro') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/basalt') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/basalt') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/rhyolite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/andesite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/dacite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/dacite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/slate') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/slate') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/schist') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/schist') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/gneiss') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/gneiss') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/phyllite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/phyllite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/quartzite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/quartzite') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/blue') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/blue') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/green') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/green') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/brown') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/brown') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/orange') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/orange') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/white') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/white') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/yellow') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/yellow') - event.add('ad_astra:venus_stone_replaceables', 'tfg:geyser_slurry') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sulfur_fumes') - event.add('ad_astra:venus_stone_replaceables', 'minecraft:lava') - event.add('ad_astra:venus_stone_replaceables', 'create:scoria') - event.add('ad_astra:venus_stone_replaceables', 'create:scorchia') - event.add('ad_astra:venus_stone_replaceables', 'minecraft:tuff') - - event.add('tfc:can_carve', '#ad_astra:moon_stone_replaceables') - event.add('tfc:can_carve', '#ad_astra:mars_stone_replaceables') - event.add('tfc:can_carve', '#ad_astra:venus_stone_replaceables') - - event.add('minecraft:rabbits_spawnable_on', '#ad_astra:moon_stone_replaceables') - event.add('species:limpet_spawnable_on', '#ad_astra:moon_stone_replaceables') - - event.add('tfc:can_landslide', 'ad_astra:moon_sand') - event.add('tfc:can_landslide', 'ad_astra:mars_sand') - event.add('tfc:can_landslide', 'ad_astra:venus_sand') - event.add('tfc:can_landslide', 'minecraft:red_sand') - - event.add('tfc:can_landslide', 'ad_astra:moon_cobblestone') - event.add('tfc:can_landslide', 'ad_astra:mars_cobblestone') - event.add('tfc:can_landslide', 'ad_astra:venus_cobblestone') - event.add('tfc:can_landslide', 'ad_astra:mercury_cobblestone') - event.add('tfc:can_landslide', 'ad_astra:glacio_cobblestone') - event.add('tfc:can_landslide', 'gtceu:red_granite_cobblestone') - - event.add('forge:cobblestone', 'ad_astra:moon_cobblestone') - event.add('forge:cobblestone', 'ad_astra:mars_cobblestone') - event.add('forge:cobblestone', 'ad_astra:venus_cobblestone') - event.add('forge:cobblestone', 'ad_astra:mercury_cobblestone') - event.add('forge:cobblestone', 'ad_astra:glacio_cobblestone') - - event.add('tfc:can_landslide', 'ad_astra:moon_cobblestone_slab') - event.add('tfc:can_landslide', 'ad_astra:mars_cobblestone_slab') - event.add('tfc:can_landslide', 'ad_astra:venus_cobblestone_slab') - event.add('tfc:can_landslide', 'ad_astra:mercury_cobblestone_slab') - event.add('tfc:can_landslide', 'ad_astra:glacio_cobblestone_slab') - - event.add('tfc:can_landslide', 'ad_astra:moon_cobblestone_stairs') - event.add('tfc:can_landslide', 'ad_astra:mars_cobblestone_stairs') - event.add('tfc:can_landslide', 'ad_astra:venus_cobblestone_stairs') - event.add('tfc:can_landslide', 'ad_astra:mercury_cobblestone_stairs') - event.add('tfc:can_landslide', 'ad_astra:glacio_cobblestone_stairs') - - event.add('tfg:rock_stairs', 'ad_astra:moon_stone_stairs') - event.add('tfg:rock_stairs', 'ad_astra:mars_stone_stairs') - event.add('tfg:rock_stairs', 'ad_astra:venus_stone_stairs') - event.add('tfg:rock_stairs', 'ad_astra:mercury_stone_stairs') - event.add('tfg:rock_stairs', 'ad_astra:glacio_stone_stairs') - - event.add('tfg:rock_slabs', 'ad_astra:moon_stone_slab') - event.add('tfg:rock_slabs', 'ad_astra:mars_stone_slab') - event.add('tfg:rock_slabs', 'ad_astra:venus_stone_slab') - event.add('tfg:rock_slabs', 'ad_astra:mercury_stone_slab') - event.add('tfg:rock_slabs', 'ad_astra:glacio_stone_slab') - - event.add('ad_astra:destroyed_in_space', '#tfc:wild_fruits') - event.add('ad_astra:destroyed_in_space', '#minecraft:saplings') - - event.remove('ad_astra:strophar_caps', 'ad_astra:strophar_cap') - event.remove('ad_astra:aeronos_caps', 'ad_astra:aeronos_cap') - - event.add('tfg:heightmap_ignore', 'ad_astra:strophar_cap') - event.add('tfg:heightmap_ignore', 'ad_astra:strophar_stem') - event.add('tfg:heightmap_ignore', 'ad_astra:aeronos_cap') - event.add('tfg:heightmap_ignore', 'ad_astra:aeronos_stem') - event.add('tfg:heightmap_ignore', 'minecraft:nether_wart_block') - event.add('tfg:heightmap_ignore', 'minecraft:warped_wart_block') - event.add('tfg:heightmap_ignore', 'species:alphacene_mushroom_block') - event.add('tfg:heightmap_ignore', 'species:alphacene_mushroom_growth') - event.add('tfg:heightmap_ignore', 'tfg:glacian_leaves') - event.add('tfg:heightmap_ignore', 'betterend:glacian_hymenophore') - event.add('tfg:heightmap_ignore', 'species:alphacene_moss_block') - event.add('tfg:heightmap_ignore', 'minecraft:ice') - - event.add('tfc:can_be_snow_piled', 'ad_astra:aeronos_mushroom') - event.add('tfc:can_be_snow_piled', 'ad_astra:strophar_mushroom') - global.AD_ASTRA_WOOD.forEach(wood => { if (wood.log) { @@ -457,301 +110,5 @@ const registerAdAstraBlockTags = (event) => { } const registerAdAstraBiomeTags = (event) => { - event.removeAll('ad_astra:has_structure/oil_well') - - global.MOON_BIOMES.forEach(biome => { - event.add('tfg:moon_biomes', biome) - event.add('tfg:has_structure/meteors', biome) - event.add('tfg:has_structure/cheese_ores', biome) - event.add('tfg:has_structure/moonbase', biome) - event.add('tfg:has_structure/moon_rabbit_houses', biome) - event.add('species:limpet_spawns', biome) - }) - - global.MARS_BIOMES.forEach(biome => { - event.add('tfg:mars_biomes', biome) - }) - - global.VENUS_BIOMES.forEach(biome => { - event.add('tfg:venus_biomes', biome); - event.add('ad_astra:has_acid_rain', biome); - }) - - event.add('sandworm_mod:can_spawn_sandworms', 'tfg:mars/martian_dunes') - event.add('sandworm_mod:can_spawn_sandworms', 'tfg:mars/martian_deep_desert') - - event.add('tfg:has_dark_sand_particles', 'tfg:mars/martian_dunes') - event.add('tfg:has_dark_sand_particles', 'tfg:mars/martian_deep_desert') - event.add('tfg:has_dark_sand_particles', 'tfg:mars/martian_mountains') - event.add('tfg:has_medium_sand_particles', 'tfg:mars/amber_plains') - event.add('tfg:has_medium_sand_particles', 'tfg:mars/amber_hills') - event.add('tfg:has_medium_sand_particles', 'tfg:mars/rusticus_plains') - event.add('tfg:has_medium_sand_particles', 'tfg:mars/rusticus_hills') - event.add('tfg:has_medium_sand_particles', 'tfg:mars/sangnum_plains') - event.add('tfg:has_medium_sand_particles', 'tfg:mars/sangnum_hills') - event.add('tfg:has_light_sand_particles', 'tfg:mars/martian_dune_edge') - event.add('tfg:has_light_sand_particles', 'tfg:mars/amber_edge') - event.add('tfg:has_light_sand_particles', 'tfg:mars/rusticus_edge') - event.add('tfg:has_light_sand_particles', 'tfg:mars/sangnum_edge') - event.add('tfg:has_light_sand_particles', 'tfg:mars/martian_river') - - event.add('tfg:has_mild_dust_storms', 'tfg:mars/martian_mountains') - event.add('tfg:has_mild_dust_storms', 'tfg:mars/martian_river') - event.add('tfg:has_mild_dust_storms', 'tfg:mars/amber_hills') - event.add('tfg:has_mild_dust_storms', 'tfg:mars/rusticus_hills') - event.add('tfg:has_mild_dust_storms', 'tfg:mars/sangnum_hills') - event.add('tfg:has_moderate_dust_storms', 'tfg:mars/amber_plains') - event.add('tfg:has_moderate_dust_storms', 'tfg:mars/amber_edge') - event.add('tfg:has_moderate_dust_storms', 'tfg:mars/rusticus_plains') - event.add('tfg:has_moderate_dust_storms', 'tfg:mars/rusticus_edge') - event.add('tfg:has_moderate_dust_storms', 'tfg:mars/sangnum_plains') - event.add('tfg:has_moderate_dust_storms', 'tfg:mars/sangnum_edge') - event.add('tfg:has_severe_dust_storms', 'tfg:mars/martian_dunes') - event.add('tfg:has_severe_dust_storms', 'tfg:mars/martian_deep_desert') -} - -const registerAdAstraEntityTypeTags = (event) => { - - const COLD_ENTITIES = [ - // moon - 'tfc:rat', - 'tfg:moon_rabbit', - 'minecraft:enderman', - 'minecraft:shulker', - 'minecraft:shulker_bullet', - 'minecraft:skeleton', - 'minecraft:stray', - 'species:limpet', - 'species:birt', - 'endermanoverhaul:windswept_hills_enderman', - 'endermanoverhaul:soulsand_valley_enderman', - 'endermanoverhaul:spirit', - 'endermanoverhaul:end_enderman', - 'endermanoverhaul:end_islands_enderman', - // mars - 'tfg:sniffer', - 'tfg:glacian_ram', - 'tfg:wraptor', - 'species:goober', - 'species:cruncher', - 'species:springling', - 'species:quake', - 'species:stackatick', - 'endermanoverhaul:crimson_forest_enderman', - 'endermanoverhaul:warped_forest_enderman', - 'endermanoverhaul:badlands_enderman', - 'endermanoverhaul:cave_enderman', - 'wan_ancient_beasts:walker', - 'wan_ancient_beasts:eater', - 'wan_ancient_beasts:crusher', - 'wan_ancient_beasts:soarer', - 'wan_ancient_beasts:glider', - 'wan_ancient_beasts:toxlacanth', - 'wan_ancient_beasts:surfer', - 'tfg:surfer', - // europa - 'endermanoverhaul:coral_enderman', - 'endermanoverhaul:snowy_enderman', - 'endermanoverhaul:ice_spikes_enderman', - 'species:deepfish', - 'species:leaf_hanger' - ] - - const HOT_ENTITIES = [ - // venus - 'minecraft:enderman', - "endermanoverhaul:desert_enderman", - "endermanoverhaul:savanna_enderman", - "endermanoverhaul:nether_wastes_enderman", - "ad_astra:sulfur_creeper", - 'species:cliff_hanger', - ] - - COLD_ENTITIES.forEach(entity => { - event.add('ad_astra:can_survive_extreme_cold', entity) - event.add('ad_astra:lives_without_oxygen', entity) - }) - - HOT_ENTITIES.forEach(entity => { - event.add('ad_astra:can_survive_extreme_heat', entity) - event.add('ad_astra:lives_without_oxygen', entity) - }) - - event.add('ad_astra:can_survive_in_space', 'railways:conductor') - event.add('ad_astra:can_survive_in_space', 'endermanoverhaul:pet_enderman') - event.add('ad_astra:can_survive_in_space', 'endermanoverhaul:axolotl_pet_enderman') - event.add('ad_astra:can_survive_in_space', 'endermanoverhaul:hammerhead_pet_enderman') - - event.add('tfc:deals_crushing_damage', 'minecraft:enderman') - event.add('tfc:deals_crushing_damage', 'minecraft:stray') - event.add('tfc:deals_crushing_damage', 'endermanoverhaul:windswept_hills_enderman') - event.add('tfc:deals_crushing_damage', 'endermanoverhaul:soulsand_valley_enderman') - event.add('tfc:deals_piercing_damage', 'endermanoverhaul:end_enderman') - event.add('tfc:deals_crushing_damage', 'endermanoverhaul:end_islands_enderman') - event.add('tfc:deals_crushing_damage', 'ad_astra:star_crawler') - - event.add('tfg:ignores_gravity', 'minecraft:shulker_bullet') - event.add('tfg:ignores_gravity', 'endermanoverhaul:spirit') - event.add('tfg:ignores_gravity', 'species:birt') - event.add('tfg:ignores_gravity', 'ad_astra:star_crawler') - - // this guy has a bounce animation that looks silly in low grav - event.add('tfg:ignores_gravity', 'wan_ancient_beasts:crusher') - // this huge guy also looks silly in low grav - event.add('tfg:ignores_gravity', 'wan_ancient_beasts:walker') - event.add('tfg:ignores_gravity', 'wan_ancient_beasts:eater') - // flying mobs - event.add('tfg:ignores_gravity', 'wan_ancient_beasts:soarer') - event.add('tfg:ignores_gravity', 'wan_ancient_beasts:glider') - // swimming mobs - event.add('tfg:ignores_gravity', 'tfg:surfer') - event.add('tfg:ignores_gravity', 'wan_ancient_beasts:toxlacanth') - event.add('tfg:ignores_gravity', 'endermanoverhaul:coral_enderman') -} - -const registerAdAstraPlacedFeatures = (event) => { - - //#region Moon - event.add('tfg:moon_craters', 'tfg:moon/crater/extra_large') - event.add('tfg:moon_craters', 'tfg:moon/crater/large') - event.add('tfg:moon_craters', 'tfg:moon/crater/medium') - event.add('tfg:moon_craters', 'tfg:moon/crater/small') - - global.MOON_STONE_TYPES.forEach(stone => { - // only in the sparse ones - event.add('tfg:moon_large_rock_features', `tfg:moon/surface/delta/${stone}`) - // in all moon biomes - event.add('tfg:moon_small_rock_features', `tfg:moon/surface/pile/${stone}`) - event.add('tfg:moon_small_rock_features', `tfg:moon/surface/loose/${stone}`) - }) - - event.add('tfg:moon_small_rock_features', 'tfg:moon/surface/pile_moon_sand') - event.add('tfg:moon_small_rock_features', 'tfg:moon/surface/pile_white_sand') - event.add('tfg:moon_small_rock_features', 'tfg:moon/surface/pile_black_sand') - //#endregion - - //#region Mars - // Underground decoration - event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/loose_rocks') - event.add('tfg:mars_underground_decoration', 'tfc:cave_spike') - event.add('tfg:mars_underground_decoration', 'tfc:cave_column') - event.add('tfg:mars_underground_decoration', 'tfc:large_cave_spike') - event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/noise_cave_stalagmite') - event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/noise_cave_stalagtite') - - event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/calcite') - event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/mega_calcite') - - event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/ice_cave') - event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/icicle') - event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/icicle_extra') - event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/ochrum_blob') - - event.add('tfg:mars_underground_decoration', "tfg:earth/geode/amethyst") - event.add('tfg:mars_underground_decoration', "tfg:earth/geode/barite") - event.add('tfg:mars_underground_decoration', "tfg:earth/geode/calcite") - event.add('tfg:mars_underground_decoration', "tfg:earth/geode/gypsum") - event.add('tfg:mars_underground_decoration', "tfg:earth/geode/opal") - event.add('tfg:mars_underground_decoration', "tfg:earth/geode/pyrite") - event.add('tfg:mars_underground_decoration', "tfg:earth/geode/quartzite") - - // Vegetation - event.add("tfg:mars_global_small_plants", "tfg:mars/tree/lucernia") - event.add("tfg:mars_global_small_plants", "tfg:mars/tree/lucernia_common") - event.add("tfg:mars_global_small_plants", "tfg:mars/tree/cave_bush") - event.add("tfg:mars_global_small_plants", "tfg:mars/tree/cave_bush_common") - event.add("tfg:mars_global_small_plants", "tfg:mars/surface/charnia") - event.add("tfg:mars_global_small_plants", "tfg:mars/surface/flamaea") - event.add("tfg:mars_global_small_plants", "tfg:mars/surface/lacugrove") - - event.add("tfg:mars_amber_vegetal_decoration", "#tfg:mars_global_small_plants") - event.add("tfg:mars_rusticus_vegetal_decoration", "#tfg:mars_global_small_plants") - event.add("tfg:mars_sangnum_vegetal_decoration", "#tfg:mars_global_small_plants") - - - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/crop/amber_root") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/crop/blossom_berry") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/crop/bolux_mushroom") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/crop/cave_pumpkin") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/crop/chorus_mushroom") - - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/lanceleaf") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/lanceleaf_small") - - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/bulb_moss") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/aurant_polypore") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/filalux_wings") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/filalux_wings_top") - - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/amber_grass") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/flammalix") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/lutebus") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/orango") - - - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/amber_root") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/blossom_berry") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/bolux_mushroom") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/chorus_mushroom") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/shadow_berry") - - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/lucernia_outer_leaves") - - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/bulb_moss") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/aurant_polypore") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/purple_polypore") - - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/aeridium") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/flammalix") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/lamellarium") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/lutebus") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/orango") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/ruscus") - - - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/crop/blossom_berry") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/crop/bolux_mushroom") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/crop/cave_pumpkin") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/crop/chorus_mushroom") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/crop/shadow_berry") - - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/small_amaranita_mushroom") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/large_amaranita_mushroom") - - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/purple_polypore") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/filalux_wings") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/filalux_wings_top") - - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/cave_grass") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/clawfern") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/globulagus") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/lamellarium") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/ruscus") - - // Top layer - event.add("tfg:mars_top_layer_modification", "tfg:glow_lichen") - event.add("tfg:mars_top_layer_modification", "tfc:surface_loose_rocks") - event.add("tfg:mars_top_layer_modification", "tfg:mars/terrain/mars_poles") - - //#endregion - - //#region Venus - - // Underground decoration - event.add("tfg:venus_underground_decoration", "tfg:glow_lichen") - event.add('tfg:venus_underground_decoration', 'tfg:venus/underground/loose_rocks') - event.add('tfg:venus_underground_decoration', 'tfc:cave_spike') - event.add('tfg:venus_underground_decoration', 'tfc:cave_column') - event.add('tfg:venus_underground_decoration', 'tfc:large_cave_spike') - event.add('tfg:venus_underground_decoration', 'tfg:venus/underground/noise_cave_stalagmite') - event.add('tfg:venus_underground_decoration', 'tfg:venus/underground/noise_cave_stalagtite') - - event.add("tfg:venus_top_layer_modification", "tfc:surface_loose_rocks") - //#endregion - - //#region Glacio - event.add("tfg:glacio_top_layer_modification", "tfg:glow_lichen") - event.add("tfg:glacio_top_layer_modification", "tfc:surface_loose_rocks") - //#endregion } diff --git a/kubejs/server_scripts/ae2/recipes.js b/kubejs/server_scripts/ae2/recipes.js index 117d1425b..0bc16b7c4 100644 --- a/kubejs/server_scripts/ae2/recipes.js +++ b/kubejs/server_scripts/ae2/recipes.js @@ -2306,16 +2306,6 @@ const registerAE2Recipes = (event) => { .category(GTRecipeCategories.MACERATOR_RECYCLING) .EUt(GTValues.VA[GTValues.ULV]) - // Cryogenized Fluix - - event.recipes.gtceu.vacuum_freezer('gtceu:cryo_fluix') - .inputFluids(Fluid.of('gtceu:helium_3', 1000)) - .inputFluids(Fluid.of('tfg:fluix', 144)) - .outputFluids(Fluid.of('tfg:cryogenized_fluix', 576)) - .duration(30 * 20) - .EUt(GTValues.VA[GTValues.MV]) - .dimension('ad_astra:moon') - // Certus deco blocks event.stonecutting('ae2:quartz_block', '#tfg:certus_quartz_blocks') diff --git a/kubejs/server_scripts/afc/recipes.js b/kubejs/server_scripts/afc/recipes.js index 4bc552380..305f4ff47 100644 --- a/kubejs/server_scripts/afc/recipes.js +++ b/kubejs/server_scripts/afc/recipes.js @@ -16,10 +16,10 @@ const registerAFCRecipes = (event) => { event.remove({ id: "afc:pot/rubber" }) event.remove({ id: "afc:tree_tapping/hevea_latex" }) event.remove({ id: "afc:tree_tapping/rubber_fig_latex" }) - event.remove({ id: "afc:crafting/1_birch_sugar"}) - event.remove({ id: "afc:crafting/1_maple_sugar"}) - event.remove({ id: "afc:crafting/0_birch_sugar_bucket"}) - event.remove({ id: "afc:crafting/0_maple_sugar_bucket"}) + event.remove({ id: "afc:crafting/1_birch_sugar" }) + event.remove({ id: "afc:crafting/1_maple_sugar" }) + event.remove({ id: "afc:crafting/0_birch_sugar_bucket" }) + event.remove({ id: "afc:crafting/0_maple_sugar_bucket" }) // #endregion @@ -48,7 +48,7 @@ const registerAFCRecipes = (event) => { generateCutterRecipe(event, `afc:wood/planks/${wood}_slab`, `2x afc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_slab`) - + // ? -> ะ”ะตั€ะตะฒัะฝะฝะฐั ะฝะฐะถะธะผะฝะฐั ะฟะปะฐัั‚ะธะฝะฐ event.shaped(`afc:wood/planks/${wood}_pressure_plate`, [ ' B ', @@ -72,10 +72,10 @@ const registerAFCRecipes = (event) => { event.remove({ id: `afc:crafting/wood/${wood}_button` }) generateCutterRecipe(event, `afc:wood/planks/${wood}_pressure_plate`, `6x afc:wood/planks/${wood}_button`, 50, 2, `${wood}_button`) - + //Stomping Barrel - event.remove({ id: `afc:crafting/wood/${wood}_stomping_barrel`}) - + event.remove({ id: `afc:crafting/wood/${wood}_stomping_barrel` }) + event.shaped(`afc:wood/stomping_barrel/${wood}`, [ 'ABA', 'AAA', @@ -83,9 +83,9 @@ const registerAFCRecipes = (event) => { ], { A: `afc:wood/lumber/${wood}`, B: 'tfc:glue' - + }).id(`afc:crafting/wood/${wood}_stomping_barrel`) - + }) // #endregion @@ -108,86 +108,6 @@ const registerAFCRecipes = (event) => { .resultFluid(Fluid.of('gtceu:copper', 144)) .id('tfg:heating/tree_tap') - //Custom rubber and hevea tappings - event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/rubber_fig")) - .resultFluid(Fluid.of("tfg:latex", 2)) - .minTemp(4) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/latex/rubber_fig") - event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_rubber_fig")) - .resultFluid(Fluid.of("tfg:latex", 2)) - .minTemp(4) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/latex/ancient_rubber_fig") - - event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/hevea")) - .resultFluid(Fluid.of("tfg:latex", 3)) - .minTemp(8) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/latex/hevea") - event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_hevea")) - .resultFluid(Fluid.of("tfg:latex", 3)) - .minTemp(8) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/latex/ancient_hevea") - - event.recipes.afc.tree_tapping(TFC.blockIngredient("tfc:wood/log/kapok")) - .resultFluid(Fluid.of("tfg:latex", 4)) - .minTemp(12) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/kapok_latex") - event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_kapok")) - .resultFluid(Fluid.of("tfg:latex", 4)) - .minTemp(12) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/ancient_kapok_latex") - - - // Pine/etc resin - event.recipes.afc.tree_tapping(TFC.blockIngredient("tfc:wood/log/aspen")) - .resultFluid(Fluid.of('tfg:conifer_pitch', 2)) - .minTemp(-10) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/aspen_resin") - event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_aspen")) - .resultFluid(Fluid.of('tfg:conifer_pitch', 2)) - .minTemp(-10) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/ancient_aspen_resin") - - event.recipes.afc.tree_tapping(TFC.blockIngredient("tfc:wood/log/spruce")) - .resultFluid(Fluid.of('tfg:conifer_pitch', 4)) - .minTemp(-15) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/spruce_resin") - event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_spruce")) - .resultFluid(Fluid.of('tfg:conifer_pitch', 4)) - .minTemp(-15) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/ancient_spruce_resin") - - event.recipes.afc.tree_tapping(TFC.blockIngredient("tfc:wood/log/white_cedar")) - .resultFluid(Fluid.of('tfg:conifer_pitch', 3)) - .minTemp(-8) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/white_cedar_resin") - event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_white_cedar")) - .resultFluid(Fluid.of('tfg:conifer_pitch', 3)) - .minTemp(-8) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/ancient_white_cedar_resin") - - event.recipes.afc.tree_tapping(TFC.blockIngredient('tfc:wood/log/douglas_fir')) - .resultFluid(Fluid.of('tfg:conifer_pitch', 2)) - .minTemp(-8) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/douglas_fir_resin") - event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_douglas_fir")) - .resultFluid(Fluid.of('tfg:conifer_pitch', 2)) - .minTemp(-8) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/ancient_douglas_fir_resin") - //Syrups event.remove({ id: "afc:tree_tapping/maple_syrup" }) event.remove({ id: "afc:tree_tapping/birch_syrup" }) @@ -198,87 +118,17 @@ const registerAFCRecipes = (event) => { .maxTemp(5) .requiresNaturalLog(true) .id("tfg:tree_tapping/maple_log") - - event.recipes.afc.tree_tapping(TFC.blockIngredient('tfc:wood/log/birch')) + + event.recipes.afc.tree_tapping(TFC.blockIngredient('tfc:wood/log/birch')) .resultFluid(Fluid.of('afc:birch_sap', 5)) .minTemp(-15) .maxTemp(5) .requiresNaturalLog(true) .id("tfg:tree_tapping/birch_log") - // Mars stuff - - event.recipes.afc.tree_tapping(TFC.blockIngredient('beneath:wood/log/crimson')) - .resultFluid(Fluid.of('tfg:crimsene', 1)) - .minTemp(-110) - .maxTemp(-15) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/crimson_log") - - event.recipes.afc.tree_tapping(TFC.blockIngredient('beneath:wood/wood/crimson')) - .resultFluid(Fluid.of('tfg:crimsene', 1)) - .minTemp(-110) - .maxTemp(-15) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/crimson_wood") - - event.recipes.afc.tree_tapping(TFC.blockIngredient('beneath:wood/log/warped')) - .resultFluid(Fluid.of('tfg:warpane', 1)) - .minTemp(-110) - .maxTemp(-15) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/warped_log") - - event.recipes.afc.tree_tapping(TFC.blockIngredient('beneath:wood/wood/warped')) - .resultFluid(Fluid.of('tfg:warpane', 1)) - .minTemp(-110) - .maxTemp(-15) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/warped_wood") - //#region Extractor Recipe - // Latex - - event.recipes.gtceu.extractor('latex_from_log') - .itemInputs('#tfg:latex_logs') - .outputFluids(Fluid.of('tfg:latex', 250)) - .duration(600) - .EUt(20) - - event.recipes.gtceu.extractor('latex_from_sapling') - .itemInputs('#tfg:rubber_saplings') - .outputFluids(Fluid.of('tfg:latex', 100)) - .duration(750) - .EUt(20) - - event.recipes.gtceu.extractor('latex_from_leaves') - .itemInputs('#tfg:rubber_leaves') - .outputFluids(Fluid.of('tfg:latex', 50)) - .duration(750) - .EUt(20) - - // Conifer Pitch - - event.recipes.gtceu.extractor('conifer_from_log') - .itemInputs('#tfg:rosin_logs') - .outputFluids(Fluid.of('tfg:conifer_pitch', 250)) - .duration(600) - .EUt(20) - - event.recipes.gtceu.extractor('conifer_from_sapling') - .itemInputs('#tfg:rosin_saplings') - .outputFluids(Fluid.of('tfg:conifer_pitch', 100)) - .duration(750) - .EUt(20) - - event.recipes.gtceu.extractor('conifer_from_leaves') - .itemInputs('#tfg:rosin_leaves') - .outputFluids(Fluid.of('tfg:conifer_pitch', 50)) - .duration(750) - .EUt(20) - - // Maple Sirup + // Maple Syrup event.recipes.gtceu.extractor('maple_from_log') .itemInputs('#tfc:maple_logs') @@ -298,7 +148,7 @@ const registerAFCRecipes = (event) => { .duration(750) .EUt(20) - // Birch Sirup + // Birch Syrup event.recipes.gtceu.extractor('birch_from_log') .itemInputs('#tfc:birch_logs') @@ -321,25 +171,6 @@ const registerAFCRecipes = (event) => { //#endregion // ะ˜ะท ะฑั€ะตะฒะฝะฐ ะบะฐะฟะพะบะฐ / Logs Centrifuge - event.recipes.gtceu.centrifuge('rubber_log_separation') - .itemInputs('#tfg:latex_logs') - .chancedOutput('gtceu:raw_rubber_dust', 5000, 0) - .chancedOutput('gtceu:plant_ball', 3750, 0) - .chancedOutput('gtceu:sticky_resin', 2500, 0) - .chancedOutput('gtceu:wood_dust', 2500, 0) - .outputFluids(Fluid.of('gtceu:methane', 60)) - .duration(20*20) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.centrifuge('conifer_log_separation') - .itemInputs('#tfg:rosin_logs') - .chancedOutput('tfg:conifer_rosin', 7500, 0) - .chancedOutput('gtceu:plant_ball', 3750, 0) - .chancedOutput('gtceu:sticky_resin', 2500, 0) - .chancedOutput('gtceu:wood_dust', 2500, 0) - .outputFluids(Fluid.of('gtceu:methane', 60)) - .duration(20*20) - .EUt(GTValues.VA[GTValues.MV]) event.recipes.gtceu.centrifuge('maple_syrup_log_separation') .itemInputs('#tfc:maple_logs') @@ -347,7 +178,7 @@ const registerAFCRecipes = (event) => { .chancedOutput('gtceu:plant_ball', 3750, 0) .chancedOutput('gtceu:hardwood_dust', 2500, 0) .outputFluids(Fluid.of('gtceu:methane', 60), Fluid.of('afc:maple_syrup', 100)) - .duration(20*20) + .duration(20 * 20) .EUt(GTValues.VA[GTValues.MV]) event.recipes.gtceu.centrifuge('birch_syrup_log_separation') @@ -356,52 +187,52 @@ const registerAFCRecipes = (event) => { .chancedOutput('gtceu:plant_ball', 3750, 0) .chancedOutput('gtceu:hardwood_dust', 2500, 0) .outputFluids(Fluid.of('gtceu:methane', 60), Fluid.of('afc:birch_syrup', 100)) - .duration(20*20) + .duration(20 * 20) .EUt(GTValues.VA[GTValues.MV]) //#endregion - //region gt sap processing + //#region GT sap processing event.recipes.gtceu.fluid_heater('maple_sap_condense') .inputFluids(Fluid.of('afc:maple_sap', 1000)) .outputFluids(Fluid.of('afc:maple_syrup', 100)) - .duration(20*25) + .duration(20 * 25) .EUt(GTValues.VA[GTValues.ULV]) event.recipes.gtceu.fluid_heater('birch_sap_condense') .inputFluids(Fluid.of('afc:birch_sap', 1000)) .outputFluids(Fluid.of('afc:birch_syrup', 100)) - .duration(20*35) + .duration(20 * 35) .EUt(GTValues.VA[GTValues.ULV]) - - - //endregion + event.recipes.gtceu.fluid_solidifier('maple_syrup') .inputFluids(Fluid.of('afc:maple_syrup', 100)) .itemOutputs('afc:maple_sugar') - .duration(20*12) + .duration(20 * 12) .EUt(GTValues.VHA[GTValues.ULV]) event.recipes.gtceu.fluid_solidifier('birch_syrup') .inputFluids(Fluid.of('afc:birch_syrup', 100)) .itemOutputs('afc:birch_sugar') - .duration(20*12) + .duration(20 * 12) .EUt(GTValues.VHA[GTValues.ULV]) + //#endregion + // Syrup into sugar event.recipes.tfc.barrel_sealed(24000) - .inputFluid(Fluid.of('afc:maple_syrup', 100)) - .outputItem('afc:maple_sugar') - .id('tfg:barrel/maple_syrup_to_sugar') + .inputFluid(Fluid.of('afc:maple_syrup', 100)) + .outputItem('afc:maple_sugar') + .id('tfg:barrel/maple_syrup_to_sugar') event.recipes.tfc.barrel_sealed(24000) - .inputFluid(Fluid.of('afc:birch_syrup', 100)) - .outputItem('afc:birch_sugar') - .id('tfg:barrel/birch_syrup_to_sugar') + .inputFluid(Fluid.of('afc:birch_syrup', 100)) + .outputItem('afc:birch_sugar') + .id('tfg:barrel/birch_syrup_to_sugar') // Stripped logs diff --git a/kubejs/server_scripts/beneath/recipes.js b/kubejs/server_scripts/beneath/recipes.js index 9c56912e3..11edd6094 100644 --- a/kubejs/server_scripts/beneath/recipes.js +++ b/kubejs/server_scripts/beneath/recipes.js @@ -67,12 +67,6 @@ const registerBeneathRecipes = (event) => { event.recipes.tfc.landslide('beneath:soul_clay', 'beneath:soul_clay') - generateGreenHouseRecipe(event, '8x tfg:saplings/warped', 'tfg:semiheavy_ammoniacal_water', 16000, - '64x beneath:wood/log/warped', 'tfg:green_house/warped_fungus', 'ad_astra:mars', 8, - '32x minecraft:warped_wart_block', GTValues.VA[GTValues.MV]) - generateGreenHouseRecipe(event, '8x tfg:saplings/crimson', 'tfg:semiheavy_ammoniacal_water', 16000, - '64x beneath:wood/log/crimson', 'tfg:green_house/crimson_fungus', 'ad_astra:mars', 8, - '32x minecraft:nether_wart_block', GTValues.VA[GTValues.MV]) Ingredient.of('#beneath:mushrooms').stacks.forEach(element => { const itemId = element.id; @@ -82,26 +76,6 @@ const registerBeneathRecipes = (event) => { recipeId, 'minecraft:the_nether', 8, element.withCount(4), GTValues.VH[GTValues.LV]); }); - // don't pass in the items like doors, trapdoors etc because beneath already has good recipes for those - woodBuilder(event, 'crimson', 'beneath:wood/lumber/crimson', '#tfc:crimson_logs', 'beneath:wood/log/crimson', - 'beneath:wood/stripped_log/crimson', 'beneath:wood/planks/crimson', null, - 'beneath:wood/planks/crimson_slab', null, null, null, null, null, 'beneath:wood/planks/crimson_pressure_plate', - 'beneath:wood/planks/crimson_button') - - event.recipes.gtceu.lathe(`tfg:cutter/crimson_stripped_wood_from_wood`) - .itemInputs('beneath:wood/wood/crimson') - .itemOutputs('beneath:wood/stripped_wood/crimson') - .duration(50) - .EUt(GTValues.VA[GTValues.ULV]) - - event.custom({ - type: 'vintageimprovements:polishing', - ingredients: [{ item: 'beneath:wood/wood/crimson' }], - results: [{ item: 'beneath:wood/stripped_wood/crimson' }], - speed_limits: 0, - processingTime: 50 - }).id(`tfg:vi/lathe/stripping_crimson_wood`) - event.shaped('beneath:wood/sewing_table/crimson', [ ' AB', 'CCC', @@ -113,26 +87,6 @@ const registerBeneathRecipes = (event) => { D: 'beneath:wood/log/crimson' }).id('tfg:shaped/crimson_sewing_table') - - woodBuilder(event, 'warped', 'beneath:wood/lumber/warped', '#tfc:warped_logs', 'beneath:wood/log/warped', - 'beneath:wood/stripped_log/warped', 'beneath:wood/planks/warped', null, - 'beneath:wood/planks/warped_slab', null, null, null, null, null, 'beneath:wood/planks/warped_pressure_plate', - 'beneath:wood/planks/warped_button') - - event.recipes.gtceu.lathe(`tfg:cutter/warped_stripped_wood_from_wood`) - .itemInputs('beneath:wood/wood/warped') - .itemOutputs('beneath:wood/stripped_wood/warped') - .duration(50) - .EUt(GTValues.VA[GTValues.ULV]) - - event.custom({ - type: 'vintageimprovements:polishing', - ingredients: [{ item: 'beneath:wood/wood/warped' }], - results: [{ item: 'beneath:wood/stripped_wood/warped' }], - speed_limits: 0, - processingTime: 50 - }).id(`tfg:vi/lathe/stripping_warped_wood`) - event.shaped('beneath:wood/sewing_table/warped', [ ' AB', 'CCC', diff --git a/kubejs/server_scripts/betterend/recipes.js b/kubejs/server_scripts/betterend/recipes.js deleted file mode 100644 index 7bdb90325..000000000 --- a/kubejs/server_scripts/betterend/recipes.js +++ /dev/null @@ -1,59 +0,0 @@ -// priority: 0 -"use strict"; - -function registerBetterEndRecipes(event) { - - Ingredient.of('#tfg:moon_plants').stacks.forEach(element => { - const itemId = element.id; - const recipeId = `betterend:greenhouse_${itemId.replace(':', '_')}`; - - event.recipes.gtceu.greenhouse(recipeId) - .notConsumable(element.id) - .itemOutputs(`8x ${element.id}`) - .chancedOutput(element.id, 750, 0) - .chancedOutput(element.id, 500, 0) - .duration(36000) // 30 mins - .circuit(1) - .EUt(GTValues.VA[GTValues.MV]) - .dimension('ad_astra:moon') - - event.recipes.gtceu.greenhouse(`${recipeId}_helium`) - .notConsumable(element.id) - .inputFluids(Fluid.of('gtceu:helium_3', 500)) - .itemOutputs(`8x ${element.id}`) - .chancedOutput(element.id, 4000, 0) - .chancedOutput(element.id, 3000, 0) - .duration(12000) // 30 mins - .circuit(2) - .EUt(GTValues.VA[GTValues.MV]) - .dimension('ad_astra:moon') - }); - - Ingredient.of('#tfg:mars_plants').stacks.forEach(element => { - const itemId = element.id; - const recipeId = `greenhouse_${itemId.replace(':', '_')}`; - - generateGreenHouseRecipe(event, itemId, 'tfg:semiheavy_ammoniacal_water', 8000, `8x ${itemId}`, - recipeId, 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]); - }); - - generateGreenHouseRecipe(event, '8x betterend:amber_root_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, - '24x betterend:amber_root_product', 'amber_root', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) - - generateGreenHouseRecipe(event, '8x betterend:blossom_berry_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, - '24x betterend:blossom_berry_product', 'blossom_berry', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) - - generateGreenHouseRecipe(event, '8x betterend:bolux_mushroom_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, - '24x betterend:bolux_mushroom_product', 'bolux_mushroom', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) - - generateGreenHouseRecipe(event, '8x betterend:cave_pumpkin_plant_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, - '24x betterend:cave_pumpkin', 'cave_pumpkin', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) - - generateGreenHouseRecipe(event, '8x betterend:chorus_mushroom_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, - '24x betterend:chorus_mushroom_product', 'chorus_mushroom', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) - - generateGreenHouseRecipe(event, '8x betterend:shadow_berry_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, - '24x betterend:shadow_berry_product', 'shadow_berry', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) - - event.recipes.firmalife.oven('betterend:cave_pumpkin_pie_raw', 400, 60 * 20, 'betterend:cave_pumpkin_pie') -} \ No newline at end of file diff --git a/kubejs/server_scripts/betterend/tags.js b/kubejs/server_scripts/betterend/tags.js deleted file mode 100644 index a7cc94002..000000000 --- a/kubejs/server_scripts/betterend/tags.js +++ /dev/null @@ -1,48 +0,0 @@ -// priority: 0 -"use strict"; - -function registerBetterEndItemTags(event) { - - event.add('forge:seeds', 'betterend:amber_root_seeds') - event.add('forge:seeds', 'betterend:blossom_berry_seeds') - event.add('forge:seeds', 'betterend:bolux_mushroom_seeds') - event.add('forge:seeds', 'betterend:cave_pumpkin_seeds') - event.add('forge:seeds', 'betterend:shadow_berry_seeds') - - event.add('tfc:foods', 'betterend:amber_root_product') - event.add('tfc:foods/grains', 'betterend:amber_root_product') - - event.add('tfc:foods', 'betterend:blossom_berry_product') - event.add('tfc:foods/fruits', 'betterend:blossom_berry_product') - - event.add('tfc:foods', 'betterend:bolux_mushroom_product') - event.add('tfc:foods/vegetables', 'betterend:bolux_mushroom_product') - event.add('forge:mushrooms', 'betterend:bolux_mushroom_product') - event.add('tfc:foods', 'betterend:bolux_mushroom_cooked') - event.add('tfc:foods/vegetables', 'betterend:bolux_mushroom_cooked') - event.add('forge:mushrooms', 'betterend:bolux_mushroom_cooked') - - event.add('tfc:foods', 'betterend:cave_pumpkin') - event.add('tfc:foods', 'betterend:cave_pumpkin_chunks') - event.add('tfc:foods/fruits', 'betterend:cave_pumpkin_chunks') - event.add('tfc:foods', 'betterend:cave_pumpkin_pie_dough') - event.add('tfc:foods', 'betterend:cave_pumpkin_pie_raw') - event.add('tfc:foods', 'betterend:cave_pumpkin_pie') - event.add('firmalife:foods/washable', 'betterend:cave_pumpkin_pie_raw') - event.add('firmalife:foods/washable', 'betterend:cave_pumpkin_pie') - - event.add('tfc:foods', 'betterend:chorus_mushroom_product') - event.add('tfc:foods/vegetables', 'betterend:chorus_mushroom_product') - event.add('forge:mushrooms', 'betterend:chorus_mushroom_product') - event.add('tfc:foods', 'betterend:chorus_mushroom_cooked') - event.add('tfc:foods/vegetables', 'betterend:chorus_mushroom_cooked') - event.add('forge:mushrooms', 'betterend:chorus_mushroom_cooked') - - event.add('tfc:foods', 'betterend:shadow_berry_product') - event.add('tfc:foods/fruits', 'betterend:shadow_berry_product') - event.add('tfc:foods', 'betterend:shadow_berry_cooked') - event.add('tfc:foods/fruits', 'betterend:shadow_berry_cooked') - - event.add('forge:mushrooms', 'betterend:flammalix') - event.add('forge:mushrooms', 'betterend:small_amaranita_mushroom') -} \ No newline at end of file diff --git a/kubejs/server_scripts/create/recipes.js b/kubejs/server_scripts/create/recipes.js index 2cf69d560..bf6d47c34 100644 --- a/kubejs/server_scripts/create/recipes.js +++ b/kubejs/server_scripts/create/recipes.js @@ -985,70 +985,6 @@ const registerCreateRecipes = (event) => { .duration(200) .EUt(20) - // ะญะปะตะบั‚ั€ะพะฝะฝะฐั ั‚ั€ัƒะฑะบะฐ - event.shaped('1x create:electron_tube', [ - 'FAG', - 'BCB', - 'DED' - ], { - A: 'gtceu:glass_tube', - B: '#forge:bolts/steel', - C: 'gtceu:wood_plate', - D: 'gtceu:red_alloy_single_wire', - E: '#forge:plates/wrought_iron', - F: '#forge:tools/screwdrivers', - G: '#forge:tools/wire_cutters' - }).id('tfg:create/shaped/electron_tube') - - event.recipes.createSequencedAssembly([ - '2x create:electron_tube', - ], 'gtceu:wood_plate', [ - event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', '#forge:plates/wrought_iron']), - event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:red_alloy_single_wire']), - event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:red_alloy_single_wire']), - event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:glass_tube']), - ]).transitionalItem('tfg:unfinished_electron_tube').loops(1).id('tfg:create/sequenced_assembly/electron_tube') - - event.recipes.gtceu.assembler('create:electron_tube') - .itemInputs('#forge:plates/wrought_iron', 'gtceu:glass_tube', '2x gtceu:red_alloy_single_wire') - .itemOutputs('2x create:electron_tube') - .duration(50) - .EUt(7) - .circuit(14) - - event.shaped('4x create:electron_tube', [ - 'FAG', - 'DCD' - ], { - A: 'gtceu:glass_tube', - C: 'gtceu:plastic_circuit_board', - D: 'gtceu:red_alloy_single_wire', - F: '#forge:tools/screwdrivers', - G: '#forge:tools/wire_cutters' - }).id('tfg:create/shaped/electron_tube2') - - event.recipes.gtceu.assembler('create:electron_tube2') - .itemInputs('gtceu:plastic_circuit_board', 'gtceu:glass_tube', '2x gtceu:red_alloy_single_wire') - .itemOutputs('4x create:electron_tube') - .duration(50) - .EUt(7) - - event.shaped('4x create:electron_tube', [ - ' A ', - ' B ', - ' C ' - ], { - A: '#forge:tools/screwdrivers', - B: 'gtceu:nand_chip', - C: 'gtceu:plastic_circuit_board' - }).id('tfg:create/shaped/electron_tube3') - - event.recipes.gtceu.assembler('create:electron_tube3') - .itemInputs('gtceu:plastic_circuit_board', 'gtceu:nand_chip') - .itemOutputs('4x create:electron_tube') - .duration(50) - .EUt(7) - // ะขัŽะฑะธะบ ั ะบะปะตะตะผ event.shaped('create:super_glue', [ 'BA', diff --git a/kubejs/server_scripts/create/tags.js b/kubejs/server_scripts/create/tags.js index ee7c1e2b2..0001ac2ad 100644 --- a/kubejs/server_scripts/create/tags.js +++ b/kubejs/server_scripts/create/tags.js @@ -33,11 +33,6 @@ const registerCreateItemTags = (event) => { if (dye !== 'white') event.add('tfg:colored_seats', `create:${dye}_seat`) }) - event.add('minecraft:trimmable_armor', 'create:copper_diving_helmet') - event.add('minecraft:trimmable_armor', 'create:copper_diving_boots') - - event.add('minecraft:trimmable_armor', 'create:netherite_diving_helmet') - event.add('minecraft:trimmable_armor', 'create:netherite_diving_boots') event.add('create:blaze_burner_fuel/regular', "gtceu:poor_raw_coal") event.add('create:blaze_burner_fuel/regular', "gtceu:coal_dust") @@ -148,10 +143,26 @@ const registerCreateBlockTags = (event) => { event.add('create:non_movable', 'gtceu:titanium_crate') event.add('create:non_movable', 'gtceu:tungsten_steel_crate') event.add('create:non_movable', '#create:toolboxes') + event.add('create:non_movable', 'gtceu:ulv_super_chest') event.add('create:non_movable', 'gtceu:lv_super_chest') event.add('create:non_movable', 'gtceu:mv_super_chest') event.add('create:non_movable', 'gtceu:hv_super_chest') event.add('create:non_movable', 'gtceu:ev_super_chest') + event.add('create:non_movable', 'gtceu:iv_quantum_chest') + event.add('create:non_movable', 'gtceu:luv_quantum_chest') + event.add('create:non_movable', 'gtceu:zpm_quantum_chest') + event.add('create:non_movable', 'gtceu:uv_quantum_chest') + event.add('create:non_movable', 'gtceu:uhv_quantum_chest') + event.add('create:non_movable', 'gtceu:ulv_super_tank') + event.add('create:non_movable', 'gtceu:lv_super_tank') + event.add('create:non_movable', 'gtceu:mv_super_tank') + event.add('create:non_movable', 'gtceu:hv_super_tank') + event.add('create:non_movable', 'gtceu:ev_super_tank') + event.add('create:non_movable', 'gtceu:iv_quantum_tank') + event.add('create:non_movable', 'gtceu:luv_quantum_tank') + event.add('create:non_movable', 'gtceu:zpm_quantum_tank') + event.add('create:non_movable', 'gtceu:uv_quantum_tank') + event.add('create:non_movable', 'gtceu:uhv_quantum_tank') event.add('create:non_movable', 'tfg:spice') event.add('create:non_movable', 'tfg:geyser_source') event.add('create:non_movable', 'tfg:geyser_source_small') diff --git a/kubejs/server_scripts/firmalife/tags.js b/kubejs/server_scripts/firmalife/tags.js index e33989e16..e8746e3c1 100644 --- a/kubejs/server_scripts/firmalife/tags.js +++ b/kubejs/server_scripts/firmalife/tags.js @@ -14,10 +14,6 @@ const registerFirmaLifeItemTags = (event) => { event.add('c:hidden_from_recipe_viewers', item) }) - event.add('minecraft:trimmable_armor', '#firmalife:beekeeper_armor') - - event.add('tfc:foods/usable_in_salad', 'firmalife:food/pickled_egg') - // ะฃะดะฐะปะตะฝะธะต ั‚ะตะณะพะฒ ัƒ ั€ัƒะด event.removeAllTagsFrom("/tfc:ore/[^*]+/[^*]+/") } @@ -86,6 +82,7 @@ const registerFirmaLifeFluidTags = (event) => { event.add('firmalife:mixable', 'afc:maple_syrup') event.add('firmalife:mixable', 'afc:birch_syrup') + event.add('firmalife:oils', 'tfc:tallow') event.add('firmalife:oils', 'gtceu:seed_oil') event.add('firmalife:oils', 'gtceu:fish_oil') event.add('firmalife:oils', 'tfg:triglyceride_oil') diff --git a/kubejs/server_scripts/gregtech/data.js b/kubejs/server_scripts/gregtech/data.js index 4245617f8..3197bcd1b 100644 --- a/kubejs/server_scripts/gregtech/data.js +++ b/kubejs/server_scripts/gregtech/data.js @@ -134,103 +134,8 @@ const registerGTCEUMetals = (event) => { function registerGTCEUBedrockFluidVeins(event) { - event.add('tfg:moon_helium_3', vein => { - vein.dimensions('ad_astra:moon') - vein.fluid(() => Fluid.of('gtceu:helium_3').fluid) - vein.weight(100) - vein.minimumYield(200) - vein.maximumYield(400) - vein.depletionAmount(1) - vein.depletionChance(1) - vein.depletedYield(200) - }) - - event.add('tfg:moon_helium', vein => { - vein.dimensions('ad_astra:moon') - vein.fluid(() => Fluid.of('gtceu:helium').fluid) - vein.weight(10) - vein.minimumYield(20) - vein.maximumYield(50) - vein.depletionAmount(1) - vein.depletionChance(1) - vein.depletedYield(50) - }) - - event.add('tfg:moon_argon', vein => { - vein.dimensions('ad_astra:moon') - vein.fluid(() => Fluid.of('gtceu:argon').fluid) - vein.weight(5) - vein.minimumYield(10) - vein.maximumYield(30) - vein.depletionAmount(1) - vein.depletionChance(1) - vein.depletedYield(10) - }) - - // Mars Fluid Vein - Credit to Monifactory - - const Registries = Java.loadClass("net.minecraft.core.registries.Registries") - const ResourceKey = Java.loadClass("net.minecraft.resources.ResourceKey") - const martianAmberHillsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/amber_hills") - const martianAmberPlainsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/amber_plains") - const martianMountainsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/martian_mountains") - const martianRusticusHillsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/rusticus_hills") - const martianRusticusPlainsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/rusticus_plains") - const martianSangnumHillsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/sangnum_hills") - const martianSangnumPlainsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/sangnum_plains") - - event.add('tfg:semiheavy_ammoniacal_water', vein => { - vein.dimensions('ad_astra:mars') - vein.fluid(() => Fluid.of('tfg:semiheavy_ammoniacal_water').fluid) - vein.weight(100) - vein.minimumYield(200) - vein.maximumYield(400) - vein.depletionAmount(1) - vein.depletionChance(20) - vein.depletedYield(15) - }) - - event.add('tfg:liquid_carbon_dioxide', vein => { - vein.dimensions('ad_astra:mars') - vein.fluid(() => Fluid.of('gtceu:liquid_carbon_dioxide').fluid) - vein.weight(30) - vein.minimumYield(20) - vein.maximumYield(350) - vein.depletionAmount(1) - vein.depletionChance(20) - vein.depletedYield(5) - }) - - event.add('tfg:liquid_ice', vein => { - vein.dimensions('ad_astra:mars') - vein.fluid(() => Fluid.of('gtceu:ice').fluid) - vein.weight(20) - vein.minimumYield(20) - vein.maximumYield(200) - vein.depletionAmount(1) - vein.depletionChance(20) - vein.depletedYield(5) - }) - - // Heavy Ammonical Water in Specific Biome Credit to Monifactory from https://github.com/ThePansmith/Monifactory/blob/main/kubejs/server_scripts/worldgen/fluidVeins.js - - event.add('tfg:heavy_ammoniacal_water', vein => { - vein.dimensions('ad_astra:mars') - vein.fluid(() => Fluid.of('tfg:heavy_ammoniacal_water').fluid) - vein.biomes(20, martianAmberHillsResourceKey) - vein.biomes(20, martianAmberPlainsResourceKey) - vein.biomes(20, martianRusticusHillsResourceKey) - vein.biomes(20, martianRusticusPlainsResourceKey) - vein.biomes(20, martianSangnumHillsResourceKey) - vein.biomes(20, martianSangnumPlainsResourceKey) - // This one is exclusively far inland, so it's ok to buff it a bit in case the player has bad luck - vein.biomes(50, martianMountainsResourceKey) - vein.weight(0) - vein.minimumYield(100) - vein.maximumYield(650) - vein.depletionAmount(1) - vein.depletionChance(20) - vein.depletedYield(5) - }) + registerTFGMoonBedrockFluidVeins(event) + registerTFGMarsBedrockFluidVeins(event) + registerTFGVenusBedrockFluidVeins(event) } diff --git a/kubejs/server_scripts/gregtech/recipes.js b/kubejs/server_scripts/gregtech/recipes.js index b40802279..508996a71 100644 --- a/kubejs/server_scripts/gregtech/recipes.js +++ b/kubejs/server_scripts/gregtech/recipes.js @@ -9,634 +9,15 @@ const registerGTCEURecipes = (event) => { registerGTCEUMetalRecipes(event) registerGTCEURecyclingRecipes(event) - registerGTCEuTFCMetalsRecipes(event) registerGTCEuMachineRecipes(event) removeGTCEURecipes(event) - //#region ะ’ั‹ั…ะพะด: ะฃะดะพะฑั€ะตะฝะธะต - // ะ’ ะพะฑั‹ั‡ะฝะพะผ ะผะธะบัะตั€ะต - event.recipes.gtceu.mixer('tfg:fertilizer') - .itemInputs( - '#tfc:dirt', - '2x #tfg:wood_dusts', - '4x #forge:sand' - ) - .circuit(1) - .inputFluids("#tfg:clean_water 1000") - .itemOutputs('4x gtceu:fertilizer') - .duration(300) - .EUt(30) - - event.recipes.gtceu.mixer('tfg:fertilizer_2') - .itemInputs('tfc:compost') - .inputFluids('#tfg:clean_water 1000') - .itemOutputs('4x gtceu:fertilizer') - .duration(300) - .EUt(30) - - //#endregion - - //#region ะ’ั‹ั…ะพะด: ะšะฒะฐั€ั†ะตะฒั‹ะน ะฟะตัะพะบ - - event.shaped('gtceu:quartz_sand_dust', [ - 'A', - 'B' - ], { - A: '#forge:sand', - B: '#forge:tools/mortars' - }).id('gtceu:shaped/quartz_sand') - - event.recipes.gtceu.macerator('quartz_sand_from_sand') - .itemInputs('#forge:sand') - .itemOutputs('gtceu:quartz_sand_dust') - .duration(30) - .EUt(2) - - //#endregion - - event.recipes.gtceu.macerator('flux') - .itemInputs('#tfc:fluxstone') - .itemOutputs('2x tfc:powder/flux') - .duration(30) - .EUt(2) - - event.recipes.gtceu.forge_hammer('flux') - .itemInputs('#tfc:fluxstone') - .itemOutputs('2x tfc:powder/flux') - .duration(30) - .EUt(2) - - event.recipes.greate.pressing('2x tfc:powder/flux', '#tfc:fluxstone') - .recipeTier(0) - .id('greate:pressing/flux') - - //#region ะ’ั‹ั…ะพะด: ะ”ะธะพะบัะธะด ัะธะปะธะบะพะฝะฐ - - event.recipes.gtceu.electrolyzer('sand_electrolysis') - .itemInputs('8x #forge:sand') - .itemOutputs('gtceu:silicon_dioxide_dust') - .duration(500) - .EUt(25) - - //#endregion - - event.recipes.gtceu.centrifuge('tfg:beets_to_sugar') - .itemInputs('5x tfc:food/beet') - .inputFluids(Fluid.of('tfc:salt_water', 1000)) - .itemOutputs('3x minecraft:sugar', '3x gtceu:plant_ball', '1x #forge:dusts/salt') - .outputFluids(Fluid.of('minecraft:water', 1000)) - .duration(800) - .EUt(7) - .circuit(3) - - event.smelting('4x tfc:powder/wood_ash', '1x #minecraft:logs_that_burn').id('tfg:wood_ash') - - //#region ะ’ั‹ั…ะพะด: ะกะพะปะตะฝะฐั ะฟั‹ะปัŒ + ะ’ะพะดะฐ - - // ะ”ะตะบั€ะฐั„ั‚ ะฒ ั†ะตะฝั‚ั€ะธั„ัƒะณะต - event.recipes.gtceu.centrifuge('centrifuging_tfc_salt_water') - .inputFluids(Fluid.of('tfc:salt_water', 1000)) - .itemOutputs('1x gtceu:salt_dust') - .outputFluids(Fluid.of('minecraft:water', 1000)) - .duration(51) - .EUt(30) - .circuit(1) - - // ะ”ะตะบั€ะฐั„ั‚ ะฒ ัะปะตะบั‚ั€ะพะปะฐะนะทะตั€ะต - event.recipes.gtceu.electrolyzer('electrolyze_tfc_salt_water') - .inputFluids(Fluid.of('tfc:salt_water', 1000)) - .itemOutputs('1x gtceu:sodium_hydroxide_dust', '2x gtceu:small_sodium_hydroxide_dust') - .outputFluids(Fluid.of('gtceu:chlorine', 500), Fluid.of('gtceu:hydrogen', 500)) - .duration(720) - .EUt(30) - - // Add circuit to gregtech salt water mixer recipe - event.remove({ id: 'gtceu:mixer/salt_water' }) - generateMixerRecipe(event, ['2x #forge:dusts/salt'], Fluid.of('minecraft:water', 1000), [], 1, Fluid.of('gtceu:salt_water', 1000), 40, 7, 64, 'tfg:gtceu/salt_water') - - //#endregion - - //#region ะ’ั‹ั…ะพะด: ะŸั€ะพะฟะธั‚ะฐะฝะฝั‹ะต ะดะพัะบะธ - - event.remove({ id: 'gtceu:shaped/treated_wood_planks' }) - - event.recipes.tfc.barrel_sealed(4000) - .outputItem('gtceu:treated_wood_planks') - .inputs('#minecraft:planks', TFC.fluidStackIngredient('#forge:creosote', 100)) - .id('tfg:barrel/treated_wood_planks') - - event.recipes.tfc.barrel_sealed(2000) - .outputItem('gtceu:treated_wood_dust') - .inputs('#tfg:wood_dusts', TFC.fluidStackIngredient('#forge:creosote', 50)) - .id('tfg:barrel/treated_wood_dust') - - //#endregion - - //#region ะ’ั‹ั…ะพะด: ะšะฐะฟะปั ั€ะตะทะธะฝั‹ - - // ะ˜ะท ะปะฐั‚ะตะบัะฐ - event.recipes.tfc.pot('tfc:powder/wood_ash', Fluid.of('tfg:latex', 1000), 1200, 300) - .itemOutput('gtceu:sticky_resin') - .id('tfg:pot/sticky_resin_from_latex') - - event.recipes.tfc.pot('tfc:powder/wood_ash', Fluid.of('tfg:conifer_pitch', 1000), 1200, 300) - .itemOutput('gtceu:sticky_resin') - .id('tfg:pot/sticky_resin_from_conifer_pitch') - - event.recipes.gtceu.fluid_solidifier('tfg:fluid_solidifier/latex_to_sticky_resin') - .duration(12 * 20) - .EUt(30) - .itemInputs('tfc:powder/wood_ash') - .itemOutputs('gtceu:sticky_resin') - .inputFluids(Fluid.of('tfg:latex', 1000)) - - event.recipes.gtceu.fluid_solidifier('tfg:fluid_solidifier/pitch_to_sticky_resin') - .duration(12 * 20) - .EUt(30) - .itemInputs('tfc:powder/wood_ash') - .itemOutputs('gtceu:sticky_resin') - .inputFluids(Fluid.of('tfg:conifer_pitch', 1000)) - //#endregion - - //#region ะ’ั‹ั…ะพะด: ะ ะฐัั‚ะธั‚ะตะปัŒะฝั‹ะน ัˆะฐั€ะธะบ - // 8x ะ’ะฐะฝะธะปัŒะฝะฐั ั€ะฐัั‚ะธั‚ะตะปัŒะฝะพัั‚ัŒ -> Plant Ball (Compressor) - - event.recipes.gtceu.compressor('plant_ball_from_tfc_seeds') - .itemInputs('4x #tfc:seeds') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - let food = Ingredient.of('#tfc:foods') - .subtract('minecraft:brown_mushroom') - .subtract('minecraft:red_mushroom') - .withCount(8) - - event.recipes.gtceu.compressor('plant_ball_from_tfc_food') - .itemInputs(food) - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - event.recipes.gtceu.compressor('plant_ball_from_tfc_plants') - .itemInputs('4x #tfc:plants') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - event.recipes.gtceu.compressor('plant_ball_from_moon_plants') - .itemInputs('4x #tfg:moon_plants') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - event.recipes.gtceu.compressor('plant_ball_from_mars_plants') - .itemInputs('4x #tfg:mars_plants') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - event.recipes.gtceu.compressor('plant_ball_from_tfc_corals') - .itemInputs('4x #tfc:corals') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - event.recipes.gtceu.compressor('plant_ball_from_misc_plants') - .itemInputs('4x #createaddition:plants') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - event.recipes.gtceu.compressor('plant_ball_from_wart_blocks') - .itemInputs('4x #minecraft:wart_blocks') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - //#endregion - - //#region ะ’ั‹ั…ะพะด: ะ‘ะธะพะผะฐััะฐ - - // ะ’ะฐะฝะธะปัŒะฝะฐั ั€ะฐัั‚ะธั‚ะตะปัŒะฝะพัั‚ัŒ -> ะ‘ะธะพะผะฐััะฐ (Brewery) - - event.recipes.gtceu.brewery('biomass_from_tfc_seeds') - .itemInputs('#tfc:seeds') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_tfc_food') - .itemInputs('#tfc:foods') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_tfc_plants') - .itemInputs('#tfc:plants') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_moon_plants') - .itemInputs('#tfg:moon_plants') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_mars_plants') - .itemInputs('#tfg:mars_plants') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_tfc_corals') - .itemInputs('#tfc:corals') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_spider_eyes') - .itemInputs('minecraft:spider_eye') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_leaves') - .itemInputs('#minecraft:leaves') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 20)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_fallen_leaves') - .itemInputs('#tfc:fallen_leaves') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 20)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_minecraft_plants') - .itemInputs('#createaddition:plants') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_wart_blocks') - .itemInputs('#minecraft:wart_blocks') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 50)) - .duration(100) - .EUt(3) - - //#endregion - - //#region ะ’ั‹ั…ะพะด: ะ ั‹ะฑัŒะต ะผะฐัะปะพ - - event.recipes.gtceu.extractor(`tfg:fish_oil`) - .itemInputs('#minecraft:fishes') - .outputFluids(Fluid.of('gtceu:fish_oil', 200)) - .duration(40) - .EUt(4) - - event.recipes.gtceu.extractor(`tfg:tallow`) - .itemInputs('tfc:blubber') - .outputFluids(Fluid.of('tfc:tallow', 200)) - .duration(40) - .EUt(4) - - // you get tallow from killing things like orcas, so this seems close enough - event.recipes.gtceu.mixer('tallow_to_fish_oil') - .inputFluids('tfc:tallow 100', 'tfc:lye 100') - .outputFluids('gtceu:fish_oil 200') - .duration(100) - .EUt(4) - - //#endregion - - //#region ะ’ั‹ั…ะพะด: ะกะตะผัะฝะฝะพะต ะผะฐัะปะพ - - event.recipes.gtceu.extractor(`tfg:seed_oil`) - .itemInputs('#tfc:seeds') - .outputFluids(Fluid.of('gtceu:seed_oil', 50)) - .duration(32) - .EUt(2) - - //#endregion - - //#region ะ’ั‹ั…ะพะด: ะฆะตะผะตะฝั‚ - - const recipe = event.recipes.gtceu.mixer('concrete_from_marble') - .itemInputs(Ingredient.of('#tfg:stone_dusts').subtract('gtceu:marble_dust').withCount(2), 'gtceu:marble_dust', 'gtceu:gypsum_dust') - .inputFluids("#tfg:clean_water 1000") - .outputFluids('gtceu:concrete 1152') - .duration(40) - .EUt(16) - - generateMixerRecipe(event, ['3x #tfg:stone_dusts', 'gtceu:clay_dust'], - "#tfg:clean_water 500", [], null, 'gtceu:concrete 576', 20, 16, 64, 'concrete_from_clay') - - generateMixerRecipe(event, ['3x #tfg:stone_dusts', 'gtceu:calcite_dust', 'gtceu:gypsum_dust'], - "#tfg:clean_water 1000", [], null, 'gtceu:concrete 1152', 40, 16, 64, 'concrete_from_calcite') - - //GT light/dark concrete recipe fix - - event.remove({ id: 'gtceu:fluid_solidifier/solidify_concrete_block' }) - event.remove({ id: 'gtceu:chemical_bath/light_to_dark_concrete' }) - - event.recipes.gtceu.fluid_solidifier('gtceu:fluid_solidifier/solidify_light_concrete') - .inputFluids(Fluid.of('gtceu:concrete', 144)) - .notConsumable('1x gtceu:block_casting_mold') - .itemOutputs('1x gtceu:light_concrete') - .duration(98) - .EUt(7) - - event.recipes.gtceu.chemical_bath('gtceu:chemical_bath/dark_concrete') - .inputFluids(Fluid.of('tfc:black_dye', 18)) - .itemInputs('1x gtceu:light_concrete') - .itemOutputs('1x gtceu:dark_concrete') - .duration(20) - .EUt(7) - - event.recipes.gtceu.extractor('gtceu:extractor/extract_light_concrete') - .itemInputs('1x gtceu:light_concrete') - .outputFluids(Fluid.of('gtceu:concrete', 144)) - .duration(98) - .EUt(30) - - event.stonecutting('gtceu:light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_bricks') - event.stonecutting('gtceu:chiseled_light_concrete', 'gtceu:light_concrete').id('tfg:stonecutting/chiseled_light_concrete') - event.stonecutting('gtceu:light_concrete_tile', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_tile') - event.stonecutting('gtceu:light_concrete_small_tile', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_small_tile') - event.stonecutting('gtceu:light_concrete_windmill_a', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_windmill_a') - event.stonecutting('gtceu:light_concrete_windmill_b', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_windmill_b') - event.stonecutting('gtceu:small_light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/small_light_concrete_bricks') - event.stonecutting('gtceu:square_light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/square_light_concrete_bricks') - - event.stonecutting('gtceu:dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_bricks') - event.stonecutting('gtceu:chiseled_dark_concrete', 'gtceu:dark_concrete').id('tfg:stonecutting/chiseled_dark_concrete') - event.stonecutting('gtceu:dark_concrete_tile', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_tile') - event.stonecutting('gtceu:dark_concrete_small_tile', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_small_tile') - event.stonecutting('gtceu:dark_concrete_windmill_a', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_windmill_a') - event.stonecutting('gtceu:dark_concrete_windmill_b', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_windmill_b') - event.stonecutting('gtceu:small_dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/small_dark_concrete_bricks') - event.stonecutting('gtceu:square_dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/square_dark_concrete_bricks') - - //#endregion - - //#region GT marble - - event.stonecutting('gtceu:polished_marble', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_polished_marble') - event.stonecutting('gtceu:chiseled_marble', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_chiseled_marble') - event.stonecutting('gtceu:marble_tile', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_tile') - event.stonecutting('gtceu:marble_small_tile', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_small_tile') - event.stonecutting('gtceu:marble_windmill_a', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_windmill_a') - event.stonecutting('gtceu:marble_windmill_b', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_windmill_b') - event.stonecutting('gtceu:small_marble_bricks', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_small_marble_bricks') - event.stonecutting('gtceu:square_marble_bricks', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_square_marble_bricks') - - //#endregion - - //#region ะ’ั‹ั…ะพะด: ะ‘ัƒั€ะธะปัŒะฝะฐั ะถะธะดะบะพัั‚ัŒ + // Drilling fluid from all stone dusts generateMixerRecipe(event, ['2x #tfg:stone_dusts'], ['gtceu:lubricant 20', "#tfg:clean_water 4000"], [], null, Fluid.of('gtceu:drilling_fluid', 5000), 40, 16, 64, 'drilling_fluid') - //#endregion - - //#region ะ’ั‹ั…ะพะด: ะŸั‹ะปัŒ ะผััะฐ - - event.recipes.gtceu.macerator('macerate_meat_to_dust') - .itemInputs('#tfc:foods/meats') - .itemOutputs('gtceu:meat_dust', 'gtceu:tiny_bone_dust') - .duration(100) - .EUt(2) - - //#endregion - - //#region ะ’ั‹ั…ะพะด: ะŸั‹ะปัŒ ะบะฐะบะฐะพ-ะฑะพะฑะพะฒ - - event.recipes.gtceu.macerator('macerate_cocoa') - .itemInputs('firmalife:food/roasted_cocoa_beans') - .itemOutputs('gtceu:cocoa_dust') - .duration(100) - .EUt(2) - - //#endregion - - //#region ะกั‚ะตะบะปะพะดัƒะฒะบะฐ - - // Glass Tube - event.recipes.tfc.glassworking('gtceu:glass_tube', '#tfc:glass_batches_tier_3', ['blow', 'stretch', 'stretch']) - .id('tfg:gtceu/glassworking/glass_tube') - - //#endregion - - // ะŸั‹ะปัŒ ะทะฒะตะทะดั‹ ะฝะตะทะตั€ะฐ - event.recipes.gtceu.chemical_reactor('tfg:gtceu/nether_star_dust') - .itemInputs('2x #forge:dusts/iridium', '#forge:dusts/diamond') - .circuit(10) - .itemOutputs('gtceu:nether_star_dust') - // TODO: change to something else with venus - .inputFluids(Fluid.of('gtceu:neon', 1000)) - .duration(700) - .EUt(2720) - - // Empty Wooden Form - event.shaped('gtceu:empty_wooden_form', [ - ' AA', - 'BAA' - ], { - A: '#minecraft:planks', - B: '#forge:tools/saws' - }).id('gtceu:shaped/plank_to_wooden_shape') - - // ะ”ะตั€ะตะฒัะฝะฝะฐั ัˆะตัั‚ะตั€ะฝั - event.shaped('gtceu:small_wood_gear', [ - 'AB ', - 'BCB', - ' B ' - ], { - A: '#forge:tools/saws', - B: '#forge:rods/wooden', - C: 'tfc:glue' - }).id('gtceu:shaped/small_gear_wood') - - event.shaped('gtceu:wood_gear', [ - 'AB ', - 'BCB', - ' B ' - ], { - A: '#forge:tools/saws', - B: '#minecraft:planks', - C: 'tfc:glue' - }).id('gtceu:shaped/gear_wood') - - // Compressed Coke Clay - event.shaped('gtceu:compressed_coke_clay', [ - 'AAA', - 'BCB', - 'BBB' - ], { - A: 'minecraft:clay_ball', - B: '#minecraft:sand', - C: 'gtceu:brick_wooden_form' - }).replaceIngredient('gtceu:brick_wooden_form', 'gtceu:brick_wooden_form').id('gtceu:shaped/compressed_coke_clay') - - // Coke Oven Brick - event.recipes.tfc.heating('gtceu:compressed_coke_clay', 1399) - .resultItem('gtceu:coke_oven_brick') - .id('tfg:heating/coke_oven_bricks') - - event.recipes.gtceu.alloy_smelter('gtceu:coke_oven_brick') - .itemInputs('3x #minecraft:sand', '2x minecraft:clay_ball') - .itemOutputs('gtceu:coke_oven_brick') - .duration(7.5 * 20) - .EUt(GTValues.VA[GTValues.ULV]) - - // Multi-Smelter - event.shaped('gtceu:multi_smelter', [ - 'AAA', - 'BCB', - 'DBD' - ], { - A: 'gtceu:hp_steam_furnace', - B: '#gtceu:circuits/hv', - C: 'gtceu:heatproof_machine_casing', - D: 'gtceu:copper_single_cable' - }).id('gtceu:shaped/multi_furnace') - - event.shaped('gtceu:multi_smelter', [ - 'AAA', - 'BCB', - 'DBD' - ], { - A: 'gtceu:lv_electric_furnace', - B: '#gtceu:circuits/hv', - C: 'gtceu:heatproof_machine_casing', - D: 'gtceu:copper_single_cable' - }).id('gtceu:shaped/multi_furnace2') - - // Electric Blast Furnace - event.shaped('gtceu:electric_blast_furnace', [ - 'AAA', - 'BCB', - 'DBD' - ], { - A: 'gtceu:hp_steam_furnace', - B: '#gtceu:circuits/lv', - C: 'gtceu:heatproof_machine_casing', - D: 'gtceu:tin_single_cable' - }).id('gtceu:shaped/electric_blast_furnace') - - event.shaped('gtceu:electric_blast_furnace', [ - 'AAA', - 'BCB', - 'DBD' - ], { - A: 'gtceu:lv_electric_furnace', - B: '#gtceu:circuits/lv', - C: 'gtceu:heatproof_machine_casing', - D: 'gtceu:tin_single_cable' - }).id('gtceu:shaped/electric_blast_furnace2') - - // ะšะปะตะน ะธะท ะขะคะš ะบะปะตั / Glue from resin - event.recipes.gtceu.extractor('tfg:glue_from_tfc_glue') - .itemInputs('tfc:glue') - .outputFluids(Fluid.of('gtceu:glue', 50)) - .duration(20 * 10) - .EUt(5) - - event.recipes.gtceu.extractor('tfg:glue_from_sticky_resin') - .itemInputs('gtceu:sticky_resin') - .outputFluids(Fluid.of('gtceu:glue', 100)) - .duration(20 * 10) - .EUt(5) - - event.recipes.gtceu.extractor('tfg:glue_from_conifer_resin') - .itemInputs('tfg:conifer_rosin') - .outputFluids(Fluid.of('gtceu:glue', 50)) - .duration(20 * 10) - .EUt(5) - - event.recipes.gtceu.mixer('tfg:glue_from_bone_meal') - .itemInputs('minecraft:bone_meal') - .inputFluids(Fluid.of('tfc:limewater', 500)) - .outputFluids(Fluid.of('gtceu:glue', 50)) - .duration(100) - .EUt(5) - - // ะ˜ัะฟั€ะฐะฒะปะตะฝะธะต ั€ะตั†ะตะฟั‚ะฐ ะฟั‹ะปะธ ัะตั€ะตะฑั€ะฐ ัั‚ะตั€ะปะธะฝะณะฐ - event.remove({ id: 'gtceu:mixer/sterling_silver' }) - generateMixerRecipe(event, ['#forge:dusts/copper', '4x #forge:dusts/silver'], [], '5x gtceu:sterling_silver_dust', - 1, [], 500, 7, 64, 'gtceu:mixer/sterling_silver') - - // ะ˜ัะฟั€ะฐะฒะปะตะฝะธะต ั€ะตั†ะตะฟั‚ะฐ ะฟั‹ะปะธ ั€ะพะทะพะฒะพะน ะฑั€ะพะฝะทั‹ - event.remove({ id: 'gtceu:mixer/rose_gold' }) - generateMixerRecipe(event, ['#forge:dusts/copper', '4x #forge:dusts/gold'], [], '5x gtceu:rose_gold_dust', - 3, [], 500, 7, 64, 'gtceu:mixer/rose_gold') - - //#region ะ ะตั†ะตะฟั‚ ULV ะผะธะบั€ะพัั…ะตะผั‹ - - event.remove({ id: 'gtceu:shaped/vacuum_tube' }) - event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_plain' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board') - event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_red_alloy' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board') - event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_red_alloy_annealed' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board') - - event.recipes.createSequencedAssembly([ - 'gtceu:vacuum_tube', - ], 'gtceu:resin_circuit_board', [ - event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', '#forge:bolts/steel']), - event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:copper_single_wire']), - event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:copper_single_wire']), - event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:glass_tube']), - event.custom({ type: 'vintageimprovements:vacuumizing', ingredients: [{ item: 'tfg:unfinished_vacuum_tube' }], results: [{ item: 'tfg:unfinished_vacuum_tube' }], processingTime: 80 }) - ]).transitionalItem('tfg:unfinished_vacuum_tube').loops(1).id('tfg:gtceu/sequenced_assembly/vacuum_tube') - - //#endregion - - //#region ะ ะตั†ะตะฟั‚ LV ะผะธะบั€ะพัั…ะตะผั‹ - - event.remove({ id: 'gtceu:shaped/electronic_circuit_lv' }) - - event.recipes.createSequencedAssembly([ - 'gtceu:basic_electronic_circuit', - ], 'gtceu:resin_printed_circuit_board', [ - event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:resistor']), - event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:resistor']), - event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:vacuum_tube']), - event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:vacuum_tube']), - event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'create:electron_tube']), - event.recipes.createFilling('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', Fluid.of('gtceu:glue', 50)]), - event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', '#forge:plates/steel']), - ]).transitionalItem('tfg:unfinished_basic_electronic_circuit').loops(1).id('tfg:gtceu/sequenced_assembly/basic_electronic_circuit') - - event.remove({ id: 'gtceu:shaped/electronic_circuit_mv' }) - - event.recipes.createSequencedAssembly([ - 'gtceu:good_electronic_circuit', - ], 'gtceu:phenolic_printed_circuit_board', [ - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:diode']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:diode']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:single_wires/copper']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:single_wires/copper']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:plates/steel']), - ]).transitionalItem('tfg:unfinished_good_electronic_circuit').loops(1).id('tfg:gtceu/sequenced_assembly/good_electronic_circuit') - - //#endregion - //#region Quantum mainframe stack fix. // // Quantum Mainframes need 48x annealed copper wire but @@ -733,227 +114,6 @@ const registerGTCEURecipes = (event) => { // #endregion - // #region Add all glass colors to macerator/hammer - removeMaceratorRecipe(event, 'macerate_glass'); - event.recipes.gtceu.macerator("gtceu:macerator/macerate_glass") - .itemInputs( - "#forge:glass" - ) - .itemOutputs("gtceu:glass_dust") - .duration(20) - .EUt(2); - - removeMaceratorRecipe(event, 'macerate_glass_pane'); - event.recipes.gtceu.macerator("gtceu:macerator/macerate_glass_pane") - .itemInputs( - "#forge:glass_panes" - ) - .itemOutputs("3x gtceu:tiny_glass_dust") - .duration(6) - .EUt(2) - - event.replaceInput({ id: "gtceu:shaped/glass_dust_hammer" }, - "minecraft:glass", - "#forge:glass" - ); - // #endregion - - // #region Rich coal processing - - event.recipes.gtceu.coke_oven("tfg:poor_coal_to_coke") - .itemInputs('2x gtceu:poor_raw_coal') - .itemOutputs('1x gtceu:coke_gem') - .outputFluids(Fluid.of('gtceu:creosote', 500)) - .duration(900) - - event.recipes.gtceu.coke_oven("tfg:coal_to_coke") - .itemInputs('gtceu:raw_coal') - .itemOutputs('2x gtceu:coke_gem') - .outputFluids(Fluid.of('gtceu:creosote', 1000)) - .duration(900) - - event.recipes.gtceu.coke_oven("tfg:rich_coal_to_coke") - .itemInputs('gtceu:rich_raw_coal') - .itemOutputs('4x gtceu:coke_gem') - .outputFluids(Fluid.of('gtceu:creosote', 2000)) - .duration(900) - - event.recipes.gtceu.pyrolyse_oven("tfg:rich_coal_to_tar") - .itemInputs('3x gtceu:rich_raw_coal') - .chancedOutput('gtceu:dark_ash_dust', 5000, 0) - .outputFluids(Fluid.of('gtceu:coal_tar', 3000)) - .duration(288) - .EUt(96) - .circuit(8) - - event.recipes.gtceu.pyrolyse_oven("tfg:rich_coal_to_coke_creosote") - .itemInputs('4x gtceu:rich_raw_coal') - .itemOutputs('16x gtceu:coke_gem') - .outputFluids(Fluid.of('gtceu:creosote', 8000)) - .duration(576) - .EUt(64) - .circuit(1) - - event.recipes.gtceu.pyrolyse_oven("tfg:coal_to_coal_gas") - .itemInputs('4x gtceu:rich_raw_coal') - .itemOutputs('16x gtceu:coke_gem') - .inputFluids(Fluid.of('gtceu:steam')) - .outputFluids(Fluid.of('gtceu:coal_gas', 4000)) - .duration(288) - .EUt(96) - .circuit(22) - - event.recipes.gtceu.pyrolyse_oven("tfg:coal_to_coke_creosote_nitrogen") - .itemInputs('4x gtceu:rich_raw_coal') - .itemOutputs('16x gtceu:coke_gem') - .inputFluids(Fluid.of('gtceu:nitrogen')) - .outputFluids(Fluid.of('gtceu:creosote', 8000)) - .duration(288) - .EUt(96) - .circuit(2) - - event.recipes.gtceu.coke_oven("tfg:raw_coal_to_coke") - .itemInputs('gtceu:raw_coal') - .itemOutputs('2x gtceu:coke_gem') - .outputFluids(Fluid.of('gtceu:creosote', 2000)) - .duration(1710) - - event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_tar") - .itemInputs('6x gtceu:raw_coal') - .chancedOutput('gtceu:dark_ash_dust', 5000, 0) - .outputFluids(Fluid.of('gtceu:coal_tar', 3000)) - .duration(288) - .EUt(96) - .circuit(8) - - event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coke_creosote") - .itemInputs('8x gtceu:raw_coal') - .itemOutputs('16x gtceu:coke_gem') - .outputFluids(Fluid.of('gtceu:creosote', 8000)) - .duration(576) - .EUt(64) - .circuit(1) - - event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coal_gas") - .itemInputs('8x gtceu:raw_coal') - .itemOutputs('16x gtceu:coke_gem') - .inputFluids(Fluid.of('gtceu:steam')) - .outputFluids(Fluid.of('gtceu:coal_gas', 4000)) - .duration(288) - .EUt(96) - .circuit(22) - - event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coke_creosote_nitrogen") - .itemInputs('8x gtceu:raw_coal') - .itemOutputs('16x gtceu:coke_gem') - .inputFluids(Fluid.of('gtceu:nitrogen')) - .outputFluids(Fluid.of('gtceu:creosote', 8000)) - .duration(288) - .EUt(96) - .circuit(2) - - // #endregion - - // #region Fix TFC hanging sign metal dupe for Macerator and Arc Furnace - - const SIGN_METALS = [ - GTMaterials.Copper, - GTMaterials.Bronze, - GTMaterials.BlackBronze, - GTMaterials.BismuthBronze, - GTMaterials.WroughtIron, - GTMaterials.Steel, - GTMaterials.BlackSteel, - GTMaterials.RedSteel, - GTMaterials.BlueSteel - ]; - - SIGN_METALS.forEach(metal => { - // Arc furnace - global.TFC_WOOD_TYPES.forEach(wood => { - event.remove(`gtceu:arc_furnace/arc_wood/hanging_sign/${metal.getName()}/${wood}`) - event.recipes.gtceu.arc_furnace(`gtceu:arc_furnace/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - .itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`) - .itemOutputs('gtceu:tiny_ash_dust') - .chancedOutput(ChemicalHelper.get(TagPrefix.nugget, metal, 1), 3750, 0) - .inputFluids(Fluid.of('gtceu:oxygen', 12)) - .duration(12) - .EUt(30) - .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) - }) - - global.AFC_WOOD_TYPES.forEach(wood => { - event.recipes.gtceu.arc_furnace(`gtceu:arc_furnace/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - .itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`) - .itemOutputs('gtceu:tiny_ash_dust') - .chancedOutput(ChemicalHelper.get(TagPrefix.nugget, metal, 1), 3750, 0) - .inputFluids(Fluid.of('gtceu:oxygen', 12)) - .duration(12) - .EUt(30) - .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) - }) - - // Macerator - global.TFC_HARDWOOD_TYPES.forEach(wood => { - removeMaceratorRecipe(event, `macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - .itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`) - .itemOutputs('gtceu:hardwood_dust') - .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) - .duration(108) - .EUt(8) - .category(GTRecipeCategories.MACERATOR_RECYCLING) - }) - - global.TFC_SOFTWOOD_TYPES.forEach(wood => { - removeMaceratorRecipe(event, `macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - .itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`) - .itemOutputs('gtceu:wood_dust') - .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) - .duration(108) - .EUt(8) - .category(GTRecipeCategories.MACERATOR_RECYCLING) - }) - - global.AFC_HARDWOOD_TYPES.forEach(wood => { - event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - .itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`) - .itemOutputs('gtceu:hardwood_dust') - .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) - .duration(108) - .EUt(8) - .category(GTRecipeCategories.MACERATOR_RECYCLING) - }) - - global.AFC_SOFTWOOD_TYPES.forEach(wood => { - event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - .itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`) - .itemOutputs('gtceu:wood_dust') - .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) - .duration(108) - .EUt(8) - .category(GTRecipeCategories.MACERATOR_RECYCLING) - }) - }) - // #endregion - - //#region support recycling - event.recipes.gtceu.macerator(`hardwood_support_to_dust`) - .itemInputs('#tfg:hardwood_supports') - .itemOutputs('gtceu:hardwood_dust') - .duration(150) - .EUt(2) - .category(GTRecipeCategories.MACERATOR_RECYCLING); - - event.recipes.gtceu.macerator(`softwood_support_to_dust`) - .itemInputs('#tfg:softwood_supports') - .itemOutputs('gtceu:wood_dust') - .duration(150) - .EUt(2) - .category(GTRecipeCategories.MACERATOR_RECYCLING); - //#endregion - //#region Voiding covers event.replaceInput({ id: 'gtceu:shaped/cover_fluid_voiding' }, @@ -970,102 +130,6 @@ const registerGTCEURecipes = (event) => { //#endregion - // #region Treated Wood - - event.shaped('2x gtceu:treated_wood_door', [ - 'AA ', - 'AA ', - 'AA ' - ], { - A: 'gtceu:treated_wood_plate' - }).id('tfg:shaped/treated_door') - - event.shaped('3x gtceu:treated_wood_trapdoor', [ - 'AAA', - 'AAA', - ' ' - ], { - A: 'gtceu:treated_wood_plate' - }).id('tfg:shaped/treated_trapdoor') - - // #endregion - - // #region Rubber Processing Line - event.recipes.firmalife.vat() - .inputs('tfc:powder/sulfur', Fluid.of('tfg:latex', 1000)) - .outputFluid(Fluid.of('tfg:vulcanized_latex', 1000)) - .length(300) - .temperature(300) - .id('tfg:vat/vulcanized_latex') - - event.recipes.tfc.pot('tfc:powder/sulfur', Fluid.of('tfg:latex', 1000), 1200, 300) - .fluidOutput(Fluid.of('tfg:vulcanized_latex', 1000)) - .id('tfg:pot/vulcanized_latex') - - event.recipes.gtceu.chemical_reactor('tfg:latex_to_vulcanized_latex') - .duration(100) - .EUt(20) - .itemInputs('tfc:powder/sulfur') - .inputFluids(Fluid.of('tfg:latex', 1000)) - .outputFluids(Fluid.of('tfg:vulcanized_latex', 1000)) - - event.recipes.gtceu.fluid_solidifier('tfg:vulcanized_latex_to_raw_rubber_pulp') - .duration(100) - .EUt(20) - .inputFluids(Fluid.of('tfg:vulcanized_latex', 1000)) - .itemOutputs('4x gtceu:raw_rubber_dust') - - // #endregion - - // #region Primitive protection - - event.recipes.tfc.barrel_sealed(2000) - .outputItem('tfg:prepared_leather_gloves') - .inputs('tfchotornot:mittens', Fluid.of('tfc:vinegar', 1000)) - .id('tfg:sealed_barrel/prepared_leather_gloves') - - event.recipes.firmalife.vat() - .outputItem('tfg:latex_soaked_gloves') - .inputs('tfg:prepared_leather_gloves', Fluid.of('tfg:vulcanized_latex', 1000)) - .length(300) - .temperature(200) - .id('tfg:vat/latex_soaked_gloves') - - event.recipes.firmalife.oven('tfg:latex_soaked_gloves', 120, 1200, 'gtceu:rubber_gloves') - .id('tfg:oven/rubber_gloves') - - event.remove({ id: 'gtceu:shaped/rubber_gloves' }) - - event.recipes.gtceu.alloy_smelter('rubber_gloves_alloy_smelter') - .itemInputs('2x #forge:plates/rubber') - .notConsumable('create:brass_hand') - .itemOutputs('gtceu:rubber_gloves') - .duration(200) - .EUt(GTValues.VA[GTValues.ULV]) - .category(GTRecipeCategories.INGOT_MOLDING) - - - event.recipes.tfc.damage_inputs_shaped_crafting( - event.shaped('gtceu:face_mask', [ - 'ACA', - 'ABA', - ' D ' - ], { - A: '#forge:string', - B: '#forge:cloth', - C: 'minecraft:paper', - D: '#tfc:sewing_needles' - }) - ).id('gtceu:shaped/face_mask') - - event.recipes.gtceu.assembler('assemble_face_mask') - .itemInputs('4x #forge:string', '#forge:cloth', 'minecraft:paper') - .itemOutputs('gtceu:face_mask') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - .circuit(7) - - // #endregion event.replaceInput({ id: 'gtceu:shaped/nightvision_goggles' }, 'gtceu:glass_lens', 'tfc:lens') event.replaceInput({ id: 'gtceu:shaped/nightvision_goggles' }, 'gtceu:lv_sodium_battery', '#gtceu:batteries/lv') @@ -1078,99 +142,6 @@ const registerGTCEURecipes = (event) => { event.replaceInput({ id: 'gtceu:shaped/blacklight' }, 'gtceu:tungsten_carbide_screw', '#tfg:components/uv_leds') - event.recipes.gtceu.fluid_solidifier('tfg:solidify_glue') - .inputFluids(Fluid.of('gtceu:glue', 50)) - .notConsumable('gtceu:ball_casting_mold') - .itemOutputs('tfc:glue') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.centrifuge('tfg:centrifuge_rosin') - .itemInputs('tfg:conifer_rosin') - .outputFluids(Fluid.of('gtceu:glue', 50)) - .itemOutputs('2x #forge:dusts/carbon') - .chancedOutput('gtceu:plant_ball', 7500, 0) - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.centrifuge('tfg:centrifuge_sticky_resin') - .itemInputs('gtceu:sticky_resin') - .outputFluids(Fluid.of('gtceu:glue', 100)) - .itemOutputs('3x #forge:dusts/carbon') - .chancedOutput('gtceu:plant_ball', 5000, 0) - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.chemical_reactor(`tfg:treat_latex_plants_into_latex`) - .itemInputs('16x #tfg:rubber_plants', 'gtceu:tiny_sodium_hydroxide_dust') - .circuit(1) - .outputFluids(Fluid.of('tfg:latex', 1000)) - .duration(200) - .EUt(20) - - event.recipes.createSequencedAssembly([ - 'gtceu:ulv_voltage_coil', - ], 'gtceu:magnetic_iron_rod', [ - event.recipes.createDeploying('gtceu:magnetic_iron_rod', ['gtceu:magnetic_iron_rod', '#forge:fine_wires/lead']) - ]).transitionalItem('gtceu:magnetic_iron_rod').loops(32).id('tfg:sequenced_assembly/ulv_voltage_coil') - - //#endregion - - //#region Steam Bloomery - - event.recipes.gtceu.steam_bloomery('steam_raw_iron_bloom_coal') - .itemInputs('#forge:ingots/iron', '#tfc:steam_bloomery_basic_fuels') - .itemOutputs('tfc:raw_iron_bloom') - .duration(2400) - .EUt(2) - - event.recipes.gtceu.steam_bloomery('steam_raw_iron_bloom_coalcoke') - .itemInputs('2x #forge:ingots/iron', '#tfc:blast_furnace_fuel') - .itemOutputs('2x tfc:raw_iron_bloom') - .duration(2400) - .EUt(2) - - forEachMaterial(material => { - - const tfcProperty = material.getProperty(TFGPropertyKey.TFC_PROPERTY) - if (tfcProperty === null) - return; - - const outputMaterial = tfcProperty.getOutputMaterial() === null ? material : tfcProperty.getOutputMaterial() - if (outputMaterial === GTMaterials.Iron) { - event.recipes.gtceu.steam_bloomery(`steam_raw_iron_bloom_coal_${material.getName()}`) - .itemInputs(ChemicalHelper.get(TagPrefix.dust, material, 1), '#tfc:steam_bloomery_basic_fuels') - .itemOutputs('tfc:raw_iron_bloom') - .duration(2400) - .EUt(2) - - event.recipes.gtceu.steam_bloomery(`steam_raw_iron_bloom_coalcoke_${material.getName()}`) - .itemInputs(ChemicalHelper.get(TagPrefix.dust, material, 2), '#tfc:blast_furnace_fuel') - .itemOutputs('2x tfc:raw_iron_bloom') - .duration(2400) - .EUt(2) - } - }) - - //#endregion - - //#region Stick Packing - - event.recipes.gtceu.packer('tfg:stick_bunch') - .itemInputs('9x #forge:rods/wooden') - .circuit(5) - .itemOutputs('tfc:stick_bunch') - .duration(50) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.packer('tfg:stick_bundle') - .itemInputs('18x #forge:rods/wooden') - .circuit(8) - .itemOutputs('tfc:stick_bundle') - .duration(50) - .EUt(GTValues.VA[GTValues.ULV]) - - //#endregion // Fix Snow in Compressor @@ -1181,31 +152,7 @@ const registerGTCEURecipes = (event) => { .duration(20 * 10) .EUt(2) - //#region Changing tiers of decomposition recipes - - event.recipes.gtceu.electrolyzer('gtceu:decomposition_electrolyzing_clay') - .itemInputs('13x #forge:dusts/clay') - .itemOutputs('2x #forge:dusts/sodium', '1x #forge:dusts/lithium', '2x #forge:dusts/aluminium', '2x #forge:dusts/silicon') - .outputFluids(Fluid.of('minecraft:water', 6000)) - .duration(GTMaterials.Clay.getMass() * 13) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.centrifuge('gtceu:stone_dust_separation') - .itemInputs('gtceu:stone_dust') - .chancedOutput('#forge:small_dusts/quartzite', 2500, 0) - .chancedOutput('#forge:small_dusts/potassium_feldspar', 2500, 0) - .chancedOutput('#forge:small_dusts/marble', 2222, 0) - .chancedOutput('#forge:small_dusts/biotite', 1111, 0) - .chancedOutput('#forge:small_dusts/metal_mixture', 825, 80) - .chancedOutput('#forge:small_dusts/sodalite', 550, 55) - .duration(12 * 20) - .EUt(GTValues.VA[GTValues.HV]) - - - //#endregion - - //#region Tape - + // Tape event.shaped('gtceu:basic_tape', [ ' A ', 'ABA', @@ -1221,20 +168,8 @@ const registerGTCEURecipes = (event) => { .duration(100) .EUt(GTValues.VA[GTValues.ULV]) - //#endregion - //#region glowstone - event.recipes.gtceu.alloy_blast_smelter('abs:liquid_glowstone') - .itemInputs('#forge:dusts/gold', '#forge:dusts/redstone', '#forge:dusts/sulfur') - .outputFluids(Fluid.of('gtceu:glowstone', 288)) - .duration(20 * 60 / 1.3) - .EUt(GTValues.VA[GTValues.LV]) - .blastFurnaceTemp(1064) - .circuit(9) - //#endregion - - - //#region GT Facades + // GT Facades event.remove({ id: 'gtceu:crafting/facade_cover' }) event.shapeless(Item.of('gtceu:facade_cover', 8, '{Facade: {Count:1b,id:"minecraft:stone"}}'), ['3x #forge:plates/iron', "#tfg:whitelisted/facades"]) @@ -1254,8 +189,8 @@ const registerGTCEURecipes = (event) => { result.nbt = facadeNBT return result; }).id('gtceu:facade_cover32'); - //#endregion + // Diamond gear event.recipes.gtceu.laser_engraver('tfg:diamond_gear') .itemInputs('4x #forge:plates/diamond') .itemOutputs('#forge:gears/diamond') @@ -1263,28 +198,6 @@ const registerGTCEURecipes = (event) => { .duration(200) .EUt(GTValues.VA[GTValues.MV]) - //#region Rose Quartz fabrication + decomposition - event.remove({ id: 'gtceu:electrolyzer/decomposition_electrolyzing_chromatic_compound' }); - event.remove({ id: 'gtceu:autoclave/autoclave_dust_rose_quartz_water' }) - event.remove({ id: 'gtceu:autoclave/autoclave_dust_rose_quartz_distilled' }) - - generateMixerRecipe(event, ['gtceu:nether_quartz_dust', '8x minecraft:redstone'], [], '9x gtceu:rose_quartz_dust', 2, [], 180, 60, 64, 'rose_quartz_dust_mixing') - generateMixerRecipe(event, ['gtceu:tiny_nether_quartz_dust', '8x gtceu:tiny_redstone_dust'], [], 'gtceu:rose_quartz_dust', 2, [], 20, 60, 64, 'tiny_rose_quartz_dust_mixing') - - event.recipes.gtceu.autoclave("autoclave_dust_rose_quartz_ice") - .itemInputs('#forge:dusts/rose_quartz') - .inputFluids(Fluid.of("gtceu:ice", 144)) - .itemOutputs("#forge:gems/rose_quartz") - .duration(2000) - .EUt(120) - - event.recipes.gtceu.electrolyzer('electrolyze_rose_quartz_dust') - .itemInputs('9x gtceu:rose_quartz_dust') - .itemOutputs('1x gtceu:nether_quartz_dust', '8x minecraft:redstone') - .duration(7 * 20) - .EUt(60) - //#endregion - //#region Multiblock Tanks event.recipes.gtceu.assembler('tfg:assembler/wood_wall') @@ -1322,13 +235,6 @@ const registerGTCEURecipes = (event) => { //#endregion - event.smelting('minecraft:iron_ingot', '#forge:ingots/wrought_iron') - .id('tfg:revert_wrought_iron_ingot') - - event.replaceOutput({ id: 'gtceu:distillery/distill_biomass_to_water' }, 'gtceu:wood_dust', 'gtceu:carbon_dust') - event.replaceOutput({ id: 'gtceu:distillery/distill_biomass_to_ethanol' }, 'gtceu:wood_dust', 'gtceu:carbon_dust') - event.replaceOutput({ id: 'gtceu:distillation_tower/distill_biomass' }, 'gtceu:wood_dust', 'gtceu:carbon_dust') - //#region Circuit Fixes global.ADD_CIRCUIT.forEach(item => { @@ -1337,55 +243,6 @@ const registerGTCEURecipes = (event) => { //#endregion - //#region Chemical Reaction for Solar Panel - - event.recipes.gtceu.chemical_reactor('tfg:chlorine_pentafluoride') - .inputFluids(Fluid.of('gtceu:fluorine', 5000), Fluid.of('gtceu:chlorine', 1000)) - .outputFluids(Fluid.of('tfg:chlorine_pentafluoride', 1000)) - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('tfg:chloryl_fluoride') - .inputFluids(Fluid.of('tfg:chlorine_pentafluoride', 1000), Fluid.of('minecraft:water', 2000)) - .outputFluids(Fluid.of('tfg:chloryl_fluoride', 1000), Fluid.of('gtceu:hydrofluoric_acid', 4000)) - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.large_chemical_reactor('tfg:solar_coolant') - .inputFluids(Fluid.of('tfg:chloryl_fluoride', 3000), Fluid.of('gtceu:helium_3', 8000), Fluid.of('minecraft:water', 8000)) - .outputFluids(Fluid.of('tfg:solar_coolant', 1000), Fluid.of('gtceu:hydrofluoric_acid', 3000), Fluid.of('gtceu:hypochlorous_acid', 3000)) - .duration(20 * 5) - .EUt(GTValues.VH[GTValues.EV]) - - event.recipes.gtceu.large_chemical_reactor('tfg:solar_coolant_t2') - .inputFluids(Fluid.of('tfg:solar_coolant', 8000), Fluid.of('gtceu:argon', 1000)) - .itemInputs(Item.of('#forge:aerogels')) - .outputFluids(Fluid.of('tfg:solar_coolant_tier2', 8000)) - .duration(20 * 15) - .EUt(GTValues.VH[GTValues.IV]) - - //#endregion - - event.replaceInput({ id: 'gtceu:shaped/powderbarrel' }, 'gtceu:wood_plate', '#tfc:lumber') - - event.shaped('gtceu:treated_wood_pressure_plate', [ - ' B ', - 'CDC', - ' E ' - ], { - B: '#tfc:hammers', - C: 'gtceu:treated_wood_slab', - D: '#forge:small_springs', - E: '#forge:tools/screwdrivers' - }).id('gtceu:shaped/treated_pressure_plate') - - event.recipes.gtceu.assembler('gtceu:treated_pressure_plate') - .itemInputs('#forge:small_springs', '2x gtceu:treated_wood_slab') - .itemOutputs('gtceu:treated_wood_pressure_plate') - .circuit(3) - .duration(50) - .EUt(2) - // Matches event.shapeless('4x gtceu:matches', ['#forge:dusts/phosphorus', 'tfc:glue', '4x #forge:bolts/wood']) @@ -1397,21 +254,6 @@ const registerGTCEURecipes = (event) => { event.shapeless(Item.of('gtceu:matchbox', '{usesLeft:8}'), ['minecraft:paper', '8x gtceu:matches']) .id('tfg:shapeless/matchbox') - - event.remove({ id: 'gtceu:chemical_reactor/nano_cpu_wafer' }) - event.remove({ id: 'gtceu:large_chemical_reactor/nano_cpu_wafer' }) - - event.recipes.gtceu.chemical_reactor('tfg:nano_cpu_wafer') - .inputFluids(Fluid.of('gtceu:tritiated_water', 576)) - .itemInputs('gtceu:cpu_wafer', '16x gtceu:carbon_fibers') - .itemOutputs('gtceu:nano_cpu_wafer') - .duration(20*60) - .EUt(GTValues.VA[GTValues.EV]) - .cleanroom(CleanroomType.CLEANROOM) - - event.remove({ id: 'gtceu:chemical_reactor/soda_ash_from_carbon_dioxide' }) - event.remove({ id: 'gtceu:large_chemical_reactor/soda_ash_from_carbon_dioxide' }) - event.recipes.gtceu.implosion_compressor('tfg:dense_lead_plate') .itemInputs('16x #forge:ingots/lead', '16x #forge:ingots/lead', '6x #forge:ingots/lead') .itemInputs('gtceu:industrial_tnt') @@ -1446,75 +288,7 @@ const registerGTCEURecipes = (event) => { F: 'gtceu:stainless_steel_huge_fluid_pipe' }).id('tfg:shaped/large_centrifuge') - event.recipes.gtceu.chemical_reactor('tfg:wood_ash_to_wood_gas_air') - .itemInputs('8x tfc:powder/wood_ash') - .inputFluids(Fluid.of('gtceu:air', 100)) - .outputFluids('gtceu:wood_gas 100') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.LV]) - - event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_asmd_soldering_alloy'}) - event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv'}) - event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_soldering_alloy'}) - event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_asmd'}) - - event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv') - .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '8x #gtceu:inductors', '16x #gtceu:capacitors', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') - .inputFluids(Fluid.of('gtceu:tin', 576)) - .itemOutputs('gtceu:micro_processor_mainframe') - .duration(20 * 40) - .EUt(GTValues.VA[GTValues.HV]) - .cleanroom(CleanroomType.CLEANROOM) - - event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_soldering_alloy') - .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '8x #gtceu:inductors', '16x #gtceu:capacitors', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') - .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) - .itemOutputs('gtceu:micro_processor_mainframe') - .duration(20 * 40) - .EUt(GTValues.VA[GTValues.HV]) - .cleanroom(CleanroomType.CLEANROOM) - - event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_asmd') - .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '2x gtceu:advanced_smd_inductor', '4x gtceu:advanced_smd_capacitor', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') - .inputFluids(Fluid.of('gtceu:tin', 576)) - .itemOutputs('gtceu:micro_processor_mainframe') - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.HV]) - .cleanroom(CleanroomType.CLEANROOM) - - event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_asmd_soldering_alloy') - .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '2x gtceu:advanced_smd_inductor', '4x gtceu:advanced_smd_capacitor', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') - .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) - .itemOutputs('gtceu:micro_processor_mainframe') - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.HV]) - .cleanroom(CleanroomType.CLEANROOM) - - // Buttons - removeCutterRecipe(event, 'blackstone_button') - removeCutterRecipe(event, 'blackstone_button_water') - removeCutterRecipe(event, 'blackstone_button_distilled_water') - removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button') - removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button_water') - removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button_distilled_water') - - event.recipes.gtceu.cutter('tfg:blackstone_button') - .itemInputs('minecraft:polished_blackstone_pressure_plate') - .itemOutputs('6x minecraft:polished_blackstone_button') - .EUt(7) - .duration(100) - - - event.replaceOutput({ id: 'gtceu:cutter/bamboo_button' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button') - event.replaceOutput({ id: 'gtceu:cutter/bamboo_button_water' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button') - event.replaceOutput({ id: 'gtceu:cutter/bamboo_button_distilled_water' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button') - - event.replaceOutput({ id: 'gtceu:cutter/treated_button' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button') - event.replaceOutput({ id: 'gtceu:cutter/treated_button_water' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button') - event.replaceOutput({ id: 'gtceu:cutter/treated_button_distilled_water' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button') - - //#region Replace Recipe - + // ME Pattern Buffer event.remove({ id: 'gtceu:assembly_line/me_pattern_buffer_proxy' }) event.recipes.gtceu.assembly_line('tfg:me_pattern_buffer_proxy') .itemInputs( @@ -1537,88 +311,6 @@ const registerGTCEURecipes = (event) => { event.replaceInput({ id: 'gtceu:assembly_line/me_pattern_buffer' }, 'ae2:pattern_provider', '3x expatternprovider:ex_pattern_provider') event.replaceInput({ id: 'gtceu:assembly_line/me_pattern_buffer' }, 'ae2:interface', '3x expatternprovider:oversize_interface') - event.replaceInput({ id: 'gtceu:shaped/large_combustion_engine' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev') - event.replaceInput({ id: 'gtceu:shaped/nano_chestplate_advanced' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev') - event.replaceInput({ id: 'gtceu:assembler/ev_large_miner' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev') - - // the recycling fix only works if the addMaterialInfo() is on the shaped recipe, NOT the assembler - removeMaceratorRecipe(event, 'macerate_palladium_substation') - event.recipes.gtceu.shaped('gtceu:palladium_substation', [ - 'AAA', - ' B ', - 'AAA' - ], { - A: ChemicalHelper.get(TagPrefix.plate, GTMaterials.Palladium, 1), - B: ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Ultimet, 1) - }).addMaterialInfo().id('tfg:shaped/casing_palladium_substation') - - event.recipes.gtceu.assembler('casing_palladium_substation') - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Palladium, 6), - ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Ultimet, 1) - ) - .itemOutputs('gtceu:palladium_substation') - .duration(20 * 2.5) - .circuit(6) - .EUt(GTValues.VA[GTValues.LV]) - - - removeMaceratorRecipe(event, 'macerate_power_substation') - event.recipes.gtceu.shaped('gtceu:power_substation', [ - 'ABA', - 'CDC', - 'ABA' - ], { - A: 'gtceu:lapotron_crystal', - B: 'gtceu:mpic_chip', - C: '#gtceu:circuits/ev', - D: 'gtceu:palladium_substation' - }).addMaterialInfo().id('gtceu:shaped/power_substation') - - event.replaceInput({ id: 'gtceu:assembler/field_generator_hv' }, 'gtceu:quantum_eye', 'tfg:cryo_fluix_pearl') - event.replaceInput({ id: 'gtceu:assembler/field_generator_ev' }, 'minecraft:nether_star', 'gtceu:quantum_eye') - event.replaceInput({ id: 'gtceu:assembler/field_generator_iv' }, 'gtceu:quantum_star', 'minecraft:nether_star') - - event.recipes.gtceu.shaped('gtceu:hv_field_generator', [ - 'ABA', - 'CDC', - 'ABA' - ], { - A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.MercuryBariumCalciumCuprate , 1), - B: ChemicalHelper.get(TagPrefix.plate, GTMaterials.StainlessSteel, 1), - C: '#gtceu:circuits/hv', - D: 'tfg:cryo_fluix_pearl' - }).addMaterialInfo().id('gtceu:shaped/field_generator_hv') - - event.recipes.gtceu.shaped('gtceu:ev_field_generator', [ - 'ABA', - 'CDC', - 'ABA' - ], { - A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.UraniumTriplatinum , 1), - B: ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.Titanium, 1), - C: '#gtceu:circuits/ev', - D: 'gtceu:quantum_eye' - }).addMaterialInfo().id('gtceu:shaped/field_generator_ev') - - event.recipes.gtceu.shaped('gtceu:iv_field_generator', [ - 'ABA', - 'CDC', - 'ABA' - ], { - A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.SamariumIronArsenicOxide , 1), - B: ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.TungstenSteel, 1), - C: '#gtceu:circuits/iv', - D: 'minecraft:nether_star' - }).addMaterialInfo().id('gtceu:shaped/field_generator_iv') - - event.remove({ id: 'gtceu:chemical_bath/quantum_eye' }) - event.recipes.gtceu.chemical_bath('tfg:quantum_eye') - .itemInputs('tfg:cryo_fluix_pearl') - .inputFluids(Fluid.of('gtceu:radon', 250)) - .itemOutputs('gtceu:quantum_eye') - .duration(20 * 24) - .EUt(GTValues.VA[GTValues.HV]) // Modify Rotor Holder to require an Assembler @@ -1665,164 +357,6 @@ const registerGTCEURecipes = (event) => { .duration(20 * 6) .EUt(GTValues.VA[GTValues.UV]) - //# Circuit Board - - event.replaceInput({ id: 'gtceu:assembler/phenolic_board' }, '#tfg:wood_dusts', 'tfg:high_density_treated_fiberboard') - - //#region New Tungsten Line - - event.remove({ id: 'gtceu:chemical_bath/tungstic_acid_from_scheelite' }) - event.remove({ id: 'gtceu:chemical_bath/tungstic_acid_from_tungstate' }) - event.remove({ id: 'gtceu:electrolyzer/tungstic_acid_electrolysis' }) - - // Transform Tungstate and Scheelite - - event.recipes.gtceu.large_chemical_reactor('tfg:scheelite_to_sodium_tungstate') - .itemInputs(Item.of('gtceu:scheelite_dust', 6)) - .itemInputs(Item.of('gtceu:soda_ash_dust', 6)) - .itemOutputs(Item.of('tfg:sodium_tungstate_dust', 7)) - .itemOutputs(Item.of('gtceu:calcite_dust', 5)) - .duration(20*12) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.large_chemical_reactor('tfg:tungstate_to_sodium_tungstate') - .itemInputs(Item.of('gtceu:tungstate_dust', 7)) - .itemInputs(Item.of('gtceu:soda_ash_dust', 6)) - .itemOutputs(Item.of('tfg:sodium_tungstate_dust', 7)) - .itemOutputs(Item.of('gtceu:lithium_dust', 2)) - .itemOutputs(Item.of('gtceu:carbon_dust', 1)) - .outputFluids(Fluid.of('gtceu:oxygen', 3000)) - .duration(20*12) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_bath('tfg:tungstate_to_tungsten_acid') - .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 2000)) - .itemInputs(Item.of('tfg:sodium_tungstate_dust', 7)) - .itemOutputs(Item.of('gtceu:salt_dust', 4)) - .itemOutputs(Item.of('gtceu:tungstic_acid_dust', 7)) - .duration(20*24) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_bath('tfg:tungsten_acid_to_ammonium_tungstate') - .inputFluids(Fluid.of('gtceu:ammonia', 10000)) - .itemInputs(Item.of('gtceu:tungstic_acid_dust', 7)) - .itemOutputs(Item.of('tfg:ammonium_tungstate_dust', 1)) - .duration(20*16) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.evaporation_tower('tfg:ammonium_tungstate_to_apt_h') - .itemInputs(Item.of('tfg:ammonium_tungstate_dust', 1)) - .itemOutputs(Item.of('tfg:apt_gem', 1)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .duration(20*48) - .EUt(GTValues.VHA[GTValues.HV]) - - event.recipes.gtceu.distillery('tfg:ammonium_tungstate_to_apt') - .itemInputs(Item.of('tfg:ammonium_tungstate_dust', 1)) - .itemOutputs(Item.of('tfg:apt_gem', 1)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .duration(20*48) - .EUt(GTValues.VHA[GTValues.HV]) - - event.recipes.gtceu.pyrolyse_oven('tfg:apt') - .itemInputs(Item.of('tfg:apt_gem', 1)) - .itemOutputs(Item.of('tfg:tungsten_oxide_dust', 1)) - .outputFluids(Fluid.of('gtceu:ammonia', 10000)) - .duration(20*36) - .EUt(GTValues.VA[GTValues.EV]) - .circuit(1) - - event.recipes.gtceu.pyrolyse_oven('tfg:apt_nitrogen') - .itemInputs(Item.of('tfg:apt_gem', 1)) - .inputFluids(Fluid.of('gtceu:nitrogen', 1000)) - .itemOutputs(Item.of('tfg:tungsten_oxide_dust', 1)) - .outputFluids(Fluid.of('gtceu:ammonia', 10000)) - .duration(20*18) - .EUt(GTValues.VA[GTValues.EV]) - .circuit(2) - - event.recipes.gtceu.arc_furnace('tfg:tungsten_apt') - .itemInputs(Item.of('tfg:tungsten_oxide_dust', 1)) - .inputFluids(Fluid.of('gtceu:hydrogen', 3000)) - .itemOutputs(Item.of('gtceu:tungsten_dust', 1)) - .duration(20*2.8) - .EUt(GTValues.VA[GTValues.EV]) - - //#endregion - - - // New Alloys - - event.recipes.gtceu.mixer('tfg:ostrum_iodide') - .itemInputs('1x #forge:dusts/iodine', '2x #forge:dusts/ostrum') - .itemOutputs('3x #forge:dusts/ostrum_iodide') - .duration(20 * 12) - .circuit(1) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.mixer('tfg:tungsten_bismuth_oxide_composite') - .itemInputs('2x #forge:dusts/bismuth', 'gtceu:tungsten_dust') - .inputFluids(Fluid.of('gtceu:oxygen', 3000)) - .itemOutputs('3x tfg:tungsten_bismuth_oxide_composite_dust') - .duration(20 * 12) - .EUt(GTValues.VA[GTValues.EV]) - - // Handcrafted artisanal concrete - - event.recipes.firmalife.mixing_bowl() - .ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/marble', '#forge:dusts/gypsum'], Fluid.of('minecraft:water', 1000)) - .outputFluid(Fluid.of('gtceu:concrete', 1000)) - - event.recipes.firmalife.mixing_bowl() - .ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/clay'], Fluid.of('minecraft:water', 500)) - .outputFluid(Fluid.of('gtceu:concrete', 500)) - - event.recipes.firmalife.mixing_bowl() - .ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/calcite', '#forge:dusts/gypsum'], Fluid.of('minecraft:water', 1000)) - .outputFluid(Fluid.of('gtceu:concrete', 1000)) - - event.recipes.tfc.barrel_sealed(1000) - .inputFluid(Fluid.of('gtceu:concrete', 144)) - .inputItem('gtceu:wood_frame') - .outputItem('gtceu:light_concrete') - .id('tfg:barrel/light_concrete') - - event.recipes.tfc.barrel_sealed(1000) - .inputFluid(Fluid.of('gtceu:concrete', 96)) - .inputItem('tfg:rebar_support') - .outputItem('tfg:reinforced_light_concrete_support') - .id('tfg:barrel/reinforced_light_concrete_support') - - event.recipes.tfc.barrel_sealed(500) - .inputItem('gtceu:light_concrete') - .inputFluid(Fluid.of('tfc:black_dye', 18)) - .outputItem('gtceu:dark_concrete') - .id('tfg:barrel/dark_concrete') - - event.recipes.tfc.barrel_sealed(500) - .inputItem('tfg:light_concrete_support') - .inputFluid(Fluid.of('tfc:black_dye', 10)) - .outputItem('tfg:dark_concrete_support') - .id('tfg:barrel/dark_concrete_support') - - event.recipes.tfc.barrel_sealed(500) - .inputItem('tfg:reinforced_light_concrete_support') - .inputFluid(Fluid.of('tfc:black_dye', 10)) - .outputItem('tfg:reinforced_dark_concrete_support') - .id('tfg:barrel/reinforced_dark_concrete_support') - - event.recipes.gtceu.alloy_smelter('glass_bottle') - .itemInputs('#forge:dusts/glass') - .itemOutputs('tfc:silica_glass_bottle') - .notConsumable('gtceu:bottle_casting_mold') - .EUt(2) - .duration(20 * 5) - .category(GTRecipeCategories.INGOT_MOLDING) event.replaceInput( {output: 'gtceu:nano_saber'}, 'gtceu:ruridit_plate', '#forge:plates/ostrum_iodide' ) diff --git a/kubejs/server_scripts/gregtech/recipes.machines.js b/kubejs/server_scripts/gregtech/recipes.machines.js index 39b786f03..ebe072752 100644 --- a/kubejs/server_scripts/gregtech/recipes.machines.js +++ b/kubejs/server_scripts/gregtech/recipes.machines.js @@ -828,427 +828,37 @@ function registerGTCEuMachineRecipes(event) { B: 'gtceu:steam_machine_casing' }).addMaterialInfo().id('gtceu:shaped/steam_output_bus') - //#region Chipboard Composite - - event.recipes.gtceu.mixer('gtceu:chipboard_composite_wax') - .itemInputs('2x #tfg:wood_dusts', - '1x #forge:wax') - .itemOutputs('2x tfg:chipboard_composite') - .duration(100) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.mixer('gtceu:chipboard_composite_resin') - .itemInputs('4x #tfg:wood_dusts', - '1x gtceu:sticky_resin') - .itemOutputs('4x tfg:chipboard_composite') - .duration(100) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.mixer('gtceu:chipboard_composite_glue') - .itemInputs('2x #tfg:wood_dusts', - '1x tfc:glue') - .itemOutputs('2x tfg:chipboard_composite') - .duration(100) - .EUt(GTValues.VA[GTValues.LV]) - - - event.recipes.gtceu.mixer('gtceu:chipboard_composite_fluid_glue') - .itemInputs('1x #tfg:wood_dusts') - .inputFluids(Fluid.of('gtceu:glue', 25)) - .itemOutputs('1x tfg:chipboard_composite') - .duration(10) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.compressor('gtceu:wood_mdf') - .itemInputs('1x tfg:chipboard_composite') - .itemOutputs('gtceu:wood_plate') - .duration(200) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.chemical_bath('gtceu:treated_chipboard_composite') - .itemInputs('1x tfg:chipboard_composite') - .inputFluids(Fluid.of('gtceu:creosote', 50)) - .itemOutputs('tfg:treated_chipboard_composite') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.chemical_bath('gtceu:bath_high_density_treated_fiberboard') - .itemInputs('1x gtceu:wood_plate') - .inputFluids(Fluid.of('gtceu:creosote', 50)) - .itemOutputs('tfg:high_density_treated_fiberboard') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.chemical_bath('gtceu:bath_treated_wood_dust') - .itemInputs('#tfg:wood_dusts') - .inputFluids(Fluid.of('gtceu:creosote', 50)) - .itemOutputs('gtceu:treated_wood_dust') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.compressor('tfg:compressed_treated_chipboard_composite') - .itemInputs('tfg:treated_chipboard_composite') - .itemOutputs('tfg:high_density_treated_fiberboard') - .duration(200) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.assembler('tfg:resin_circuit_assembler') - .itemInputs('gtceu:wood_plate', '2x gtceu:sticky_resin') - .itemOutputs('gtceu:resin_circuit_board') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.ULV]) - - //#region New Casings - - event.recipes.gtceu.assembler('basic_solar_casing') - .itemInputs('gtceu:steel_machine_casing', 'tfg:photo_cell_t1') - .itemOutputs('8x tfg:casings/machine_casing_blue_solar_panel') - .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) - .circuit(6) - .duration(2.5 * 20) - .EUt(16) - - event.recipes.gtceu.assembler('advanced_solar_casing') - .itemInputs('8x tfg:casings/machine_casing_blue_solar_panel', 'ad_astra:photovoltaic_etrium_cell') - .itemOutputs('8x tfg:casings/machine_casing_green_solar_panel') - .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) - .circuit(6) - .duration(2.5 * 20) - .EUt(16) - - event.recipes.gtceu.assembler('elite_solar_casing') - .itemInputs('8x tfg:casings/machine_casing_green_solar_panel', 'ad_astra:photovoltaic_vesnium_cell') - .itemOutputs('8x tfg:casings/machine_casing_red_solar_panel') - .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) - .circuit(6) - .duration(2.5 * 20) - .EUt(16) - - event.recipes.gtceu.assembler('iron_desh_casing') - .itemInputs(ChemicalHelper.get(TagPrefix.plate, GTMaterials.Steel, 6), 'gtceu:desh_frame') - .itemOutputs('2x tfg:casings/machine_casing_iron_desh') - .circuit(6) - .duration(2.5 * 20) - .EUt(16) - - event.recipes.gtceu.assembler('steel_machine_casing') - .itemInputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 4)) - .itemOutputs('gtceu:steel_machine_casing') - .circuit(6) - .duration(2.5 * 20) - .EUt(16) - - event.recipes.gtceu.assembler('tfg:casings/machine_casing_stainless_evaporation') - .itemInputs('gtceu:clean_machine_casing', '4x gtceu:annealed_copper_double_wire') - .inputFluids(Fluid.of('gtceu:polyvinyl_chloride', 288)) - .itemOutputs('tfg:casings/machine_casing_stainless_evaporation') - .circuit(6) - .duration(2.5 * 20) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.assembler('tfg:casings/machine_casing_mars') - .itemInputs('gtceu:clean_machine_casing', '4x #forge:double_wires/kanthal') - .inputFluids(Fluid.of('gtceu:polybenzimidazole', 288)) - .itemOutputs('tfg:casings/machine_casing_mars') - .circuit(6) - .duration(2.5 * 20) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.assembler('gtceu:atomic_casing') - .itemInputs('4x #forge:dense_plates/lead', '2x #forge:plates/rtm_alloy', '#forge:frames/titanium') - .inputFluids(Fluid.of('gtceu:polyvinyl_butyral', 288)) - .itemOutputs('2x gtceu:atomic_casing') - .circuit(6) - .duration(2.5 * 20) - .EUt(GTValues.VA[GTValues.HV]) - - //#endregion - - //#region Large Solar Panel - - event.shaped( - 'gtceu:large_solar_panel', - ['WSW', 'TZT', 'WUW'], - { - S: 'tfg:photo_cell_t1', - Z: 'ad_astra:solar_panel', - W: '#gtceu:circuits/ev', - U: '#forge:gears/rocket_alloy_t1', - T: '#forge:gears/desh' - } - ).id('gtceu:shaped/large_solar_panel') - - event.shaped( - 'gtceu:large_solar_panel_tier2', - ['WSW', 'TZT', 'WUW'], - { - S: 'ad_astra:photovoltaic_etrium_cell', - Z: 'gtceu:large_solar_panel', - W: '#gtceu:circuits/iv', - U: '#forge:gears/rocket_alloy_t1', - T: '#forge:gears/desh' - } - ).id('gtceu:shaped/large_solar_panel_tier2') - - event.shaped( - 'gtceu:large_solar_panel_tier3', - ['WSW', 'TZT', 'WUW'], - { - S: 'ad_astra:photovoltaic_vesnium_cell', - Z: 'gtceu:large_solar_panel_tier2', - W: '#gtceu:circuits/luv', - U: '#forge:gears/rocket_alloy_t1', - T: '#forge:gears/desh' - } - ).id('gtceu:shaped/large_solar_panel_tier3') - - event.recipes.gtceu.chemical_reactor('advanced_photovoltaic_cell') - .itemInputs('8x tfg:photo_cell_t1', - '6x #forge:dusts/vanadium_gallium', - '#forge:insulation_t2/sheet') - .inputFluids(Fluid.of('gtceu:helium_3', 1000)) - .itemOutputs('8x ad_astra:photovoltaic_etrium_cell') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_reactor('expert_photovoltaic_cell') - .itemInputs('8x ad_astra:photovoltaic_etrium_cell', - '6x gtceu:energium_dust', - '#forge:insulation_t3/sheet') - .inputFluids(Fluid.of('tfg:cryogenized_fluix', 1000)) - .itemOutputs('8x ad_astra:photovoltaic_vesnium_cell') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.IV]) - - // LSP Generating recipes - - // Solar T1 - - event.recipes.gtceu.large_solar_panel('solar_panel_t1_emergency') - .chancedInput('tfg:photo_cell_t1', 100, 0) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-((GTValues.V[GTValues.HV])), 2) - .circuit(1) - - event.recipes.gtceu.large_solar_panel('solar_panel_t1') - .notConsumable('tfg:photo_cell_t1') - .perTick(true) - .chancedFluidInput('tfg:compressed_trimix_3 4', 5000, 0) - .perTick(false) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.EV]), 2) - .circuit(2) - - // Solar T2 - - event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_emergency') - .chancedInput('ad_astra:photovoltaic_etrium_cell', 100, 0) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.EV]), 2) - .circuit(1) - - event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_strong') - .notConsumable('ad_astra:photovoltaic_etrium_cell') - .perTick(true) - .chancedFluidInput('tfg:solar_coolant 10', 5000, 0) - .inputFluids('tfg:cryogenized_fluix 4') - .outputFluids('tfg:fluix 1') - .perTick(false) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.IV]), 2) - .circuit(2) - - event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_cheap') - .notConsumable('ad_astra:photovoltaic_etrium_cell') - .perTick(true) - .inputFluids('tfg:compressed_trimix_3 1') - .perTick(false) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.EV]), 2) - .circuit(3) - - // Solar T3 - - event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_emergency') - .chancedInput('ad_astra:photovoltaic_vesnium_cell', 100, 0) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.IV]), 2) - .circuit(1) - - event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_strong') - .notConsumable('ad_astra:photovoltaic_vesnium_cell') - .perTick(true) - .chancedFluidInput('tfg:solar_coolant_tier2 10', 5000, 0) - .inputFluids('tfg:cryogenized_fluix 4') - .outputFluids('tfg:fluix 1') - .perTick(false) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.LuV]), 2) - .circuit(2) - - event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_cheap') - .notConsumable('ad_astra:photovoltaic_vesnium_cell') - .perTick(true) - .chancedFluidInput('tfg:solar_coolant 10', 5000, 0) - .inputFluids('tfg:cryogenized_fluix 4') - .outputFluids('tfg:fluix 1') - .perTick(false) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.IV]), 2) - .circuit(2) - - //#endregion - - //#region Mars Ore Line - - // Multiblock - - event.shaped('tfg:ostrum_linear_accelerator', [ - 'USU', - 'WZW', - 'PTP' + // the recycling fix only works if the addMaterialInfo() is on the shaped recipe, NOT the assembler + removeMaceratorRecipe(event, 'macerate_palladium_substation') + event.recipes.gtceu.shaped('gtceu:palladium_substation', [ + 'AAA', + ' B ', + 'AAA' ], { - S: 'tfg:casings/machine_casing_vacuum_engine_intake', - Z: 'gtceu:iv_machine_hull', - W: '#gtceu:circuits/iv', - U: '#forge:double_plates/stellite_100', - T: '#forge:single_cables/platinum', - P: 'gtceu:iv_electric_pump' - } - ).id('tfg:shaped/ostrum_linear_accelerator') + A: ChemicalHelper.get(TagPrefix.plate, GTMaterials.Palladium, 1), + B: ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Ultimet, 1) + }).addMaterialInfo().id('tfg:shaped/casing_palladium_substation') - event.recipes.gtceu.assembler('tfg:ostrum_harvester') + event.recipes.gtceu.assembler('casing_palladium_substation') .itemInputs( - '1x gtceu:ev_machine_hull', - '4x #gtceu:circuits/ev', - '4x gtceu:ev_electric_motor', - '4x #forge:rotors/black_steel', - '4x gtceu:ev_electric_pump', - '4x #forge:gears/desh') - .itemOutputs('gtceu:ostrum_harvester') - .duration(400) - .EUt(GTValues.VA[GTValues.EV]) - .circuit(2) + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Palladium, 6), + ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Ultimet, 1) + ) + .itemOutputs('gtceu:palladium_substation') + .duration(20 * 2.5) + .circuit(6) + .EUt(GTValues.VA[GTValues.LV]) - event.recipes.gtceu.assembler('tfg:moon_dust_harvester') - .itemInputs( - '1x gtceu:hv_machine_hull', - '4x #gtceu:circuits/hv', - '4x gtceu:hv_electric_motor', - '4x #forge:rotors/titanium', - '4x gtceu:hv_electric_pump', - '4x #forge:gears/rocket_alloy_t1') - .itemOutputs('gtceu:moon_dust_harvester') - .duration(400) - .EUt(GTValues.VA[GTValues.HV]) - .circuit(2) - - // Vacuum Intake - - event.shaped('tfg:casings/machine_casing_vacuum_engine_intake', [ - 'USU', - 'WZW', - 'UTU' + + removeMaceratorRecipe(event, 'macerate_power_substation') + event.recipes.gtceu.shaped('gtceu:power_substation', [ + 'ABA', + 'CDC', + 'ABA' ], { - S: '#forge:tools/hammers', - T: '#forge:tools/wrenches', - W: '#forge:rotors/ultimet', - U: 'gtceu:ultimet_normal_item_pipe', - Z: 'gtceu:inert_machine_casing' - }).id('tfg:shaped/casing_machine_casing_vacuum_engine_intake') - - event.recipes.gtceu.assembler('tfg:casings/machine_casing_vacuum_engine_intake') - .itemInputs( - '2x #forge:rotors/ultimet', - '4x gtceu:ultimet_normal_item_pipe', - '1x gtceu:inert_machine_casing') - .itemOutputs('tfg:casings/machine_casing_vacuum_engine_intake') - .duration(50) - .EUt(GTValues.VH[GTValues.LV]) - .circuit(2) - - // Stainless Evaporation Tower - - event.recipes.gtceu.shaped('tfg:evaporation_tower', [ - 'TUT', - 'WZW', - 'TUT' - ], { - T: '#gtceu:circuits/iv', - W: 'gtceu:ev_electric_pump', - U: '#forge:double_wires/nichrome', - Z: 'gtceu:ev_machine_hull' - }).addMaterialInfo().id('tfg:shaped/evaporation_tower') - - //#endregion - - //#region Nuclear Controler - - event.shaped('deafission:fission_reactor_mk1', [ - 'TUT', - 'WZW', - 'TUT' - ], { - T: 'gtceu:atomic_casing', - W: '#gtceu:circuits/ev', - U: 'gtceu:hv_field_generator', - Z: 'gtceu:ev_machine_hull' - } - ).id('tfg:shaped/fission_reactor_mk1') - - event.shaped('gtceu:nuclear_fuel_factory', [ - 'TUT', - 'WZW', - 'TBT' - ], { - T: 'gtceu:atomic_casing', - W: '#gtceu:circuits/ev', - U: 'gtceu:ev_emitter', - Z: 'gtceu:ev_machine_hull', - B: 'gtceu:ev_robot_arm' - } - ).id('tfg:shaped/nuclear_fuel_factory') - - event.shaped('gtceu:heat_exchanger', [ - 'TUT', - 'WZW', - 'GBG' - ], { - T: 'gtceu:high_temperature_smelting_casing', - W: '#gtceu:circuits/ev', - U: 'gtceu:ev_sensor', - Z: 'gtceu:ev_machine_hull', - B: 'gtceu:ev_fluid_regulator', - G: '#forge:gears/ostrum_iodide' - } - ).id('tfg:shaped/heat_exchanger') - - event.shaped('tfg:nuclear_turbine', [ - 'CTC', - 'TZT', - 'BTB' - ], { - T: '#forge:gears/magnalium', - Z: 'gtceu:ev_machine_hull', - B: 'gtceu:ultimet_large_item_pipe', - C: '#gtceu:circuits/ev' - } - ).id('tfg:shaped/nuclear_turbine') - + A: 'gtceu:lapotron_crystal', + B: 'gtceu:mpic_chip', + C: '#gtceu:circuits/ev', + D: 'gtceu:palladium_substation' + }).addMaterialInfo().id('gtceu:shaped/power_substation') } diff --git a/kubejs/server_scripts/gregtech/recipes.recycling.js b/kubejs/server_scripts/gregtech/recipes.recycling.js index 2e398078b..925f5f08f 100644 --- a/kubejs/server_scripts/gregtech/recipes.recycling.js +++ b/kubejs/server_scripts/gregtech/recipes.recycling.js @@ -140,25 +140,103 @@ function registerGTCEURecyclingRecipes(event) { .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) .EUt(GTValues.VA[GTValues.LV]) + // #region Fix TFC hanging sign metal dupe for Macerator and Arc Furnace - // Clean Foil pack - event.recipes.gtceu.macerator('gtceu:macerator/recycling/clean_foil_pack') - .itemInputs('tfg:clean_foil_pack') - .itemOutputs( - ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Aluminium, 1), - ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Polyethylene, 1) - ) - .duration(GTMaterials.Aluminium.getMass() * 1) - .category(GTRecipeCategories.MACERATOR_RECYCLING) - .EUt(GTValues.VA[GTValues.ULV]) + const SIGN_METALS = [ + GTMaterials.Copper, + GTMaterials.Bronze, + GTMaterials.BlackBronze, + GTMaterials.BismuthBronze, + GTMaterials.WroughtIron, + GTMaterials.Steel, + GTMaterials.BlackSteel, + GTMaterials.RedSteel, + GTMaterials.BlueSteel + ]; - event.recipes.gtceu.arc_furnace('gtceu:arc_furnace/recycling/clean_foil_pack') - .itemInputs('tfg:clean_foil_pack') - .itemOutputs( - ChemicalHelper.get(TagPrefix.nugget, GTMaterials.Aluminium, 2), - ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Ash, 1) - ) - .duration(GTMaterials.Aluminium.getMass() * 1) - .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) - .EUt(GTValues.VA[GTValues.LV]) + SIGN_METALS.forEach(metal => { + // Arc furnace + global.TFC_WOOD_TYPES.forEach(wood => { + event.remove(`gtceu:arc_furnace/arc_wood/hanging_sign/${metal.getName()}/${wood}`) + event.recipes.gtceu.arc_furnace(`gtceu:arc_furnace/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + .itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`) + .itemOutputs('gtceu:tiny_ash_dust') + .chancedOutput(ChemicalHelper.get(TagPrefix.nugget, metal, 1), 3750, 0) + .inputFluids(Fluid.of('gtceu:oxygen', 12)) + .duration(12) + .EUt(30) + .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) + }) + + global.AFC_WOOD_TYPES.forEach(wood => { + event.recipes.gtceu.arc_furnace(`gtceu:arc_furnace/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + .itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`) + .itemOutputs('gtceu:tiny_ash_dust') + .chancedOutput(ChemicalHelper.get(TagPrefix.nugget, metal, 1), 3750, 0) + .inputFluids(Fluid.of('gtceu:oxygen', 12)) + .duration(12) + .EUt(30) + .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) + }) + + // Macerator + global.TFC_HARDWOOD_TYPES.forEach(wood => { + removeMaceratorRecipe(event, `macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + .itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`) + .itemOutputs('gtceu:hardwood_dust') + .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) + .duration(108) + .EUt(8) + .category(GTRecipeCategories.MACERATOR_RECYCLING) + }) + + global.TFC_SOFTWOOD_TYPES.forEach(wood => { + removeMaceratorRecipe(event, `macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + .itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`) + .itemOutputs('gtceu:wood_dust') + .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) + .duration(108) + .EUt(8) + .category(GTRecipeCategories.MACERATOR_RECYCLING) + }) + + global.AFC_HARDWOOD_TYPES.forEach(wood => { + event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + .itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`) + .itemOutputs('gtceu:hardwood_dust') + .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) + .duration(108) + .EUt(8) + .category(GTRecipeCategories.MACERATOR_RECYCLING) + }) + + global.AFC_SOFTWOOD_TYPES.forEach(wood => { + event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + .itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`) + .itemOutputs('gtceu:wood_dust') + .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) + .duration(108) + .EUt(8) + .category(GTRecipeCategories.MACERATOR_RECYCLING) + }) + }) + // #endregion + + //#region support recycling + event.recipes.gtceu.macerator(`hardwood_support_to_dust`) + .itemInputs('#tfg:hardwood_supports') + .itemOutputs('gtceu:hardwood_dust') + .duration(150) + .EUt(2) + .category(GTRecipeCategories.MACERATOR_RECYCLING); + + event.recipes.gtceu.macerator(`softwood_support_to_dust`) + .itemInputs('#tfg:softwood_supports') + .itemOutputs('gtceu:wood_dust') + .duration(150) + .EUt(2) + .category(GTRecipeCategories.MACERATOR_RECYCLING); + //#endregion } \ No newline at end of file diff --git a/kubejs/server_scripts/gregtech/recipes.removes.js b/kubejs/server_scripts/gregtech/recipes.removes.js index c84170b41..6377deb5c 100644 --- a/kubejs/server_scripts/gregtech/recipes.removes.js +++ b/kubejs/server_scripts/gregtech/recipes.removes.js @@ -691,6 +691,8 @@ function removeGTCEURecipes(event) { //event.remove({ id: 'gtceu:distillation_tower/distill_liquid_nether_air' }) event.remove({ id: 'gtceu:centrifuge/decomposition_centrifuging__fireclay' }) + event.remove({ id: 'gtceu:arc_furnace/arc_firebricks' }) + event.remove({ id: 'gtceu:macerator/macerate_firebricks' }) event.remove({ id: 'gtceu:centrifuge/decomposition_centrifuging__ender_eye' }) event.remove({ id: 'gtceu:smelting/sticky_resin_from_slime' }) @@ -815,6 +817,13 @@ function removeGTCEURecipes(event) { event.remove({ id: 'gtceu:ore_washer/wash_plutonium_pure_dust_to_dust' }) event.remove({ id: 'gtceu:ore_washer/wash_plutonium_dirty_dust_to_dust' }) event.remove({ id: 'gtceu:forge_hammer/hammer_plutonium_refined_ore_to_dust' }) + + + event.remove({ id: 'gtceu:electrolyzer/decomposition_electrolyzing_chromatic_compound' }); + + + event.remove({ id: 'gtceu:chemical_reactor/soda_ash_from_carbon_dioxide' }) + event.remove({ id: 'gtceu:large_chemical_reactor/soda_ash_from_carbon_dioxide' }) } function removeMaceratorRecipe(event, id) { diff --git a/kubejs/server_scripts/gregtech/tags.js b/kubejs/server_scripts/gregtech/tags.js index c121d87d8..da08ef709 100644 --- a/kubejs/server_scripts/gregtech/tags.js +++ b/kubejs/server_scripts/gregtech/tags.js @@ -13,10 +13,6 @@ function registerGTCEUItemTags(event) { event.add("c:hidden_from_recipe_viewers", item); }); - global.GTCEU_ARMORS.forEach((item) => { - event.add("minecraft:trimmable_armor", item); - }); - // ะ”ะพะฑะฐะฒะปะตะฝะธะต ั‚ะตะณะฐ EMI ะดะปั ัะบั€ั‹ั‚ะธั ะฒัะตั… ั€ัƒะด event.add("c:hidden_from_recipe_viewers", "#forge:ores"); @@ -25,20 +21,10 @@ function registerGTCEUItemTags(event) { event.remove("minecraft:planks", "gtceu:wood_plate"); - event.add("tfg:sugars", "minecraft:sugar"); - event.add("tfg:sugars", "afc:birch_sugar"); - event.add("tfg:sugars", "afc:maple_sugar"); - global.MINECRAFT_DYE_NAMES.forEach((dyeName) => { event.remove("ae2:p2p_attunements/fluid_p2p_tunnel", `gtceu:${dyeName}_dye_bucket`); }); - // Piglin loved - event.add("minecraft:piglin_loved", "gtceu:tiny_pyrite_dust"); - event.add("minecraft:piglin_loved", "gtceu:poor_raw_pyrite"); - event.add("minecraft:piglin_loved", "gtceu:raw_pyrite"); - event.add("minecraft:piglin_loved", "gtceu:rich_raw_pyrite"); - event.remove("forge:gems", "gtceu:coke_gem"); // Rose Quartz Lens @@ -58,7 +44,6 @@ function registerGTCEUItemTags(event) { // @ts-expect-error According to KJS docs adding tags to tags is supported. event.add("gtceu:molds", "#gtceu:casting_molds", "#gtceu:extruder_molds", "gtceu:empty_mold"); - event.add('forge:wax', 'gtceu:wax_dust'); } /** @param {TagEvent.Block} event */ @@ -68,22 +53,8 @@ function registerGTCEUBlockTags(event) { event.removeAllTagsFrom(item); }); - event.add("minecraft:mineable/pickaxe", "#forge:ores"); - event.add("minecraft:needs_iron_tool", "#forge:ores"); - event.add('gtceu:mineable/pickaxe_or_wrench', 'gtceu:ulv_hermetic_casing'); - // Collapse tags - event.add("tfc:can_collapse", "#forge:ores"); - event.add("tfc:can_start_collapse", "#forge:ores"); - event.add("tfc:can_trigger_collapse", "#forge:ores"); - event.add("c:hidden_from_recipe_viewers", "#forge:ores"); - - event.add("tfc:can_collapse", "#forge:raw_ore_blocks"); - event.add("tfc:can_start_collapse", "#forge:raw_ore_blocks"); - event.add("tfc:can_trigger_collapse", "#forge:raw_ore_blocks"); - event.add("c:hidden_from_recipe_viewers", "#forge:raw_ore_blocks"); - event.remove("gtceu:cleanroom_doors", "#minecraft:wooden_doors"); event.add("gtceu:cleanroom_doors", "firmalife:sealed_door"); event.add("gtceu:cleanroom_doors", "firmalife:iron_greenhouse_door"); @@ -105,27 +76,6 @@ function registerGTCEUBlockTags(event) { event.add("gtceu:cleanroom_doors", "createdeco:zinc_door"); event.add("gtceu:cleanroom_doors", "createdeco:locked_zinc_door"); event.add("gtceu:cleanroom_doors", "ad_astra:steel_door"); - - // Let GT indicators be covered by snow - forEachMaterial((material) => { - if (material.hasProperty(PropertyKey.ORE)) { - const indicator = `gtceu:${material.getName()}_indicator`; - - event.add("tfg:dust_ore_indicators", indicator); - event.add("tfc:can_be_snow_piled", indicator); - event.add("tfc:can_be_ice_piled", indicator); - - if (material.hasProperty(PropertyKey.GEM)) { - const bud = `gtceu:${material.getName()}_bud_indicator`; - - event.add("tfg:bud_ore_indicators", bud); - event.add("tfc:can_be_snow_piled", bud); - event.add("tfc:can_be_ice_piled", bud); - - event.add("minecraft:mineable/pickaxe", bud); - } - } - }); } /** @param {TagEvent.Fluid} event */ diff --git a/kubejs/server_scripts/handglider/recipes.js b/kubejs/server_scripts/handglider/recipes.js index 1cc17225b..94ca53617 100644 --- a/kubejs/server_scripts/handglider/recipes.js +++ b/kubejs/server_scripts/handglider/recipes.js @@ -4,6 +4,8 @@ const registerHandGliderRecipes = (event) => { event.remove({id: 'hangglider:glider_framework'}) + event.remove({id: 'hangglider:reinforced_hang_glider'}) + // Glider Framework event.shaped('hangglider:glider_framework', [ 'AAA', @@ -16,6 +18,7 @@ const registerHandGliderRecipes = (event) => { D: '#forge:rings' }).id('hangglider:shaped/glider_framework') + // Glider Wing event.shaped('hangglider:glider_wing', [ ' C', ' BA', @@ -25,4 +28,53 @@ const registerHandGliderRecipes = (event) => { B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.WroughtIron, 1), C: '#forge:rings' }).id('hangglider:shaped/glider_wing') -} \ No newline at end of file + + //Reinforced Hang Glider Stuff + event.shaped('hangglider:reinforced_hang_glider', [ + ' A ', + 'ABA', + ' C ' + ], { + A: 'sns:reinforced_fabric', + B: 'hangglider:hang_glider', + C: '#forge:rods/long/aluminium' + }).id('hangglider:shaped/reinforced_hang_glider') + + event.shaped('hangglider:reinforced_hang_glider', [ + ' A ', + ' B ', + ' C ' + ], { + A: '#tfg:lightweight_cloth', + B: 'hangglider:hang_glider', + C: '#forge:rods/long/aluminium' + }).id('hangglider:shaped/reinforced_hang_glider2') + + event.recipes.gtceu.assembler('tfg:hand_glider/reinforced_hang_glider') + .itemInputs('3x sns:reinforced_fabric', '1x hangglider:hang_glider', '1x #forge:rods/long/aluminium') + .circuit(3) + .itemOutputs(Item.of('hangglider:reinforced_hang_glider', "{Damage:0}")) + .duration(1200) + .EUt(30) + + event.recipes.gtceu.assembler('tfg:hand_glider/reinforced_hang_glider2') + .itemInputs('1x #tfg:lightweight_cloth', '1x hangglider:hang_glider', '1x #forge:rods/long/aluminium') + .circuit(3) + .itemOutputs(Item.of('hangglider:reinforced_hang_glider', "{Damage:0}")) + .duration(600) + .EUt(30) + + event.recipes.gtceu.assembler('tfg:hang_glider/reinforced_hang_glider_repairing') + .itemInputs('3x sns:reinforced_fabric', 'hangglider:reinforced_hang_glider') + .circuit(3) + .itemOutputs(Item.of('hangglider:reinforced_hang_glider', "{Damage:0}")) + .duration(800) + .EUt(30) + + event.recipes.gtceu.assembler('tfg:hang_glider/reinforced_hang_glider_repairing2') + .itemInputs('1x #tfg:lightweight_cloth', 'hangglider:reinforced_hang_glider') + .circuit(3) + .itemOutputs(Item.of('hangglider:reinforced_hang_glider', "{Damage:0}")) + .duration(400) + .EUt(30) +} diff --git a/kubejs/server_scripts/immersive_aircraft/recipes.js b/kubejs/server_scripts/immersive_aircraft/recipes.js index d31b3cb42..e66a4cf66 100644 --- a/kubejs/server_scripts/immersive_aircraft/recipes.js +++ b/kubejs/server_scripts/immersive_aircraft/recipes.js @@ -872,4 +872,52 @@ function registerImmersiveAircraftRecipes(event) { }).id('tfg:immersive_aircraft/mechanical_crafter/bamboo_hopper') //#endregion + + // Custom stuff + + //Scaffolding Frame + event.shaped('tfg:scaffolding_frame', + [ + ' A ', + 'ABA', + ' A ' + ], + { + A: '#forge:rods/wood', + B: '#forge:cloth' + }).id('tfg:shaped/scaffolding_frame'); + + //Airship Hull + event.shaped('tfg:airship_hull', [ + 'A B', + 'C C', + 'CCC' + ], { + A: '#forge:tools/screwdrivers', + B: '#forge:tools/hammers', + C: 'immersive_aircraft:hull' + }).id('tfg:shaped/airship_hull'); + event.recipes.gtceu.assembler('tfg:assembler/airship_hull') + .itemInputs('5x immersive_aircraft:hull') + .itemOutputs('tfg:airship_hull') + .duration(40) + .circuit(1) + .EUt(GTValues.VA[GTValues.ULV]); + + //Airship Balloon + event.shaped('tfg:airship_balloon', [ + 'ABA', + 'BAB', + 'ABA' + ], { + A: '#forge:string', + B: 'immersive_aircraft:sail' + }).id('tfg:shaped/airship_balloon') + + event.recipes.gtceu.assembler('tfg:assembler/airship_balloon') + .itemInputs('4x immersive_aircraft:sail', '4x #forge:string') + .itemOutputs('tfg:airship_balloon') + .duration(40) + .circuit(1) + .EUt(GTValues.VA[GTValues.ULV]) } \ No newline at end of file diff --git a/kubejs/server_scripts/main_server_script.js b/kubejs/server_scripts/main_server_script.js index ea9c4e1bc..ac9749489 100644 --- a/kubejs/server_scripts/main_server_script.js +++ b/kubejs/server_scripts/main_server_script.js @@ -13,7 +13,6 @@ ServerEvents.tags('item', event => { registerAlekishipsItemTags(event) registerAsticorCartsItemTags(event) registerBeneathItemTags(event) - registerBetterEndItemTags(event) registerChalkItemTags(event); registerComputerCraftItemTags(event) registerConstructionWandItemTags(event) @@ -50,7 +49,6 @@ ServerEvents.tags('item', event => { registerSNSItemTags(event) registerSpeciesItemTags(event) registerTACZItemTags(event) - registerTFCAmbientalItemTags(event) registerTFCItemTags(event) registerTFCTextileItemTags(event) registerTFGItemTags(event) @@ -125,20 +123,17 @@ ServerEvents.tags('worldgen/placed_feature', event => { // Remove default veins event.removeAll('tfc:in_biome/veins') - registerAdAstraPlacedFeatures(event) - registerTFCPlacedFeatures(event) registerTFGPlacedFeatures(event) }) ServerEvents.tags('worldgen/biome', event => { registerAdAstraBiomeTags(event) registerCreatePickyWheelsBiomeTags(event) - registerTFCBiomeTags(event) registerTFGBiomeTags(event) }) ServerEvents.tags('entity_type', event => { - registerAdAstraEntityTypeTags(event) + registerTFGEntityTypeTags(event) registerWABEntityTypeTags(event) }) @@ -180,7 +175,7 @@ TFCEvents.data(event => { */ LootJS.modifiers((event) => { registerAdAstraLoots(event) - registerGTCEULoots(event) + registerTFGOreLoots(event) registerLootrLoots(event) registerPrimitiveCreaturesLoots(event) registerSpeciesLoots(event) @@ -216,7 +211,6 @@ ServerEvents.recipes(event => { registerAE2NetworkAnalyzerRecipes(event) registerAE2WTLibRecipes(event) registerBeneathRecipes(event) - registerBetterEndRecipes(event) registerBuildingGadgetsRecipes(event) registerChalkRecipes(event); registerComfortsRecipes(event); diff --git a/kubejs/server_scripts/minecraft/recipes.js b/kubejs/server_scripts/minecraft/recipes.js index d137c331b..acfe66bc3 100644 --- a/kubejs/server_scripts/minecraft/recipes.js +++ b/kubejs/server_scripts/minecraft/recipes.js @@ -10,26 +10,6 @@ const registerMinecraftRecipes = (event) => { removeMinecraftRecipes(event) registerMinecraftDyeRecipes(event) - //#region ะ’ั‹ั…ะพะด: ะ—ะตะผะปั, dirt - - event.recipes.gtceu.macerator('dirt_from_bio_chaff') - .itemInputs('gtceu:bio_chaff') - .itemOutputs('tfc:dirt/loam') - .duration(300) - .EUt(4) - - //#endregion - - //#region ะ’ั‹ั…ะพะด: ะกั‚ะตะบะปะพ, glass - - event.recipes.gtceu.arc_furnace('glass_from_sand') - .itemInputs('#forge:sand') - .itemOutputs('2x minecraft:glass') - .duration(20) - .EUt(30) - - //#endregion - //#region ะ”ะพะฑะฐะฒะปะตะฝะธะต, copper for (let i = 0; i < global.MINECRAFT_COPPER_BLOCKS_RECIPE_COMPONENTS.length; i++) { @@ -142,48 +122,6 @@ const registerMinecraftRecipes = (event) => { //#endregion - //#region ะ’ั‹ั…ะพะด: ะ‘ัƒะผะฐะณะฐ, paper - - event.recipes.gtceu.chemical_bath('paper_from_papyrus_distilled') - .itemInputs('tfc:papyrus') - .inputFluids(Fluid.of('gtceu:distilled_water', 100)) - .itemOutputs('4x tfc:soaked_papyrus_strip') - .duration(100) - .EUt(7) - - event.recipes.gtceu.chemical_bath('paper_from_papyrus') - .itemInputs('tfc:papyrus') - .inputFluids("#tfg:clean_water 100") - .itemOutputs('4x tfc:soaked_papyrus_strip') - .duration(100) - .EUt(7) - - event.recipes.gtceu.assembler('papyrus_strips') - .itemInputs('4x tfc:soaked_papyrus_strip') - .itemOutputs('minecraft:paper') - .circuit(1) - .duration(100) - .EUt(7) - - //#endregion - - //#region ะ’ั‹ั…ะพะด: ะกะฐั…ะฐั€, sugar - - event.recipes.gtceu.centrifuge('sugar_from_sugarcane') - .itemInputs('tfc:food/sugarcane') - .inputFluids("#tfg:clean_water 600") - .itemOutputs('minecraft:sugar', 'gtceu:plant_ball') - .duration(800) - .EUt(6) - - event.recipes.gtceu.centrifuge('sugar_from_honey') - .itemInputs('firmalife:raw_honey') - .itemOutputs('minecraft:sugar') - .duration(400) - .EUt(6) - - //#endregion - //#region ะ’ั‹ั…ะพะด: ะ‘ะปะพะบ ัะตะฝะฐ, hay block event.recipes.gtceu.packer('hay_block') @@ -823,7 +761,6 @@ const registerMinecraftRecipes = (event) => { //#region ะ’ั‹ั…ะพะด: ะญะปะธั‚ั€ะฐ, elytra - // ะัƒ ะธ ั…ะตั€ัŒ ั ะฟั€ะธะดัƒะผะฐะป, here's some bullshit i came up with event.recipes.gtceu.assembler('tfg:minecraft/elytra') .itemInputs('16x tfg:polycaprolactam_fabric', '16x #forge:foils/aluminium', '8x tfg:phantom_silk', '4x #forge:rings/aluminium', '2x #forge:rods/long/vanadium_steel', '2x #forge:small_springs/aluminium', '1x #forge:small_gears/aluminium') .circuit(4) @@ -861,16 +798,6 @@ const registerMinecraftRecipes = (event) => { //#endregion - //#region Glowstone - - event.recipes.gtceu.mixer('gtceu:lv_glowstone') - .itemInputs('gtceu:gold_dust', 'minecraft:redstone', 'gtceu:sulfur_dust') - .itemOutputs('2x minecraft:glowstone_dust') - .circuit(8) - .duration(1200) - .EUt(30) - - //#endregion //#region Netherite leggings (for the lavaproof diving set) @@ -931,14 +858,6 @@ const registerMinecraftRecipes = (event) => { generateCutterRecipe(event, '#forge:double_plates/wrought_iron', 'minecraft:iron_door', 400, GTValues.VA[GTValues.LV], 'iron_door') - event.shaped('8x minecraft:ladder', [ - 'A A', - 'AAA', - 'A A' - ], { - A: '#forge:rods/wooden' - }).id('gtceu:shaped/ladder') - // #endregion // #region Calcite @@ -1018,19 +937,6 @@ const registerMinecraftRecipes = (event) => { event.smelting('tfc:glue', 'minecraft:magma_cream') .id('tfg:smelting/magma_cream_to_glue') - //#region Clay - event.shaped('minecraft:clay', [ - 'AA', - 'AA' - ], { - A: 'minecraft:clay_ball' - }) - .id('tfg:shaped/clay_balls_to_block') - - event.shapeless('4x minecraft:clay_ball', ['minecraft:clay']) - .id('tfg:shapeless/clay_block_to_balls') - - //#endregion //#region Mushrooms diff --git a/kubejs/server_scripts/minecraft/tags.js b/kubejs/server_scripts/minecraft/tags.js index fb4f5c00f..938e0be90 100644 --- a/kubejs/server_scripts/minecraft/tags.js +++ b/kubejs/server_scripts/minecraft/tags.js @@ -26,67 +26,15 @@ const registerMinecraftItemTags = (event) => { event.add('tfg:bamboo_slabs', 'minecraft:bamboo_mosaic_slab') event.remove('minecraft:creeper_drop_music_discs', ['minecraft:music_disc_11']) - event.add('tfc:foods', 'minecraft:red_mushroom') - event.add('tfc:foods', 'minecraft:brown_mushroom') - event.add('tfc:foods', 'minecraft:glow_berries') - event.add('tfc:foods', 'minecraft:chorus_fruit') - event.add('tfc:foods', 'minecraft:popped_chorus_fruit') - - event.add('tfc:foods/vegetables', 'minecraft:red_mushroom') - event.add('tfc:foods/vegetables', 'minecraft:brown_mushroom') - event.add('tfc:foods/fruits', 'minecraft:glow_berries') - event.add('tfc:foods/fruits', 'minecraft:chorus_fruit') - event.add('tfc:foods/fruits', 'minecraft:popped_chorus_fruit') - - event.add('beneath:usable_in_juicer', 'minecraft:glow_berries') - event.add('beneath:usable_in_juicer', 'minecraft:chorus_fruit') - event.add('beneath:usable_in_juicer', 'minecraft:red_mushroom') - event.add('beneath:usable_in_juicer', 'minecraft:brown_mushroom') - - event.add('tfc:foods/usable_in_soup', 'minecraft:red_mushroom') - event.add('tfc:foods/usable_in_soup', 'minecraft:brown_mushroom') - event.add('tfc:foods/usable_in_soup', 'minecraft:glow_berries') - event.add('tfc:foods/usable_in_soup', 'minecraft:chorus_fruit') - event.add('tfc:foods/usable_in_soup', 'minecraft:popped_chorus_fruit') - - event.add('tfc:foods/usable_in_salad', 'minecraft:red_mushroom') - event.add('tfc:foods/usable_in_salad', 'minecraft:brown_mushroom') - event.add('tfc:foods/usable_in_salad', 'minecraft:glow_berries') - event.add('tfc:foods/usable_in_salad', 'minecraft:chorus_fruit') - event.add('tfc:foods/usable_in_salad', 'minecraft:popped_chorus_fruit') - - event.add('tfc:rabbit_food', 'minecraft:chorus_fruit') - event.add('tfc:rabbit_food', 'minecraft:popped_chorus_fruit') - - event.add('tfc:rock/raw', 'minecraft:deepslate') - event.add('tfc:rock/raw', 'minecraft:blackstone') - event.add('tfc:rock/raw', 'minecraft:dripstone_block') event.remove('forge:gems', 'minecraft:charcoal') event.remove('forge:gems', 'minecraft:coal') event.remove('forge:gems', 'minecraft:flint') - event.add('tfc:compost_greens', 'minecraft:red_mushroom_block') - event.add('tfc:compost_greens', 'minecraft:brown_mushroom_block') - event.add('tfc:compost_greens', 'minecraft:mushroom_stem') - event.add('tfc:compost_greens', 'minecraft:moss_block') - event.add('tfc:compost_greens_low', 'minecraft:moss_carpet') - event.add('tfc:compost_greens_low', 'minecraft:twisting_vines') - event.add('tfc:compost_greens_high', 'minecraft:pearlescent_froglight') - event.add('tfc:compost_greens_high', 'minecraft:verdant_froglight') - event.add('tfc:compost_greens_high', 'minecraft:ochre_froglight') - //event.add('tfc:moss', 'minecraft:moss_carpet') - event.remove('createaddition:plants', 'minecraft:moss_carpet') - event.add('tfc:colored_terracotta', 'minecraft:white_terracotta') event.add('tfc:bells', 'minecraft:bell') - event.add('tfc:plants', 'minecraft:spore_blossom') - - event.add('tfc:compost_greens', 'minecraft:nether_wart_block') - event.add('tfc:compost_greens', 'minecraft:warped_wart_block') - event.add('tfc:hematitic_sand', 'minecraft:red_sand') event.add('tfc:makes_black_dye', 'minecraft:ink_sac') @@ -95,13 +43,6 @@ const registerMinecraftItemTags = (event) => { event.add('create:blaze_burner_fuel/regular', 'minecraft:coal') event.add('create:blaze_burner_fuel/regular', 'minecraft:charcoal') - event.add('minecraft:wart_blocks', 'minecraft:mushroom_stem') - - event.add('forge:smooth_stone_slab', 'minecraft:polished_deepslate_slab') - event.add('forge:smooth_stone_slab', 'minecraft:polished_blackstone_slab') - event.add('forge:smooth_stone_slab', 'minecraft:polished_blackstone_brick_slab') - - event.add('tfc:rock/smooth', 'minecraft:smooth_stone') } const registerMinecraftBlockTags = (event) => { @@ -115,98 +56,4 @@ const registerMinecraftBlockTags = (event) => { // ะขะตะฟะตั€ัŒ ะพะฑัะธะดะธะฐะฝ ัั‚ะพั€ะฐะดะถ ะฑะปะพะบ event.add('forge:storage_blocks/obsidian', 'minecraft:obsidian') - //#region Nether blocks - - event.add('tfg:lush_ground_replaceable', 'minecraft:deepslate') - event.add('tfg:lush_ground_replaceable', 'minecraft:blackstone') - - event.add('tfc:rock/raw', 'minecraft:deepslate') - event.add('tfc:rock/raw', 'minecraft:blackstone') - event.add('tfc:rock/raw', 'minecraft:dripstone_block') - event.add('forge:cobblestone/normal', 'minecraft:cobbled_deepslate') - event.add('minecraft:lush_ground_replaceable', 'minecraft:blackstone') - event.add('beneath:nether_bush_plantable_on', 'minecraft:blackstone') - event.add('beneath:nether_bush_plantable_on', 'minecraft:deepslate') - event.add('beneath:nether_bush_plantable_on', 'minecraft:moss_block') - event.add('beneath:nether_bush_plantable_on', 'minecraft:dripstone_block') - event.add('minecraft:nether_carver_replaceables', 'minecraft:blackstone') - event.add('minecraft:nether_carver_replaceables', 'minecraft:deepslate') - event.add('minecraft:nether_carver_replaceables', 'minecraft:dripstone_block') - event.add('minecraft:frogs_spawnable_on', 'minecraft:deepslate') - event.add('minecraft:frogs_spawnable_on', 'minecraft:blackstone') - event.add('minecraft:frogs_spawnable_on', 'minecraft:dripstone_block') - event.add('minecraft:axolotls_spawnable_on', 'minecraft:deepslate') - event.add('minecraft:axolotls_spawnable_on', 'minecraft:dripstone_block') - event.add('tfc:grass_plantable_on', 'minecraft:moss_block') - event.add('tfc:creeping_plantable_on', 'minecraft:moss_block') - event.add('tfc:creeping_plantable_on', 'minecraft:deepslate') - event.add('tfc:creeping_plantable_on', 'minecraft:blackstone') - event.add('tfc:creeping_stone_plantable_on', 'minecraft:moss_block') - event.add('tfc:creeping_stone_plantable_on', 'minecraft:deepslate') - event.add('tfc:creeping_stone_plantable_on', 'minecraft:blackstone') - event.add('minecraft:base_stone_nether', 'minecraft:deepslate') - event.add('minecraft:base_stone_nether', 'minecraft:blackstone') - event.add('minecraft:base_stone_nether', 'minecraft:dripstone_block') - event.add('forge:stone', 'minecraft:blackstone') - - event.add('tfc:can_landslide', 'minecraft:cobbled_deepslate') - - event.add('tfc:breaks_when_isolated', 'minecraft:deepslate') - event.add('tfc:breaks_when_isolated', 'minecraft:blackstone') - event.add('tfc:breaks_when_isolated', 'minecraft:gilded_blackstone') - event.add('tfc:breaks_when_isolated', 'minecraft:dripstone_block') - - event.add('tfg:rock_stairs', 'minecraft:cobbled_deepslate_stairs') - event.add('tfg:rock_slabs', 'minecraft:cobbled_deepslate_slab') - event.add('tfg:rock_walls', 'minecraft:cobbled_deepslate_wall') - event.add('tfg:brick_stairs', 'minecraft:deepslate_brick_stairs') - event.add('tfg:brick_slabs', 'minecraft:deepslate_brick_slab') - event.add('tfg:brick_walls', 'minecraft:deepslate_brick_wall') - event.add('tfg:brick_stairs', 'minecraft:deepslate_tile_stairs') - event.add('tfg:brick_slabs', 'minecraft:deepslate_tile_slab') - event.add('tfg:brick_walls', 'minecraft:deepslate_tile_wall') - event.add('tfg:rock_stairs', 'minecraft:blackstone_stairs') - event.add('tfg:rock_slabs', 'minecraft:blackstone_slab') - event.add('tfg:rock_walls', 'minecraft:blackstone_wall') - event.add('tfg:brick_stairs', 'minecraft:blackstone_stairs') - event.add('tfg:brick_slabs', 'minecraft:blackstone_slab') - event.add('tfg:brick_walls', 'minecraft:blackstone_wall') - - event.add('tfc:bloomery_insulation', 'minecraft:polished_deepslate'); - event.add('tfc:forge_insulation', 'minecraft:polished_deepslate'); - event.add('tfc:bloomery_insulation', 'minecraft:polished_blackstone'); - event.add('tfc:forge_insulation', 'minecraft:polished_blackstone'); - event.add('tfc:bloomery_insulation', 'minecraft:deepslate_tiles'); - event.add('tfc:forge_insulation', 'minecraft:deepslate_tiles'); - event.add('tfc:bloomery_insulation', 'minecraft:cracked_deepslate_tiles'); - event.add('tfc:forge_insulation', 'minecraft:cracked_deepslate_tiles'); - event.add('tfc:bloomery_insulation', 'minecraft:chiseled_deepslate'); - event.add('tfc:forge_insulation', 'minecraft:chiseled_deepslate'); - event.add('tfc:bloomery_insulation', 'minecraft:chiseled_polished_blackstone'); - event.add('tfc:forge_insulation', 'minecraft:chiseled_polished_blackstone'); - event.add('tfc:bloomery_insulation', 'minecraft:gilded_blackstone'); - event.add('tfc:forge_insulation', 'minecraft:gilded_blackstone'); - event.add('tfc:bloomery_insulation', 'minecraft:basalt'); - event.add('tfc:forge_insulation', 'minecraft:basalt'); - event.add('tfc:bloomery_insulation', 'minecraft:smooth_basalt'); - event.add('tfc:forge_insulation', 'minecraft:smooth_basalt'); - - event.add('minecraft:mineable/pickaxe', 'minecraft:lantern'); - - event.add('minecraft:mineable/pickaxe', 'minecraft:cobweb'); - event.add('minecraft:mineable/hoe', 'minecraft:cobweb'); - event.add('minecraft:mineable/shovel', 'minecraft:cobweb'); - event.add('minecraft:mineable/axe', 'minecraft:cobweb'); - - //#region - - event.removeAll('minecraft:sniffer_diggable_block') - - event.add('tfc:can_be_snow_piled', 'minecraft:crimson_fungus') - event.add('tfc:can_be_snow_piled', 'minecraft:warped_fungus') - event.add('tfc:can_be_snow_piled', 'minecraft:torchflower') - event.add('tfc:can_be_snow_piled', 'minecraft:pitcher_plant') - - event.remove('minecraft:enderman_holdable', 'minecraft:crimson_fungus') - event.remove('minecraft:enderman_holdable', 'minecraft:warped_fungus') } \ No newline at end of file diff --git a/kubejs/server_scripts/species/recipes.js b/kubejs/server_scripts/species/recipes.js index 14b95dcdf..2c7fe4c09 100644 --- a/kubejs/server_scripts/species/recipes.js +++ b/kubejs/server_scripts/species/recipes.js @@ -66,30 +66,6 @@ function registerSpeciesRecipes(event) { B: 'firmaciv:rope_coil' }).id('tfg:shaped/harpoon') - generateGreenHouseRecipe(event, '8x tfg:saplings/alphacene', 'tfg:semiheavy_ammoniacal_water', 16000, - '64x species:alphacene_mushroom_block', 'tfg:green_house/alphacene_mushroom', 'ad_astra:mars', 8, - '8x minecraft:mushroom_stem', GTValues.VA[GTValues.MV]) - - event.shapeless('species:cracked_wraptor_egg', ['tfg:wraptor_egg', '#forge:tools/hammers']).id('tfg:shapeless/crack_egg') - event.shapeless('2x tfg:wraptor_sugar', ['species:cracked_wraptor_egg']).id('tfg:shapeless/juice_egg') - - event.recipes.gtceu.extractor('tfg:juice_wraptor_egg_mv') - .itemInputs('species:cracked_wraptor_egg') - .itemOutputs('4x tfg:wraptor_sugar') - .duration(100) - .EUt(GTValues.VA[GTValues.MV]) - event.recipes.gtceu.extractor('tfg:juice_wraptor_egg_full') - .itemInputs('tfg:wraptor_egg') - .itemOutputs('4x tfg:wraptor_sugar') - .duration(200) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.extractor('tfg:juice_sniffer_egg') - .itemInputs('tfg:sniffer_egg') - .outputFluids(Fluid.of('firmalife:cream', 1000)) - .duration(100) - .EUt(GTValues.VA[GTValues.MV]) - event.shaped('species:ricoshield', [ 'EBE', 'ACA', diff --git a/kubejs/server_scripts/tfc/data.js b/kubejs/server_scripts/tfc/data.js index d800003a3..982310c93 100644 --- a/kubejs/server_scripts/tfc/data.js +++ b/kubejs/server_scripts/tfc/data.js @@ -7,9 +7,6 @@ const registerTFCDataForTFC = (event) => { registerTFCLampFuels(event) registerTFCFertilizers(event) registerTFCKnappingTypes(event) - registerTFCItemSize(event) - registerTFCFoodData(event) - registerTFCArmourResistances(event) } @@ -75,208 +72,4 @@ const registerTFCFertilizers = (event) => { const registerTFCKnappingTypes = (event) => { event.knappingType('minecraft:flint', 1, 1, 'tfc:item.knapping.stone', true, false, true, 'minecraft:flint', 'tfg:flint') event.knappingType('tfc:straw', 4, 4, 'tfc:item.knapping.leather', false, false, false, 'tfc:straw', 'tfg:straw') -} - - -const registerTFCItemSize = (event) => { - event.itemSize('#tfc:ore_pieces', 'very_small', 'very_light', 'tfc_ores') - - event.itemSize('#tfc:foods/sealed_preserves', 'tiny', 'medium', 'sealed_preserves') - event.itemSize('#tfc:foods/preserves', 'tiny', 'medium', 'preserves') - - event.itemSize('#forge:tools/wrenches', 'very_large', 'very_heavy', 'wrenches') - event.itemSize('#forge:tools/mining_hammers', 'very_large', 'very_heavy', 'mining_hammers') - event.itemSize('#forge:tools/spades', 'very_large', 'very_heavy', 'spades') -} - - -const registerTFCFoodData = (event) => { - - event.foodItem('firmalife:ice_shavings', food => { - food.water(5) - food.decayModifier(0) - }) -} - -const registerTFCArmourResistances = (event) => { - event.itemDamageResistance( - 'create:copper_diving_helmet', - 2, - 2, - 2 - ) - event.itemDamageResistance( - 'create:copper_backtank', - 2, - 2, - 2 - ) - event.itemDamageResistance( - 'create:copper_diving_boots', - 2, - 2, - 2 - ) - event.itemDamageResistance( - 'create:copper_diving_helmet', - 2, - 2, - 2 - ) - event.itemDamageResistance( - 'gtceu:hazmat_headpiece', - null, - null, - 3 - ) - event.itemDamageResistance( - 'gtceu:hazmat_chestpiece', - null, - null, - 3 - ) - event.itemDamageResistance( - 'gtceu:hazmat_leggings', - null, - null, - 3 - ) - event.itemDamageResistance( - 'gtceu:hazmat_boots', - null, - null, - 3 - ) - event.itemDamageResistance( - 'create:netherite_diving_helmet', - 13, - 13, - 15 - ) - event.itemDamageResistance( - 'create:netherite_backtank', - 13, - 13, - 15 - ) - event.itemDamageResistance( - 'minecraft:netherite_leggings', - 13, - 13, - 15 - ) - event.itemDamageResistance( - 'create:netherite_diving_boots', - 13, - 13, - 15 - ) - event.itemDamageResistance( - 'gtceu:nanomuscle_helmet', - 16, - 16, - 16 - ) - event.itemDamageResistance( - 'gtceu:nanomuscle_chestplate', - 16, - 16, - 16 - ) - event.itemDamageResistance( - 'gtceu:advanced_nanomuscle_chestplate', - 16, - 16, - 16 - ) - event.itemDamageResistance( - 'gtceu:nanomuscle_leggings', - 16, - 16, - 16 - ) - event.itemDamageResistance( - 'gtceu:nanomuscle_boots', - 16, - 16, - 16 - ) - event.itemDamageResistance( - 'gtceu:quarktech_helmet', - 24, - 24, - 24 - ) - event.itemDamageResistance( - 'gtceu:quarktech_chestplate', - 24, - 24, - 24 - ) - event.itemDamageResistance( - 'gtceu:advanced_quarktech_chestplate', - 24, - 24, - 24 - ) - event.itemDamageResistance( - 'gtceu:quarktech_leggings', - 24, - 24, - 24 - ) - event.itemDamageResistance( - 'gtceu:quarktech_boots', - 24, - 24, - 24 - ) - event.itemDamageResistance( - 'ad_astra:space_helmet', - 16, - 16, - 16 - ) - event.itemDamageResistance( - 'ad_astra:space_suit', - 16, - 16, - 16 - ) - event.itemDamageResistance( - 'ad_astra:space_pants', - 16, - 16, - 16 - ) - event.itemDamageResistance( - 'ad_astra:space_boots', - 16, - 16, - 16 - ) - event.itemDamageResistance( - 'ad_astra:netherite_space_helmet', - 21, - 21, - 21 - ) - event.itemDamageResistance( - 'ad_astra:netherite_space_suit', - 21, - 21, - 21 - ) - event.itemDamageResistance( - 'ad_astra:netherite_space_pants', - 21, - 21, - 21 - ) - event.itemDamageResistance( - 'ad_astra:netherite_space_boots', - 21, - 21, - 21 - ) -} +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfc/recipes.js b/kubejs/server_scripts/tfc/recipes.js index f38d1df41..f26ac71a1 100644 --- a/kubejs/server_scripts/tfc/recipes.js +++ b/kubejs/server_scripts/tfc/recipes.js @@ -10,17 +10,8 @@ const registerTFCRecipes = (event) => { removeTFCRecipes(event) registerTFCMaterialsRecipes(event) registerTFCMetalsRecipes(event) - registerTFCStoneRecipes(event) - registerTFCSandRecipes(event) - registerTFCDirtRecipes(event) - registerTFCWoodRecipes(event) - registerTFCKnappingRecipes(event) - registerTFCMachineRecipes(event) - registerTFCAlabasterRecipes(event) registerTFCDyeRecipes(event) - //#region ะ ะตั†ะตะฟั‚ั‹ ะฟะพั€ะพัˆะบะพะฒ - // ะ”ะพะฑะฐะฒะปะตะฝะธะต ั€ะตั†ะตะฟั‚ะพะฒ global.TFC_QUERN_POWDER_RECIPE_COMPONENTS.forEach(element => { event.recipes.gtceu.macerator(`tfg:${element.name}`) @@ -33,26 +24,6 @@ const registerTFCRecipes = (event) => { .id(`tfg:quern/${element.name}`) }) - //#endregion - - //#region ะ ะตั†ะตะฟั‚ั‹ ะพะฑะถะฐั€ะบะธ ั„ะพั€ะผ - - global.TFC_FURNACE_MOLD_RECIPE_COMPONENTS.forEach(element => { - event.smelting(element.output, element.input) - .id(`tfg:smelting/${element.name}`) - }) - - global.MINECRAFT_DYE_NAMES.forEach(dye => { - event.smelting(`tfc:ceramic/${dye}_glazed_vessel`, `tfc:ceramic/${dye}_unfired_vessel`) - .id(`tfg:smelting/${dye}_glazed_vessel`) - - event.smelting(`tfc:ceramic/large_vessel/${dye}`, `tfc:ceramic/unfired_large_vessel/${dye}`) - .id(`tfg:smelting/${dye}_large_vessel`) - }) - - //#endregion - - //#region ะ ะตั†ะตะฟั‚ั‹ ัะปะตะบั‚ั€ะธั‡ะตัะบะพะน ั‚ะตะฟะปะธั†ั‹ // ะ”ะตั€ะตะฒะพ @@ -89,21 +60,12 @@ const registerTFCRecipes = (event) => { const itemId = element.id; const recipeId = `greenhouse_${itemId.replace(':', '_')}`; - generateGreenHouseRecipe(event, itemId, '#tfc:any_fresh_water', 8000, `8x ${itemId}`, + generateGreenHouseRecipe(event, itemId, '#tfc:any_fresh_water', 8000, `8x ${itemId}`, recipeId, null, 8, itemId, GTValues.VH[GTValues.LV]); }); //#endregion - event.shapeless('tfc:crucible', ['tfc:crucible']).id('tfg:empty_crucible') - - event.shapeless('2x minecraft:stick', ['#minecraft:saplings', '#forge:tools/knives']).id('tfg:strip_saplings') - - event.recipes.gtceu.cutter('tfg:saplings_to_sticks') - .itemInputs('#minecraft:saplings') - .itemOutputs('2x minecraft:stick') - .duration(20) - .EUt(7) // ะ”ะพะผะตะฝะฝะฐั ะฟะตั‡ัŒ event.recipes.gtceu.shaped('tfc:blast_furnace', [ @@ -126,40 +88,64 @@ const registerTFCRecipes = (event) => { [TFC.ingredient.notRotten('tfc:pumpkin'), '#tfc:knives'], 'tfc:pumpkin') .id(`tfc:crafting/pumpkin_chunks_knife`) - // Lime + // Flux + Lime event.smelting('tfc:powder/lime', 'tfc:powder/flux') .id('tfg:smelting/lime') - // Kaolinite Clay - regular smelting recipes can't have multiple inputs - event.recipes.gtceu.alloy_smelter('tfg:kaolinite') - .itemInputs('tfc:kaolin_clay') - .circuit(1) - .chancedOutput('tfc:powder/kaolinite', 2000, 0) - .duration(100) - .EUt(16) + event.recipes.gtceu.macerator('flux') + .itemInputs('#tfc:fluxstone') + .itemOutputs('2x tfc:powder/flux') + .duration(30) + .EUt(2) - // Fire Clay - event.recipes.gtceu.alloy_smelter('tfg:cheaper_fire_clay') - .itemInputs('#forge:dusts/graphite', '4x tfc:kaolin_clay') - .itemOutputs('2x tfc:fire_clay') - .duration(600) - .EUt(GTValues.VA[GTValues.ULV]) + event.recipes.gtceu.forge_hammer('flux') + .itemInputs('#tfc:fluxstone') + .itemOutputs('2x tfc:powder/flux') + .duration(30) + .EUt(2) - event.recipes.gtceu.alloy_smelter('tfg:oops_i_smelted_all_my_kaolin') - .itemInputs('minecraft:clay_ball', 'tfc:powder/kaolinite') - .itemOutputs('tfc:kaolin_clay') - .duration(600) - .EUt(GTValues.VA[GTValues.ULV]) + event.recipes.greate.pressing('2x tfc:powder/flux', '#tfc:fluxstone') + .recipeTier(0) + .id('greate:pressing/flux') - // ะ’ั‹ะฟะฐั€ะธะฒะฐะฝะธะต ัะพะปะธ + // Salt Water event.recipes.tfc.pot([], Fluid.of('tfc:salt_water', 625), 300, 100) .itemOutput('gtceu:small_salt_dust') .id('tfg:tfc/pot/salt') - // Salt Water generateMixerRecipe(event, ['#forge:dusts/salt'], "#tfg:clean_water 1000", [], 2, Fluid.of('tfc:salt_water', 1000), 40, 7, 64, 'tfg:tfc/salt_water') + event.recipes.gtceu.centrifuge('centrifuging_tfc_salt_water') + .inputFluids(Fluid.of('tfc:salt_water', 1000)) + .itemOutputs('1x gtceu:salt_dust') + .outputFluids(Fluid.of('minecraft:water', 1000)) + .duration(51) + .EUt(30) + .circuit(1) + + event.recipes.gtceu.electrolyzer('electrolyze_tfc_salt_water') + .inputFluids(Fluid.of('tfc:salt_water', 1000)) + .itemOutputs('1x gtceu:sodium_hydroxide_dust', '2x gtceu:small_sodium_hydroxide_dust') + .outputFluids(Fluid.of('gtceu:chlorine', 500), Fluid.of('gtceu:hydrogen', 500)) + .duration(720) + .EUt(30) + + // Add circuit to gregtech salt water mixer recipe + event.remove({ id: 'gtceu:mixer/salt_water' }) + generateMixerRecipe(event, ['2x #forge:dusts/salt'], Fluid.of('minecraft:water', 1000), [], 1, Fluid.of('gtceu:salt_water', 1000), 40, 7, 64, 'tfg:gtceu/salt_water') + + event.recipes.tfc.barrel_instant() + .inputItem(ChemicalHelper.get(TagPrefix.dust, GTMaterials.Salt, 1)) + .inputFluid(Fluid.of('minecraft:water', 1000)) + .outputFluid(Fluid.of('tfc:salt_water', 1000)) + .id('tfg:barrel/water_to_salt_water') + + event.recipes.tfc.barrel_instant() + .inputItem("tfc:powder/salt") + .inputFluid(Fluid.of('minecraft:water', 250)) + .outputFluid(Fluid.of('tfc:salt_water', 250)) + .id('tfg:barrel/water_to_salt_water_tfc') // Seaweed and kelp event.recipes.tfc.heating('tfc:groundcover/seaweed', 200) @@ -176,20 +162,9 @@ const registerTFCRecipes = (event) => { event.smelting('3x tfc:powder/soda_ash', 'tfc:food/dried_seaweed').id('tfg:smelting/dried_seaweed_to_soda') event.smelting('3x tfc:powder/soda_ash', 'tfc:food/dried_kelp').id('tfg:smelting/dried_kelp_to_soda') - //#region ะžะฑั€ัƒัˆะตะฝะธั - - event.recipes.tfc.collapse('#tfg:rock_slabs').id('tfg:collapse/rock_slabs') - event.recipes.tfc.collapse('#tfg:rock_stairs').id('tfg:collapse/rock_stairs') - event.recipes.tfc.collapse('#tfg:rock_walls').id('tfg:collapse/rock_walls') - - //#endregion - //More accesible solar drier event.replaceInput({ id: 'firmalife:crafting/solar_drier' }, 'gtceu:stainless_steel_rod', 'gtceu:silver_rod') - //Wood ash - event.recipes.create.splashing([Item.of('tfc:powder/wood_ash').withChance(0.25), Item.of('minecraft:stick').withChance(0.25)], 'tfc:torch') - .id('tfg:splashing/wash_torch') //Lye generateMixerRecipe(event, 'tfc:powder/wood_ash', "#tfg:clean_water 200", @@ -204,102 +179,37 @@ const registerTFCRecipes = (event) => { .EUt(2) // Brass Mechanism - event.recipes.shapeless('gtceu:small_brass_gear', [ 'tfc:brass_mechanisms' ]).id('tfg:replace_brass_mechanisms') - event.replaceInput({ input: 'tfc:brass_mechanisms' }, 'tfc:brass_mechanisms', 'gtceu:small_brass_gear') + event.recipes.shapeless('gtceu:small_brass_gear', ['tfc:brass_mechanisms']).id('tfg:replace_brass_mechanisms') + event.replaceInput({ input: 'tfc:brass_mechanisms' }, 'tfc:brass_mechanisms', 'gtceu:small_brass_gear') - // Fertilizers - event.recipes.gtceu.centrifuge('tfg:gtceu/centrifuge/pure_fertilizers') - .itemInputs('1x gtceu:fertilizer') - .itemOutputs('1x tfc:pure_nitrogen', '1x tfc:pure_potassium', '1x tfc:pure_phosphorus') - .duration(340) - .EUt(GTValues.VA[GTValues.ULV]) + // Rennet + event.recipes.gtceu.fermenter('tfg:fermenter/vegetable_rennet') + .itemInputs('#tfg:ferments_to_rennet') + .itemOutputs('firmalife:rennet') + .duration(400) + .EUt(16) - event.recipes.gtceu.mixer('tfg:tfc/mixer/fertilizer') - .itemInputs('1x tfc:pure_nitrogen', '1x tfc:pure_potassium', '1x tfc:pure_phosphorus', ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Clay, 1)) - .itemOutputs('1x gtceu:fertilizer') - .duration(160) - .EUt(GTValues.VA[GTValues.ULV]) + event.recipes.gtceu.fermenter('tfg:fermenter/biomass_rennet') + .inputFluids(Fluid.of('gtceu:fermented_biomass', 100)) + .itemOutputs('firmalife:rennet') + .duration(2400) + .EUt(16) - event.recipes.gtceu.gas_pressurizer('tfg:pure_nitrogen') - .itemInputs('#forge:wax') - .inputFluids(Fluid.of('gtceu:nitrogen', 1000)) - .itemOutputs('16x tfc:pure_nitrogen') + // Brine + event.recipes.gtceu.mixer('tfg:tfc/brine') + .inputFluids(Fluid.of('tfc:salt_water', 900)) + .inputFluids(Fluid.of('tfc:vinegar', 100)) + .outputFluids(Fluid.of('tfc:brine', 1000)) .duration(100) - .EUt(GTValues.VA[GTValues.LV]) + .EUt(16) - //Hide Sewing - const stages = [ - 'raw', - 'soaked', - 'scraped', - 'prepared', - 'sheepskin' - ]; - - stages.forEach(stage => { - //Combining - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless(`1x tfc:medium_${stage}_hide`, [ - `2x tfc:small_${stage}_hide`, - '#tfc:sewing_needles', - '#forge:string', - 'tfc:glue' - ]).id(`tfg:tfc/small_to_medium_${stage}_hide`) - ) - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless(`1x tfc:large_${stage}_hide`, [ - `3x tfc:small_${stage}_hide`, - '#tfc:sewing_needles', - '#forge:string', - 'tfc:glue' - ]).id(`tfg:tfc/small_to_large_${stage}_hide`) - ) - - event.recipes.gtceu.assembler(`tfg:gtceu/assembler/small_to_medium_${stage}_hide`) - .inputFluids(Fluid.of('gtceu:glue', 25)) - .itemOutputs(`1x tfc:medium_${stage}_hide`) - .itemInputs(`2x tfc:small_${stage}_hide`) - .duration(60) - .circuit(7) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.assembler(`tfg:gtceu/assembler/small_to_large_${stage}_hide`) - .inputFluids(Fluid.of('gtceu:glue', 25)) - .itemOutputs(`1x tfc:large_${stage}_hide`) - .itemInputs(`3x tfc:small_${stage}_hide`) - .duration(60) - .circuit(9) - .EUt(GTValues.VA[GTValues.ULV]) - - //Cutting - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless(`2x tfc:small_${stage}_hide`, [ - `1x tfc:medium_${stage}_hide`, - '#forge:shears' - ]).id(`tfg:tfc/medium_to_small_${stage}_hide`) - ) - - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless(`3x tfc:small_${stage}_hide`, [ - `1x tfc:large_${stage}_hide`, - '#forge:shears' - ]).id(`tfg:tfc/large_to_small_${stage}_hide`) - ) - - event.recipes.gtceu.assembler(`tfg:gtceu/assembler/medium_to_small_${stage}_hide`) - .itemOutputs(`2x tfc:small_${stage}_hide`) - .itemInputs(`1x tfc:medium_${stage}_hide`) - .duration(60) - .circuit(4) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.assembler(`tfg:gtceu/assembler/large_to_small_${stage}_hide`) - .itemOutputs(`3x tfc:small_${stage}_hide`) - .itemInputs(`1x tfc:large_${stage}_hide`) - .duration(60) - .circuit(6) - .EUt(GTValues.VA[GTValues.ULV]) - }); + // LimeWater + Sand -> Mortar + event.recipes.gtceu.mixer('mortar') + .itemInputs('#forge:sand') + .inputFluids(Fluid.of('tfc:limewater', 100)) + .itemOutputs('16x tfc:mortar') + .duration(800) + .EUt(8) // Jar lids @@ -311,46 +221,25 @@ const registerTFCRecipes = (event) => { event.replaceInput({ mod: 'tfc' }, 'minecraft:sugar', '#tfg:sugars') - // Sea Water - event.recipes.tfc.barrel_instant() - .inputItem(ChemicalHelper.get(TagPrefix.dust, GTMaterials.Salt, 1)) - .inputFluid(Fluid.of('minecraft:water', 1000)) - .outputFluid(Fluid.of('tfc:salt_water', 1000)) - .id('tfg:barrel/water_to_salt_water') - event.recipes.tfc.barrel_instant() - .inputItem("tfc:powder/salt") - .inputFluid(Fluid.of('minecraft:water', 250)) - .outputFluid(Fluid.of('tfc:salt_water', 250)) - .id('tfg:barrel/water_to_salt_water_tfc') + // jute net -> burlap net + event.replaceInput({ id: 'tfc:crafting/jute_net' }, 'tfc:jute_fiber', '#tfg:burlap_fiber') - // jute net -> burlap net - event.replaceInput({ id: 'tfc:crafting/jute_net'}, 'tfc:jute_fiber', '#tfg:burlap_fiber') - - // horse armor to use burlap - global.TFC_EQUIPMENT_METALS.forEach(material => { - event.replaceInput({ id: `tfc:crafting/${material}_horse_armor`}, `tfc:jute_fiber`, `#tfg:burlap_fiber`) - }) - - // Just a dummy recipe to tell people they can get wood ash by throwing torches in water via TFC - event.custom({ - type: "ae2:transform", - circumstance: { - type: "fluid", - tag: "tfc:water" - }, - ingredients: [{ item: 'tfc:torch' }], - result: { item: 'tfc:powder/wood_ash' } - }).id(`tfg:ae_transform/torch_to_wood_ash`) - - event.shaped('8x minecraft:ladder', [ - 'A A', - 'AAA', - 'A A' - ], { - A: '#tfc:lumber' - }).id('tfc:crafting/vanilla/ladder') - - event.replaceInput({ id: 'tfc:crafting/vanilla/armor_stand' }, '#minecraft:planks', '#tfc:lumber') - event.remove({ id: 'tfc:crafting/vanilla/armor_stand_bulk' }) + // horse armor to use burlap + global.TFC_EQUIPMENT_METALS.forEach(material => { + event.replaceInput({ id: `tfc:crafting/${material}_horse_armor` }, `tfc:jute_fiber`, `#tfg:burlap_fiber`) + }) + + event.recipes.gtceu.centrifuge('tfg:soot') + .itemInputs('tfc:soot') + .itemOutputs('#forge:dusts/carbon') + .duration(20) + .EUt(2) + + event.recipes.gtceu.extruder('tfg:wrought_iron_grill_electric_only') + .itemInputs('2x #forge:plates/wrought_iron') + .notConsumable('tfg:large_casing_extruder_mold') + .itemOutputs('tfc:wrought_iron_grill') + .duration(60) + .EUt(8) } diff --git a/kubejs/server_scripts/tfc/recipes.machines.js b/kubejs/server_scripts/tfc/recipes.machines.js deleted file mode 100644 index 319bbe004..000000000 --- a/kubejs/server_scripts/tfc/recipes.machines.js +++ /dev/null @@ -1,452 +0,0 @@ -๏ปฟ// priority: 0 -"use strict"; - -function registerTFCMachineRecipes(event) { - - // ะ‘ัƒะผะฐะณะฐ - event.recipes.gtceu.cutter('tfg:unrefined_paper') - .itemInputs('tfc:unrefined_paper') - .itemOutputs('minecraft:paper') - .duration(100) - .EUt(7) - - // Limewater - event.recipes.gtceu.mixer('tfg:limewater_from_lime') - .itemInputs('tfc:powder/lime') - .inputFluids(Fluid.of('water', 500)) - .outputFluids(Fluid.of('tfc:limewater', 500)) - .duration(20) - .EUt(16) - - event.recipes.gtceu.mixer('tfg:limewater_from_flux') - .itemInputs('tfc:powder/flux') - .inputFluids(Fluid.of('water', 500)) - .outputFluids(Fluid.of('tfc:limewater', 500)) - .duration(20) - .EUt(16) - - // Tannin - event.recipes.gtceu.chemical_bath('tfg:tannin') - .itemInputs('#tfc:makes_tannin') - .inputFluids(Fluid.of('water', 1000)) - .outputFluids(Fluid.of('tfc:tannin', 1000)) - .duration(2400) - .EUt(16) - - // Soaked hides - event.recipes.gtceu.chemical_bath('tfg:small_soaked_hide') - .itemInputs('tfc:small_raw_hide') - .inputFluids(Fluid.of('tfc:limewater', 300)) - .itemOutputs('tfc:small_soaked_hide') - .duration(1600) - .EUt(16) - - event.recipes.gtceu.chemical_bath('tfg:medium_soaked_hide') - .itemInputs('tfc:medium_raw_hide') - .inputFluids(Fluid.of('tfc:limewater', 400)) - .itemOutputs('tfc:medium_soaked_hide') - .duration(2400) - .EUt(16) - - event.recipes.gtceu.chemical_bath('tfg:large_soaked_hide') - .itemInputs('tfc:large_raw_hide') - .inputFluids(Fluid.of('tfc:limewater', 500)) - .itemOutputs('tfc:large_soaked_hide') - .duration(3200) - .EUt(16) - - // Scraped Hides - event.recipes.gtceu.cutter('tfg:small_scraped_hide') - .itemInputs('tfc:small_soaked_hide') - .itemOutputs('tfc:small_scraped_hide') - .duration(100) - .EUt(7) - - event.recipes.gtceu.cutter('tfg:medium_scraped_hide') - .itemInputs('tfc:medium_soaked_hide') - .itemOutputs('tfc:medium_scraped_hide') - .duration(100) - .EUt(7) - - event.recipes.gtceu.cutter('tfg:large_scraped_hide') - .itemInputs('tfc:large_soaked_hide') - .itemOutputs('tfc:large_scraped_hide') - .duration(100) - .EUt(7) - - // Prepared hides - event.recipes.gtceu.chemical_bath('tfg:small_prepared_hide') - .itemInputs('tfc:small_soaked_hide') - .inputFluids(Fluid.of('water', 300)) - .itemOutputs('tfc:small_prepared_hide') - .duration(1600) - .EUt(16) - - event.recipes.gtceu.chemical_bath('tfg:medium_prepared_hide') - .itemInputs('tfc:medium_soaked_hide') - .inputFluids(Fluid.of('water', 400)) - .itemOutputs('tfc:medium_prepared_hide') - .duration(2400) - .EUt(16) - - event.recipes.gtceu.chemical_bath('tfg:large_prepared_hide') - .itemInputs('tfc:large_soaked_hide') - .inputFluids(Fluid.of('water', 500)) - .itemOutputs('tfc:large_prepared_hide') - .duration(3200) - .EUt(16) - - // Leather - event.recipes.gtceu.chemical_bath('tfg:small_leather') - .itemInputs('tfc:small_prepared_hide') - .inputFluids(Fluid.of('tfc:tannin', 300)) - .itemOutputs('minecraft:leather') - .duration(1600) - .EUt(16) - - event.recipes.gtceu.chemical_bath('tfg:medium_leather') - .itemInputs('tfc:medium_prepared_hide') - .inputFluids(Fluid.of('tfc:tannin', 400)) - .itemOutputs('2x minecraft:leather') - .duration(2400) - .EUt(16) - - event.recipes.gtceu.chemical_bath('tfg:large_leather') - .itemInputs('tfc:large_prepared_hide') - .inputFluids(Fluid.of('tfc:tannin', 500)) - .itemOutputs('3x minecraft:leather') - .duration(3200) - .EUt(16) - - //#region ะœะพะปะดั‹ ะฒ ะฐััะตะผะฑะปะตั€ะต - - for (let i = 0; i < global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) { - let element = global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS[i]; - - event.recipes.gtceu.assembler(`tfg:tfc/${element.name}`) - .itemInputs(element.input) - .circuit(i) - .itemOutputs(element.output) - .duration(450) - .EUt(2) - } - - for (let i = 0; i < global.TFC_FIRE_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) { - let element = global.TFC_FIRE_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS[i]; - - event.recipes.gtceu.assembler(`tfg:tfc/${element.name}`) - .itemInputs(element.input) - .circuit(i) - .itemOutputs(element.output) - .duration(450) - .EUt(2) - } - - event.recipes.gtceu.extruder('tfg:unfired_clay_brick') - .itemInputs('minecraft:clay_ball') - .notConsumable('gtceu:ingot_extruder_mold') - .itemOutputs('tfc:ceramic/unfired_brick') - .duration(20) - .EUt(2) - - event.recipes.gtceu.extruder('tfg:unfired_fire_clay_brick') - .itemInputs('tfc:fire_clay') - .notConsumable('gtceu:ingot_extruder_mold') - .itemOutputs('tfc:ceramic/unfired_fire_brick') - .duration(20) - .EUt(2) - - //#endregion - - //#region ะกั‚ะตะบะปัะฝะฝั‹ะต ัะผะตัะธ ะฒ ะฑัƒั‚ั‹ะปะบะธ ะฒ ะฐััะตะผะฑะปะตั€ะต - - global.TFC_BATCH_TO_BOTTLE_ASSEMBLING_RECIPE_COMPONENTS.forEach(element => { - event.recipes.gtceu.alloy_smelter(`tfg:tfc/${element.name}`) - .itemInputs(element.input) - .notConsumable('gtceu:bottle_casting_mold') - .itemOutputs(element.output) - .duration(100) - .EUt(2) - .category(GTRecipeCategories.INGOT_MOLDING) - }) - - //#endregion - - //#region ะกะซะซะซะ  0_0 - - // Rennet - event.recipes.gtceu.fermenter('tfg:fermenter/vegetable_rennet') - .itemInputs('#tfg:ferments_to_rennet') - .itemOutputs('firmalife:rennet') - .duration(400) - .EUt(16) - - event.recipes.gtceu.fermenter('tfg:fermenter/biomass_rennet') - .inputFluids(Fluid.of('gtceu:fermented_biomass', 100)) - .itemOutputs('firmalife:rennet') - .duration(2400) - .EUt(16) - - //#endregion - - // Brine - - event.recipes.gtceu.mixer('tfg:tfc/brine') - .inputFluids(Fluid.of('tfc:salt_water', 900)) - .inputFluids(Fluid.of('tfc:vinegar', 100)) - .outputFluids(Fluid.of('tfc:brine', 1000)) - .duration(100) - .EUt(16) - - //#endregion - - // Lamp Glass - event.recipes.gtceu.alloy_smelter(`tfg:tfc/lamp_glass`) - .itemInputs('#tfc:glass_batches') - .notConsumable('#tfg:unfinished_lamps') - .itemOutputs('tfc:lamp_glass') - .duration(100) - .EUt(2) - - event.recipes.gtceu.alloy_smelter(`tfg:tfc/lamp_glass_from_dust`) - .itemInputs('#forge:dusts/glass') - .notConsumable('#tfg:unfinished_lamps') - .itemOutputs('tfc:lamp_glass') - .duration(100) - .EUt(2) - - // Empty Jar - event.recipes.gtceu.alloy_smelter('tfc:jar_alloying') - .itemInputs('#tfc:glass_batches_tier_2') - .notConsumable('gtceu:ball_casting_mold') - .itemOutputs('tfc:empty_jar') - .duration(100) - .EUt(2) - .category(GTRecipeCategories.INGOT_MOLDING) - - event.recipes.gtceu.fluid_solidifier('tfc:jar_solidification') - .inputFluids(Fluid.of('gtceu:glass', 144)) - .notConsumable('gtceu:cylinder_casting_mold') - .itemOutputs('tfc:empty_jar') - .duration(100) - .EUt(2) - - event.recipes.gtceu.extractor('tfc:jar_extraction') - .itemInputs('#tfc:jars') - .outputFluids(Fluid.of('gtceu:glass', 144)) - .duration(50) - .EUt(2) - - event.recipes.gtceu.extractor('tfc:glass_batch_extraction') - .itemInputs('#tfc:glass_batches') - .outputFluids(Fluid.of('gtceu:glass', 144)) - .duration(50) - .EUt(2) - - event.recipes.gtceu.lathe('tfc:lens') - .itemInputs('#forge:glass') - .itemOutputs('tfc:lens') - .duration(100) - .EUt(16) - - // Wool Yarn - event.recipes.gtceu.macerator('macerate_wool') - .itemInputs('#minecraft:wool') - .itemOutputs('tfc:wool_yarn') - .chancedOutput('tfc:wool_yarn', 9000, 0) - .chancedOutput('tfc:wool_yarn', 5000, 0) - .chancedOutput('tfc:wool_yarn', 2000, 0) - .duration(200) - .EUt(2) - - // LimeWater + Sand -> Mortar - event.recipes.gtceu.mixer('mortar') - .itemInputs('#forge:sand') - .inputFluids(Fluid.of('tfc:limewater', 100)) - .itemOutputs('16x tfc:mortar') - .duration(800) - .EUt(8) - - - // 1x Small SheepSkin -> 1x Wool - event.recipes.gtceu.assembler('tfg:tfc/wool_1') - .itemInputs('tfc:small_sheepskin_hide') - .itemOutputs('tfc:wool') - .duration(100) - .circuit(3) - .EUt(4) - - // 1x Medium SheepSkin -> 1x Wool - event.recipes.gtceu.assembler('tfg:tfc/wool_2') - .itemInputs('tfc:medium_sheepskin_hide') - .itemOutputs('2x tfc:wool') - .duration(100) - .circuit(3) - .EUt(4) - - // 1x Large SheepSkin -> 1x Wool - event.recipes.gtceu.assembler('tfg:tfc/wool_3') - .itemInputs('tfc:large_sheepskin_hide') - .itemOutputs('3x tfc:wool') - .duration(100) - .circuit(3) - .EUt(4) - - // Wool Yarn - event.recipes.gtceu.wiremill('tfg:tfc/wool_yarn') - .itemInputs('tfc:wool') - .itemOutputs('8x tfc:wool_yarn') - .duration(100) - .EUt(4) - - // Burlap Cloth - event.recipes.gtceu.assembler('tfg:tfc/burlap_cloth') - .itemInputs('12x tfc:jute_fiber') - .circuit(0) - .itemOutputs('tfc:burlap_cloth') - .duration(100) - .EUt(4) - - // Silk Cloth - event.recipes.gtceu.assembler('tfg:tfc/silk_cloth') - .itemInputs('24x minecraft:string') - .circuit(0) - .itemOutputs('tfc:silk_cloth') - .duration(100) - .EUt(4) - - // Wool Cloth - event.recipes.gtceu.assembler('tfg:tfc/wool_cloth') - .itemInputs('16x tfc:wool_yarn') - .circuit(0) - .itemOutputs('tfc:wool_cloth') - .duration(100) - .EUt(4) - - // Cloths to Wool - event.recipes.gtceu.assembler('tfg:tfc/cloth_to_wool') - .itemInputs('4x #tfc:sewing_light_cloth') - .itemOutputs('8x minecraft:white_wool') - .circuit(16) - .duration(100) - .EUt(4) - - // Jute Fiber - generateMixerRecipe(event, 'tfc:jute', "#tfg:clean_water 200", - 'tfc:jute_fiber', null, [], 100, 4, 16, 'tfg:tfc/jute_fiber') - - // Ceramic Recycling - event.recipes.gtceu.macerator('tfg:sherd_to_brick_dust') - .itemInputs('firmalife:pottery_sherd') - .itemOutputs('#forge:dusts/brick') - .category(GTRecipeCategories.MACERATOR_RECYCLING) - .duration(20) - .EUt(2) - - event.recipes.gtceu.macerator('tfg:ceramic_molds') - .itemInputs('#tfc:fired_molds') - .itemOutputs('2x #forge:dusts/brick') - .category(GTRecipeCategories.MACERATOR_RECYCLING) - .duration(20) - .EUt(2) - - event.recipes.gtceu.macerator('tfg:large_vessels') - .itemInputs('#tfc:fired_large_vessels') - .itemOutputs('5x #forge:dusts/brick') - .category(GTRecipeCategories.MACERATOR_RECYCLING) - .duration(20) - .EUt(2) - - event.recipes.gtceu.macerator('tfg:casting_channel') - .itemInputs('tfcchannelcasting:channel') - .itemOutputs('1x #forge:dusts/brick') - .category(GTRecipeCategories.MACERATOR_RECYCLING) - .duration(20) - .EUt(2) - - event.recipes.gtceu.macerator('tfg:mold_table') - .itemInputs('tfcchannelcasting:mold_table') - .itemOutputs('5x #forge:dusts/brick') - .category(GTRecipeCategories.MACERATOR_RECYCLING) - .duration(20) - .EUt(2) - - // Humus and compost - event.recipes.gtceu.extractor('tfg:humus_from_leaves') - .itemInputs('#minecraft:leaves') - .itemOutputs('tfc:groundcover/humus') - .duration(600) - .EUt(2) - - event.recipes.gtceu.extractor('tfg:humus_from_fallen_leaves') - .itemInputs('#tfc:fallen_leaves') - .itemOutputs('tfc:groundcover/humus') - .duration(600) - .EUt(2) - - event.recipes.gtceu.fermenter('tfg:fertilizer_to_compost') - .itemInputs('4x gtceu:fertilizer') - .itemOutputs('tfc:compost') - .duration(1200) - .EUt(2) - - const BROWNS = [ '16x #tfc:compost_browns_low', '8x #tfc:compost_browns', '4x #tfc:compost_browns_high' ]; - const GREENS = [ '16x #tfc:compost_greens_low', '8x #tfc:compost_greens', '4x #tfc:compost_greens_high' ]; - - let i = 0; - BROWNS.forEach(brown => { - GREENS.forEach(green => { - event.recipes.gtceu.mixer(`tfg:compost_${i++}`) - .itemInputs(brown, green) - .itemOutputs('tfc:compost') - .duration(1200) - .EUt(2) - }) - }) - - event.recipes.gtceu.centrifuge('tfg:soot') - .itemInputs('tfc:soot') - .itemOutputs('#forge:dusts/carbon') - .duration(20) - .EUt(2) - - // Stripped logs - - global.TFC_WOOD_TYPES.forEach(wood => { - event.recipes.gtceu.lathe(`tfg:stripping_${wood}_log`) - .itemInputs(`tfc:wood/log/${wood}`) - .itemOutputs(`tfc:wood/stripped_log/${wood}`) - .duration(50) - .EUt(2) - - event.recipes.gtceu.lathe(`tfg:stripping_${wood}_wood`) - .itemInputs(`tfc:wood/wood/${wood}`) - .itemOutputs(`tfc:wood/stripped_wood/${wood}`) - .duration(50) - .EUt(2) - - event.custom({ - type: 'vintageimprovements:polishing', - ingredients: [{ item: `tfc:wood/log/${wood}` }], - results: [{ item: `tfc:wood/stripped_log/${wood}` }], - speed_limits: 0, - processingTime: 50 - }).id(`tfg:vi/lathe/stripping_${wood}_log`) - - event.custom({ - type: 'vintageimprovements:polishing', - ingredients: [{ item: `tfc:wood/wood/${wood}` }], - results: [{ item: `tfc:wood/stripped_wood/${wood}` }], - speed_limits: 0, - processingTime: 50 - }).id(`tfg:vi/lathe/stripping_${wood}_wood`) - }) - - - event.recipes.gtceu.extruder('tfg:wrought_iron_grill_electric_only') - .itemInputs('2x #forge:plates/wrought_iron') - .notConsumable('tfg:large_casing_extruder_mold') - .itemOutputs('tfc:wrought_iron_grill') - .duration(60) - .EUt(8) -} diff --git a/kubejs/server_scripts/tfc/recipes.materials.js b/kubejs/server_scripts/tfc/recipes.materials.js index 8bc5ee8b6..5fc44fd5e 100644 --- a/kubejs/server_scripts/tfc/recipes.materials.js +++ b/kubejs/server_scripts/tfc/recipes.materials.js @@ -642,7 +642,7 @@ function registerTFCMaterialsRecipes(event) { if (tfcProperty.getMeltTemp() <= 1540) { event.recipes.tfc.heating(`gtceu:small_${material.getName()}_gear`, tfcProperty.getMeltTemp()) - .resultFluid(Fluid.of(`gtceu:${material.getName()}`, 144)) + .resultFluid(Fluid.of(outputMaterial, 144)) .id(`tfc:heating/small_${material.getName()}_gear`) } diff --git a/kubejs/server_scripts/tfc/recipes.metals.js b/kubejs/server_scripts/tfc/recipes.metals.js index a1026e886..82358d538 100644 --- a/kubejs/server_scripts/tfc/recipes.metals.js +++ b/kubejs/server_scripts/tfc/recipes.metals.js @@ -200,39 +200,6 @@ function registerTFCMetalsRecipes(event) { .duration(700) .EUt(4) - // Rose Gold + Sterling Silver - const copper_types = [ - "#forge:ingots/copper", - "#forge:dusts/copper", - "#forge:ingots/annealed_copper", - "#forge:dusts/annealed_copper" - ]; - const gold_types = [ - "#forge:ingots/gold", - "#forge:dusts/gold" - ]; - const silver_types = [ - "#forge:ingots/silver", - "#forge:dusts/silver" - ]; - - copper_types.forEach(copper_types_array => { - gold_types.forEach(gold_types_array => { - event.recipes.gtceu.alloy_smelter(`rose_gold_from_${copper_types_array.replace(/:/g, "/").replace(/#/g, "")}_and_${gold_types_array.replace(/:/g, "/").replace(/#/g, "")}`) - .itemInputs(Ingredient.of(copper_types_array).withCount(1), Ingredient.of(gold_types_array).withCount(4)) - .itemOutputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.RoseGold, 5)) - .duration(20*10) - .EUt(GTValues.VA[GTValues.LV]) - }); - silver_types.forEach(silver_types_array => { - event.recipes.gtceu.alloy_smelter(`sterling_silver_from_${copper_types_array.replace(/:/g, "/").replace(/#/g, "")}_and_${silver_types_array.replace(/:/g, "/").replace(/#/g, "")}`) - .itemInputs(Ingredient.of(copper_types_array).withCount(1), Ingredient.of(silver_types_array).withCount(4)) - .itemOutputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.SterlingSilver, 5)) - .duration(20*10) - .EUt(GTValues.VA[GTValues.LV]) - }); - }); - const TFC_INTERMEDIATE_METALS = [ @@ -401,6 +368,10 @@ function registerTFCMetalsRecipes(event) { }) //#endregion + event.smelting('minecraft:iron_ingot', '#forge:ingots/wrought_iron') + .id('tfg:revert_wrought_iron_ingot') + + // Melting powders const METAL_POWDERS = [ diff --git a/kubejs/server_scripts/tfc/recipes.wood.js b/kubejs/server_scripts/tfc/recipes.wood.js deleted file mode 100644 index 7ede26945..000000000 --- a/kubejs/server_scripts/tfc/recipes.wood.js +++ /dev/null @@ -1,55 +0,0 @@ -๏ปฟ// priority: 0 -"use strict"; - -function registerTFCWoodRecipes(event) { - - event.replaceInput({ output: '#tfc:sewing_tables'}, '#forge:shears', '#forge:tools/knives') - - // ะšะฐะบะธะต ั‚ะพ ั€ะตั†ะตะฟั‚ั‹ ะดะตั€ะตะฒะฐ - global.TFC_WOOD_TYPES.forEach(wood => { - event.remove({ id: `tfc:crafting/wood/${wood}_axle` }) - event.remove({ id: `tfc:crafting/wood/${wood}_bladed_axle` }) - event.remove({ id: `tfc:crafting/wood/${wood}_encased_axle` }) - event.remove({ id: `tfc:crafting/wood/${wood}_clutch` }) - event.remove({ id: `tfc:crafting/wood/${wood}_gear_box` }) - event.remove({ id: `tfc:crafting/wood/${wood}_water_wheel` }) - - // ะ‘ั€ะตะฒะฝะฐ -> ะŸะธะปะพะผะฐั‚ะตั€ะธะฐะปั‹ - generateCutterRecipe(event, `#tfc:${wood}_logs`, `16x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_log`) - - // ะ”ะพัะบะธ -> ะŸะธะปะพะผะฐั‚ะตั€ะธะฐะปั‹ - generateCutterRecipe(event, `tfc:wood/planks/${wood}`, `4x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_planks`) - - // ะกั‚ัƒะฟะตะฝัŒ -> ะŸะธะปะพะผะฐั‚ะตั€ะธะฐะปั‹ - generateCutterRecipe(event, `tfc:wood/planks/${wood}_stairs`, `3x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_stairs`) - - - // ะŸะปะธั‚ะฐ -> ะŸะธะปะพะผะฐั‚ะตั€ะธะฐะปั‹ - generateCutterRecipe(event, `tfc:wood/planks/${wood}_slab`, `2x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_slab`) - - // ? -> ะ”ะตั€ะตะฒัะฝะฝะฐั ะฝะฐะถะธะผะฝะฐั ะฟะปะฐัั‚ะธะฝะฐ - event.shaped(`tfc:wood/planks/${wood}_pressure_plate`, [ - ' B ', - 'CDC', - ' E ' - ], { - B: '#tfc:hammers', - C: `tfc:wood/planks/${wood}_slab`, - D: '#forge:small_springs', - E: '#forge:tools/screwdrivers' - }).id(`tfc:crafting/wood/${wood}_pressure_plate`) - - event.recipes.gtceu.assembler(`${wood}_pressure_plate`) - .itemInputs('#forge:small_springs', `2x tfc:wood/planks/${wood}_slab`) - .circuit(3) - .itemOutputs(`2x tfc:wood/planks/${wood}_pressure_plate`) - .duration(50) - .EUt(2) - - // ? -> ะ”ะตั€ะตะฒัะฝะฝะฐั ะบะฝะพะฟะบะฐ - event.remove({ id: `tfc:crafting/wood/${wood}_button` }) - - generateCutterRecipe(event, `tfc:wood/planks/${wood}_pressure_plate`, `6x tfc:wood/planks/${wood}_button`, 50, 7, `${wood}_button`) - - }) -} \ No newline at end of file diff --git a/kubejs/server_scripts/tfc/tags.js b/kubejs/server_scripts/tfc/tags.js index b566fc9ab..040b9857b 100644 --- a/kubejs/server_scripts/tfc/tags.js +++ b/kubejs/server_scripts/tfc/tags.js @@ -111,14 +111,6 @@ function registerTFCItemTags(event) { event.add("minecraft:fishes", "tfc:food/rainbow_trout"); event.add("minecraft:fishes", "tfc:food/smallmouth_bass"); - // Make eggs not useless - event.add("tfc:foods/usable_in_salad", "tfc:food/cooked_egg"); - event.add("tfc:foods/usable_in_salad", "tfc:food/boiled_egg"); - event.add("tfc:foods/usable_in_jam_sandwich", "tfc:food/cooked_egg"); - event.add("tfc:foods/usable_in_jam_sandwich", "tfc:food/boiled_egg"); - event.add("tfc:foods/usable_in_sandwich", "tfc:food/cooked_egg"); - event.add("tfc:foods/usable_in_sandwich", "tfc:food/boiled_egg"); - // ะงั‚ะพะฑั‹ ะถะฐั€ะธะปะธััŒ ะฑั€ะตะฒะฝะฐ ะธะท TFC ะฒ ะฟะธั€ะพะปะธะท. ะฟะตั‡ะบะต // ะŸะพั‡ะตะผัƒ ะฝะตะปัŒะทั ะฟั€ะพัั‚ะพ ะดะพะฑะฐะฒะธั‚ัŒ ั‚ะตะณ ะฒ ั‚ะตะณ? (ะดะพะฟัƒัั‚ะธะผ minecraft:logs), ะฟะพั‚ะพะผัƒ ั‡ั‚ะพ ะธะท-ะทะฐ ัั‚ะพะณะพ ะปะพะผะฐัŽั‚ัั ะฒัะต ั€ะตั†ะตะฟั‚ั‹ minecraft:logs, ะผะฐะณะธั... global.TFC_WOOD_TYPES.forEach((woodType) => { @@ -147,16 +139,6 @@ function registerTFCItemTags(event) { event.add("tfc:blast_furnace_fuel", "gtceu:coke_gem"); event.add("tfc:blast_furnace_fuel", "beneath:cursecoal"); - // Create a tag for Steam Bloomery - - event.add("tfc:steam_bloomery_basic_fuels", "minecraft:coal"); - event.add("tfc:steam_bloomery_basic_fuels", "minecraft:charcoal"); - event.add("tfc:steam_bloomery_basic_fuels", "gtceu:rich_raw_coal"); - event.add("tfc:steam_bloomery_basic_fuels", "gtceu:raw_coal"); - event.add("tfc:steam_bloomery_basic_fuels", "gtceu:poor_raw_coal"); - event.add("tfc:steam_bloomery_basic_fuels", "gtceu:coal_dust"); - event.add("tfc:steam_bloomery_basic_fuels", "gtceu:charcoal_dust"); - // ะขัะณะธ ะดะปั ััƒะฝะดัƒะบะพะฒ, ั‡ั‚ะพะฑั‹ ะพั‚ะปะธั‡ะฐั‚ัŒ ะธั… ะฒะธะดั‹ global.TFC_WOOD_TYPES.forEach((woodType) => { event.add("tfg:default_chests", `tfc:wood/chest/${woodType}`); @@ -331,12 +313,6 @@ function registerTFCItemTags(event) { event.add("forge:cloth", "tfc:wool_cloth"); event.add("forge:cloth", "tfc:silk_cloth"); - // Piglin loved - event.add("minecraft:piglin_loved", "tfc:ore/small_native_gold"); - event.add("minecraft:piglin_loved", "tfc:ore/poor_native_gold"); - event.add("minecraft:piglin_loved", "tfc:ore/normal_native_gold"); - event.add("minecraft:piglin_loved", "tfc:ore/rich_native_gold"); - // Bells event.add("tfc:bells", "tfc:bronze_bell"); event.add("tfc:bells", "tfc:brass_bell"); @@ -432,36 +408,6 @@ function registerTFCBlockTags(event) { // ะฃะดะฐะปะตะฝะธะต ั‚ะตะณะพะฒ ัƒ ั€ัƒะด event.removeAllTagsFrom("/tfc:ore/[^*]+/[^*]+/"); - //#region Nether - - event.add("beneath:nether_bush_plantable_on", "#tfc:clay_grass"); - event.add("minecraft:small_dripleaf_placeable", "#tfc:clay_grass"); - event.add("minecraft:big_dripleaf_placeable", "#tfc:clay_grass"); - event.add("minecraft:frogs_spawnable_on", "#tfc:clay_grass"); - event.add("minecraft:axolotls_spawnable_on", "#tfc:clay_grass"); - - event.add("minecraft:small_dripleaf_placeable", "#tfc:clay"); - event.add("minecraft:big_dripleaf_placeable", "#tfc:clay"); - event.add("minecraft:frogs_spawnable_on", "#tfc:clay"); - event.add("minecraft:axolotls_spawnable_on", "#tfc:clay"); - - event.add("beneath:nether_bush_plantable_on", "#tfc:mud"); - event.add("minecraft:frogs_spawnable_on", "#tfc:mud"); - - event.add("beneath:nether_bush_plantable_on", "#tfc:dirt"); - event.add("minecraft:frogs_spawnable_on", "#tfc:dirt"); - - event.add("minecraft:base_stone_nether", "tfc:rock/raw/gneiss"); - event.add("minecraft:base_stone_nether", "tfc:rock/raw/schist"); - event.add("minecraft:base_stone_nether", "tfc:rock/raw/diorite"); - event.add("minecraft:base_stone_nether", "tfc:rock/raw/granite"); - event.add("minecraft:base_stone_nether", "tfc:rock/raw/gabbro"); - event.add("minecraft:base_stone_nether", "tfc:rock/raw/basalt"); - event.add("minecraft:nether_carver_replaceables", "#minecraft:base_stone_nether"); - event.add("minecraft:frogs_spawnable_on", "#minecraft:base_stone_nether"); - - //#endregion - // Lets the basin be put on top of a charcoal forge event.add("tfc:forge_invisible_whitelist", "create:basin"); @@ -752,42 +698,4 @@ function registerTFCFluidTags(event) { event.add("c:hidden_from_recipe_viewers", "tfc:metal/high_carbon_black_steel"); event.add("c:hidden_from_recipe_viewers", "tfc:metal/high_carbon_red_steel"); event.add("c:hidden_from_recipe_viewers", "tfc:metal/high_carbon_blue_steel"); -} - -/** @param {TagEvent.Biome} event */ -function registerTFCBiomeTags(event) { - event.add("tfc:kaolin_clay_spawns_in", "tfc:rolling_hills"); - - global.TFC_BIOMES.forEach(biome => { - event.add('tfg:overworld_biomes', biome); - }) -} - -/** @param {TagEvent.PlacedFeature} event */ -function registerTFCPlacedFeatures(event) { - // Add back the non-ore ones - event.add("tfc:in_biome/veins", "tfc:vein/gravel"); - event.add("tfc:in_biome/veins", "tfc:vein/kaolin_disc"); - event.add("tfc:in_biome/veins", "tfc:vein/granite_dike"); - event.add("tfc:in_biome/veins", "tfc:vein/diorite_dike"); - event.add("tfc:in_biome/veins", "tfc:vein/gabbro_dike"); - - // Geodes - event.add("tfc:in_biome/veins", "tfg:earth/geode/amethyst"); - event.add("tfc:in_biome/veins", "tfg:earth/geode/barite"); - event.add("tfc:in_biome/veins", "tfg:earth/geode/calcite"); - event.add("tfc:in_biome/veins", "tfg:earth/geode/gypsum"); - event.add("tfc:in_biome/veins", "tfg:earth/geode/opal"); - event.add("tfc:in_biome/veins", "tfg:earth/geode/pyrite"); - event.add("tfc:in_biome/veins", "tfg:earth/geode/quartzite"); - - // Crops - event.add("tfc:feature/crops", "tfg:earth/sunflower_patch"); - event.add("tfc:feature/crops", "tfg:earth/rapeseed_patch"); - event.add("tfc:feature/crops", "tfg:earth/flax_patch"); - - // Other decoration - event.add("tfc:in_biome/underground_decoration", "tfg:glow_lichen"); - event.add("tfc:in_biome/underground_decoration", "tfg:earth/sulfur_patch"); - event.add("tfc:in_biome/underground_decoration", "tfg:earth/oil_spout"); -} +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfcambiental/tags.js b/kubejs/server_scripts/tfcambiental/tags.js deleted file mode 100644 index aeabe274a..000000000 --- a/kubejs/server_scripts/tfcambiental/tags.js +++ /dev/null @@ -1,26 +0,0 @@ -// priority: 0 -"use strict"; - -const registerTFCAmbientalItemTags = (event) => { - - event.add('minecraft:trimmable_armor', 'tfcambiental:wool_hat') - event.add('minecraft:trimmable_armor', 'tfcambiental:wool_sweater') - event.add('minecraft:trimmable_armor', 'tfcambiental:wool_pants') - event.add('minecraft:trimmable_armor', 'tfcambiental:wool_boots') - event.add('minecraft:trimmable_armor', 'tfcambiental:silk_cowl') - event.add('minecraft:trimmable_armor', 'tfcambiental:silk_shirt') - event.add('minecraft:trimmable_armor', 'tfcambiental:silk_pants') - event.add('minecraft:trimmable_armor', 'tfcambiental:silk_shoes') - event.add('minecraft:trimmable_armor', 'tfcambiental:burlap_cowl') - event.add('minecraft:trimmable_armor', 'tfcambiental:burlap_shirt') - event.add('minecraft:trimmable_armor', 'tfcambiental:burlap_pants') - event.add('minecraft:trimmable_armor', 'tfcambiental:burlap_shoes') - event.add('minecraft:trimmable_armor', 'tfcambiental:insulated_leather_hat') - event.add('minecraft:trimmable_armor', 'tfcambiental:insulated_leather_tunic') - event.add('minecraft:trimmable_armor', 'tfcambiental:insulated_leather_pants') - event.add('minecraft:trimmable_armor', 'tfcambiental:insulated_leather_boots') - - event.add('tfg:lightweight_cloth', 'tfc:silk_cloth') - event.add('tfg:lightweight_cloth', 'tfg:phantom_silk') - event.add('tfg:lightweight_cloth', 'tfg:polycaprolactam_fabric') -} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/beneath/tags.beneath.js b/kubejs/server_scripts/tfg/beneath/tags.beneath.js new file mode 100644 index 000000000..c61249bb5 --- /dev/null +++ b/kubejs/server_scripts/tfg/beneath/tags.beneath.js @@ -0,0 +1,139 @@ +"use strict"; + +function registerTFGBeneathItemTags(event) { + + event.add("minecraft:piglin_loved", "gtceu:tiny_pyrite_dust"); + event.add("minecraft:piglin_loved", "gtceu:poor_raw_pyrite"); + event.add("minecraft:piglin_loved", "gtceu:raw_pyrite"); + event.add("minecraft:piglin_loved", "gtceu:rich_raw_pyrite"); + event.add("minecraft:piglin_loved", "tfc:ore/small_native_gold"); + event.add("minecraft:piglin_loved", "tfc:ore/poor_native_gold"); + event.add("minecraft:piglin_loved", "tfc:ore/normal_native_gold"); + event.add("minecraft:piglin_loved", "tfc:ore/rich_native_gold"); + event.add('minecraft:piglin_loved', 'tfg:piglin_disguise') + + event.add('tfc:plants', 'minecraft:spore_blossom') + event.remove('createaddition:plants', 'minecraft:moss_carpet') + + event.add('tfc:compost_greens', 'minecraft:red_mushroom_block') + event.add('tfc:compost_greens', 'minecraft:brown_mushroom_block') + event.add('tfc:compost_greens', 'minecraft:mushroom_stem') + event.add('tfc:compost_greens', 'minecraft:moss_block') + event.add('tfc:compost_greens_low', 'minecraft:moss_carpet') + event.add('tfc:compost_greens_low', 'minecraft:twisting_vines') +} + + +function registerTFGBeneathBlockTags(event) { + event.add('tfg:lush_ground_replaceable', 'minecraft:deepslate') + event.add('tfg:lush_ground_replaceable', 'minecraft:blackstone') + + event.add('minecraft:lush_ground_replaceable', 'minecraft:blackstone') + event.add('beneath:nether_bush_plantable_on', 'minecraft:blackstone') + event.add('beneath:nether_bush_plantable_on', 'minecraft:deepslate') + event.add('beneath:nether_bush_plantable_on', 'minecraft:moss_block') + event.add('beneath:nether_bush_plantable_on', 'minecraft:dripstone_block') + event.add('minecraft:nether_carver_replaceables', 'minecraft:blackstone') + event.add('minecraft:nether_carver_replaceables', 'minecraft:deepslate') + event.add('minecraft:nether_carver_replaceables', 'minecraft:dripstone_block') + event.add('minecraft:frogs_spawnable_on', 'minecraft:deepslate') + event.add('minecraft:frogs_spawnable_on', 'minecraft:blackstone') + event.add('minecraft:frogs_spawnable_on', 'minecraft:dripstone_block') + event.add('minecraft:axolotls_spawnable_on', 'minecraft:deepslate') + event.add('minecraft:axolotls_spawnable_on', 'minecraft:dripstone_block') + event.add('tfc:grass_plantable_on', 'minecraft:moss_block') + event.add('tfc:creeping_plantable_on', 'minecraft:moss_block') + event.add('tfc:creeping_plantable_on', 'minecraft:deepslate') + event.add('tfc:creeping_plantable_on', 'minecraft:blackstone') + event.add('tfc:creeping_stone_plantable_on', 'minecraft:moss_block') + event.add('tfc:creeping_stone_plantable_on', 'minecraft:deepslate') + event.add('tfc:creeping_stone_plantable_on', 'minecraft:blackstone') + + event.add('minecraft:base_stone_nether', 'minecraft:deepslate') + event.add('minecraft:base_stone_nether', 'minecraft:blackstone') + event.add('minecraft:base_stone_nether', 'minecraft:dripstone_block') + event.add("minecraft:base_stone_nether", "tfc:rock/raw/gneiss"); + event.add("minecraft:base_stone_nether", "tfc:rock/raw/schist"); + event.add("minecraft:base_stone_nether", "tfc:rock/raw/diorite"); + event.add("minecraft:base_stone_nether", "tfc:rock/raw/granite"); + event.add("minecraft:base_stone_nether", "tfc:rock/raw/gabbro"); + event.add("minecraft:base_stone_nether", "tfc:rock/raw/basalt"); + + event.add('minecraft:mineable/pickaxe', 'minecraft:lantern'); + + event.add('minecraft:mineable/pickaxe', 'minecraft:cobweb'); + event.add('minecraft:mineable/hoe', 'minecraft:cobweb'); + event.add('minecraft:mineable/shovel', 'minecraft:cobweb'); + event.add('minecraft:mineable/axe', 'minecraft:cobweb'); + + event.add('minecraft:nether_carver_replaceables', 'tfg:rock/hardened_deepslate') + event.add('minecraft:moss_replaceable', 'tfg:rock/hardened_deepslate') + event.add('minecraft:base_stone_nether', 'tfg:rock/hardened_deepslate') + event.add('beneath:nether_bush_plantable_on', 'tfg:rock/hardened_deepslate') + event.add('tfc:grass_plantable_on', 'tfg:rock/hardened_deepslate') + event.add('tfc:creeping_plantable_on', 'tfg:rock/hardened_deepslate') + + event.add('minecraft:nether_carver_replaceables', 'tfg:rock/hardened_blackstone') + event.add('minecraft:moss_replaceable', 'tfg:rock/hardened_blackstone') + event.add('minecraft:base_stone_nether', 'tfg:rock/hardened_blackstone') + event.add('beneath:nether_bush_plantable_on', 'tfg:rock/hardened_blackstone') + event.add('tfc:creeping_plantable_on', 'tfg:rock/hardened_blackstone') + + event.add('minecraft:nether_carver_replaceables', 'tfg:rock/hardened_dripstone') + event.add('minecraft:base_stone_nether', 'tfg:rock/hardened_dripstone') + + event.add("beneath:nether_bush_plantable_on", "#tfc:clay_grass"); + event.add("minecraft:small_dripleaf_placeable", "#tfc:clay_grass"); + event.add("minecraft:big_dripleaf_placeable", "#tfc:clay_grass"); + event.add("minecraft:frogs_spawnable_on", "#tfc:clay_grass"); + event.add("minecraft:axolotls_spawnable_on", "#tfc:clay_grass"); + + event.add("minecraft:small_dripleaf_placeable", "#tfc:clay"); + event.add("minecraft:big_dripleaf_placeable", "#tfc:clay"); + event.add("minecraft:frogs_spawnable_on", "#tfc:clay"); + event.add("minecraft:axolotls_spawnable_on", "#tfc:clay"); + + event.add("beneath:nether_bush_plantable_on", "#tfc:mud"); + event.add("minecraft:frogs_spawnable_on", "#tfc:mud"); + + event.add("beneath:nether_bush_plantable_on", "#tfc:dirt"); + event.add("minecraft:frogs_spawnable_on", "#tfc:dirt"); + + event.add("minecraft:nether_carver_replaceables", "#minecraft:base_stone_nether"); + event.add("minecraft:frogs_spawnable_on", "#minecraft:base_stone_nether"); +} + +function registerTFGBeneathBiomeTags(event) { + + event.add('tfg:nether_biomes', 'tfg:nether/lush_hollow') + event.add('minecraft:allows_surface_slime_spawns', 'tfg:nether/lush_hollow') + event.add('minecraft:spawns_cold_variant_frogs', 'tfg:nether/lush_hollow') + + event.add('tfg:nether_biomes', 'tfg:nether/decaying_caverns') + event.add('minecraft:allows_surface_slime_spawns', 'tfg:nether/decaying_caverns') + event.add('minecraft:spawns_warm_variant_frogs', 'tfg:nether/decaying_caverns') + event.add('minecraft:has_closer_water_fog', 'tfg:nether/decaying_caverns') + + event.add('tfg:nether_biomes', 'tfg:nether/basalt_deltas') + event.add('tfg:nether_biomes', 'tfg:nether/ash_forest') + event.add('tfg:nether_biomes', 'tfg:nether/lava_floes') + event.add('tfg:nether_biomes', 'tfg:nether/webbed_lair') + event.add('tfg:nether_biomes', 'tfg:nether/gneiss_caves') + event.add('tfg:nether_biomes', 'tfg:nether/diorite_caves') + event.add('tfg:nether_biomes', 'tfg:nether/gabbro_caves') + event.add('tfg:nether_biomes', 'tfg:nether/granite_caves') + event.add('tfg:nether_biomes', 'tfg:nether/schist_caves') + + event.add('minecraft:has_structure/nether_fossil', '#tfg:nether_biomes') + event.add('minecraft:has_structure/bastion_remnant', '#tfg:nether_biomes') + +} + +function registerTFGBeneathPlacedFeatures(event) { + + event.add('tfg:nether_veins', 'beneath:vein/crackrack_pipe') + + event.add('tfg:nether_underground_decoration', 'minecraft:spring_open') + event.add('tfg:nether_underground_decoration', 'minecraft:spring_closed') + event.add('tfg:nether_underground_decoration', 'tfg:nether/terrain/magma_blob') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/data.js b/kubejs/server_scripts/tfg/data.js index 07e49af45..d8c290270 100644 --- a/kubejs/server_scripts/tfg/data.js +++ b/kubejs/server_scripts/tfg/data.js @@ -10,6 +10,7 @@ function registerTFCDataForTFG(event) { registerTFGCropRanges(event); registerTFGFLPlanters(event); registerTFGFauna(event); + registerTFGEquipmentData(event); } //#region Heat Data @@ -301,6 +302,16 @@ function registerTFGItemSize(event) { event.itemSize("tfg:beaker", "large", "heavy", "tfg/beaker"); event.itemSize("tfg:flask", "normal", "medium", "tfg/flask"); event.itemSize("tfg:vial", "tiny", "light", "tfg/vial"); + + + event.itemSize('#tfc:ore_pieces', 'very_small', 'very_light', 'tfc_ores') + + event.itemSize('#tfc:foods/sealed_preserves', 'tiny', 'medium', 'sealed_preserves') + event.itemSize('#tfc:foods/preserves', 'tiny', 'medium', 'preserves') + + event.itemSize('#forge:tools/wrenches', 'very_large', 'very_heavy', 'wrenches') + event.itemSize('#forge:tools/mining_hammers', 'very_large', 'very_heavy', 'mining_hammers') + event.itemSize('#forge:tools/spades', 'very_large', 'very_heavy', 'spades') } //#endregion @@ -328,949 +339,4 @@ function registerTFGSupportData(event) { }); } -//#endregion -//#region Food Data - -/** @param {Internal.TFCDataEventJS} event */ -function registerTFGFoodData(event) { - - // Birt - event.foodItem("tfg:food/raw_birt", (food) => { - food.hunger(2); - food.protein(1.2); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_birt", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(2.2); - food.decayModifier(2.25); - }); - - // Crawlermari - event.foodItem("tfg:food/raw_crawlermari", (food) => { - food.hunger(2); - food.water(5); - food.protein(1.2); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_crawlermari", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(2.2); - food.decayModifier(2.25); - }); - - // Limpet - event.foodItem("tfg:food/raw_limpet", (food) => { - food.hunger(2); - food.water(5); - food.protein(1.2); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_limpet", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(2.2); - food.decayModifier(2.25); - }); - - // Moon Rabbit - event.foodItem("tfg:food/raw_moon_rabbit", (food) => { - food.hunger(2); - food.protein(1.2); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_moon_rabbit", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(2.2); - food.decayModifier(2.25); - }); - - // Glacian Mutton - event.foodItem("tfg:food/raw_glacian_mutton", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_glacian_mutton", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Sniffer Beef - event.foodItem("tfg:food/raw_sniffer_beef", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_sniffer_beef", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Wraptor - event.foodItem("tfg:food/raw_wraptor", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_wraptor", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Springling Collar - event.foodItem("tfg:food/raw_springling_collar", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_springling_collar", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Surfer Steak - event.foodItem("tfg:food/raw_surfer_steak", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_surfer_steak", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Cruncher Ribs - event.foodItem("tfg:food/raw_cruncher_ribs", (food) => { - food.hunger(2); - food.protein(2.0); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_cruncher_ribs", (food) => { - food.hunger(4); - food.saturation(2.2); - food.protein(4); - food.decayModifier(2.25); - }); - - // Long Pig Filet - event.foodItem("tfg:food/raw_long_pig_filet", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_long_pig_filet", (food) => { - food.hunger(2); - food.saturation(2); - food.protein(2); - food.decayModifier(2.25); - }); - - // Stackatick Chunks - event.foodItem("tfg:food/raw_stackatick_chunks", (food) => { - food.hunger(2); - food.protein(1.2); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/raw_stickastackatick", (food) => { - food.hunger(2); - food.protein(1.2); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_stickastackatick", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Walker Steak - event.foodItem("tfg:food/raw_walker_steak", (food) => { - food.hunger(2); - food.protein(2.0); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_walker_steak", (food) => { - food.hunger(4); - food.saturation(2.2); - food.protein(4); - food.decayModifier(2.25); - }); - - // Glider Wings - event.foodItem("tfg:food/raw_glider_wings", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_glider_wings", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(2.75); - food.decayModifier(2.25); - }); - - // Soarer - event.foodItem("tfg:food/raw_whole_soarer", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_whole_soarer", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3.1); - food.decayModifier(2.25); - }); - - // Crusher Meat - event.foodItem("tfg:food/raw_crusher_meat", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_crusher_meat", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Goober Meat - event.foodItem("tfg:food/raw_goober_meat", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - food.water(1); - }); - - event.foodItem("tfg:food/cooked_goober_meat", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // high-tech food - global.FOOD_FRUIT.forEach((fruit) => { - event.foodItem(`tfg:food/freeze_dried/${fruit.name}`, (food) => { - food.hunger(4); - food.saturation(fruit.saturation); - food.water(0); - food.fruit(fruit.fruit); - food.decayModifier(fruit.decay); - }); - }); - - event.foodItem("tfg:food/calorie_paste", (food) => { - food.hunger(6); - food.saturation(4); - food.decayModifier(4.5); - food.grain(0.1); - food.vegetables(0.2); - food.protein(0.2); - }); - - event.foodItem("tfg:food/meal_bag", (food) => { - food.type("dynamic"); - }); - - // Sunflower products - event.foodItem("tfg:roasted_sunflower_seeds", (food) => { - food.hunger(4); - food.decayModifier(0.5); - food.grain(0.1); - food.saturation(0.5); - }); - - event.foodItem("tfg:sunflower_product", (food) => { - food.decayModifier(0.5); - }); - - // Amber Roots - event.foodItem("betterend:amber_root_product", (food) => { - food.hunger(4); - food.decayModifier(1); - food.saturation(1); - food.grain(3); - }); - - // Blossom Berries - event.foodItem("betterend:blossom_berry_product", (food) => { - food.hunger(5); - food.decayModifier(2); - food.saturation(1); - food.water(7.5); - food.fruit(2.1); - }); - - // Cave Pumpkin - event.foodItem("betterend:cave_pumpkin", (food) => { - food.hunger(4); - food.saturation(0); - food.decayModifier(0.5); - }); - - event.foodItem("betterend:cave_pumpkin_chunks", (food) => { - food.hunger(4); - food.saturation(1); - food.decayModifier(2.5); - food.water(5); - food.fruit(0.8); - }); - - event.foodItem("betterend:cave_pumpkin_pie_dough", (food) => { - food.hunger(2); - food.decayModifier(3); - }); - - event.foodItem("betterend:cave_pumpkin_pie_raw", (food) => { - food.hunger(2); - food.decayModifier(3); - }); - - event.foodItem("betterend:cave_pumpkin_pie", (food) => { - food.hunger(4); - food.saturation(2.8); - food.decayModifier(1.5); - food.water(5); - food.protein(1); - food.fruit(5); - food.grain(4); - food.dairy(1); - }); - - // Chorus Mushroom - event.foodItem("betterend:chorus_mushroom_product", (food) => { - food.hunger(2); - food.saturation(1); - food.decayModifier(3); - food.water(3); - food.vegetables(1.5); - }); - - event.foodItem("betterend:chorus_mushroom_cooked", (food) => { - food.hunger(2); - food.saturation(2.1); - food.decayModifier(1.5); - food.vegetables(2.5); - }); - - // Shadow Berry - event.foodItem("betterend:shadow_berry_product", (food) => { - food.hunger(5); - food.decayModifier(2); - food.saturation(1); - food.water(5); - food.fruit(1.9); - }); - - event.foodItem("betterend:shadow_berry_cooked", (food) => { - food.hunger(5); - food.decayModifier(1); - food.saturation(2); - food.fruit(2.2); - }); - - // Bolux Mushroom - event.foodItem("betterend:bolux_mushroom_product", (food) => { - food.hunger(2); - food.saturation(1); - food.decayModifier(3); - food.water(3); - food.vegetables(1.5); - }); - - event.foodItem("betterend:bolux_mushroom_cooked", (food) => { - food.hunger(2); - food.saturation(2); - food.decayModifier(1.5); - food.vegetables(2.4); - }); - - // Dino Nuggets - event.foodItem('tfg:food/raw_dino_nugget', (food) => { - food.type("dynamic"); - food.hunger(1); - food.decayModifier(3); - }); - - event.foodItem('tfg:food/cooked_dino_nugget', (food) => { - food.type("dynamic"); - food.hunger(3); - food.saturation(2); - food.decayModifier(1.5); - }); - - // Ice Soup - event.foodItem("tfg:food/ice_soup", (food) => { - food.hunger(1); - food.water(20); - food.decayModifier(0); - }); - - // Fries - event.foodItem('tfg:food/raw_fries', (food) => { - food.hunger(1); - food.decayModifier(3); - food.vegetables(0.25); - }); - - event.foodItem('tfg:food/cooked_fries', (food) => { - food.hunger(2); - food.decayModifier(1.5); - food.vegetables(0.6); - food.saturation(2); - }); - - // Cheese Curds - event.foodItem('tfg:food/raw_beer_battered_cheese_curds', (food) => { - food.hunger(1); - food.decayModifier(1.3); - food.dairy(1); - food.saturation(1); - }); - - event.foodItem('tfg:food/cooked_beer_battered_cheese_curds', (food) => { - food.hunger(3); - food.decayModifier(0.8); - food.dairy(1.2); - food.saturation(2); - food.grain(0.5); - }); - - // Hamburgers - event.foodItem('tfg:food/raw_burger_patty', (food) => { - food.hunger(2); - food.decayModifier(2.3); - food.protein(2); - }); - - event.foodItem('tfg:food/cooked_burger_patty', (food) => { - food.hunger(4); - food.decayModifier(2); - food.protein(2.5); - food.saturation(2); - }); - - event.foodItem('tfg:food/brioche_dough', (food) => { - food.hunger(1.5); - food.decayModifier(2.3); - }); - - event.foodItem('tfg:food/brioche_bun', (food) => { - food.hunger(3.5); - food.decayModifier(1.5); - food.grain(1.5); - food.dairy(0.5); - food.saturation(1); - }); - - event.foodItem('tfg:food/hamburger', (food) => { - food.type("dynamic"); - }); - - event.foodItem('tfg:food/cheeseburger', (food) => { - food.type("dynamic"); - }); - - // Poutine - event.foodItem('tfg:food/poutine', (food) => { - food.type("dynamic_bowl"); - }); - - // Oatmeal - event.foodItem('tfg:food/oatmeal', (food) => { - food.type("dynamic_bowl"); - }); - - // Biochem Items - event.foodItem("tfg:progenitor_cells", (food) => { - food.decayModifier(1); - }); - event.foodItem("tfg:rough_endoplasmic_reticula", (food) => { - food.decayModifier(0.5); - }); - event.foodItem("tfg:smooth_endoplasmic_reticula", (food) => { - food.decayModifier(0.5); - }); - - // Instant Mac - event.foodItem('tfg:food/raw_instant_mac', (food) => { - food.hunger(2); - food.decayModifier(0.2); - }); - - event.foodItem('tfg:food/cooked_instant_mac', (food) => { - food.hunger(3.5); - food.decayModifier(1.6); - food.grain(1.5); - food.dairy(2.5); - food.protein(0.8); - food.saturation(1.8); - }); - - //#region Drinkables - // Proto Growth Medium - event.drinkable("tfg:proto_growth_medium", (data) => { - data.thirst(10); - data.food(food => { - food.dairy(5); - food.protein(1); - }); - data.effect("minecraft:absorption", (effect) => { - effect.amplifier(2); - effect.chance(0.25); - effect.duration(1200); - }); - }); - - // Semiheavy Ammoniacal Water - event.drinkable("tfg:semiheavy_ammoniacal_water", (data) => { - data.thirst(10); - data.effect("minecraft:nausea", (effect) => { - effect.chance(0.5); - effect.duration(200); - }); - }); - - // Rich Stock - event.drinkable('tfg:rich_stock', (data) => { - data.thirst(4); - data.effect("tfc:thirst", (effect) => { - effect.chance(0.2); - effect.duration(20*5); - }); - data.food(food => { - food.protein(0.25); - food.vegetables(0.25); - }); - }); - - // Light Stock - event.drinkable('tfg:light_stock', (data) => { - data.thirst(4); - data.effect("tfc:thirst", (effect) => { - effect.chance(0.2); - effect.duration(20*5); - }); - data.food(food => { - food.protein(0.25); - food.vegetables(0.25); - }); - }); - - // Brown Gravy - event.drinkable('tfg:brown_gravy', (data) => { - data.thirst(2); - data.effect("tfc:thirst", (effect) => { - effect.chance(0.3); - effect.duration(20*5); - }); - data.food(food => { - food.protein(0.5); - food.vegetables(0.5); - food.grain(0.25); - }); - }); - - //#endregion -} - -//#endregion -//#region Crop Data - -/** @param {Internal.TFCDataEventJS} event */ -function registerTFGCropRanges(event) { - // Earth - event.climateRange((climate) => { - climate.minHydration(20); - climate.maxHydration(80); - climate.minTemperature(5); - climate.maxTemperature(40); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "tfg:sunflower"); - - event.climateRange((climate) => { - climate.minHydration(10); - climate.maxHydration(60); - climate.minTemperature(-5); - climate.maxTemperature(25); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(1.5); - }, "tfg:rapeseed"); - - event.climateRange((climate) => { - climate.minHydration(15); - climate.maxHydration(65); - climate.minTemperature(-8); - climate.maxTemperature(25); - climate.hydrationWiggle(6.5); - climate.temperatureWiggle(3); - }, "tfg:flax"); - - // Mars - event.climateRange((climate) => { - climate.minHydration(0); - climate.maxHydration(40); - climate.minTemperature(-150); - climate.maxTemperature(15); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "betterend:amber_root"); - - event.climateRange((climate) => { - climate.minHydration(70); - climate.maxHydration(100); - climate.minTemperature(-80); - climate.maxTemperature(30); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "betterend:blossom_berry"); - - event.climateRange((climate) => { - climate.minHydration(0); - climate.maxHydration(40); - climate.minTemperature(-150); - climate.maxTemperature(15); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "betterend:bolux_mushroom"); - - event.climateRange((climate) => { - climate.minHydration(0); - climate.maxHydration(60); - climate.minTemperature(-100); - climate.maxTemperature(30); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "betterend:cave_pumpkin_plant"); - - event.climateRange((climate) => { - climate.minHydration(0); - climate.maxHydration(40); - climate.minTemperature(-150); - climate.maxTemperature(15); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "betterend:chorus_mushroom"); - - event.climateRange((climate) => { - climate.minHydration(50); - climate.maxHydration(100); - climate.minTemperature(-80); - climate.maxTemperature(30); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "betterend:shadow_berry"); -} - -//#endregion -//#region Planter Data - -/** @param {Internal.TFCDataEventJS} event */ -function registerTFGFLPlanters(event) { - event.firmalifePlantable( - "tfg:sunflower_seeds", - "large", - 0, - 3, - 0.15, - "tfg:sunflower_seeds", - "tfg:sunflower_product", - "nitrogen", - [ - "tfg:block/crop/sunflower_greenhouse_0", - "tfg:block/crop/sunflower_greenhouse_1", - "tfg:block/crop/sunflower_greenhouse_2", - "tfg:block/crop/sunflower_greenhouse_3" - ], - null - ); - - event.firmalifePlantable( - "tfg:rapeseed_seeds", - "large", - 0, - 3, - 0.15, - "tfg:rapeseed_seeds", - "tfg:rapeseed_product", - "phosphorous", - [ - "tfg:block/crop/rapeseed_greenhouse_0", - "tfg:block/crop/rapeseed_greenhouse_1", - "tfg:block/crop/rapeseed_greenhouse_2", - "tfg:block/crop/rapeseed_greenhouse_3" - ], - null - ); - - event.firmalifePlantable( - "tfg:flax_seeds", - "large", - 0, - 3, - 0.2, - "tfg:flax_seeds", - "tfg:flax_product", - "nitrogen", - [ - "tfg:block/crop/flax_age_0", - "tfg:block/crop/flax_age_1", - "tfg:block/crop/flax_age_5_top", - "tfg:block/crop/flax_age_6_top" - ], - null - ); - - event.firmalifePlantable( - "betterend:amber_root_seeds", - "large", - 0, - 3, - 0.15, - "betterend:amber_root_seeds", - "betterend:amber_root_product", - "phosphorous", - [ - "betterend:block/amber_root_0", - "betterend:block/amber_root_1", - "betterend:block/amber_root_2", - "betterend:block/amber_root_3" - ], - null - ); - - event.firmalifePlantable( - "betterend:blossom_berry_seeds", - "large", - 0, - 3, - 0.15, - "betterend:blossom_berry_seeds", - "betterend:blossom_berry_product", - "potassium", - [ - "betterend:block/blossom_berry_seed_0", - "betterend:block/blossom_berry_seed_1", - "betterend:block/blossom_berry_seed_2", - "betterend:block/blossom_berry_seed_3" - ], - null - ); - - event.firmalifePlantable( - "betterend:bolux_mushroom_seeds", - "quad", - 1, - 3, - 0.15, - "betterend:bolux_mushroom_seeds", - "betterend:bolux_mushroom_product", - "phosphorous", - [ - "betterend:block/bolux_mushroom_greenhouse_0", - "betterend:block/bolux_mushroom_greenhouse_1", - "betterend:block/bolux_mushroom_greenhouse_2", - "betterend:block/bolux_mushroom_greenhouse_3" - ], - null - ); - - event.firmalifePlantable( - "betterend:chorus_mushroom_seeds", - "quad", - 1, - 3, - 0.15, - "betterend:chorus_mushroom_seeds", - "betterend:chorus_mushroom_product", - "phosphorous", - [ - "betterend:block/chorus_mushroom_0", - "betterend:block/chorus_mushroom_1", - "betterend:block/chorus_mushroom_2", - "betterend:block/chorus_mushroom_3" - ], - null - ); - - event.firmalifePlantable( - "betterend:cave_pumpkin_plant_seeds", - "hanging", - 2, - 3, - 0.15, - "betterend:cave_pumpkin_plant_seeds", - "betterend:cave_pumpkin", - "phosphorous", - [ - "betterend:block/cave_pumpkin_greenhouse_0", - "betterend:block/cave_pumpkin_greenhouse_1", - "betterend:block/cave_pumpkin_greenhouse_2", - "betterend:block/cave_pumpkin_greenhouse_3" - ], - "betterend:block/cave_pumpkin_top" - ); - - event.firmalifePlantable( - "betterend:shadow_berry_seeds", - "quad", - 1, - 3, - 0.15, - "betterend:shadow_berry_seeds", - "betterend:shadow_berry_product", - "potassium", - [ - "betterend:block/shadow_berry_greenhouse_0", - "betterend:block/shadow_berry_greenhouse_1", - "betterend:block/shadow_berry_greenhouse_2", - "betterend:block/shadow_berry_greenhouse_3" - ], - null - ); -} - -//#endregion -//#region Fauna Data - -/** @param {Internal.TFCDataEventJS} event */ -function registerTFGFauna(event) { - - // -108 is the average at z=-4k to z=-6k, which feels like a big enough band - event.fauna( - climate => { - climate.maxTemp(-108) - climate.fuzzy(false) - }, - faunaData => { - faunaData.solidGround(true) - }, - "tfg:glacian_ram") - - event.fauna( - climate => { - climate.minTemp(-102) - climate.maxTemp(-30) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "tfg:sniffer") - - event.fauna( - climate => { - climate.minTemp(-100) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "tfg:wraptor") - - event.fauna( - climate => { - climate.minTemp(-108) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "species:springling") - - event.fauna( - climate => { - climate.minTemp(-109) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "species:goober") - - event.fauna( - climate => { - climate.minTemp(-97) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "wan_ancient_beasts:walker") - - event.fauna( - climate => { - climate.minTemp(-109) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "wan_ancient_beasts:eater") - - event.fauna( - climate => { - climate.minTemp(-100) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "wan_ancient_beasts:crusher") - - event.fauna( - climate => { - climate.minTemp(-105) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "wan_ancient_beasts:soarer") - - event.fauna( - climate => { - climate.minTemp(-106) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "wan_ancient_beasts:glider") -} - //#endregion \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/equipment/data.equipment.js b/kubejs/server_scripts/tfg/equipment/data.equipment.js new file mode 100644 index 000000000..4263d344b --- /dev/null +++ b/kubejs/server_scripts/tfg/equipment/data.equipment.js @@ -0,0 +1,189 @@ +"use strict"; + +function registerTFGEquipmentData(event) { + + // #region Armor resistances + + event.itemDamageResistance( + 'create:copper_diving_helmet', + 2, + 2, + 2 + ) + event.itemDamageResistance( + 'create:copper_backtank', + 2, + 2, + 2 + ) + event.itemDamageResistance( + 'create:copper_diving_boots', + 2, + 2, + 2 + ) + event.itemDamageResistance( + 'create:copper_diving_helmet', + 2, + 2, + 2 + ) + event.itemDamageResistance( + 'gtceu:hazmat_headpiece', + null, + null, + 3 + ) + event.itemDamageResistance( + 'gtceu:hazmat_chestpiece', + null, + null, + 3 + ) + event.itemDamageResistance( + 'gtceu:hazmat_leggings', + null, + null, + 3 + ) + event.itemDamageResistance( + 'gtceu:hazmat_boots', + null, + null, + 3 + ) + event.itemDamageResistance( + 'create:netherite_diving_helmet', + 13, + 13, + 15 + ) + event.itemDamageResistance( + 'create:netherite_backtank', + 13, + 13, + 15 + ) + event.itemDamageResistance( + 'minecraft:netherite_leggings', + 13, + 13, + 15 + ) + event.itemDamageResistance( + 'create:netherite_diving_boots', + 13, + 13, + 15 + ) + event.itemDamageResistance( + 'gtceu:nanomuscle_helmet', + 16, + 16, + 16 + ) + event.itemDamageResistance( + 'gtceu:nanomuscle_chestplate', + 16, + 16, + 16 + ) + event.itemDamageResistance( + 'gtceu:advanced_nanomuscle_chestplate', + 16, + 16, + 16 + ) + event.itemDamageResistance( + 'gtceu:nanomuscle_leggings', + 16, + 16, + 16 + ) + event.itemDamageResistance( + 'gtceu:nanomuscle_boots', + 16, + 16, + 16 + ) + event.itemDamageResistance( + 'gtceu:quarktech_helmet', + 24, + 24, + 24 + ) + event.itemDamageResistance( + 'gtceu:quarktech_chestplate', + 24, + 24, + 24 + ) + event.itemDamageResistance( + 'gtceu:advanced_quarktech_chestplate', + 24, + 24, + 24 + ) + event.itemDamageResistance( + 'gtceu:quarktech_leggings', + 24, + 24, + 24 + ) + event.itemDamageResistance( + 'gtceu:quarktech_boots', + 24, + 24, + 24 + ) + event.itemDamageResistance( + 'ad_astra:space_helmet', + 16, + 16, + 16 + ) + event.itemDamageResistance( + 'ad_astra:space_suit', + 16, + 16, + 16 + ) + event.itemDamageResistance( + 'ad_astra:space_pants', + 16, + 16, + 16 + ) + event.itemDamageResistance( + 'ad_astra:space_boots', + 16, + 16, + 16 + ) + event.itemDamageResistance( + 'ad_astra:netherite_space_helmet', + 21, + 21, + 21 + ) + event.itemDamageResistance( + 'ad_astra:netherite_space_suit', + 21, + 21, + 21 + ) + event.itemDamageResistance( + 'ad_astra:netherite_space_pants', + 21, + 21, + 21 + ) + event.itemDamageResistance( + 'ad_astra:netherite_space_boots', + 21, + 21, + 21 + ) + + // #endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/equipment/recipes.equipment.js b/kubejs/server_scripts/tfg/equipment/recipes.equipment.js new file mode 100644 index 000000000..83c54f8d4 --- /dev/null +++ b/kubejs/server_scripts/tfg/equipment/recipes.equipment.js @@ -0,0 +1,54 @@ +"use strict"; + +function registerTFGEquipmentRecipes(event) { + // #region Primitive protection + + event.recipes.tfc.barrel_sealed(2000) + .outputItem('tfg:prepared_leather_gloves') + .inputs('tfchotornot:mittens', Fluid.of('tfc:vinegar', 1000)) + .id('tfg:sealed_barrel/prepared_leather_gloves') + + event.recipes.firmalife.vat() + .outputItem('tfg:latex_soaked_gloves') + .inputs('tfg:prepared_leather_gloves', Fluid.of('tfg:vulcanized_latex', 1000)) + .length(300) + .temperature(200) + .id('tfg:vat/latex_soaked_gloves') + + event.recipes.firmalife.oven('tfg:latex_soaked_gloves', 120, 1200, 'gtceu:rubber_gloves') + .id('tfg:oven/rubber_gloves') + + event.remove({ id: 'gtceu:shaped/rubber_gloves' }) + + event.recipes.gtceu.alloy_smelter('rubber_gloves_alloy_smelter') + .itemInputs('2x #forge:plates/rubber') + .notConsumable('create:brass_hand') + .itemOutputs('gtceu:rubber_gloves') + .duration(200) + .EUt(GTValues.VA[GTValues.ULV]) + .category(GTRecipeCategories.INGOT_MOLDING) + + + event.recipes.tfc.damage_inputs_shaped_crafting( + event.shaped('gtceu:face_mask', [ + 'ACA', + 'ABA', + ' D ' + ], { + A: '#forge:string', + B: '#forge:cloth', + C: 'minecraft:paper', + D: '#tfc:sewing_needles' + }) + ).id('gtceu:shaped/face_mask') + + event.recipes.gtceu.assembler('assemble_face_mask') + .itemInputs('4x #forge:string', '#forge:cloth', 'minecraft:paper') + .itemOutputs('gtceu:face_mask') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + .circuit(7) + + // #endregion + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/equipment/tags.equipment.js b/kubejs/server_scripts/tfg/equipment/tags.equipment.js new file mode 100644 index 000000000..b0d28afdc --- /dev/null +++ b/kubejs/server_scripts/tfg/equipment/tags.equipment.js @@ -0,0 +1,52 @@ +"use strict"; + +function registerTFGEquipmentItemTags(event) { + + event.add('minecraft:trimmable_armor', 'create:copper_diving_helmet') + event.add('minecraft:trimmable_armor', 'create:copper_diving_boots') + event.add('minecraft:trimmable_armor', 'create:netherite_diving_helmet') + event.add('minecraft:trimmable_armor', 'create:netherite_diving_boots') + event.add('minecraft:trimmable_armor', 'tfcambiental:wool_hat') + event.add('minecraft:trimmable_armor', 'tfcambiental:wool_sweater') + event.add('minecraft:trimmable_armor', 'tfcambiental:wool_pants') + event.add('minecraft:trimmable_armor', 'tfcambiental:wool_boots') + event.add('minecraft:trimmable_armor', 'tfcambiental:silk_cowl') + event.add('minecraft:trimmable_armor', 'tfcambiental:silk_shirt') + event.add('minecraft:trimmable_armor', 'tfcambiental:silk_pants') + event.add('minecraft:trimmable_armor', 'tfcambiental:silk_shoes') + event.add('minecraft:trimmable_armor', 'tfcambiental:burlap_cowl') + event.add('minecraft:trimmable_armor', 'tfcambiental:burlap_shirt') + event.add('minecraft:trimmable_armor', 'tfcambiental:burlap_pants') + event.add('minecraft:trimmable_armor', 'tfcambiental:burlap_shoes') + event.add('minecraft:trimmable_armor', 'tfcambiental:insulated_leather_hat') + event.add('minecraft:trimmable_armor', 'tfcambiental:insulated_leather_tunic') + event.add('minecraft:trimmable_armor', 'tfcambiental:insulated_leather_pants') + event.add('minecraft:trimmable_armor', 'tfcambiental:insulated_leather_boots') + event.add('minecraft:trimmable_armor', '#firmalife:beekeeper_armor') + + global.GTCEU_ARMORS.forEach((item) => { + event.add("minecraft:trimmable_armor", item); + }); + + event.add('gtceu:ppe_armor', '#ad_astra:space_suit_items') + event.add('minecraft:trimmable_armor', '#ad_astra:space_suit_items') + + event.add('ad_astra:space_suit_items', 'gtceu:quarktech_helmet') + event.add('ad_astra:space_suit_items', 'gtceu:quarktech_chestplate') + event.add('ad_astra:space_suit_items', 'gtceu:advanced_quarktech_chestplate') + event.add('ad_astra:space_suit_items', 'gtceu:quarktech_leggings') + event.add('ad_astra:space_suit_items', 'gtceu:quarktech_boots') + + event.add('ad_astra:freeze_resistant_armor', 'gtceu:quarktech_helmet') + event.add('ad_astra:freeze_resistant_armor', 'gtceu:quarktech_chestplate') + event.add('ad_astra:freeze_resistant_armor', 'gtceu:advanced_quarktech_chestplate') + event.add('ad_astra:freeze_resistant_armor', 'gtceu:quarktech_leggings') + event.add('ad_astra:freeze_resistant_armor', 'gtceu:quarktech_boots') + + event.add('ad_astra:heat_resistant_armor', 'gtceu:quarktech_helmet') + event.add('ad_astra:heat_resistant_armor', 'gtceu:quarktech_chestplate') + event.add('ad_astra:heat_resistant_armor', 'gtceu:advanced_quarktech_chestplate') + event.add('ad_astra:heat_resistant_armor', 'gtceu:quarktech_leggings') + event.add('ad_astra:heat_resistant_armor', 'gtceu:quarktech_boots') + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/europa/tags.europa.js b/kubejs/server_scripts/tfg/europa/tags.europa.js new file mode 100644 index 000000000..de5cfc9a7 --- /dev/null +++ b/kubejs/server_scripts/tfg/europa/tags.europa.js @@ -0,0 +1,22 @@ +"use strict"; + +function registerTFGEuropaEntityTypeTags(event) { + const ENTITIES = [ + 'endermanoverhaul:coral_enderman', + 'endermanoverhaul:snowy_enderman', + 'endermanoverhaul:ice_spikes_enderman', + 'species:deepfish', + 'species:leaf_hanger' + ] + + ENTITIES.forEach(entity => { + event.add('ad_astra:can_survive_extreme_cold', entity) + event.add('ad_astra:lives_without_oxygen', entity) + }) +} + +function registerTFGEuropaPlacedFeatures(event) { + + event.add("tfg:glacio_top_layer_modification", "tfg:glow_lichen") + event.add("tfg:glacio_top_layer_modification", "tfc:surface_loose_rocks") +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/events.interactions.js b/kubejs/server_scripts/tfg/events.interactions.js new file mode 100644 index 000000000..c7ca21bf3 --- /dev/null +++ b/kubejs/server_scripts/tfg/events.interactions.js @@ -0,0 +1,521 @@ + +/** + * @typedef {Object} BrickVariant + * @property {string} brick_type - The name of the brick variant. + * @property {string|null} brick - Main brick block ID. + * @property {string|null} brick_stairs - Brick stairs block ID. + * @property {string|null} brick_slab - Brick slab block ID. + * @property {string|null} brick_wall - Brick wall block ID. + * @property {string|null} cracked_brick - Cracked brick block ID. + * @property {string|null} cracked_stairs - Cracked brick stairs block ID. + * @property {string|null} cracked_slab - Cracked brick slab block ID. + * @property {string|null} cracked_wall - Cracked brick wall block ID. + * @property {string|null} mossy_brick - Mossy brick block ID. + * @property {string|null} mossy_stairs - Mossy brick stairs block ID. + * @property {string|null} mossy_slab - Mossy brick slab block ID. + * @property {string|null} mossy_wall - Mossy brick wall block ID. + * @property {string|null} smooth_brick - Smooth brick block ID. + * @property {string|null} smooth_stairs - Smooth brick stairs block ID. + * @property {string|null} smooth_slab - Smooth brick slab block ID. + * @property {string|null} smooth_wall - Smooth brick wall block ID. + * @property {string|null} chiseled_brick - Chiseled brick block ID. + */ + +const AA_REGULAR_STONES = ['moon', 'mars', 'venus', 'mercury', 'glacio'] + +// #region BRICK_INDEX +/** @type {BrickVariant[]} */ +global.BRICK_INDEX = (global.TFC_STONE_TYPES ? global.TFC_STONE_TYPES : []).map(tfc_stone => ({ + brick_type: tfc_stone, + brick: `tfc:rock/bricks/${tfc_stone}`, brick_stairs: `tfc:rock/bricks/${tfc_stone}_stairs`, brick_slab: `tfc:rock/bricks/${tfc_stone}_slab`, brick_wall: `tfc:rock/bricks/${tfc_stone}_wall`, + cracked_brick: `tfc:rock/cracked_bricks/${tfc_stone}`, cracked_stairs: `tfc:rock/cracked_bricks/${tfc_stone}_stairs`, cracked_slab: `tfc:rock/cracked_bricks/${tfc_stone}_slab`, cracked_wall: `tfc:rock/cracked_bricks/${tfc_stone}_wall`, + mossy_brick: `tfc:rock/mossy_bricks/${tfc_stone}`, mossy_stairs: `tfc:rock/mossy_bricks/${tfc_stone}_stairs`, mossy_slab: `tfc:rock/mossy_bricks/${tfc_stone}_slab`, mossy_wall: `tfc:rock/mossy_bricks/${tfc_stone}_wall`, + smooth_brick: `tfc:rock/smooth/${tfc_stone}`, smooth_stairs: `tfc:rock/smooth/${tfc_stone}_stairs`, smooth_slab: `tfc:rock/smooth/${tfc_stone}_slab`, smooth_wall: `tfc:rock/smooth/${tfc_stone}_wall`, + chiseled_brick: `tfc:rock/chiseled/${tfc_stone}` +})); +(global.CREATE_DECO_BRICK_TYPES ? global.CREATE_DECO_BRICK_TYPES : []).slice(0, -1).forEach(create_brick => { + global.BRICK_INDEX.push({ + brick_type: create_brick, + brick: `createdeco:${create_brick}_bricks`, brick_stairs: `createdeco:${create_brick}_brick_stairs`, brick_slab: `createdeco:${create_brick}_brick_slab`, brick_wall: `createdeco:${create_brick}_brick_wall`, + cracked_brick: `createdeco:cracked_${create_brick}_bricks`, cracked_stairs: `createdeco:cracked_${create_brick}_brick_stairs`, cracked_slab: `createdeco:cracked_${create_brick}_brick_slab`, cracked_wall: `createdeco:cracked_${create_brick}_brick_wall`, + mossy_brick: `createdeco:mossy_${create_brick}_bricks`, mossy_stairs: `createdeco:mossy_${create_brick}_brick_stairs`, mossy_slab: `createdeco:mossy_${create_brick}_brick_slab`, mossy_wall: `createdeco:mossy_${create_brick}_brick_wall`, + smooth_brick: `createdeco:corner_${create_brick}_bricks`, smooth_stairs: `createdeco:corner_${create_brick}_brick_stairs`, smooth_slab: `createdeco:corner_${create_brick}_brick_slab`, smooth_wall: `createdeco:corner_${create_brick}_brick_wall`, + chiseled_brick: `createdeco:tiled_${create_brick}_bricks` + }) +}); +global.BRICK_INDEX = global.BRICK_INDEX.concat([ + // { brick_type: '', + // brick: '', brick_stairs: '', brick_slab: '', brick_wall: '', + // cracked_brick: '', cracked_stairs: '', cracked_slab: '', cracked_wall: '', + // mossy_brick: '', mossy_stairs: '', mossy_slab: '', mossy_wallL: '', + // smooth_brick: '', smooth_stairs: '', smooth_slab: '', smooth_wall: '', + // chiseled_brick: '' }, + + { + brick_type: 'red', + brick: 'minecraft:bricks', brick_stairs: 'minecraft:brick_stairs', brick_slab: 'minecraft:brick_slab', brick_wall: 'minecraft:brick_wall', + cracked_brick: 'createdeco:cracked_red_bricks', cracked_stairs: 'createdeco:cracked_red_brick_stairs', cracked_slab: 'createdeco:cracked_red_brick_slab', cracked_wall: 'createdeco:cracked_red_brick_wall', + mossy_brick: 'createdeco:mossy_red_bricks', mossy_stairs: 'createdeco:mossy_red_brick_stairs', mossy_slab: 'createdeco:mossy_red_brick_slab', mossy_wall: 'createdeco:mossy_red_brick_wall', + smooth_brick: 'createdeco:corner_red_bricks', smooth_stairs: 'createdeco:corner_red_brick_stairs', smooth_slab: 'createdeco:corner_red_brick_slab', smooth_wall: 'createdeco:corner_red_brick_wall', + chiseled_brick: 'createdeco:tiled_red_bricks' + }, + + { + brick_type: 'light_concrete', + brick: 'gtceu:light_concrete_bricks', brick_stairs: null, brick_slab: null, brick_wall: null, + cracked_brick: 'gtceu:cracked_light_concrete_bricks', cracked_stairs: null, cracked_slab: null, cracked_wall: null, + mossy_brick: 'gtceu:mossy_light_concrete_bricks', mossy_stairs: null, mossy_slab: null, mossy_wall: null, + smooth_brick: 'gtceu:polished_light_concrete', smooth_stairs: null, smooth_slab: null, smooth_wall: null, + chiseled_brick: 'gtceu:chiseled_light_concrete' + }, + + { + brick_type: 'dark_concrete', + brick: 'gtceu:dark_concrete_bricks', brick_stairs: null, brick_slab: null, brick_wall: null, + cracked_brick: 'gtceu:cracked_dark_concrete_bricks', cracked_stairs: null, cracked_slab: null, cracked_wall: null, + mossy_brick: 'gtceu:mossy_dark_concrete_bricks', mossy_stairs: null, mossy_slab: null, mossy_wall: null, + smooth_brick: 'gtceu:polished_dark_concrete', smooth_stairs: null, smooth_slab: null, smooth_wall: null, + chiseled_brick: 'gtceu:chiseled_dark_concrete' + }, + + { + brick_type: 'deepslate', + brick: 'minecraft:deepslate_bricks', brick_stairs: 'minecraft:deepslate_brick_stairs', brick_slab: 'minecraft:deepslate_brick_slab', brick_wall: 'minecraft:deepslate_brick_wall', + cracked_brick: 'minecraft:cracked_deepslate_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_bricks_deepslate_slab', cracked_wall: 'tfg:rock/cracked_bricks_deepslate_wall', + mossy_brick: 'tfg:rock/mossy_bricks_deepslate', mossy_stairs: 'tfg:rock/mossy_bricks_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_bricks_deepslate_slab', mossy_wall: 'tfg:rock/mossy_bricks_deepslate_wall', + smooth_brick: 'minecraft:polished_deepslate', smooth_stairs: 'minecraft:polished_deepslate_stairs', smooth_slab: 'minecraft:polished_deepslate_slab', smooth_wall: 'minecraft:polished_deepslate_wall', + chiseled_brick: 'minecraft:chiseled_deepslate' + }, + + { + brick_type: 'deepslate_tiles', + brick: 'minecraft:deepslate_tiles', brick_stairs: 'minecraft:deepslate_tile_stairs', brick_slab: 'minecraft:deepslate_tile_slab', brick_wall: 'minecraft:deepslate_tile_wall', + cracked_brick: 'minecraft:cracked_deepslate_tiles', cracked_stairs: 'tfg:rock/cracked_tiles_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_tiles_deepslate_slab', cracked_wall: 'tfg:rock/cracked_tiles_deepslate_wall', + mossy_brick: null, mossy_stairs: null, mossy_slab: null, mossy_wall: null, + smooth_brick: 'minecraft:polished_deepslate', smooth_stairs: 'minecraft:polished_deepslate_stairs', smooth_slab: 'minecraft:polished_deepslate_slab', smooth_wall: 'minecraft:polished_deepslate_wall', + chiseled_brick: 'minecraft:chiseled_deepslate' + }, + + { + brick_type: 'blackstone', + brick: 'minecraft:polished_blackstone_bricks', brick_stairs: 'minecraft:polished_blackstone_brick_stairs', brick_slab: 'minecraft:polished_blackstone_brick_slab', brick_wall: 'minecraft:polished_blackstone_brick_wall', + cracked_brick: 'minecraft:cracked_polished_blackstone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_blackstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_blackstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_blackstone_wall', + mossy_brick: 'tfg:rock/mossy_bricks_blackstone', mossy_stairs: 'tfg:rock/mossy_bricks_blackstone_stairs', mossy_slab: 'tfg:rock/mossy_bricks_blackstone_slab', mossy_wall: 'tfg:rock/mossy_bricks_blackstone_wall', + smooth_brick: 'minecraft:polished_blackstone', smooth_stairs: 'minecraft:polished_blackstone_stairs', smooth_slab: 'minecraft:polished_blackstone_slab', smooth_wall: 'minecraft:polished_blackstone_wall', + chiseled_brick: 'minecraft:chiseled_polished_blackstone' + }, + + { + brick_type: 'dripstone', + brick: 'create:cut_dripstone_bricks', brick_stairs: 'create:cut_dripstone_brick_stairs', brick_slab: 'create:cut_dripstone_brick_slab', brick_wall: 'create:cut_dripstone_brick_wall', + cracked_brick: 'tfg:rock/cracked_bricks_dripstone', cracked_stairs: 'tfg:rock/cracked_bricks_dripstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_dripstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_dripstone_wall', + mossy_brick: 'tfg:rock/mossy_bricks_dripstone', mossy_stairs: 'tfg:rock/mossy_bricks_dripstone_stairs', mossy_slab: 'tfg:rock/mossy_bricks_dripstone_slab', mossy_wall: 'tfg:rock/mossy_bricks_dripstone_wall', + smooth_brick: 'create:polished_cut_dripstone', smooth_stairs: 'create:polished_cut_dripstone_stairs', smooth_slab: 'create:polished_cut_dripstone_slab', smooth_wall: 'create:polished_cut_dripstone_wall', + chiseled_brick: 'create:small_dripstone_bricks' + }, + + { + brick_type: 'crackrack', + brick: 'minecraft:nether_bricks', brick_stairs: 'minecraft:nether_bricks_stairs', brick_slab: 'minecraft:nether_bricks_slab', brick_wall: 'minecraft:nether_bricks_wall', + cracked_brick: 'minecraft:cracked_nether_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_nether_stairs', cracked_slab: 'tfg:rock/cracked_bricks_nether_slab', cracked_wall: 'tfg:rock/cracked_bricks_nether_wall', + mossy_brick: 'tfg:rock/mossy_bricks_nether', mossy_stairs: 'tfg:rock/mossy_bricks_nether_stairs', mossy_slab: 'tfg:rock/mossy_bricks_nether_slab', mossy_wall: 'tfg:rock/mossy_bricks_nether_wall', + smooth_brick: 'tfg:rock/polished_crackrack', smooth_stairs: 'tfg:rock/polished_crackrack_stairs', smooth_slab: 'tfg:rock/polished_crackrack_slab', smooth_wall: 'tfg:rock/polished_crackrack_wall', + chiseled_brick: 'minecraft:chiseled_nether_bricks' + }, + + { + brick_type: 'moon_deepslate', + brick: 'tfg:rock/bricks_moon_deepslate', brick_stairs: 'tfg:rock/bricks_moon_deepslate_stairs', brick_slab: 'tfg:rock/bricks_moon_deepslate_slab', brick_wall: 'tfg:rock/bricks_moon_deepslate_wall', + cracked_brick: 'tfg:rock/cracked_bricks_moon_deepslate', cracked_stairs: 'tfg:rock/cracked_bricks_moon_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_bricks_moon_slab', cracked_wall: 'tfg:rock/cracked_bricks_moon_wall', + mossy_brick: 'tfg:rock/mossy_bricks_moon_deepslate', mossy_stairs: 'tfg:rock/mossy_bricks_moon_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_bricks_moon_slab', mossy_wall: 'tfg:rock/mossy_bricks_moon_deepslate_wall', + smooth_brick: 'tfg:rock/polished_moon_deepslate', smooth_stairs: 'tfg:rock/polished_moon_deepslate_stairs', smooth_slab: 'ad_astra:polished_moon_stone_slab', smooth_wall: 'tfg:rock/polished_moon_deepslate_wall', + chiseled_brick: 'tfg:rock/chiseled_bricks_moon_deepslate' + }, + + { + brick_type: 'permafrost', + brick: 'ad_astra:permafrost_bricks', brick_stairs: 'ad_astra:permafrost_brick_stairs', brick_slab: 'ad_astra:permafrost_brick_slab', brick_wall: 'ad_astra:permafrost_brick_wall', + cracked_brick: 'ad_astra:cracked_permafrost_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_permafrost_stairs', cracked_slab: 'tfg:rock/cracked_bricks_permafrost_slab', cracked_wall: 'tfg:rock/cracked_bricks_permafrost_wall', + mossy_brick: 'tfg:rock/mossy_bricks_permafrost', mossy_stairs: 'tfg:rock/mossy_bricks_permafrost_stairs', mossy_slab: 'tfg:rock/mossy_bricks_permafrost_slab', mossy_wall: 'tfg:rock/mossy_bricks_permafrost_wall', + smooth_brick: 'ad_astra:polished_permafrost', smooth_stairs: 'ad_astra:polished_permafrost_stairs', smooth_slab: 'ad_astra:polished_permafrost_slab', smooth_wall: 'tfg:rock/polished_permafrost_wall', + chiseled_brick: 'ad_astra:chiseled_permafrost_bricks' + }, + + { + brick_type: 'red_granite', + brick: 'gtceu:red_granite_bricks', brick_stairs: 'tfg:rock/bricks_red_granite_stairs', brick_slab: 'tfg:rock/bricks_red_granite_slab', brick_wall: 'tfg:rock/bricks_red_granite_wall', + cracked_brick: 'gtceu:cracked_red_granite_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_red_granite_stairs', cracked_slab: 'tfg:rock/cracked_bricks_red_granite_slab', cracked_wall: 'tfg:rock/cracked_bricks_red_granite_wall', + mossy_brick: 'gtceu:mossy_red_granite_bricks', mossy_stairs: 'tfg:rock/mossy_bricks_red_granite_stairs', mossy_slab: 'tfg:rock/mossy_bricks_red_granite_slab', mossy_wall: 'tfg:rock/mossy_bricks_red_granite_wall', + smooth_brick: 'gtceu:polished_red_granite', smooth_stairs: 'tfg:rock/polished_red_granite_stairs', smooth_slab: 'tfg:rock/polished_red_granite_slab', smooth_wall: 'tfg:rock/polished_red_granite_wall', + chiseled_brick: 'gtceu:chiseled_red_granite' + }, + + { + brick_type: 'venus_sandstone', + brick: 'ad_astra:venus_sandstone_bricks', brick_stairs: 'ad_astra:venus_sandstone_brick_stairs', brick_slab: 'ad_astra:venus_sandstone_brick_slab', brick_wall: 'tfg:rock/bricks_venus_sandstone_wall', + cracked_brick: 'ad_astra:cracked_venus_sandstone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_venus_sandstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_venus_sandstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_stone_wall', + mossy_brick: null, mossy_stairs: null, mossy_slab: null, mossy_wall: null, + smooth_brick: null, smooth_stairs: null, smooth_slab: null, smooth_wall: null, + chiseled_brick: null + }, + + { + brick_type: 'stone', + brick: 'minecraft:stone_bricks', brick_stairs: 'minecraft:stone_brick_stairs', brick_slab: 'minecraft:stone_brick_slab', brick_wall: 'minecraft:stone_brick_wall', + cracked_brick: 'minecraft:cracked_stone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_stone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_stone_slab', cracked_wall: 'tfg:rock/cracked_bricks_stone_wall', + mossy_brick: 'minecraft:mossy_stone_bricks', mossy_stairs: 'minecraft:mossy_stone_brick_stairs', mossy_slab: 'minecraft:mossy_stone_brick_slab', mossy_wall: 'minecraft:mossy_stone_brick_wall', + smooth_brick: 'minecraft:smooth_stone', smooth_stairs: 'tfg:rock/smooth_stone_stairs', smooth_slab: 'minecraft:smooth_stone_slab', smooth_wall: 'tfg:rock/smooth_stone_wall', + chiseled_brick: 'minecraft:chiseled_stone_bricks' + } +]); + +global.BRICK_INDEX = global.BRICK_INDEX.concat((AA_REGULAR_STONES ? AA_REGULAR_STONES : []).map(stone => ( + { + brick_type: stone, + brick: `ad_astra:${stone}_stone_bricks`, brick_stairs: `ad_astra:${stone}_stone_brick_stairs`, brick_slab: `ad_astra:${stone}_stone_brick_slab`, brick_wall: `ad_astra:${stone}_stone_brick_wall`, + cracked_brick: `ad_astra:cracked_${stone}_stone_bricks`, cracked_stairs: `tfg:rock/cracked_bricks_${stone}_stairs`, cracked_slab: `tfg:rock/cracked_bricks_${stone}_slab`, cracked_wall: `tfg:rock/cracked_bricks_${stone}_wall`, + mossy_brick: `tfg:rock/mossy_bricks_${stone}`, mossy_stairs: `tfg:rock/mossy_bricks_${stone}_stairs`, mossy_slab: `tfg:rock/mossy_bricks_${stone}_slab`, mossy_wall: `tfg:rock/mossy_bricks_${stone}_wall`, + smooth_brick: `ad_astra:polished_${stone}_stone`, smooth_stairs: `ad_astra:polished_${stone}_stone_stairs`, smooth_slab: `ad_astra:polished_${stone}_stone_slab`, smooth_wall: `tfg:rock/polished_${stone}_wall`, + chiseled_brick: `ad_astra:chiseled_${stone}_stone_bricks` + } +))) + +// #endregion BRICK_INDEX + +// #region COBBLE_INDEX +global.COBBLE_INDEX = (global.TFC_STONE_TYPES ? global.TFC_STONE_TYPES : []).map(tfc_stone => ({ + cobble_type: tfc_stone, + block: `tfc:rock/cobble/${tfc_stone}`, stairs: `tfc:rock/cobble/${tfc_stone}_stairs`, slab: `tfc:rock/cobble/${tfc_stone}_slab`, wall: `tfc:rock/cobble/${tfc_stone}_wall`, + mossy_block: `tfc:rock/mossy_cobble/${tfc_stone}`, mossy_stairs: `tfc:rock/mossy_cobble/${tfc_stone}_stairs`, mossy_slab: `tfc:rock/mossy_cobble/${tfc_stone}_slab`, mossy_wall: `tfc:rock/mossy_cobble/${tfc_stone}_wall` +})); + +global.COBBLE_INDEX = global.COBBLE_INDEX.concat([ + { + cobble_type: 'deepslate', + block: 'minecraft:cobbled_deepslate', stairs: 'minecraft:cobbled_deepslate_stairs', slab: 'minecraft:cobbled_deepslate_slab', wall: 'minecraft:cobbled_deepslate_wall', + mossy_block: 'tfg:rock/mossy_cobble_deepslate', mossy_stairs: 'tfg:rock/mossy_cobble_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_cobble_deepslate_slab', mossy_wall: 'tfg:rock/mossy_cobble_deepslate_wall' + }, + + { + cobble_type: 'blackstone', + block: 'tfg:rock/cobble_blackstone', stairs: 'tfg:rock/cobble_blackstone_stairs', slab: 'tfg:rock/cobble_blackstone_slab', wall: 'tfg:rock/cobble_blackstone_wall', + mossy_block: 'tfg:rock/mossy_cobble_blackstone', mossy_stairs: 'tfg:rock/mossy_cobble_blackstone_stairs', mossy_slab: 'tfg:rock/mossy_cobble_blackstone_slab', mossy_wall: 'tfg:rock/mossy_cobble_blackstone_wall' + }, + + { + cobble_type: 'dripstone', + block: 'tfg:rock/cobble_dripstone', stairs: 'tfg:rock/cobble_dripstone_stairs', slab: 'tfg:rock/cobble_dripstone_slab', wall: 'tfg:rock/cobble_dripstone_wall', + mossy_block: 'tfg:rock/mossy_cobble_dripstone', mossy_stairs: 'tfg:rock/mossy_cobble_dripstone_stairs', mossy_slab: 'tfg:rock/mossy_cobble_dripstone_slab', mossy_wall: 'tfg:rock/mossy_cobble_dripstone_wall' + }, + + { + cobble_type: 'crackrack', + block: 'tfg:rock/cobble_crackrack', stairs: 'tfg:rock/cobble_crackrack_stairs', slab: 'tfg:rock/cobble_crackrack_slab', wall: 'tfg:rock/cobble_crackrack_wall', + mossy_block: 'tfg:rock/mossy_cobble_crackrack', mossy_stairs: 'tfg:rock/mossy_cobble_crackrack_stairs', mossy_slab: 'tfg:rock/mossy_cobble_crackrack_slab', mossy_wall: 'tfg:rock/mossy_cobble_crackrack_wall' + }, + + { + cobble_type: 'moon_deepslate', + block: 'tfg:rock/cobble_moon_deepslate', stairs: 'tfg:rock/cobble_moon_deepslate_stairs', slab: 'tfg:rock/cobble_moon_deepslate_slab', wall: 'tfg:rock/cobble_moon_deepslate_wall', + mossy_block: 'tfg:rock/mossy_cobble_moon_deepslate', mossy_stairs: 'tfg:rock/mossy_cobble_moon_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_cobble_moon_deepslate_slab', mossy_wall: 'tfg:rock/mossy_cobble_moon_deepslate_wall' + }, + + { + cobble_type: 'permafrost', + block: 'tfg:rock/cobble_permafrost', stairs: 'tfg:rock/cobble_permafrost_stairs', slab: 'tfg:rock/cobble_permafrost_slab', wall: 'tfg:rock/cobble_permafrost_wall', + mossy_block: 'tfg:rock/mossy_cobble_permafrost', mossy_stairs: 'tfg:rock/mossy_cobble_permafrost_stairs', mossy_slab: 'tfg:rock/mossy_cobble_permafrost_slab', mossy_wall: 'tfg:rock/mossy_cobble_permafrost_wall' + }, + + { + cobble_type: 'red_granite', + block: 'gtceu:red_granite_cobblestone', stairs: 'tfg:rock/cobble_red_granite_stairs', slab: 'tfg:rock/cobble_red_granite_slab', wall: 'tfg:rock/cobble_red_granite_wall', + mossy_block: 'gtceu:mossy_red_granite_cobblestone', mossy_stairs: 'tfg:rock/mossy_cobble_red_granite_stairs', mossy_slab: 'tfg:rock/mossy_cobble_red_granite_slab', mossy_wall: 'tfg:rock/mossy_cobble_red_granite_wall' + }, + + { + cobble_type: 'stone', + block: 'minecraft:cobblestone', stairs: 'minecraft:cobblestone_stairs', slab: 'minecraft:cobblestone_slab', wall: 'minecraft:cobblestone_wall', + mossy_block: 'minecraft:mossy_cobblestone', mossy_stairs: 'minecraft:mossy_cobblestone_stairs', mossy_slab: 'minecraft:mossy_cobblestone_slab', mossy_wall: 'minecraft:mossy_cobblestone_wall' + } +]); + +global.COBBLE_INDEX = global.COBBLE_INDEX.concat((AA_REGULAR_STONES ? AA_REGULAR_STONES : []).map(stone => ( + { + cobble_type: stone, + block: `ad_astra:${stone}_cobblestone`, stairs: `ad_astra:${stone}_cobblestone_stairs`, slab: `ad_astra:${stone}_cobblestone_slab`, wall: `tfg:rock/cobble_${stone}_wall`, + mossy_block: `tfg:rock/mossy_cobble_${stone}`, mossy_stairs: `tfg:rock/mossy_cobble_${stone}_stairs`, mossy_slab: `tfg:rock/mossy_cobble_${stone}_slab`, mossy_wall: `tfg:rock/mossy_cobble_${stone}_wall` + } +))) + +// #endregion COBBLE_INDEX + +/** + * Function for replacing a block with another block by crouch-right-clicking with a tool. + * + * If input and output is null recipe will just return. + * + * @param {*} event + * @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended. + * @param {string} outputBlock -Block ID of the replacement. + * @param {string} toolId -Item ID of the tool. + * @param {boolean} damageTool -Sets wether the tool should be damaged on use. + * @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null. + * @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null. + * @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block. + */ +function transformBlockWithTool(event, inputBlock, outputBlock, toolId, damageTool, soundId, particleId, copyBlockstate) { + const { server, item, player, block } = event; + + if (!inputBlock || !outputBlock) return; + + if (inputBlock.startsWith('#')) { + if (!block.hasTag(inputBlock.substring(1))) return; + } else { + if (block.id.toString() !== inputBlock) return; + } + + if (toolId.startsWith('#')) { + if (item.isEmpty() || !player.mainHandItem.hasTag(toolId.substring(1))) return; + } else { + if (item.isEmpty() || player.mainHandItem.id !== toolId) return; + } + + if (!player.crouching) return; + + let state = block.getBlockState().toString(); + if (state.includes('[') && copyBlockstate === true) { + state = state.substring(state.indexOf('[')); + } else { + state = ''; + } + + if (soundId) { + server.runCommandSilent(`playsound ${soundId} player ${player.username} ${player.x} ${player.y} ${player.z} 1 2 1`) + } + if (particleId) { + server.runCommandSilent(`particle ${particleId} ${block.x} ${block.y + 0.8} ${block.z} 0.1 0.1 0.1 0.6 10`) + } + player.swing(); + + if (!player.isCreative() && damageTool) { + item.damageValue++; + if (item.damageValue >= item.maxDamage) { + server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`); + item.count--; + } + } + + const dim = block.level.name.getString(); + server.runCommandSilent(`execute in ${dim} run fill ${block.x} ${block.y} ${block.z} ${block.x} ${block.y} ${block.z} air`); + server.runCommandSilent(`execute in ${dim} run setblock ${block.x} ${block.y} ${block.z} ${outputBlock}${state}`); +}; + +/** + * Function for replacing a block with another block by crouch-right-clicking with a tool and receiving an item. + * + * If input and output is null recipe will just return. + * + * @param {*} event + * @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended. + * @param {string} outputBlock -Block ID of the replacement. + * @param {string} outputItem -Item ID of item to receive + * @param {number} outputCount -Number of items to be returned + * @param {string} toolId -Item ID of the tool. + * @param {boolean} damageTool -Sets wether the tool should be damaged on use. + * @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null. + * @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null. + * @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block. + */ +function transformBlockWithToolReturn(event, inputBlock, outputBlock, outputItem, outputCount, toolId, damageTool, soundId, particleId, copyBlockstate) { + const { server, item, player, block } = event; + + if (!inputBlock || !outputBlock) return; + + if (inputBlock.startsWith('#')) { + if (!block.hasTag(inputBlock.substring(1))) return; + } else { + if (block.id.toString() !== inputBlock) return; + } + if (!player.crouching) return; + + if (toolId.startsWith('#')) { + if (item.isEmpty() || !player.mainHandItem.hasTag(toolId.substring(1))) return; + } else { + if (item.isEmpty() || player.mainHandItem.id !== toolId) return; + } + + transformBlockWithTool(event, inputBlock, outputBlock, toolId, damageTool, soundId, particleId, copyBlockstate) + + const dim = block.level.name.getString(); + server.runCommandSilent(`execute in ${dim} run summon item ${player.x} ${player.y} ${player.z} {Item:{id:'${outputItem}', Count:${outputCount}b}}`); + +} +/** + * Function for replacing a block with another block by crouch-right-clicking with an item. + * + * If input and output is null recipe will just return. + * + * @param {*} event + * @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended. + * @param {string} outputBlock -Block ID of the replacement. + * @param {string} itemId -Item ID of the consumed item. Accepts Tags. + * @param {boolean} consumeItem -Sets wether the item should be comsumed or not. + * @param {number} consumeAmount -Number of items to consume, can't be greater than stacksize. + * @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null. + * @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null. + * @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block. + */ +function transformBlockWithItem(event, inputBlock, outputBlock, itemId, consumeItem, consumeAmount, soundId, particleId, copyBlockstate) { + const { server, item, player, block } = event; + + if (!inputBlock || !outputBlock) return; + + if (inputBlock.startsWith('#')) { + if (!block.hasTag(inputBlock.substring(1))) return; + } else { + if (block.id.toString() !== inputBlock) return; + } + + if (itemId.startsWith('#')) { + if (item.isEmpty() || !player.mainHandItem.hasTag(itemId.substring(1))) return; + } else { + if (item.isEmpty() || player.mainHandItem.id !== itemId) return; + } + if (!player.crouching) return; + + let state = block.getBlockState().toString() + if (state.includes('[') && copyBlockstate === true) { + state = state.substring(block.getBlockState().toString().indexOf('[')); + } else { + state = '' + } + + if (!player.isCreative() && consumeItem === true) { + if (item.count < consumeAmount) { + player.tell(`Item count is too low. Held amount = ${item.count}, required amount = ${consumeAmount}`) + return; + } + item.count -= consumeAmount; + } + if (soundId) { + server.runCommandSilent(`playsound ${soundId} player ${player.username} ${player.x} ${player.y} ${player.z} 1 2 1`) + } + if (particleId) { + server.runCommandSilent(`particle ${particleId} ${block.x} ${block.y + 0.8} ${block.z} 0.1 0.1 0.1 0.6 10`) + } + player.swing() + event.server.runCommandSilent(`execute in ${event.block.level.name.getString()} run fill ${block.x} ${block.y} ${block.z} ${block.x} ${block.y} ${block.z} air`) + event.server.runCommandSilent(`execute in ${event.block.level.name.getString()} run setblock ${block.x} ${block.y} ${block.z} ${outputBlock}${state}`) +}; + +// Declare Events +BlockEvents.rightClicked(event => { + //Brick index events + for (const b of global.BRICK_INDEX) { + //brick -> cracked + transformBlockWithTool(event, b.brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithTool(event, b.brick_stairs, b.cracked_stairs, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithTool(event, b.brick_slab, b.cracked_slab, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithTool(event, b.brick_wall, b.cracked_wall, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + //brick -> mossy + transformBlockWithItem(event, b.brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick_stairs, b.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick_stairs, b.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick_slab, b.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick_slab, b.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick_wall, b.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick_wall, b.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + //cracked -> mossy + transformBlockWithItem(event, b.cracked_brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_stairs, b.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_stairs, b.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_slab, b.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_slab, b.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_wall, b.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_wall, b.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + //mossy -> cracked + transformBlockWithTool(event, b.mossy_brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithTool(event, b.mossy_stairs, b.cracked_stairs, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithTool(event, b.mossy_slab, b.cracked_slab, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithTool(event, b.mossy_wall, b.cracked_wall, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + //mossy -> brick + transformBlockWithTool(event, b.mossy_brick, b.brick, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.mossy_brick, b.brick, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithTool(event, b.mossy_stairs, b.brick_stairs, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.mossy_stairs, b.brick_stairs, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithTool(event, b.mossy_slab, b.brick_slab, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.mossy_slab, b.brick_slab, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithTool(event, b.mossy_wall, b.brick_wall, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.mossy_wall, b.brick_wall, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + //cracked -> brick + transformBlockWithItem(event, b.cracked_brick, b.brick, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); + transformBlockWithItem(event, b.cracked_stairs, b.brick_stairs, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); + transformBlockWithItem(event, b.cracked_slab, b.brick_slab, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); + transformBlockWithItem(event, b.cracked_wall, b.brick_wall, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); + // brick -> smooth + transformBlockWithTool(event, b.brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true); + transformBlockWithTool(event, b.mossy_brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true); + transformBlockWithTool(event, b.cracked_brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true); + // smooth -> brick + transformBlockWithTool(event, b.smooth_brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithItem(event, b.smooth_brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.smooth_brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithTool(event, b.smooth_brick, b.brick, '#forge:tools/files', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); + } + + //Cobble index events + for (const c of global.COBBLE_INDEX) { + //cobble -> mossy + transformBlockWithItem(event, c.block, c.mossy_block, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.block, c.mossy_block, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.stairs, c.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.stairs, c.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.slab, c.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.slab, c.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.wall, c.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.wall, c.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + //mossy -> cobble + transformBlockWithTool(event, c.mossy_block, c.block, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.mossy_block, c.block, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithTool(event, c.mossy_stairs, c.stairs, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.mossy_stairs, c.stairs, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithTool(event, c.mossy_slab, c.slab, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.mossy_slab, c.slab, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithTool(event, c.mossy_wall, c.wall, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.mossy_wall, c.wall, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + } + + //Misc Events + transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:glacian_wool_frame', 'tfg:glacian_wool', true, 2, 'block.wool.place', 'minecraft:happy_villager', true); + transformBlockWithToolReturn(event, 'tfg:glacian_wool_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:glacian_wool', 2,'#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); + + transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:aes_insulation_frame', 'tfg:aes_insulation_roll', true, 1, 'block.wool.place', 'minecraft:happy_villager', true); + transformBlockWithToolReturn(event, 'tfg:aes_insulation_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:aes_insulation_roll', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); + + transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:moderate_core_frame', 'tfg:graphite_moderator', true, 1, 'block.wool.place', 'minecraft:happy_villager', true); + transformBlockWithToolReturn(event, 'tfg:moderate_core_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:graphite_moderator', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); + + transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:impure_moderate_core_frame', 'tfg:impure_graphite_moderator', true, 1, 'block.wool.place', 'minecraft:happy_villager', true); + transformBlockWithToolReturn(event, 'tfg:impure_moderate_core_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:impure_graphite_moderator', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); + +}); + +// Makes scythes, hoes, and knives take damage when cutting grass +BlockEvents.broken('tfc:mineable_with_sharp_tool', event => { + let player = event.player; + let toolUsed = player.mainHandItem; + + if (!toolUsed.hasTag('tfc:sharp_tools')) { + return; + } + + if (!player.isCreative()) { + toolUsed.damageValue++; + if (toolUsed.damageValue >= toolUsed.maxDamage) { + event.server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`); + toolUsed.count--; + } + } +}); \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/events.js b/kubejs/server_scripts/tfg/events.js index 37f1b7963..4c19dd387 100644 --- a/kubejs/server_scripts/tfg/events.js +++ b/kubejs/server_scripts/tfg/events.js @@ -11,110 +11,6 @@ TFGServerEvents.dimensionalPowerConsumption(event => { event["add(java.lang.String,double)"]("ad_astra:mars_orbit", 100000); }); -//#region Medicine - -//Pills & Tablets -const pill_event = [ - 'haste', - 'luck', - 'night_vision', - 'poison', - 'regeneration', - 'slowness', - 'speed', - 'water_breathing', - 'weakness', -]; - -pill_event.forEach(pill_event => { - - ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:${pill_event}_pill`) return - item.count-- - player.addItemCooldown(item, 100) - server.runCommandSilent(`effect give ${player.username} minecraft:${pill_event} 480 0 true`) - server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) - }); - - ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:${pill_event}_tablet`) return - item.count-- - player.addItemCooldown(item, 100) - server.runCommandSilent(`effect give ${player.username} minecraft:${pill_event} 1800 0 true`) - server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) - }); -}); - -ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:antipoison_pill`) return - item.count-- - player.addItemCooldown(item, 50) - event.player.removeEffect('minecraft:poison') - server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) -}); - -ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:antipoison_tablet`) return - item.count-- - player.addItemCooldown(item, 50) - event.player.removeEffect('minecraft:poison') - event.player.removeEffect('minecraft:wither') - event.player.removeEffect('minecraft:weakness') - event.player.removeEffect('minecraft:slowness') - event.player.removeEffect('minecraft:mining_fatigue') - event.player.removeEffect('minecraft:nausea') - event.player.removeEffect('minecraft:blindness') - event.player.removeEffect('minecraft:hunger') - event.player.removeEffect('minecraft:bad_omen') - event.player.removeEffect('minecraft:darkness') - event.player.removeEffect('minecraft:unluck') - server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) -}); - -//salvos -const salvo_event = [ - 'fire_resistance', - 'invisibility', - 'luck', - 'resistance', -]; - -salvo_event.forEach(salvo_event => { - - ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:${salvo_event}_salvo`) return - item.count-- - player.addItemCooldown(item, 100) - server.runCommandSilent(`effect give ${player.username} minecraft:${salvo_event} 480 0 true`) - server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`) - }); -}); - -ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:absorption_salvo`) return - item.count-- - player.addItemCooldown(item, 200) - server.runCommandSilent(`effect give ${player.username} minecraft:absorption 480 4 true`) - server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`) -}); - -ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:instant_health_salvo`) return - item.count-- - player.addItemCooldown(item, 100) - server.runCommandSilent(`effect give ${player.username} minecraft:instant_health 1 1 true`) - server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`) -}); - -//#endregion - // Vase Sounds global.MINECRAFT_DYE_NAMES.forEach(color => { BlockEvents.rightClicked(event => { @@ -158,623 +54,3 @@ function getTFGPersistentDataRoot(player) { return player.persistentData.getCompound("tfg:custom_data") } -//#region Fishing Net -const fish = [ - 'cod', - 'crappie', - 'jellyfish', - 'lake_trout', - 'largemouth_bass', - 'rainbow_trout', - 'salmon', - 'smallmouth_bass', - 'tropical_fish', - 'bluegill' -]; - -const shellfish = [ - 'lobster', - 'isopod', - 'crayfish' -]; - -//tags wont work here (or at least I couldnt get it to work) so we need to manually declare each net tier. -const tiers = [ - 'wood', - 'brass', - 'rose_gold', - 'sterling_silver', - 'invar', - 'tin_alloy', - 'cupronickel', - 'magnalium' -]; - -//Event detects if fish is right clicked with fishing net and then teleports the mob into the void, plays some actions and gives the player the proper item. -tiers.forEach(tier => { - fish.forEach(fish => { - ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => { - const { item, player, server, target } = event; - - if (target.type !== `tfc:${fish}`) return - server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`) - server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`) - server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`) - event.player.give(`tfc:food/${fish}`) - player.swing() - if (player.isCreative() === false) { - item.damageValue++ - if (item.damageValue >= item.maxDamage) { - server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`) - item.count-- - } - } - }) - }) - - //Shellfish Exception - shellfish.forEach(shellfish => { - ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => { - const { item, player, server, target } = event; - - if (target.type !== `tfc:${shellfish}`) return - server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`) - server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`) - server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`) - event.player.give('tfc:food/shellfish') - player.swing() - if (player.isCreative() === false) { - item.damageValue++ - if (item.damageValue >= item.maxDamage) { - server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`) - item.count-- - } - } - }) - }) - - //Pufferfish Exception - ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => { - const { item, player, server, target } = event; - - if (target.type !== 'tfc:pufferfish') return - server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`) - server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`) - server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`) - event.player.give('minecraft:pufferfish') - player.swing() - if (player.isCreative() === false) { - item.damageValue++ - if (item.damageValue >= item.maxDamage) { - server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`) - item.count-- - } - } - }) -}) -//#endregion - -//#region Block Interactions - -/** - * @typedef {Object} BrickVariant - * @property {string} brick_type - The name of the brick variant. - * @property {string|null} brick - Main brick block ID. - * @property {string|null} brick_stairs - Brick stairs block ID. - * @property {string|null} brick_slab - Brick slab block ID. - * @property {string|null} brick_wall - Brick wall block ID. - * @property {string|null} cracked_brick - Cracked brick block ID. - * @property {string|null} cracked_stairs - Cracked brick stairs block ID. - * @property {string|null} cracked_slab - Cracked brick slab block ID. - * @property {string|null} cracked_wall - Cracked brick wall block ID. - * @property {string|null} mossy_brick - Mossy brick block ID. - * @property {string|null} mossy_stairs - Mossy brick stairs block ID. - * @property {string|null} mossy_slab - Mossy brick slab block ID. - * @property {string|null} mossy_wall - Mossy brick wall block ID. - * @property {string|null} smooth_brick - Smooth brick block ID. - * @property {string|null} smooth_stairs - Smooth brick stairs block ID. - * @property {string|null} smooth_slab - Smooth brick slab block ID. - * @property {string|null} smooth_wall - Smooth brick wall block ID. - * @property {string|null} chiseled_brick - Chiseled brick block ID. - */ - -const AA_REGULAR_STONES = ['moon', 'mars', 'venus', 'mercury', 'glacio'] - -// #region BRICK_INDEX -/** @type {BrickVariant[]} */ -global.BRICK_INDEX = (global.TFC_STONE_TYPES ? global.TFC_STONE_TYPES : []).map(tfc_stone => ({ - brick_type: tfc_stone, - brick: `tfc:rock/bricks/${tfc_stone}`, brick_stairs: `tfc:rock/bricks/${tfc_stone}_stairs`, brick_slab: `tfc:rock/bricks/${tfc_stone}_slab`, brick_wall: `tfc:rock/bricks/${tfc_stone}_wall`, - cracked_brick: `tfc:rock/cracked_bricks/${tfc_stone}`, cracked_stairs: `tfc:rock/cracked_bricks/${tfc_stone}_stairs`, cracked_slab: `tfc:rock/cracked_bricks/${tfc_stone}_slab`, cracked_wall: `tfc:rock/cracked_bricks/${tfc_stone}_wall`, - mossy_brick: `tfc:rock/mossy_bricks/${tfc_stone}`, mossy_stairs: `tfc:rock/mossy_bricks/${tfc_stone}_stairs`, mossy_slab: `tfc:rock/mossy_bricks/${tfc_stone}_slab`, mossy_wall: `tfc:rock/mossy_bricks/${tfc_stone}_wall`, - smooth_brick: `tfc:rock/smooth/${tfc_stone}`, smooth_stairs: `tfc:rock/smooth/${tfc_stone}_stairs`, smooth_slab: `tfc:rock/smooth/${tfc_stone}_slab`, smooth_wall: `tfc:rock/smooth/${tfc_stone}_wall`, - chiseled_brick: `tfc:rock/chiseled/${tfc_stone}` -})); -(global.CREATE_DECO_BRICK_TYPES ? global.CREATE_DECO_BRICK_TYPES : []).slice(0, -1).forEach(create_brick => { - global.BRICK_INDEX.push({ - brick_type: create_brick, - brick: `createdeco:${create_brick}_bricks`, brick_stairs: `createdeco:${create_brick}_brick_stairs`, brick_slab: `createdeco:${create_brick}_brick_slab`, brick_wall: `createdeco:${create_brick}_brick_wall`, - cracked_brick: `createdeco:cracked_${create_brick}_bricks`, cracked_stairs: `createdeco:cracked_${create_brick}_brick_stairs`, cracked_slab: `createdeco:cracked_${create_brick}_brick_slab`, cracked_wall: `createdeco:cracked_${create_brick}_brick_wall`, - mossy_brick: `createdeco:mossy_${create_brick}_bricks`, mossy_stairs: `createdeco:mossy_${create_brick}_brick_stairs`, mossy_slab: `createdeco:mossy_${create_brick}_brick_slab`, mossy_wall: `createdeco:mossy_${create_brick}_brick_wall`, - smooth_brick: `createdeco:corner_${create_brick}_bricks`, smooth_stairs: `createdeco:corner_${create_brick}_brick_stairs`, smooth_slab: `createdeco:corner_${create_brick}_brick_slab`, smooth_wall: `createdeco:corner_${create_brick}_brick_wall`, - chiseled_brick: `createdeco:tiled_${create_brick}_bricks` - }) -}); -global.BRICK_INDEX = global.BRICK_INDEX.concat([ - // { brick_type: '', - // brick: '', brick_stairs: '', brick_slab: '', brick_wall: '', - // cracked_brick: '', cracked_stairs: '', cracked_slab: '', cracked_wall: '', - // mossy_brick: '', mossy_stairs: '', mossy_slab: '', mossy_wallL: '', - // smooth_brick: '', smooth_stairs: '', smooth_slab: '', smooth_wall: '', - // chiseled_brick: '' }, - - { - brick_type: 'red', - brick: 'minecraft:bricks', brick_stairs: 'minecraft:brick_stairs', brick_slab: 'minecraft:brick_slab', brick_wall: 'minecraft:brick_wall', - cracked_brick: 'createdeco:cracked_red_bricks', cracked_stairs: 'createdeco:cracked_red_brick_stairs', cracked_slab: 'createdeco:cracked_red_brick_slab', cracked_wall: 'createdeco:cracked_red_brick_wall', - mossy_brick: 'createdeco:mossy_red_bricks', mossy_stairs: 'createdeco:mossy_red_brick_stairs', mossy_slab: 'createdeco:mossy_red_brick_slab', mossy_wall: 'createdeco:mossy_red_brick_wall', - smooth_brick: 'createdeco:corner_red_bricks', smooth_stairs: 'createdeco:corner_red_brick_stairs', smooth_slab: 'createdeco:corner_red_brick_slab', smooth_wall: 'createdeco:corner_red_brick_wall', - chiseled_brick: 'createdeco:tiled_red_bricks' - }, - - { - brick_type: 'light_concrete', - brick: 'gtceu:light_concrete_bricks', brick_stairs: null, brick_slab: null, brick_wall: null, - cracked_brick: 'gtceu:cracked_light_concrete_bricks', cracked_stairs: null, cracked_slab: null, cracked_wall: null, - mossy_brick: 'gtceu:mossy_light_concrete_bricks', mossy_stairs: null, mossy_slab: null, mossy_wall: null, - smooth_brick: 'gtceu:polished_light_concrete', smooth_stairs: null, smooth_slab: null, smooth_wall: null, - chiseled_brick: 'gtceu:chiseled_light_concrete' - }, - - { - brick_type: 'dark_concrete', - brick: 'gtceu:dark_concrete_bricks', brick_stairs: null, brick_slab: null, brick_wall: null, - cracked_brick: 'gtceu:cracked_dark_concrete_bricks', cracked_stairs: null, cracked_slab: null, cracked_wall: null, - mossy_brick: 'gtceu:mossy_dark_concrete_bricks', mossy_stairs: null, mossy_slab: null, mossy_wall: null, - smooth_brick: 'gtceu:polished_dark_concrete', smooth_stairs: null, smooth_slab: null, smooth_wall: null, - chiseled_brick: 'gtceu:chiseled_dark_concrete' - }, - - { - brick_type: 'deepslate', - brick: 'minecraft:deepslate_bricks', brick_stairs: 'minecraft:deepslate_brick_stairs', brick_slab: 'minecraft:deepslate_brick_slab', brick_wall: 'minecraft:deepslate_brick_wall', - cracked_brick: 'minecraft:cracked_deepslate_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_bricks_deepslate_slab', cracked_wall: 'tfg:rock/cracked_bricks_deepslate_wall', - mossy_brick: 'tfg:rock/mossy_bricks_deepslate', mossy_stairs: 'tfg:rock/mossy_bricks_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_bricks_deepslate_slab', mossy_wall: 'tfg:rock/mossy_bricks_deepslate_wall', - smooth_brick: 'minecraft:polished_deepslate', smooth_stairs: 'minecraft:polished_deepslate_stairs', smooth_slab: 'minecraft:polished_deepslate_slab', smooth_wall: 'minecraft:polished_deepslate_wall', - chiseled_brick: 'minecraft:chiseled_deepslate' - }, - - { - brick_type: 'deepslate_tiles', - brick: 'minecraft:deepslate_tiles', brick_stairs: 'minecraft:deepslate_tile_stairs', brick_slab: 'minecraft:deepslate_tile_slab', brick_wall: 'minecraft:deepslate_tile_wall', - cracked_brick: 'minecraft:cracked_deepslate_tiles', cracked_stairs: 'tfg:rock/cracked_tiles_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_tiles_deepslate_slab', cracked_wall: 'tfg:rock/cracked_tiles_deepslate_wall', - mossy_brick: null, mossy_stairs: null, mossy_slab: null, mossy_wall: null, - smooth_brick: 'minecraft:polished_deepslate', smooth_stairs: 'minecraft:polished_deepslate_stairs', smooth_slab: 'minecraft:polished_deepslate_slab', smooth_wall: 'minecraft:polished_deepslate_wall', - chiseled_brick: 'minecraft:chiseled_deepslate' - }, - - { - brick_type: 'blackstone', - brick: 'minecraft:polished_blackstone_bricks', brick_stairs: 'minecraft:polished_blackstone_brick_stairs', brick_slab: 'minecraft:polished_blackstone_brick_slab', brick_wall: 'minecraft:polished_blackstone_brick_wall', - cracked_brick: 'minecraft:cracked_polished_blackstone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_blackstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_blackstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_blackstone_wall', - mossy_brick: 'tfg:rock/mossy_bricks_blackstone', mossy_stairs: 'tfg:rock/mossy_bricks_blackstone_stairs', mossy_slab: 'tfg:rock/mossy_bricks_blackstone_slab', mossy_wall: 'tfg:rock/mossy_bricks_blackstone_wall', - smooth_brick: 'minecraft:polished_blackstone', smooth_stairs: 'minecraft:polished_blackstone_stairs', smooth_slab: 'minecraft:polished_blackstone_slab', smooth_wall: 'minecraft:polished_blackstone_wall', - chiseled_brick: 'minecraft:chiseled_polished_blackstone' - }, - - { - brick_type: 'dripstone', - brick: 'create:cut_dripstone_bricks', brick_stairs: 'create:cut_dripstone_brick_stairs', brick_slab: 'create:cut_dripstone_brick_slab', brick_wall: 'create:cut_dripstone_brick_wall', - cracked_brick: 'tfg:rock/cracked_bricks_dripstone', cracked_stairs: 'tfg:rock/cracked_bricks_dripstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_dripstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_dripstone_wall', - mossy_brick: 'tfg:rock/mossy_bricks_dripstone', mossy_stairs: 'tfg:rock/mossy_bricks_dripstone_stairs', mossy_slab: 'tfg:rock/mossy_bricks_dripstone_slab', mossy_wall: 'tfg:rock/mossy_bricks_dripstone_wall', - smooth_brick: 'create:polished_cut_dripstone', smooth_stairs: 'create:polished_cut_dripstone_stairs', smooth_slab: 'create:polished_cut_dripstone_slab', smooth_wall: 'create:polished_cut_dripstone_wall', - chiseled_brick: 'create:small_dripstone_bricks' - }, - - { - brick_type: 'crackrack', - brick: 'minecraft:nether_bricks', brick_stairs: 'minecraft:nether_bricks_stairs', brick_slab: 'minecraft:nether_bricks_slab', brick_wall: 'minecraft:nether_bricks_wall', - cracked_brick: 'minecraft:cracked_nether_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_nether_stairs', cracked_slab: 'tfg:rock/cracked_bricks_nether_slab', cracked_wall: 'tfg:rock/cracked_bricks_nether_wall', - mossy_brick: 'tfg:rock/mossy_bricks_nether', mossy_stairs: 'tfg:rock/mossy_bricks_nether_stairs', mossy_slab: 'tfg:rock/mossy_bricks_nether_slab', mossy_wall: 'tfg:rock/mossy_bricks_nether_wall', - smooth_brick: 'tfg:rock/polished_crackrack', smooth_stairs: 'tfg:rock/polished_crackrack_stairs', smooth_slab: 'tfg:rock/polished_crackrack_slab', smooth_wall: 'tfg:rock/polished_crackrack_wall', - chiseled_brick: 'minecraft:chiseled_nether_bricks' - }, - - { - brick_type: 'moon_deepslate', - brick: 'tfg:rock/bricks_moon_deepslate', brick_stairs: 'tfg:rock/bricks_moon_deepslate_stairs', brick_slab: 'tfg:rock/bricks_moon_deepslate_slab', brick_wall: 'tfg:rock/bricks_moon_deepslate_wall', - cracked_brick: 'tfg:rock/cracked_bricks_moon_deepslate', cracked_stairs: 'tfg:rock/cracked_bricks_moon_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_bricks_moon_slab', cracked_wall: 'tfg:rock/cracked_bricks_moon_wall', - mossy_brick: 'tfg:rock/mossy_bricks_moon_deepslate', mossy_stairs: 'tfg:rock/mossy_bricks_moon_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_bricks_moon_slab', mossy_wall: 'tfg:rock/mossy_bricks_moon_deepslate_wall', - smooth_brick: 'tfg:rock/polished_moon_deepslate', smooth_stairs: 'tfg:rock/polished_moon_deepslate_stairs', smooth_slab: 'ad_astra:polished_moon_stone_slab', smooth_wall: 'tfg:rock/polished_moon_deepslate_wall', - chiseled_brick: 'tfg:rock/chiseled_bricks_moon_deepslate' - }, - - { - brick_type: 'permafrost', - brick: 'ad_astra:permafrost_bricks', brick_stairs: 'ad_astra:permafrost_brick_stairs', brick_slab: 'ad_astra:permafrost_brick_slab', brick_wall: 'ad_astra:permafrost_brick_wall', - cracked_brick: 'ad_astra:cracked_permafrost_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_permafrost_stairs', cracked_slab: 'tfg:rock/cracked_bricks_permafrost_slab', cracked_wall: 'tfg:rock/cracked_bricks_permafrost_wall', - mossy_brick: 'tfg:rock/mossy_bricks_permafrost', mossy_stairs: 'tfg:rock/mossy_bricks_permafrost_stairs', mossy_slab: 'tfg:rock/mossy_bricks_permafrost_slab', mossy_wall: 'tfg:rock/mossy_bricks_permafrost_wall', - smooth_brick: 'ad_astra:polished_permafrost', smooth_stairs: 'ad_astra:polished_permafrost_stairs', smooth_slab: 'ad_astra:polished_permafrost_slab', smooth_wall: 'tfg:rock/polished_permafrost_wall', - chiseled_brick: 'ad_astra:chiseled_permafrost_bricks' - }, - - { - brick_type: 'red_granite', - brick: 'gtceu:red_granite_bricks', brick_stairs: 'tfg:rock/bricks_red_granite_stairs', brick_slab: 'tfg:rock/bricks_red_granite_slab', brick_wall: 'tfg:rock/bricks_red_granite_wall', - cracked_brick: 'gtceu:cracked_red_granite_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_red_granite_stairs', cracked_slab: 'tfg:rock/cracked_bricks_red_granite_slab', cracked_wall: 'tfg:rock/cracked_bricks_red_granite_wall', - mossy_brick: 'gtceu:mossy_red_granite_bricks', mossy_stairs: 'tfg:rock/mossy_bricks_red_granite_stairs', mossy_slab: 'tfg:rock/mossy_bricks_red_granite_slab', mossy_wall: 'tfg:rock/mossy_bricks_red_granite_wall', - smooth_brick: 'gtceu:polished_red_granite', smooth_stairs: 'tfg:rock/polished_red_granite_stairs', smooth_slab: 'tfg:rock/polished_red_granite_slab', smooth_wall: 'tfg:rock/polished_red_granite_wall', - chiseled_brick: 'gtceu:chiseled_red_granite' - }, - - { - brick_type: 'venus_sandstone', - brick: 'ad_astra:venus_sandstone_bricks', brick_stairs: 'ad_astra:venus_sandstone_brick_stairs', brick_slab: 'ad_astra:venus_sandstone_brick_slab', brick_wall: 'tfg:rock/bricks_venus_sandstone_wall', - cracked_brick: 'ad_astra:cracked_venus_sandstone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_venus_sandstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_venus_sandstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_stone_wall', - mossy_brick: null, mossy_stairs: null, mossy_slab: null, mossy_wall: null, - smooth_brick: null, smooth_stairs: null, smooth_slab: null, smooth_wall: null, - chiseled_brick: null - }, - - { - brick_type: 'stone', - brick: 'minecraft:stone_bricks', brick_stairs: 'minecraft:stone_brick_stairs', brick_slab: 'minecraft:stone_brick_slab', brick_wall: 'minecraft:stone_brick_wall', - cracked_brick: 'minecraft:cracked_stone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_stone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_stone_slab', cracked_wall: 'tfg:rock/cracked_bricks_stone_wall', - mossy_brick: 'minecraft:mossy_stone_bricks', mossy_stairs: 'minecraft:mossy_stone_brick_stairs', mossy_slab: 'minecraft:mossy_stone_brick_slab', mossy_wall: 'minecraft:mossy_stone_brick_wall', - smooth_brick: 'minecraft:smooth_stone', smooth_stairs: 'tfg:rock/smooth_stone_stairs', smooth_slab: 'minecraft:smooth_stone_slab', smooth_wall: 'tfg:rock/smooth_stone_wall', - chiseled_brick: 'minecraft:chiseled_stone_bricks' - } -]); - -global.BRICK_INDEX = global.BRICK_INDEX.concat((AA_REGULAR_STONES ? AA_REGULAR_STONES : []).map(stone => ( - { - brick_type: stone, - brick: `ad_astra:${stone}_stone_bricks`, brick_stairs: `ad_astra:${stone}_stone_brick_stairs`, brick_slab: `ad_astra:${stone}_stone_brick_slab`, brick_wall: `ad_astra:${stone}_stone_brick_wall`, - cracked_brick: `ad_astra:cracked_${stone}_stone_bricks`, cracked_stairs: `tfg:rock/cracked_bricks_${stone}_stairs`, cracked_slab: `tfg:rock/cracked_bricks_${stone}_slab`, cracked_wall: `tfg:rock/cracked_bricks_${stone}_wall`, - mossy_brick: `tfg:rock/mossy_bricks_${stone}`, mossy_stairs: `tfg:rock/mossy_bricks_${stone}_stairs`, mossy_slab: `tfg:rock/mossy_bricks_${stone}_slab`, mossy_wall: `tfg:rock/mossy_bricks_${stone}_wall`, - smooth_brick: `ad_astra:polished_${stone}_stone`, smooth_stairs: `ad_astra:polished_${stone}_stone_stairs`, smooth_slab: `ad_astra:polished_${stone}_stone_slab`, smooth_wall: `tfg:rock/polished_${stone}_wall`, - chiseled_brick: `ad_astra:chiseled_${stone}_stone_bricks` - } -))) - -// #endregion BRICK_INDEX - -// #region COBBLE_INDEX -global.COBBLE_INDEX = (global.TFC_STONE_TYPES ? global.TFC_STONE_TYPES : []).map(tfc_stone => ({ - cobble_type: tfc_stone, - block: `tfc:rock/cobble/${tfc_stone}`, stairs: `tfc:rock/cobble/${tfc_stone}_stairs`, slab: `tfc:rock/cobble/${tfc_stone}_slab`, wall: `tfc:rock/cobble/${tfc_stone}_wall`, - mossy_block: `tfc:rock/mossy_cobble/${tfc_stone}`, mossy_stairs: `tfc:rock/mossy_cobble/${tfc_stone}_stairs`, mossy_slab: `tfc:rock/mossy_cobble/${tfc_stone}_slab`, mossy_wall: `tfc:rock/mossy_cobble/${tfc_stone}_wall` -})); - -global.COBBLE_INDEX = global.COBBLE_INDEX.concat([ - { - cobble_type: 'deepslate', - block: 'minecraft:cobbled_deepslate', stairs: 'minecraft:cobbled_deepslate_stairs', slab: 'minecraft:cobbled_deepslate_slab', wall: 'minecraft:cobbled_deepslate_wall', - mossy_block: 'tfg:rock/mossy_cobble_deepslate', mossy_stairs: 'tfg:rock/mossy_cobble_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_cobble_deepslate_slab', mossy_wall: 'tfg:rock/mossy_cobble_deepslate_wall' - }, - - { - cobble_type: 'blackstone', - block: 'tfg:rock/cobble_blackstone', stairs: 'tfg:rock/cobble_blackstone_stairs', slab: 'tfg:rock/cobble_blackstone_slab', wall: 'tfg:rock/cobble_blackstone_wall', - mossy_block: 'tfg:rock/mossy_cobble_blackstone', mossy_stairs: 'tfg:rock/mossy_cobble_blackstone_stairs', mossy_slab: 'tfg:rock/mossy_cobble_blackstone_slab', mossy_wall: 'tfg:rock/mossy_cobble_blackstone_wall' - }, - - { - cobble_type: 'dripstone', - block: 'tfg:rock/cobble_dripstone', stairs: 'tfg:rock/cobble_dripstone_stairs', slab: 'tfg:rock/cobble_dripstone_slab', wall: 'tfg:rock/cobble_dripstone_wall', - mossy_block: 'tfg:rock/mossy_cobble_dripstone', mossy_stairs: 'tfg:rock/mossy_cobble_dripstone_stairs', mossy_slab: 'tfg:rock/mossy_cobble_dripstone_slab', mossy_wall: 'tfg:rock/mossy_cobble_dripstone_wall' - }, - - { - cobble_type: 'crackrack', - block: 'tfg:rock/cobble_crackrack', stairs: 'tfg:rock/cobble_crackrack_stairs', slab: 'tfg:rock/cobble_crackrack_slab', wall: 'tfg:rock/cobble_crackrack_wall', - mossy_block: 'tfg:rock/mossy_cobble_crackrack', mossy_stairs: 'tfg:rock/mossy_cobble_crackrack_stairs', mossy_slab: 'tfg:rock/mossy_cobble_crackrack_slab', mossy_wall: 'tfg:rock/mossy_cobble_crackrack_wall' - }, - - { - cobble_type: 'moon_deepslate', - block: 'tfg:rock/cobble_moon_deepslate', stairs: 'tfg:rock/cobble_moon_deepslate_stairs', slab: 'tfg:rock/cobble_moon_deepslate_slab', wall: 'tfg:rock/cobble_moon_deepslate_wall', - mossy_block: 'tfg:rock/mossy_cobble_moon_deepslate', mossy_stairs: 'tfg:rock/mossy_cobble_moon_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_cobble_moon_deepslate_slab', mossy_wall: 'tfg:rock/mossy_cobble_moon_deepslate_wall' - }, - - { - cobble_type: 'permafrost', - block: 'tfg:rock/cobble_permafrost', stairs: 'tfg:rock/cobble_permafrost_stairs', slab: 'tfg:rock/cobble_permafrost_slab', wall: 'tfg:rock/cobble_permafrost_wall', - mossy_block: 'tfg:rock/mossy_cobble_permafrost', mossy_stairs: 'tfg:rock/mossy_cobble_permafrost_stairs', mossy_slab: 'tfg:rock/mossy_cobble_permafrost_slab', mossy_wall: 'tfg:rock/mossy_cobble_permafrost_wall' - }, - - { - cobble_type: 'red_granite', - block: 'gtceu:red_granite_cobblestone', stairs: 'tfg:rock/cobble_red_granite_stairs', slab: 'tfg:rock/cobble_red_granite_slab', wall: 'tfg:rock/cobble_red_granite_wall', - mossy_block: 'gtceu:mossy_red_granite_cobblestone', mossy_stairs: 'tfg:rock/mossy_cobble_red_granite_stairs', mossy_slab: 'tfg:rock/mossy_cobble_red_granite_slab', mossy_wall: 'tfg:rock/mossy_cobble_red_granite_wall' - }, - - { - cobble_type: 'stone', - block: 'minecraft:cobblestone', stairs: 'minecraft:cobblestone_stairs', slab: 'minecraft:cobblestone_slab', wall: 'minecraft:cobblestone_wall', - mossy_block: 'minecraft:mossy_cobblestone', mossy_stairs: 'minecraft:mossy_cobblestone_stairs', mossy_slab: 'minecraft:mossy_cobblestone_slab', mossy_wall: 'minecraft:mossy_cobblestone_wall' - } -]); - -global.COBBLE_INDEX = global.COBBLE_INDEX.concat((AA_REGULAR_STONES ? AA_REGULAR_STONES : []).map(stone => ( - { - cobble_type: stone, - block: `ad_astra:${stone}_cobblestone`, stairs: `ad_astra:${stone}_cobblestone_stairs`, slab: `ad_astra:${stone}_cobblestone_slab`, wall: `tfg:rock/cobble_${stone}_wall`, - mossy_block: `tfg:rock/mossy_cobble_${stone}`, mossy_stairs: `tfg:rock/mossy_cobble_${stone}_stairs`, mossy_slab: `tfg:rock/mossy_cobble_${stone}_slab`, mossy_wall: `tfg:rock/mossy_cobble_${stone}_wall` - } -))) - -// #endregion COBBLE_INDEX - -/** - * Function for replacing a block with another block by crouch-right-clicking with a tool. - * - * If input and output is null recipe will just return. - * - * @param {*} event - * @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended. - * @param {string} outputBlock -Block ID of the replacement. - * @param {string} toolId -Item ID of the tool. - * @param {boolean} damageTool -Sets wether the tool should be damaged on use. - * @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null. - * @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null. - * @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block. - */ -function transformBlockWithTool(event, inputBlock, outputBlock, toolId, damageTool, soundId, particleId, copyBlockstate) { - const { server, item, player, block } = event; - - if (!inputBlock || !outputBlock) return; - - if (inputBlock.startsWith('#')) { - if (!block.hasTag(inputBlock.substring(1))) return; - } else { - if (block.id.toString() !== inputBlock) return; - } - - if (toolId.startsWith('#')) { - if (item.isEmpty() || !player.mainHandItem.hasTag(toolId.substring(1))) return; - } else { - if (item.isEmpty() || player.mainHandItem.id !== toolId) return; - } - - if (!player.crouching) return; - - let state = block.getBlockState().toString(); - if (state.includes('[') && copyBlockstate === true) { - state = state.substring(state.indexOf('[')); - } else { - state = ''; - } - - if (soundId) { - server.runCommandSilent(`playsound ${soundId} player ${player.username} ${player.x} ${player.y} ${player.z} 1 2 1`) - } - if (particleId) { - server.runCommandSilent(`particle ${particleId} ${block.x} ${block.y + 0.8} ${block.z} 0.1 0.1 0.1 0.6 10`) - } - player.swing(); - - if (!player.isCreative() && damageTool) { - item.damageValue++; - if (item.damageValue >= item.maxDamage) { - server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`); - item.count--; - } - } - - const dim = block.level.name.getString(); - server.runCommandSilent(`execute in ${dim} run fill ${block.x} ${block.y} ${block.z} ${block.x} ${block.y} ${block.z} air`); - server.runCommandSilent(`execute in ${dim} run setblock ${block.x} ${block.y} ${block.z} ${outputBlock}${state}`); -}; - -/** - * Function for replacing a block with another block by crouch-right-clicking with a tool and receiving an item. - * - * If input and output is null recipe will just return. - * - * @param {*} event - * @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended. - * @param {string} outputBlock -Block ID of the replacement. - * @param {string} outputItem -Item ID of item to receive - * @param {number} outputCount -Number of items to be returned - * @param {string} toolId -Item ID of the tool. - * @param {boolean} damageTool -Sets wether the tool should be damaged on use. - * @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null. - * @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null. - * @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block. - */ -function transformBlockWithToolReturn(event, inputBlock, outputBlock, outputItem, outputCount, toolId, damageTool, soundId, particleId, copyBlockstate) { - const { server, item, player, block } = event; - - if (!inputBlock || !outputBlock) return; - - if (inputBlock.startsWith('#')) { - if (!block.hasTag(inputBlock.substring(1))) return; - } else { - if (block.id.toString() !== inputBlock) return; - } - if (!player.crouching) return; - - if (toolId.startsWith('#')) { - if (item.isEmpty() || !player.mainHandItem.hasTag(toolId.substring(1))) return; - } else { - if (item.isEmpty() || player.mainHandItem.id !== toolId) return; - } - - transformBlockWithTool(event, inputBlock, outputBlock, toolId, damageTool, soundId, particleId, copyBlockstate) - - const dim = block.level.name.getString(); - server.runCommandSilent(`execute in ${dim} run summon item ${player.x} ${player.y} ${player.z} {Item:{id:'${outputItem}', Count:${outputCount}b}}`); - -} -/** - * Function for replacing a block with another block by crouch-right-clicking with an item. - * - * If input and output is null recipe will just return. - * - * @param {*} event - * @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended. - * @param {string} outputBlock -Block ID of the replacement. - * @param {string} itemId -Item ID of the consumed item. Accepts Tags. - * @param {boolean} consumeItem -Sets wether the item should be comsumed or not. - * @param {number} consumeAmount -Number of items to consume, can't be greater than stacksize. - * @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null. - * @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null. - * @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block. - */ -function transformBlockWithItem(event, inputBlock, outputBlock, itemId, consumeItem, consumeAmount, soundId, particleId, copyBlockstate) { - const { server, item, player, block } = event; - - if (!inputBlock || !outputBlock) return; - - if (inputBlock.startsWith('#')) { - if (!block.hasTag(inputBlock.substring(1))) return; - } else { - if (block.id.toString() !== inputBlock) return; - } - - if (itemId.startsWith('#')) { - if (item.isEmpty() || !player.mainHandItem.hasTag(itemId.substring(1))) return; - } else { - if (item.isEmpty() || player.mainHandItem.id !== itemId) return; - } - if (!player.crouching) return; - - let state = block.getBlockState().toString() - if (state.includes('[') && copyBlockstate === true) { - state = state.substring(block.getBlockState().toString().indexOf('[')); - } else { - state = '' - } - - if (!player.isCreative() && consumeItem === true) { - if (item.count < consumeAmount) { - player.tell(`Item count is too low. Held amount = ${item.count}, required amount = ${consumeAmount}`) - return; - } - item.count -= consumeAmount; - } - if (soundId) { - server.runCommandSilent(`playsound ${soundId} player ${player.username} ${player.x} ${player.y} ${player.z} 1 2 1`) - } - if (particleId) { - server.runCommandSilent(`particle ${particleId} ${block.x} ${block.y + 0.8} ${block.z} 0.1 0.1 0.1 0.6 10`) - } - player.swing() - event.server.runCommandSilent(`execute in ${event.block.level.name.getString()} run fill ${block.x} ${block.y} ${block.z} ${block.x} ${block.y} ${block.z} air`) - event.server.runCommandSilent(`execute in ${event.block.level.name.getString()} run setblock ${block.x} ${block.y} ${block.z} ${outputBlock}${state}`) -}; - -// Declare Events -BlockEvents.rightClicked(event => { - //Brick index events - for (const b of global.BRICK_INDEX) { - //brick -> cracked - transformBlockWithTool(event, b.brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithTool(event, b.brick_stairs, b.cracked_stairs, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithTool(event, b.brick_slab, b.cracked_slab, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithTool(event, b.brick_wall, b.cracked_wall, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - //brick -> mossy - transformBlockWithItem(event, b.brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick_stairs, b.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick_stairs, b.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick_slab, b.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick_slab, b.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick_wall, b.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick_wall, b.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - //cracked -> mossy - transformBlockWithItem(event, b.cracked_brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_stairs, b.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_stairs, b.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_slab, b.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_slab, b.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_wall, b.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_wall, b.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - //mossy -> cracked - transformBlockWithTool(event, b.mossy_brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithTool(event, b.mossy_stairs, b.cracked_stairs, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithTool(event, b.mossy_slab, b.cracked_slab, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithTool(event, b.mossy_wall, b.cracked_wall, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - //mossy -> brick - transformBlockWithTool(event, b.mossy_brick, b.brick, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.mossy_brick, b.brick, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithTool(event, b.mossy_stairs, b.brick_stairs, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.mossy_stairs, b.brick_stairs, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithTool(event, b.mossy_slab, b.brick_slab, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.mossy_slab, b.brick_slab, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithTool(event, b.mossy_wall, b.brick_wall, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.mossy_wall, b.brick_wall, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - //cracked -> brick - transformBlockWithItem(event, b.cracked_brick, b.brick, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); - transformBlockWithItem(event, b.cracked_stairs, b.brick_stairs, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); - transformBlockWithItem(event, b.cracked_slab, b.brick_slab, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); - transformBlockWithItem(event, b.cracked_wall, b.brick_wall, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); - // brick -> smooth - transformBlockWithTool(event, b.brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true); - transformBlockWithTool(event, b.mossy_brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true); - transformBlockWithTool(event, b.cracked_brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true); - // smooth -> brick - transformBlockWithTool(event, b.smooth_brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithItem(event, b.smooth_brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.smooth_brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithTool(event, b.smooth_brick, b.brick, '#forge:tools/files', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); - } - - //Cobble index events - for (const c of global.COBBLE_INDEX) { - //cobble -> mossy - transformBlockWithItem(event, c.block, c.mossy_block, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.block, c.mossy_block, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.stairs, c.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.stairs, c.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.slab, c.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.slab, c.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.wall, c.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.wall, c.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - //mossy -> cobble - transformBlockWithTool(event, c.mossy_block, c.block, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.mossy_block, c.block, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithTool(event, c.mossy_stairs, c.stairs, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.mossy_stairs, c.stairs, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithTool(event, c.mossy_slab, c.slab, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.mossy_slab, c.slab, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithTool(event, c.mossy_wall, c.wall, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.mossy_wall, c.wall, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - } - - //Misc Events - transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:glacian_wool_frame', 'tfg:glacian_wool', true, 2, 'block.wool.place', 'minecraft:happy_villager', true); - transformBlockWithToolReturn(event, 'tfg:glacian_wool_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:glacian_wool', 2,'#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); - - transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:aes_insulation_frame', 'tfg:aes_insulation_roll', true, 1, 'block.wool.place', 'minecraft:happy_villager', true); - transformBlockWithToolReturn(event, 'tfg:aes_insulation_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:aes_insulation_roll', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); - - transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:moderate_core_frame', 'tfg:graphite_moderator', true, 1, 'block.wool.place', 'minecraft:happy_villager', true); - transformBlockWithToolReturn(event, 'tfg:moderate_core_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:graphite_moderator', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); - - transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:impure_moderate_core_frame', 'tfg:impure_graphite_moderator', true, 1, 'block.wool.place', 'minecraft:happy_villager', true); - transformBlockWithToolReturn(event, 'tfg:impure_moderate_core_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:impure_graphite_moderator', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); - -}); - -// Makes scythes, hoes, and knives take damage when cutting grass -BlockEvents.broken('tfc:mineable_with_sharp_tool', event => { - let player = event.player; - let toolUsed = player.mainHandItem; - - if (!toolUsed.hasTag('tfc:sharp_tools')) { - return; - } - - if (!player.isCreative()) { - toolUsed.damageValue++; - if (toolUsed.damageValue >= toolUsed.maxDamage) { - event.server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`); - toolUsed.count--; - } - } -}); - -//#endregion diff --git a/kubejs/server_scripts/tfg/food/data.crops.js b/kubejs/server_scripts/tfg/food/data.crops.js new file mode 100644 index 000000000..af2a55d2f --- /dev/null +++ b/kubejs/server_scripts/tfg/food/data.crops.js @@ -0,0 +1,88 @@ +"use strict"; + + +/** @param {Internal.TFCDataEventJS} event */ +function registerTFGCropRanges(event) { + // Earth + event.climateRange((climate) => { + climate.minHydration(20); + climate.maxHydration(80); + climate.minTemperature(5); + climate.maxTemperature(40); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "tfg:sunflower"); + + event.climateRange((climate) => { + climate.minHydration(10); + climate.maxHydration(60); + climate.minTemperature(-5); + climate.maxTemperature(25); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(1.5); + }, "tfg:rapeseed"); + + event.climateRange((climate) => { + climate.minHydration(15); + climate.maxHydration(65); + climate.minTemperature(-8); + climate.maxTemperature(25); + climate.hydrationWiggle(6.5); + climate.temperatureWiggle(3); + }, "tfg:flax"); + + // Mars + event.climateRange((climate) => { + climate.minHydration(0); + climate.maxHydration(40); + climate.minTemperature(-150); + climate.maxTemperature(15); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "betterend:amber_root"); + + event.climateRange((climate) => { + climate.minHydration(70); + climate.maxHydration(100); + climate.minTemperature(-80); + climate.maxTemperature(30); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "betterend:blossom_berry"); + + event.climateRange((climate) => { + climate.minHydration(0); + climate.maxHydration(40); + climate.minTemperature(-150); + climate.maxTemperature(15); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "betterend:bolux_mushroom"); + + event.climateRange((climate) => { + climate.minHydration(0); + climate.maxHydration(60); + climate.minTemperature(-100); + climate.maxTemperature(30); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "betterend:cave_pumpkin_plant"); + + event.climateRange((climate) => { + climate.minHydration(0); + climate.maxHydration(40); + climate.minTemperature(-150); + climate.maxTemperature(15); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "betterend:chorus_mushroom"); + + event.climateRange((climate) => { + climate.minHydration(50); + climate.maxHydration(100); + climate.minTemperature(-80); + climate.maxTemperature(30); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "betterend:shadow_berry"); +} diff --git a/kubejs/server_scripts/tfg/food/data.food.js b/kubejs/server_scripts/tfg/food/data.food.js new file mode 100644 index 000000000..def08ba3d --- /dev/null +++ b/kubejs/server_scripts/tfg/food/data.food.js @@ -0,0 +1,583 @@ +"use strict"; + +/** @param {Internal.TFCDataEventJS} event */ +function registerTFGFoodData(event) { + + // Ice shavings + event.foodItem('firmalife:ice_shavings', food => { + food.water(5) + food.decayModifier(0) + }) + + // Birt + event.foodItem("tfg:food/raw_birt", (food) => { + food.hunger(2); + food.protein(1.2); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_birt", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(2.2); + food.decayModifier(2.25); + }); + + // Crawlermari + event.foodItem("tfg:food/raw_crawlermari", (food) => { + food.hunger(2); + food.water(5); + food.protein(1.2); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_crawlermari", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(2.2); + food.decayModifier(2.25); + }); + + // Limpet + event.foodItem("tfg:food/raw_limpet", (food) => { + food.hunger(2); + food.water(5); + food.protein(1.2); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_limpet", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(2.2); + food.decayModifier(2.25); + }); + + // Moon Rabbit + event.foodItem("tfg:food/raw_moon_rabbit", (food) => { + food.hunger(2); + food.protein(1.2); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_moon_rabbit", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(2.2); + food.decayModifier(2.25); + }); + + // Glacian Mutton + event.foodItem("tfg:food/raw_glacian_mutton", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_glacian_mutton", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Sniffer Beef + event.foodItem("tfg:food/raw_sniffer_beef", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_sniffer_beef", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Wraptor + event.foodItem("tfg:food/raw_wraptor", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_wraptor", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Springling Collar + event.foodItem("tfg:food/raw_springling_collar", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_springling_collar", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Surfer Steak + event.foodItem("tfg:food/raw_surfer_steak", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_surfer_steak", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Cruncher Ribs + event.foodItem("tfg:food/raw_cruncher_ribs", (food) => { + food.hunger(2); + food.protein(2.0); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_cruncher_ribs", (food) => { + food.hunger(4); + food.saturation(2.2); + food.protein(4); + food.decayModifier(2.25); + }); + + // Long Pig Filet + event.foodItem("tfg:food/raw_long_pig_filet", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_long_pig_filet", (food) => { + food.hunger(2); + food.saturation(2); + food.protein(2); + food.decayModifier(2.25); + }); + + // Stackatick Chunks + event.foodItem("tfg:food/raw_stackatick_chunks", (food) => { + food.hunger(2); + food.protein(1.2); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/raw_stickastackatick", (food) => { + food.hunger(2); + food.protein(1.2); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_stickastackatick", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Walker Steak + event.foodItem("tfg:food/raw_walker_steak", (food) => { + food.hunger(2); + food.protein(2.0); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_walker_steak", (food) => { + food.hunger(4); + food.saturation(2.2); + food.protein(4); + food.decayModifier(2.25); + }); + + // Glider Wings + event.foodItem("tfg:food/raw_glider_wings", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_glider_wings", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(2.75); + food.decayModifier(2.25); + }); + + // Soarer + event.foodItem("tfg:food/raw_whole_soarer", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_whole_soarer", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3.1); + food.decayModifier(2.25); + }); + + // Crusher Meat + event.foodItem("tfg:food/raw_crusher_meat", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_crusher_meat", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Goober Meat + event.foodItem("tfg:food/raw_goober_meat", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + food.water(1); + }); + + event.foodItem("tfg:food/cooked_goober_meat", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // high-tech food + global.FOOD_FRUIT.forEach((fruit) => { + event.foodItem(`tfg:food/freeze_dried/${fruit.name}`, (food) => { + food.hunger(4); + food.saturation(fruit.saturation); + food.water(0); + food.fruit(fruit.fruit); + food.decayModifier(fruit.decay); + }); + }); + + event.foodItem("tfg:food/calorie_paste", (food) => { + food.hunger(6); + food.saturation(4); + food.decayModifier(4.5); + food.grain(0.1); + food.vegetables(0.2); + food.protein(0.2); + }); + + event.foodItem("tfg:food/meal_bag", (food) => { + food.type("dynamic"); + }); + + // Sunflower products + event.foodItem("tfg:roasted_sunflower_seeds", (food) => { + food.hunger(4); + food.decayModifier(0.5); + food.grain(0.1); + food.saturation(0.5); + }); + + event.foodItem("tfg:sunflower_product", (food) => { + food.decayModifier(0.5); + }); + + // Amber Roots + event.foodItem("betterend:amber_root_product", (food) => { + food.hunger(4); + food.decayModifier(1); + food.saturation(1); + food.grain(3); + }); + + // Blossom Berries + event.foodItem("betterend:blossom_berry_product", (food) => { + food.hunger(5); + food.decayModifier(2); + food.saturation(1); + food.water(7.5); + food.fruit(2.1); + }); + + // Cave Pumpkin + event.foodItem("betterend:cave_pumpkin", (food) => { + food.hunger(4); + food.saturation(0); + food.decayModifier(0.5); + }); + + event.foodItem("betterend:cave_pumpkin_chunks", (food) => { + food.hunger(4); + food.saturation(1); + food.decayModifier(2.5); + food.water(5); + food.fruit(0.8); + }); + + event.foodItem("betterend:cave_pumpkin_pie_dough", (food) => { + food.hunger(2); + food.decayModifier(3); + }); + + event.foodItem("betterend:cave_pumpkin_pie_raw", (food) => { + food.hunger(2); + food.decayModifier(3); + }); + + event.foodItem("betterend:cave_pumpkin_pie", (food) => { + food.hunger(4); + food.saturation(2.8); + food.decayModifier(1.5); + food.water(5); + food.protein(1); + food.fruit(5); + food.grain(4); + food.dairy(1); + }); + + // Chorus Mushroom + event.foodItem("betterend:chorus_mushroom_product", (food) => { + food.hunger(2); + food.saturation(1); + food.decayModifier(3); + food.water(3); + food.vegetables(1.5); + }); + + event.foodItem("betterend:chorus_mushroom_cooked", (food) => { + food.hunger(2); + food.saturation(2.1); + food.decayModifier(1.5); + food.vegetables(2.5); + }); + + // Shadow Berry + event.foodItem("betterend:shadow_berry_product", (food) => { + food.hunger(5); + food.decayModifier(2); + food.saturation(1); + food.water(5); + food.fruit(1.9); + }); + + event.foodItem("betterend:shadow_berry_cooked", (food) => { + food.hunger(5); + food.decayModifier(1); + food.saturation(2); + food.fruit(2.2); + }); + + // Bolux Mushroom + event.foodItem("betterend:bolux_mushroom_product", (food) => { + food.hunger(2); + food.saturation(1); + food.decayModifier(3); + food.water(3); + food.vegetables(1.5); + }); + + event.foodItem("betterend:bolux_mushroom_cooked", (food) => { + food.hunger(2); + food.saturation(2); + food.decayModifier(1.5); + food.vegetables(2.4); + }); + + // Dino Nuggets + event.foodItem('tfg:food/raw_dino_nugget', (food) => { + food.type("dynamic"); + food.hunger(1); + food.decayModifier(3); + }); + + event.foodItem('tfg:food/cooked_dino_nugget', (food) => { + food.type("dynamic"); + food.hunger(3); + food.saturation(2); + food.decayModifier(1.5); + }); + + // Ice Soup + event.foodItem("tfg:food/ice_soup", (food) => { + food.hunger(1); + food.water(20); + food.decayModifier(0); + }); + + // Fries + event.foodItem('tfg:food/raw_fries', (food) => { + food.hunger(1); + food.decayModifier(3); + food.vegetables(0.25); + }); + + event.foodItem('tfg:food/cooked_fries', (food) => { + food.hunger(2); + food.decayModifier(1.5); + food.vegetables(0.6); + food.saturation(2); + }); + + // Cheese Curds + event.foodItem('tfg:food/raw_beer_battered_cheese_curds', (food) => { + food.hunger(1); + food.decayModifier(1.3); + food.dairy(1); + food.saturation(1); + }); + + event.foodItem('tfg:food/cooked_beer_battered_cheese_curds', (food) => { + food.hunger(3); + food.decayModifier(0.8); + food.dairy(1.2); + food.saturation(2); + food.grain(0.5); + }); + + // Hamburgers + event.foodItem('tfg:food/raw_burger_patty', (food) => { + food.hunger(2); + food.decayModifier(2.3); + food.protein(2); + }); + + event.foodItem('tfg:food/cooked_burger_patty', (food) => { + food.hunger(4); + food.decayModifier(2); + food.protein(2.5); + food.saturation(2); + }); + + event.foodItem('tfg:food/brioche_dough', (food) => { + food.hunger(1.5); + food.decayModifier(2.3); + }); + + event.foodItem('tfg:food/brioche_bun', (food) => { + food.hunger(3.5); + food.decayModifier(1.5); + food.grain(1.5); + food.dairy(0.5); + food.saturation(1); + }); + + event.foodItem('tfg:food/hamburger', (food) => { + food.type("dynamic"); + }); + + event.foodItem('tfg:food/cheeseburger', (food) => { + food.type("dynamic"); + }); + + // Poutine + event.foodItem('tfg:food/poutine', (food) => { + food.type("dynamic_bowl"); + }); + + // Oatmeal + event.foodItem('tfg:food/oatmeal', (food) => { + food.type("dynamic_bowl"); + }); + + // Biochem Items + event.foodItem("tfg:progenitor_cells", (food) => { + food.decayModifier(1); + }); + event.foodItem("tfg:rough_endoplasmic_reticula", (food) => { + food.decayModifier(0.5); + }); + event.foodItem("tfg:smooth_endoplasmic_reticula", (food) => { + food.decayModifier(0.5); + }); + + // Instant Mac + event.foodItem('tfg:food/raw_instant_mac', (food) => { + food.hunger(2); + food.decayModifier(0.2); + }); + + event.foodItem('tfg:food/cooked_instant_mac', (food) => { + food.hunger(3.5); + food.decayModifier(1.6); + food.grain(1.5); + food.dairy(2.5); + food.protein(0.8); + food.saturation(1.8); + }); + + //#region Drinkables + // Proto Growth Medium + event.drinkable("tfg:proto_growth_medium", (data) => { + data.thirst(10); + data.food(food => { + food.dairy(5); + food.protein(1); + }); + data.effect("minecraft:absorption", (effect) => { + effect.amplifier(2); + effect.chance(0.25); + effect.duration(1200); + }); + }); + + // Semiheavy Ammoniacal Water + event.drinkable("tfg:semiheavy_ammoniacal_water", (data) => { + data.thirst(10); + data.effect("minecraft:nausea", (effect) => { + effect.chance(0.5); + effect.duration(200); + }); + }); + + // Rich Stock + event.drinkable('tfg:rich_stock', (data) => { + data.thirst(4); + data.effect("tfc:thirst", (effect) => { + effect.chance(0.2); + effect.duration(20*5); + }); + data.food(food => { + food.protein(0.25); + food.vegetables(0.25); + }); + }); + + // Light Stock + event.drinkable('tfg:light_stock', (data) => { + data.thirst(4); + data.effect("tfc:thirst", (effect) => { + effect.chance(0.2); + effect.duration(20*5); + }); + data.food(food => { + food.protein(0.25); + food.vegetables(0.25); + }); + }); + + // Brown Gravy + event.drinkable('tfg:brown_gravy', (data) => { + data.thirst(2); + data.effect("tfc:thirst", (effect) => { + effect.chance(0.3); + effect.duration(20*5); + }); + data.food(food => { + food.protein(0.5); + food.vegetables(0.5); + food.grain(0.25); + }); + }); + + //#endregion +} diff --git a/kubejs/server_scripts/tfg/food/data.planters.js b/kubejs/server_scripts/tfg/food/data.planters.js new file mode 100644 index 000000000..e694e6ca7 --- /dev/null +++ b/kubejs/server_scripts/tfg/food/data.planters.js @@ -0,0 +1,167 @@ +"use strict"; + + +/** @param {Internal.TFCDataEventJS} event */ +function registerTFGFLPlanters(event) { + event.firmalifePlantable( + "tfg:sunflower_seeds", + "large", + 0, + 3, + 0.15, + "tfg:sunflower_seeds", + "tfg:sunflower_product", + "nitrogen", + [ + "tfg:block/crop/sunflower_greenhouse_0", + "tfg:block/crop/sunflower_greenhouse_1", + "tfg:block/crop/sunflower_greenhouse_2", + "tfg:block/crop/sunflower_greenhouse_3" + ], + null + ); + + event.firmalifePlantable( + "tfg:rapeseed_seeds", + "large", + 0, + 3, + 0.15, + "tfg:rapeseed_seeds", + "tfg:rapeseed_product", + "phosphorous", + [ + "tfg:block/crop/rapeseed_greenhouse_0", + "tfg:block/crop/rapeseed_greenhouse_1", + "tfg:block/crop/rapeseed_greenhouse_2", + "tfg:block/crop/rapeseed_greenhouse_3" + ], + null + ); + + event.firmalifePlantable( + "tfg:flax_seeds", + "large", + 0, + 3, + 0.2, + "tfg:flax_seeds", + "tfg:flax_product", + "nitrogen", + [ + "tfg:block/crop/flax_age_0", + "tfg:block/crop/flax_age_1", + "tfg:block/crop/flax_age_5_top", + "tfg:block/crop/flax_age_6_top" + ], + null + ); + + event.firmalifePlantable( + "betterend:amber_root_seeds", + "large", + 0, + 3, + 0.15, + "betterend:amber_root_seeds", + "betterend:amber_root_product", + "phosphorous", + [ + "betterend:block/amber_root_0", + "betterend:block/amber_root_1", + "betterend:block/amber_root_2", + "betterend:block/amber_root_3" + ], + null + ); + + event.firmalifePlantable( + "betterend:blossom_berry_seeds", + "large", + 0, + 3, + 0.15, + "betterend:blossom_berry_seeds", + "betterend:blossom_berry_product", + "potassium", + [ + "betterend:block/blossom_berry_seed_0", + "betterend:block/blossom_berry_seed_1", + "betterend:block/blossom_berry_seed_2", + "betterend:block/blossom_berry_seed_3" + ], + null + ); + + event.firmalifePlantable( + "betterend:bolux_mushroom_seeds", + "quad", + 1, + 3, + 0.15, + "betterend:bolux_mushroom_seeds", + "betterend:bolux_mushroom_product", + "phosphorous", + [ + "betterend:block/bolux_mushroom_greenhouse_0", + "betterend:block/bolux_mushroom_greenhouse_1", + "betterend:block/bolux_mushroom_greenhouse_2", + "betterend:block/bolux_mushroom_greenhouse_3" + ], + null + ); + + event.firmalifePlantable( + "betterend:chorus_mushroom_seeds", + "quad", + 1, + 3, + 0.15, + "betterend:chorus_mushroom_seeds", + "betterend:chorus_mushroom_product", + "phosphorous", + [ + "betterend:block/chorus_mushroom_0", + "betterend:block/chorus_mushroom_1", + "betterend:block/chorus_mushroom_2", + "betterend:block/chorus_mushroom_3" + ], + null + ); + + event.firmalifePlantable( + "betterend:cave_pumpkin_plant_seeds", + "hanging", + 2, + 3, + 0.15, + "betterend:cave_pumpkin_plant_seeds", + "betterend:cave_pumpkin", + "phosphorous", + [ + "betterend:block/cave_pumpkin_greenhouse_0", + "betterend:block/cave_pumpkin_greenhouse_1", + "betterend:block/cave_pumpkin_greenhouse_2", + "betterend:block/cave_pumpkin_greenhouse_3" + ], + "betterend:block/cave_pumpkin_top" + ); + + event.firmalifePlantable( + "betterend:shadow_berry_seeds", + "quad", + 1, + 3, + 0.15, + "betterend:shadow_berry_seeds", + "betterend:shadow_berry_product", + "potassium", + [ + "betterend:block/shadow_berry_greenhouse_0", + "betterend:block/shadow_berry_greenhouse_1", + "betterend:block/shadow_berry_greenhouse_2", + "betterend:block/shadow_berry_greenhouse_3" + ], + null + ); +} diff --git a/kubejs/server_scripts/tfg/food/recipes.biomass.js b/kubejs/server_scripts/tfg/food/recipes.biomass.js new file mode 100644 index 000000000..65aeb4fcf --- /dev/null +++ b/kubejs/server_scripts/tfg/food/recipes.biomass.js @@ -0,0 +1,182 @@ +"use strict"; + +function registerTFGBiomassRecipes(event) { + + //#region Biomass + + event.recipes.gtceu.brewery('biomass_from_tfc_seeds') + .itemInputs('#tfc:seeds') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_tfc_food') + .itemInputs('#tfc:foods') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_tfc_plants') + .itemInputs('#tfc:plants') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_moon_plants') + .itemInputs('#tfg:moon_plants') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_mars_plants') + .itemInputs('#tfg:mars_plants') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_tfc_corals') + .itemInputs('#tfc:corals') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_spider_eyes') + .itemInputs('minecraft:spider_eye') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_leaves') + .itemInputs('#minecraft:leaves') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 20)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_fallen_leaves') + .itemInputs('#tfc:fallen_leaves') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 20)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_minecraft_plants') + .itemInputs('#createaddition:plants') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_wart_blocks') + .itemInputs('#minecraft:wart_blocks') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 50)) + .duration(100) + .EUt(3) + + event.replaceOutput({ id: 'gtceu:distillery/distill_biomass_to_water' }, 'gtceu:wood_dust', 'gtceu:carbon_dust') + event.replaceOutput({ id: 'gtceu:distillery/distill_biomass_to_ethanol' }, 'gtceu:wood_dust', 'gtceu:carbon_dust') + event.replaceOutput({ id: 'gtceu:distillation_tower/distill_biomass' }, 'gtceu:wood_dust', 'gtceu:carbon_dust') + + //#endregion + + //#region Plant ball + + event.recipes.gtceu.compressor('plant_ball_from_tfc_seeds') + .itemInputs('4x #tfc:seeds') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + let food = Ingredient.of('#tfc:foods') + .subtract('minecraft:brown_mushroom') + .subtract('minecraft:red_mushroom') + .withCount(8) + + event.recipes.gtceu.compressor('plant_ball_from_tfc_food') + .itemInputs(food) + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + event.recipes.gtceu.compressor('plant_ball_from_tfc_plants') + .itemInputs('4x #tfc:plants') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + event.recipes.gtceu.compressor('plant_ball_from_moon_plants') + .itemInputs('4x #tfg:moon_plants') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + event.recipes.gtceu.compressor('plant_ball_from_mars_plants') + .itemInputs('4x #tfg:mars_plants') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + event.recipes.gtceu.compressor('plant_ball_from_tfc_corals') + .itemInputs('4x #tfc:corals') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + event.recipes.gtceu.compressor('plant_ball_from_misc_plants') + .itemInputs('4x #createaddition:plants') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + event.recipes.gtceu.compressor('plant_ball_from_wart_blocks') + .itemInputs('4x #minecraft:wart_blocks') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + //#endregion + + // Sugar + event.recipes.gtceu.centrifuge('sugar_from_sugarcane') + .itemInputs('tfc:food/sugarcane') + .inputFluids("#tfg:clean_water 600") + .itemOutputs('minecraft:sugar', 'gtceu:plant_ball') + .duration(800) + .EUt(6) + + event.recipes.gtceu.centrifuge('sugar_from_honey') + .itemInputs('firmalife:raw_honey') + .itemOutputs('minecraft:sugar') + .duration(400) + .EUt(6) + + event.recipes.gtceu.centrifuge('tfg:beets_to_sugar') + .itemInputs('5x tfc:food/beet') + .inputFluids(Fluid.of('tfc:salt_water', 1000)) + .itemOutputs('3x minecraft:sugar', '3x gtceu:plant_ball', '1x #forge:dusts/salt') + .outputFluids(Fluid.of('minecraft:water', 1000)) + .duration(800) + .EUt(7) + .circuit(3) + + // Misc + event.recipes.gtceu.macerator('macerate_cocoa') + .itemInputs('firmalife:food/roasted_cocoa_beans') + .itemOutputs('gtceu:cocoa_dust') + .duration(100) + .EUt(2) + + event.recipes.gtceu.macerator('macerate_meat_to_dust') + .itemInputs('#tfc:foods/meats') + .itemOutputs('gtceu:meat_dust', 'gtceu:tiny_bone_dust') + .duration(100) + .EUt(2) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.food.js b/kubejs/server_scripts/tfg/food/recipes.food.js similarity index 95% rename from kubejs/server_scripts/tfg/recipes.food.js rename to kubejs/server_scripts/tfg/food/recipes.food.js index afffe2bce..c99e8b67e 100644 --- a/kubejs/server_scripts/tfg/recipes.food.js +++ b/kubejs/server_scripts/tfg/food/recipes.food.js @@ -478,7 +478,7 @@ function registerTFGFoodRecipes(event) { itemOutputs: ['2x tfg:food/meal_bag'], itemOutputProvider: TFC.isp.of('2x tfg:food/meal_bag').meal( (food => food.hunger(4).saturation(1.5).decayModifier(4.5)), [ - (portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0.8) + (portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0) ]).addTrait('tfg:freeze_dried') }) @@ -489,7 +489,7 @@ function registerTFGFoodRecipes(event) { itemOutputs: ['2x tfg:food/meal_bag'], itemOutputProvider: TFC.isp.of('2x tfg:food/meal_bag').meal( (food => food.hunger(4).saturation(1.5).decayModifier(4.5)), [ - (portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0.8) + (portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0) ]).addTrait('tfg:freeze_dried') }) @@ -500,7 +500,7 @@ function registerTFGFoodRecipes(event) { itemOutputs: ['2x tfg:food/meal_bag'], itemOutputProvider: TFC.isp.of('2x tfg:food/meal_bag').meal( (food => food.hunger(4).saturation(1.5).decayModifier(4.5)), [ - (portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0.8) + (portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0) ]).addTrait('tfg:freeze_dried') }) @@ -511,7 +511,7 @@ function registerTFGFoodRecipes(event) { itemOutputs: ['2x tfg:food/meal_bag'], itemOutputProvider: TFC.isp.of('2x tfg:food/meal_bag').meal( (food => food.hunger(4).saturation(1.5).decayModifier(4.5)), [ - (portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0.8) + (portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0) ]).addTrait('tfg:freeze_dried') }) @@ -522,7 +522,7 @@ function registerTFGFoodRecipes(event) { itemOutputs: ['2x tfg:food/meal_bag'], itemOutputProvider: TFC.isp.of('2x tfg:food/meal_bag').meal( (food => food.hunger(4).saturation(1.5).decayModifier(4.5)), [ - (portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0.8) + (portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0) ]).addTrait('tfg:freeze_dried') }) @@ -1720,87 +1720,5 @@ function registerTFGFoodRecipes(event) { }); //#endregion - //#region Machine Recipes - event.remove({id: 'gtceu:shaped/mv_food_refrigerator'}) - event.remove({id: 'gtceu:shaped/hv_food_refrigerator'}) - event.remove({id: 'gtceu:shaped/ev_food_refrigerator'}) - event.remove({id: 'gtceu:shaped/iv_food_refrigerator'}) - - event.recipes.gtceu.assembler('tfg:assembler/mv_food_refrigerator') - .itemInputs( - ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Copper, 2), - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), - ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Bronze, 1), - '2x gtceu:mv_electric_pump', - 'gtceu:mv_hermetic_casing', - '#gtceu:circuits/mv' - ) - .inputFluids(Fluid.of('tfg:chlorodifluoromethane', 6000)) - .itemOutputs('1x tfg:mv_food_refrigerator') - .duration(200) - .circuit(7) - .addMaterialInfo(true) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.assembler('tfg:assembler/hv_food_refrigerator') - .itemInputs( - ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Gold, 2), - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), - ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Steel, 1), - '2x gtceu:hv_electric_pump', - 'gtceu:hv_hermetic_casing', - '#gtceu:circuits/hv' - ) - .inputFluids(Fluid.of('tfg:1_1_1_2_tetrafluoroethane', 6000)) - .itemOutputs('1x tfg:hv_food_refrigerator') - .duration(200) - .circuit(7) - .addMaterialInfo(true) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.assembler('tfg:assembler/ev_food_refrigerator') - .itemInputs( - ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Aluminium, 2), - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), - ChemicalHelper.get(TagPrefix.rotor, GTMaterials.StainlessSteel, 1), - '2x gtceu:ev_electric_pump', - 'gtceu:ev_hermetic_casing', - '#gtceu:circuits/ev' - ) - .inputFluids(Fluid.of('tfg:cryogenized_fluix', 6000)) - .itemOutputs('1x tfg:ev_food_refrigerator') - .duration(200) - .circuit(7) - .addMaterialInfo(true) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.assembler('tfg:assembler/iv_food_refrigerator') - .itemInputs( - ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Platinum, 2), - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), - ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Titanium, 1), - '2x gtceu:iv_electric_pump', - 'gtceu:iv_hermetic_casing', - '#gtceu:circuits/iv' - ) - .inputFluids(Fluid.of('tfg:solar_coolant_tier2', 6000)) - .itemOutputs('1x tfg:iv_food_refrigerator') - .duration(200) - .circuit(7) - .addMaterialInfo(true) - .EUt(GTValues.VA[GTValues.LV]) - - event.shaped('tfg:electric_greenhouse', [ - 'ABA', - 'CDC', - 'BCB' - ], { - A: '#gtceu:circuits/mv', - B: '#forge:single_cables/copper', - C: 'tfc:compost', - D: 'gtceu:steel_machine_casing' - }).id('tfg:shaped/electric_greenhouse') - - //#endregion } diff --git a/kubejs/server_scripts/tfg/food/recipes.meal_bags.js b/kubejs/server_scripts/tfg/food/recipes.meal_bags.js new file mode 100644 index 000000000..172352b7e --- /dev/null +++ b/kubejs/server_scripts/tfg/food/recipes.meal_bags.js @@ -0,0 +1,108 @@ +"use strict"; + +function registerTFGMealBagRecipes(event) { + + // Food related + event.recipes.gtceu.forming_press('tfg:forming_press/foil_pack') + .itemInputs(ChemicalHelper.get(TagPrefix.foil, GTMaterials.Aluminium, 1), ChemicalHelper.get(TagPrefix.foil, GTMaterials.Polyethylene, 1)) + .itemOutputs('1x tfg:foil_pack') + .duration(100) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.gas_pressurizer('tfg:fluid_solidifier/dry_ice') + .inputFluids(Fluid.of('gtceu:carbon_dioxide', 1000)) + .notConsumable('gtceu:block_casting_mold') + .itemOutputs('2x tfg:dry_ice') + .duration(100) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/liq_co2') + .inputFluids(Fluid.of('gtceu:carbon_dioxide', 1000)) + .outputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) + .duration(160) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/dry_ice') + .inputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) + .notConsumable('gtceu:block_casting_mold') + .itemOutputs('10x tfg:dry_ice') + .duration(60) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.fluid_heater('tfg:fluid_heater/decompress_liq_co2') + .itemInputs('1x tfg:dry_ice') + .outputFluids(Fluid.of('gtceu:carbon_dioxide', 100)) + .duration(20) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.fluid_heater('tfg:fluid_heater/decompress_dry_ice') + .inputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 100)) + .outputFluids(Fluid.of('gtceu:carbon_dioxide', 100)) + .duration(20) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.mixer('tfg:clean_foil_pack') + .itemInputs('1x tfg:used_foil_pack') + .inputFluids("#tfg:clean_water 100") + .itemOutputs('1x tfg:clean_foil_pack') + .duration(200) + .circuit(1) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.ore_washer('tfg:ore_washer/distilled/clean_foil_pack') + .itemInputs('1x tfg:used_foil_pack') + .inputFluids(Fluid.of('gtceu:distilled_water', 10)) + .itemOutputs('1x tfg:clean_foil_pack') + .duration(200) + .circuit(2) + .EUt(GTValues.VA[GTValues.ULV]) + + event.custom({ + type: "ae2:transform", + circumstance: { + type: "fluid", + tag: "tfc:water" + }, + ingredients: [ + { item: 'tfg:used_foil_pack' }], + result: { item: 'tfg:clean_foil_pack' } + }).id('tfg:ae_transform/clean_foil_pack') + + event.recipes.greate.splashing(['tfg:clean_foil_pack'], 'tfg:used_foil_pack') + .id('tfg:splashing/clean_foil_pack') + + event.shapeless('1x tfg:used_foil_pack', [ + 'tfg:food/calorie_paste' + ]).id('tfg:shapeless/emptying/calorie_paste') + + event.shapeless('1x tfg:used_foil_pack', [ + 'tfg:food/meal_bag' + ]).id('tfg:shapeless/emptying/meal_bag') + + global.FOOD_FRUIT.forEach(fruit => { + event.shapeless('1x tfg:used_foil_pack', [ + `tfg:food/freeze_dried/${fruit.name}` + ]).id(`tfg:shapeless/emptying/freeze_dried/${fruit.name}`) + }) + + // Recycling + event.recipes.gtceu.macerator('gtceu:macerator/recycling/clean_foil_pack') + .itemInputs('tfg:clean_foil_pack') + .itemOutputs( + ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Aluminium, 1), + ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Polyethylene, 1) + ) + .duration(GTMaterials.Aluminium.getMass() * 1) + .category(GTRecipeCategories.MACERATOR_RECYCLING) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.arc_furnace('gtceu:arc_furnace/recycling/clean_foil_pack') + .itemInputs('tfg:clean_foil_pack') + .itemOutputs( + ChemicalHelper.get(TagPrefix.nugget, GTMaterials.Aluminium, 2), + ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Ash, 1) + ) + .duration(GTMaterials.Aluminium.getMass() * 1) + .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) + .EUt(GTValues.VA[GTValues.LV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/food/recipes.refrigerators.js b/kubejs/server_scripts/tfg/food/recipes.refrigerators.js new file mode 100644 index 000000000..97113c2aa --- /dev/null +++ b/kubejs/server_scripts/tfg/food/recipes.refrigerators.js @@ -0,0 +1,113 @@ +"use strict"; + +function registerTFGRefrigeratorRecipes(event) { + + //#region Machine Recipes + + event.remove({ id: 'gtceu:shaped/mv_food_refrigerator' }) + event.remove({ id: 'gtceu:shaped/hv_food_refrigerator' }) + event.remove({ id: 'gtceu:shaped/ev_food_refrigerator' }) + event.remove({ id: 'gtceu:shaped/iv_food_refrigerator' }) + + event.recipes.gtceu.assembler('tfg:assembler/mv_food_refrigerator') + .itemInputs( + ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Copper, 2), + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), + ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Bronze, 1), + '2x gtceu:mv_electric_pump', + 'gtceu:mv_hermetic_casing', + '#gtceu:circuits/mv' + ) + .inputFluids(Fluid.of('tfg:chlorodifluoromethane', 6000)) + .itemOutputs('1x tfg:mv_food_refrigerator') + .duration(200) + .circuit(7) + .addMaterialInfo(true) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.assembler('tfg:assembler/hv_food_refrigerator') + .itemInputs( + ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Gold, 2), + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), + ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Steel, 1), + '2x gtceu:hv_electric_pump', + 'gtceu:hv_hermetic_casing', + '#gtceu:circuits/hv' + ) + .inputFluids(Fluid.of('tfg:1_1_1_2_tetrafluoroethane', 6000)) + .itemOutputs('1x tfg:hv_food_refrigerator') + .duration(200) + .circuit(7) + .addMaterialInfo(true) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.assembler('tfg:assembler/ev_food_refrigerator') + .itemInputs( + ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Aluminium, 2), + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), + ChemicalHelper.get(TagPrefix.rotor, GTMaterials.StainlessSteel, 1), + '2x gtceu:ev_electric_pump', + 'gtceu:ev_hermetic_casing', + '#gtceu:circuits/ev' + ) + .inputFluids(Fluid.of('tfg:cryogenized_fluix', 6000)) + .itemOutputs('1x tfg:ev_food_refrigerator') + .duration(200) + .circuit(7) + .addMaterialInfo(true) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.assembler('tfg:assembler/iv_food_refrigerator') + .itemInputs( + ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Platinum, 2), + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), + ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Titanium, 1), + '2x gtceu:iv_electric_pump', + 'gtceu:iv_hermetic_casing', + '#gtceu:circuits/iv' + ) + .inputFluids(Fluid.of('tfg:solar_coolant_tier2', 6000)) + .itemOutputs('1x tfg:iv_food_refrigerator') + .duration(200) + .circuit(7) + .addMaterialInfo(true) + .EUt(GTValues.VA[GTValues.LV]) + + //#endregion + + // Refrigerants + + event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/chlorodifluoromethane') + .inputFluids(Fluid.of('gtceu:chloroform', 1000), Fluid.of('gtceu:hydrofluoric_acid', 2000)) + .outputFluids(Fluid.of('tfg:chlorodifluoromethane', 1000), Fluid.of('gtceu:hydrochloric_acid', 2000)) + .duration(480) + .circuit(2) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/breakdown/chlorodifluoromethane') + .inputFluids(Fluid.of('tfg:chlorodifluoromethane', 200)) + .outputFluids(Fluid.of('gtceu:tetrafluoroethylene', 100), Fluid.of('gtceu:hydrochloric_acid', 200)) + .duration(100) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/acetylene') + .inputFluids(Fluid.of('gtceu:methane', 2000), Fluid.of('gtceu:oxygen', 3000)) + .outputFluids(Fluid.of('tfg:acetylene', 1000), Fluid.of('minecraft:water', 3000)) + .circuit(4) + .duration(120) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/1_1_1_2_tetrafluoroethane') + .inputFluids(Fluid.of('tfg:acetylene', 1000), Fluid.of('gtceu:chlorine', 4000), Fluid.of('gtceu:hydrofluoric_acid', 4000)) + .outputFluids(Fluid.of('tfg:1_1_1_2_tetrafluoroethane', 1000), Fluid.of('gtceu:hydrochloric_acid', 4000)) + .circuit(4) + .duration(480) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.cracker('tfg:cracker/isobutane') + .inputFluids(Fluid.of('gtceu:butane', 4000)) + .outputFluids(Fluid.of('tfg:isobutane', 1000), Fluid.of('gtceu:lpg', 3000)) + .circuit(4) + .duration(2400) + .EUt(GTValues.VA[GTValues.HV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/food/tags.food.js b/kubejs/server_scripts/tfg/food/tags.food.js new file mode 100644 index 000000000..02aa366af --- /dev/null +++ b/kubejs/server_scripts/tfg/food/tags.food.js @@ -0,0 +1,348 @@ +"use strict"; + +function registerTFGFoodItemTags(event) { + + // Crops + event.add('tfc:seeds', 'tfg:sunflower_seeds') + event.add('tfc:seeds', 'tfg:rapeseed_seeds') + event.add('tfc:seeds', 'tfg:flax_seeds') + + event.add('tfc:compost_greens_high', 'tfg:rapeseed_product') + event.add('tfc:compost_greens_high', 'tfg:sunflower_product') + event.add('tfc:compost_greens_high', 'tfg:flax_product') + event.add('tfc:compost_greens_high', 'tfg:lunar_chorus_flower') + + event.add("tfg:sugars", "minecraft:sugar"); + event.add("tfg:sugars", "afc:birch_sugar"); + event.add("tfg:sugars", "afc:maple_sugar"); + + const RAW_MEATS = [ + 'tfg:food/raw_birt', + 'tfg:food/raw_crawlermari', + 'tfg:food/raw_limpet' + ] + RAW_MEATS.forEach(meat => { + event.add('tfc:foods', meat) + event.add('tfc:foods/meats', meat) + event.add('tfc:foods/raw_meats', meat) + }) + + const COOKED_MEATS = [ + 'tfg:food/cooked_birt', + 'tfg:food/cooked_crawlermari', + 'tfg:food/cooked_limpet' + ] + COOKED_MEATS.forEach(meat => { + event.add('tfc:foods', meat) + event.add('tfc:foods/meats', meat) + event.add('tfc:foods/cooked_meats', meat) + }) + + //These tags are used to add the tooltips and for searchability + global.COOLING_FOODS.forEach(food => { event.add('tfg:cooling_foods', food) }) + + event.add('tfg:cooling_foods_strong', 'tfg:food/ice_soup') + + global.WARMING_FOODS.forEach(food => { event.add('tfg:warming_foods', food) }) + + //jam sandwhich stuff + const usable_in_jam_sandwich = Ingredient.of('#tfc:foods/usable_in_jam_sandwich').itemIds.toArray().map(String); + const preserves = Ingredient.of('#tfc:foods/preserves').itemIds.toArray().map(String); + + const usable_in_jam_sandwich_2 = usable_in_jam_sandwich.filter(item => !preserves.includes(item)); + + usable_in_jam_sandwich_2.forEach(item => { + event.add('tfc:foods/usable_in_jam_sandwich_2', item); + }); + + event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_sniffer_beef') + event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_wraptor') + event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_springling_collar') + event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_walker_steak') + event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_glider_wings') + event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_whole_soarer') + event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_crusher_meat') + event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_goober_meat') + event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_cruncher_ribs') + event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_surfer_steak') + event.add('tfg:raw_dinosaur_meat', 'wan_ancient_beasts:raw_ancient_meat') + + /** + * List of items that can make light stock. + * @type {string[]} + */ + const makesLightStock = [ + 'tfc:food/chicken', + 'tfc:food/cooked_chicken', + 'tfc:food/quail', + 'tfc:food/cooked_quail', + 'tfc:food/pheasant', + 'tfc:food/cooked_pheasant', + 'tfc:food/grouse', + 'tfc:food/cooked_grouse', + 'tfc:food/turkey', + 'tfc:food/cooked_turkey', + 'tfc:food/peafowl', + 'tfc:food/cooked_peafowl', + 'tfc:food/rabbit', + 'tfc:food/cooked_rabbit', + 'tfc:food/duck', + 'tfc:food/cooked_duck', + 'tfg:food/raw_birt', + 'tfg:food/cooked_birt', + 'tfg:food/raw_moon_rabbit', + 'tfg:food/cooked_moon_rabbit', + 'tfg:food/raw_wraptor', + 'tfg:food/cooked_wraptor', + 'tfg:food/raw_glider_wings', + 'tfg:food/cooked_glider_wings', + 'tfg:food/raw_whole_soarer', + 'tfg:food/cooked_whole_soarer' + ]; + makesLightStock.forEach(item => { + event.add('tfg:foods/makes_light_stock', item); + }); + + /** + * List of items that can make rich stock. + * @type {string[]} + */ + const makesRichStock = [ + 'tfc:food/beef', + 'tfc:food/cooked_beef', + 'tfc:food/mutton', + 'tfc:food/cooked_mutton', + 'tfc:food/bear', + 'tfc:food/cooked_bear', + 'tfc:food/horse_meat', + 'tfc:food/cooked_horse_meat', + 'tfc:food/venison', + 'tfc:food/cooked_venison', + 'tfc:food/chevon', + 'tfc:food/cooked_chevon', + 'tfc:food/gran_feline', + 'tfc:food/cooked_gran_feline', + 'tfc:food/turtle', + 'tfc:food/cooked_turtle', + 'tfc:food/camelidae', + 'tfc:food/cooked_camelidae', + 'tfg:food/raw_glacian_mutton', + 'tfg:food/cooked_glacian_mutton', + 'tfg:food/raw_sniffer_beef', + 'tfg:food/cooked_sniffer_beef', + 'tfg:food/raw_walker_steak', + 'tfg:food/cooked_walker_steak', + 'tfg:food/raw_crusher_meat', + 'tfg:food/cooked_crusher_meat', + 'wan_ancient_beasts:raw_ancient_meat', + 'wan_ancient_beasts:cooked_ancient_meat' + ]; + makesRichStock.forEach(item => { + event.add('tfg:foods/makes_rich_stock', item); + }); + + /** + * @type {string[]} - List of cheese curd item IDs. + */ + const cheeseCurds = [ + 'firmalife:food/yak_curd', + 'firmalife:food/goat_curd', + 'firmalife:food/milk_curd', + 'tfc_gurman:ox_curd', + 'tfc_gurman:sheep_curd', + 'tfc_gurman:alpaca_curd' + ]; + cheeseCurds.forEach(item => { + event.add('tfg:foods/cheese_curds', item); + }); + + /** + * @type {string[]} - List of item tags and item IDs that can be used on burgers. + */ + const usable_in_burgers = [ + '#tfc:foods/vegetables', + 'firmalife:food/cooked_bacon', + 'tfc:food/cooked_egg', + 'firmalife:food/tofu' + ]; + usable_in_burgers.forEach(item => { + event.add('tfg:foods/usable_in_burgers', item); + }); + + /** + * @type {string[]} - List of cheese tags and item IDs that can be used on a cheeseburger. + */ + const cheeses = [ + '#firmalife:foods/cheeses', + 'tfg:food/slice_of_cheese', + 'firmalife:food/shredded_cheese' + ]; + cheeses.forEach(item => { + event.add('tfg:foods/cheeses', item); + }); + + /** + * @type {string[]} - List of item IDs that can be used as burger meats. + */ + const burgerMeats = [ + 'tfc:food/beef', + 'tfc:food/turkey', + 'tfc:food/venison', + 'tfg:food/raw_sniffer_beef', + 'tfg:food/raw_crusher_meat', + 'wan_ancient_beasts:raw_ancient_meat' + ]; + burgerMeats.forEach(item => { + event.add('tfg:foods/burger_meats', item); + }); + + // Spice tags + global.SPICES.forEach(spice => { + event.add('tfg:foods/spices', spice.product); + event.add('tfg:foods/spice_plants', spice.plant); + }); + + /** + * @type {string[]} - List of item tags and item IDs that are allowed to be used in oatmeal. + */ + const usable_in_oatmeal = [ + '#tfc:foods/fruits', + 'tfc:food/oat_grain', + '#firmalife:foods/chocolate' + ]; + usable_in_oatmeal.forEach(item => { + event.add('tfg:foods/usable_in_oatmeal', item); + }); + + /** + * @type {string[]} - List of citrus fruit item IDs. + */ + const citrus_fruits = [ + 'tfc:food/orange', + 'tfc:jar/orange_unsealed', + 'tfg:food/freeze_dried/orange', + 'tfc:food/lemon', + 'tfc:jar/lemon_unsealed', + 'tfg:food/freeze_dried/lemon', + 'minecraft:glow_berries', + 'tfg:food/freeze_dried/glow_berries' + ]; + citrus_fruits.forEach(item => { + event.add('tfg:foods/citrus_fruits', item); + }); + + /** + * List of item tags and item IDs that are allowed to be used in a meal bag. + * @type {string[]} + */ + const usable_in_meal_bag = [ + '#tfc:foods/meats', + '#tfc:foods/grains', + '#tfc:foods/vegetables', + '#tfc:foods/fruits', + '#tfc:foods/dairy', + '#tfc:foods/preserves', + '#firmalife:foods/chocolate', + '#tfcchannelcasting:foods/chocolate_sweet', + 'firmalife:food/sugar_cookie', + 'firmalife:food/chocolate_chip_cookie', + 'firmalife:food/vanilla_ice_cream', + 'firmalife:food/strawberry_ice_cream', + 'firmalife:food/chocolate_ice_cream', + 'tfc:food/cooked_egg', + 'tfc:food/boiled_egg', + 'firmalife:food/pickled_egg', + 'tfc:food/cooked_rice', + 'firmalife:food/cooked_pasta', + 'firmalife:food/pasta_with_tomato_sauce', + 'firmalife:food/cooked_rice_noodles', + 'firmalife:food/tortilla_chips', + 'firmalife:food/shredded_cheese', + 'firmalife:food/salsa', + 'firmalife:food/tomato_sauce', + 'tfg:roasted_sunflower_seeds', + 'tfg:food/cooked_dino_nugget', + 'firmalife:food/toast', + 'firmalife:food/toast_with_butter', + 'firmalife:food/toast_with_jam', + 'firmalife:food/butter', + 'tfc_gurman:adjika', + 'tfc_gurman:tzatziki', + 'tfc_gurman:falafel', + 'tfc_gurman:hummus', + 'tfc_gurman:sauerkraut', + 'tfc_gurman:bratwurst' + ]; + usable_in_meal_bag.forEach(item => { + event.add('tfg:foods/usable_in_meal_bag', item); + }); + event.add('tfg:foil_packs', 'tfg:foil_pack'); + event.add('tfg:foil_packs', 'tfg:clean_foil_pack') + + event.add('tfg:solid_fats', 'firmalife:food/butter') + event.add('tfg:solid_fats', 'tfc:blubber') + + // Space foods + event.add('tfc:foods', 'minecraft:red_mushroom') + event.add('tfc:foods', 'minecraft:brown_mushroom') + event.add('tfc:foods', 'minecraft:glow_berries') + event.add('tfc:foods', 'minecraft:chorus_fruit') + event.add('tfc:foods', 'minecraft:popped_chorus_fruit') + + event.add('tfc:foods/vegetables', 'minecraft:red_mushroom') + event.add('tfc:foods/vegetables', 'minecraft:brown_mushroom') + event.add('tfc:foods/fruits', 'minecraft:glow_berries') + event.add('tfc:foods/fruits', 'minecraft:chorus_fruit') + event.add('tfc:foods/fruits', 'minecraft:popped_chorus_fruit') + + event.add('beneath:usable_in_juicer', 'minecraft:glow_berries') + event.add('beneath:usable_in_juicer', 'minecraft:chorus_fruit') + event.add('beneath:usable_in_juicer', 'minecraft:red_mushroom') + event.add('beneath:usable_in_juicer', 'minecraft:brown_mushroom') + + event.add('tfc:foods/usable_in_soup', 'minecraft:red_mushroom') + event.add('tfc:foods/usable_in_soup', 'minecraft:brown_mushroom') + event.add('tfc:foods/usable_in_soup', 'minecraft:glow_berries') + event.add('tfc:foods/usable_in_soup', 'minecraft:chorus_fruit') + event.add('tfc:foods/usable_in_soup', 'minecraft:popped_chorus_fruit') + + // Make eggs not useless + event.add('tfc:foods/usable_in_salad', 'firmalife:food/pickled_egg') + event.add("tfc:foods/usable_in_salad", "tfc:food/cooked_egg"); + event.add("tfc:foods/usable_in_salad", "tfc:food/boiled_egg"); + event.add("tfc:foods/usable_in_jam_sandwich", "tfc:food/cooked_egg"); + event.add("tfc:foods/usable_in_jam_sandwich", "tfc:food/boiled_egg"); + event.add("tfc:foods/usable_in_sandwich", "tfc:food/cooked_egg"); + event.add("tfc:foods/usable_in_sandwich", "tfc:food/boiled_egg"); + + event.add('tfc:foods/usable_in_salad', 'minecraft:red_mushroom') + event.add('tfc:foods/usable_in_salad', 'minecraft:brown_mushroom') + event.add('tfc:foods/usable_in_salad', 'minecraft:glow_berries') + event.add('tfc:foods/usable_in_salad', 'minecraft:chorus_fruit') + event.add('tfc:foods/usable_in_salad', 'minecraft:popped_chorus_fruit') + + event.add('tfc:rabbit_food', 'minecraft:chorus_fruit') + event.add('tfc:rabbit_food', 'minecraft:popped_chorus_fruit') + + event.add('tfc:foods', 'ad_astra:cheese') + event.add('tfc:foods/dairy', 'ad_astra:cheese') + event.add('tfc:foods/usable_in_sandwich', 'ad_astra:cheese') + event.add('tfc:foods/usable_in_jam_sandwich', 'ad_astra:cheese') + event.add('tfc:foods/usable_in_jam_sandwich_2', 'ad_astra:cheese') + event.add('firmalife:foods/cheeses', 'ad_astra:cheese') +} + +function registerTFGFoodBlockTags(event) { + //crop stuff + event.add('tfc:crops', 'tfg:rapeseed') + event.add('tfc:mineable_with_sharp_tool', 'tfg:rapeseed') + + event.add('tfc:crops', 'tfg:sunflower') + event.add('tfc:mineable_with_sharp_tool', 'tfg:sunflower') + + event.add('tfc:crops', 'tfg:flax') + event.add('tfc:mineable_with_sharp_tool', 'tfg:flax') + + event.add('ad_astra:destroyed_in_space', '#tfc:wild_fruits') + event.add('ad_astra:destroyed_in_space', '#minecraft:saplings') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/json_tool.armor_trim.js b/kubejs/server_scripts/tfg/json_tool.armor_trim.js index 4f66e02ce..35346486e 100644 --- a/kubejs/server_scripts/tfg/json_tool.armor_trim.js +++ b/kubejs/server_scripts/tfg/json_tool.armor_trim.js @@ -69,7 +69,7 @@ const materials = [ // #region Tags // Assigns trim_materials tag to items registered above -function registerTFGTrimTags(event) { +function registerTFGTrimItemTags(event) { event.removeAll('minecraft:trim_materials') materials.forEach(material => { event.add('minecraft:trim_materials', material.itemName) diff --git a/kubejs/server_scripts/tfg/machines/recipes.casings.js b/kubejs/server_scripts/tfg/machines/recipes.casings.js new file mode 100644 index 000000000..08dcf5c8a --- /dev/null +++ b/kubejs/server_scripts/tfg/machines/recipes.casings.js @@ -0,0 +1,182 @@ +"use strict"; + +function registerTFGCasingRecipes(event) { + + event.recipes.gtceu.assembler('steel_machine_casing') + .itemInputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 4)) + .itemOutputs('gtceu:steel_machine_casing') + .circuit(6) + .duration(2.5 * 20) + .EUt(16) + + // Railgun + global.GTCEU_SUPERCONDUCTORS.forEach((type, index) => { + const multiplier = index + 1 + + event.recipes.gtceu.assembler(`tfg:assembler/superconductor_coil_small_from_${type.name}`) + .itemInputs( + ChemicalHelper.get(TagPrefix.plate, GTMaterials.HSLASteel, 4), + ChemicalHelper.get(TagPrefix.rod, GTMaterials.Steel, 2), + ChemicalHelper.get(TagPrefix.rod, GTMaterials.SteelMagnetic, 1), + ChemicalHelper.get(TagPrefix.wireFine, GTMaterials[type.materialId], 4) + ) + .inputFluids(Fluid.of('gtceu:epoxy', 144)) + .itemOutputs(Item.of('tfg:superconductor_coil_small', 4 * multiplier)) + .circuit(4) + .duration(400) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.assembler(`tfg:assembler/superconductor_coil_large_from_${type.name}`) + .itemInputs( + ChemicalHelper.get(TagPrefix.plate, GTMaterials.HSLASteel, 4), + ChemicalHelper.get(TagPrefix.rod, GTMaterials.Steel, 2), + ChemicalHelper.get(TagPrefix.rod, GTMaterials.SteelMagnetic, 1), + ChemicalHelper.get(TagPrefix.wireGtSingle, GTMaterials[type.materialId], 4)) + .inputFluids(Fluid.of('gtceu:epoxy', 144)) + .itemOutputs(Item.of('tfg:superconductor_coil_large', 4 * multiplier)) + .circuit(7) + .duration(600) + .EUt(GTValues.VA[GTValues.MV]) + }) + + event.recipes.gtceu.assembler('tfg:assembler/electromagnetic_accelerator') + .itemInputs( + '2x #forge:plates/desh', + 'gtceu:mv_voltage_coil', + '5x tfg:dry_ice', + 'gtceu:nonconducting_casing' + ) + .inputFluids(Fluid.of('gtceu:blue_alloy', 288)) + .itemOutputs('6x tfg:electromagnetic_accelerator') + .circuit(4) + .duration(800) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.assembler('tfg:assembler/machine_casing_aluminium_plated_steel') + .itemInputs( + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 6), + ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Steel, 1) + ) + .inputFluids(Fluid.of('gtceu:silicon', 72)) + .itemOutputs('2x tfg:machine_casing_aluminium_plated_steel') + .circuit(6) + .duration(20 * (2.5)) + .EUt(GTValues.VH[GTValues.LV]) + + // Solar + event.recipes.gtceu.assembler('basic_solar_casing') + .itemInputs('gtceu:steel_machine_casing', 'tfg:photo_cell_t1') + .itemOutputs('8x tfg:casings/machine_casing_blue_solar_panel') + .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) + .circuit(6) + .duration(2.5 * 20) + .EUt(16) + + event.recipes.gtceu.assembler('advanced_solar_casing') + .itemInputs('8x tfg:casings/machine_casing_blue_solar_panel', 'ad_astra:photovoltaic_etrium_cell') + .itemOutputs('8x tfg:casings/machine_casing_green_solar_panel') + .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) + .circuit(6) + .duration(2.5 * 20) + .EUt(16) + + event.recipes.gtceu.assembler('elite_solar_casing') + .itemInputs('8x tfg:casings/machine_casing_green_solar_panel', 'ad_astra:photovoltaic_vesnium_cell') + .itemOutputs('8x tfg:casings/machine_casing_red_solar_panel') + .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) + .circuit(6) + .duration(2.5 * 20) + .EUt(16) + + event.recipes.gtceu.assembler('tfg:reflector_from_lens') + .itemInputs( + '24x #forge:lenses', + ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1) + ) + .inputFluids(Fluid.of('gtceu:silver', 1296)) + .itemOutputs('1x tfg:reflector') + .circuit(6) + .duration(20 * (60)) + .EUt(GTValues.VH[GTValues.HV]) + + event.recipes.gtceu.assembler('tfg:reflector_from_inr') + .itemInputs( + '1x gtceu:neutron_reflector', + ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1) + ) + .itemOutputs('2x tfg:reflector') + .circuit(9) + .duration(20 * (20)) + .EUt(GTValues.VH[GTValues.MV]) + + event.recipes.gtceu.assembler('tfg:reflector_from_certus') + .itemInputs( + ChemicalHelper.get(TagPrefix.plate, GTMaterials.CertusQuartz, 12), + ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1) + ) + .inputFluids(Fluid.of('gtceu:silver', 488)) + .itemOutputs('1x tfg:reflector') + .circuit(6) + .dimension('ad_astra:moon') + .duration(20 * (60)) + .EUt(GTValues.VH[GTValues.MV]) + + // Moon + event.recipes.gtceu.assembler('iron_desh_casing') + .itemInputs(ChemicalHelper.get(TagPrefix.plate, GTMaterials.Steel, 6), 'gtceu:desh_frame') + .itemOutputs('2x tfg:casings/machine_casing_iron_desh') + .circuit(6) + .duration(2.5 * 20) + .EUt(16) + + // Evaporation + event.recipes.gtceu.assembler('tfg:casings/machine_casing_stainless_evaporation') + .itemInputs('gtceu:clean_machine_casing', '4x gtceu:annealed_copper_double_wire') + .inputFluids(Fluid.of('gtceu:polyvinyl_chloride', 288)) + .itemOutputs('tfg:casings/machine_casing_stainless_evaporation') + .circuit(6) + .duration(2.5 * 20) + .EUt(GTValues.VA[GTValues.HV]) + + // Ostrum Linear Acclerator + event.recipes.gtceu.assembler('tfg:casings/machine_casing_mars') + .itemInputs('gtceu:clean_machine_casing', '4x #forge:double_wires/kanthal') + .inputFluids(Fluid.of('gtceu:polybenzimidazole', 288)) + .itemOutputs('tfg:casings/machine_casing_mars') + .circuit(6) + .duration(2.5 * 20) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.assembler('gtceu:atomic_casing') + .itemInputs('4x #forge:dense_plates/lead', '2x #forge:plates/rtm_alloy', '#forge:frames/titanium') + .inputFluids(Fluid.of('gtceu:polyvinyl_butyral', 288)) + .itemOutputs('2x gtceu:atomic_casing') + .circuit(6) + .duration(2.5 * 20) + .EUt(GTValues.VA[GTValues.HV]) + + // Vacuum Intake + event.shaped('tfg:casings/machine_casing_vacuum_engine_intake', [ + 'USU', + 'WZW', + 'UTU' + ], { + S: '#forge:tools/hammers', + T: '#forge:tools/wrenches', + W: '#forge:rotors/ultimet', + U: 'gtceu:ultimet_normal_item_pipe', + Z: 'gtceu:inert_machine_casing' + }).id('tfg:shaped/casing_machine_casing_vacuum_engine_intake') + + event.recipes.gtceu.assembler('tfg:casings/machine_casing_vacuum_engine_intake') + .itemInputs( + '2x #forge:rotors/ultimet', + '4x gtceu:ultimet_normal_item_pipe', + '1x gtceu:inert_machine_casing') + .itemOutputs('tfg:casings/machine_casing_vacuum_engine_intake') + .duration(50) + .EUt(GTValues.VH[GTValues.LV]) + .circuit(2) + + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/machines/recipes.components.js b/kubejs/server_scripts/tfg/machines/recipes.components.js new file mode 100644 index 000000000..5f9746144 --- /dev/null +++ b/kubejs/server_scripts/tfg/machines/recipes.components.js @@ -0,0 +1,254 @@ +"use strict"; + +function registerTFGElectronicComponentsRecipes(event) { + + // Electron tubes + event.shaped('1x create:electron_tube', [ + 'FAG', + 'BCB', + 'DED' + ], { + A: 'gtceu:glass_tube', + B: '#forge:bolts/steel', + C: 'gtceu:wood_plate', + D: 'gtceu:red_alloy_single_wire', + E: '#forge:plates/wrought_iron', + F: '#forge:tools/screwdrivers', + G: '#forge:tools/wire_cutters' + }).id('tfg:create/shaped/electron_tube') + + event.recipes.createSequencedAssembly([ + '2x create:electron_tube', + ], 'gtceu:wood_plate', [ + event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', '#forge:plates/wrought_iron']), + event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:red_alloy_single_wire']), + event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:red_alloy_single_wire']), + event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:glass_tube']), + ]).transitionalItem('tfg:unfinished_electron_tube').loops(1).id('tfg:create/sequenced_assembly/electron_tube') + + event.recipes.gtceu.assembler('create:electron_tube') + .itemInputs('#forge:plates/wrought_iron', 'gtceu:glass_tube', '2x gtceu:red_alloy_single_wire') + .itemOutputs('2x create:electron_tube') + .duration(50) + .EUt(7) + .circuit(14) + + event.shaped('4x create:electron_tube', [ + 'FAG', + 'DCD' + ], { + A: 'gtceu:glass_tube', + C: 'gtceu:plastic_circuit_board', + D: 'gtceu:red_alloy_single_wire', + F: '#forge:tools/screwdrivers', + G: '#forge:tools/wire_cutters' + }).id('tfg:create/shaped/electron_tube2') + + event.recipes.gtceu.assembler('create:electron_tube2') + .itemInputs('gtceu:plastic_circuit_board', 'gtceu:glass_tube', '2x gtceu:red_alloy_single_wire') + .itemOutputs('4x create:electron_tube') + .duration(50) + .EUt(7) + + event.shaped('4x create:electron_tube', [ + ' A ', + ' B ', + ' C ' + ], { + A: '#forge:tools/screwdrivers', + B: 'gtceu:nand_chip', + C: 'gtceu:plastic_circuit_board' + }).id('tfg:create/shaped/electron_tube3') + + event.recipes.gtceu.assembler('create:electron_tube3') + .itemInputs('gtceu:plastic_circuit_board', 'gtceu:nand_chip') + .itemOutputs('4x create:electron_tube') + .duration(50) + .EUt(7) + + // Vacuum Tubes + event.remove({ id: 'gtceu:shaped/vacuum_tube' }) + event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_plain' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board') + event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_red_alloy' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board') + event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_red_alloy_annealed' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board') + + event.recipes.createSequencedAssembly([ + 'gtceu:vacuum_tube', + ], 'gtceu:resin_circuit_board', [ + event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', '#forge:bolts/steel']), + event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:copper_single_wire']), + event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:copper_single_wire']), + event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:glass_tube']), + event.custom({ type: 'vintageimprovements:vacuumizing', ingredients: [{ item: 'tfg:unfinished_vacuum_tube' }], results: [{ item: 'tfg:unfinished_vacuum_tube' }], processingTime: 80 }) + ]).transitionalItem('tfg:unfinished_vacuum_tube').loops(1).id('tfg:gtceu/sequenced_assembly/vacuum_tube') + + // ULV Coil + event.recipes.createSequencedAssembly([ + 'gtceu:ulv_voltage_coil', + ], 'gtceu:magnetic_iron_rod', [ + event.recipes.createDeploying('gtceu:magnetic_iron_rod', ['gtceu:magnetic_iron_rod', '#forge:fine_wires/lead']) + ]).transitionalItem('gtceu:magnetic_iron_rod').loops(32).id('tfg:sequenced_assembly/ulv_voltage_coil') + + // LV basic circuit + event.remove({ id: 'gtceu:shaped/electronic_circuit_lv' }) + + event.recipes.createSequencedAssembly([ + 'gtceu:basic_electronic_circuit', + ], 'gtceu:resin_printed_circuit_board', [ + event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:resistor']), + event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:resistor']), + event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:vacuum_tube']), + event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:vacuum_tube']), + event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'create:electron_tube']), + event.recipes.createFilling('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', Fluid.of('gtceu:glue', 50)]), + event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', '#forge:plates/steel']), + ]).transitionalItem('tfg:unfinished_basic_electronic_circuit').loops(1).id('tfg:gtceu/sequenced_assembly/basic_electronic_circuit') + + // MV basic circuit + event.remove({ id: 'gtceu:shaped/electronic_circuit_mv' }) + + event.recipes.createSequencedAssembly([ + 'gtceu:good_electronic_circuit', + ], 'gtceu:phenolic_printed_circuit_board', [ + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:diode']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:diode']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:single_wires/copper']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:single_wires/copper']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:plates/steel']), + ]).transitionalItem('tfg:unfinished_good_electronic_circuit').loops(1).id('tfg:gtceu/sequenced_assembly/good_electronic_circuit') + + // Vitrified Pearl + event.recipes.gtceu.shaped('gtceu:mv_field_generator', [ + 'ABA', + 'CDC', + 'ABA' + ], { + A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.MagnesiumDiboride, 1), + B: ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 1), + C: '#gtceu:circuits/mv', + D: 'tfg:vitrified_pearl' + }).addMaterialInfo().id('gtceu:shaped/field_generator_mv') + + event.recipes.gtceu.assembler('field_generator_mv') + .itemInputs('tfg:vitrified_pearl', '2x #forge:plates/aluminium', '2x #gtceu:circuits/mv', '4x #forge:quadruple_wires/magnesium_diboride') + .itemOutputs('gtceu:mv_field_generator') + .duration(100) + .EUt(30) + + // Cryo Fluix Pearl + event.replaceInput({ id: 'gtceu:assembler/field_generator_hv' }, 'gtceu:quantum_eye', 'tfg:cryo_fluix_pearl') + + event.recipes.gtceu.shaped('gtceu:hv_field_generator', [ + 'ABA', + 'CDC', + 'ABA' + ], { + A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.MercuryBariumCalciumCuprate, 1), + B: ChemicalHelper.get(TagPrefix.plate, GTMaterials.StainlessSteel, 1), + C: '#gtceu:circuits/hv', + D: 'tfg:cryo_fluix_pearl' + }).addMaterialInfo().id('gtceu:shaped/field_generator_hv') + + // Change recipes to want EV circuit instead of IV + event.replaceInput({ id: 'gtceu:shaped/large_combustion_engine' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev') + event.replaceInput({ id: 'gtceu:shaped/nano_chestplate_advanced' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev') + event.replaceInput({ id: 'gtceu:assembler/ev_large_miner' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev') + + // Nano wafer + event.remove({ id: 'gtceu:chemical_reactor/nano_cpu_wafer' }) + event.remove({ id: 'gtceu:large_chemical_reactor/nano_cpu_wafer' }) + + event.recipes.gtceu.chemical_reactor('tfg:nano_cpu_wafer') + .inputFluids(Fluid.of('gtceu:tritiated_water', 576)) + .itemInputs('gtceu:cpu_wafer', '16x gtceu:carbon_fibers') + .itemOutputs('gtceu:nano_cpu_wafer') + .duration(20*60) + .EUt(GTValues.VA[GTValues.EV]) + .cleanroom(CleanroomType.CLEANROOM) + + // Change components of IV mainframe to nano chip + event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_asmd_soldering_alloy'}) + event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv'}) + event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_soldering_alloy'}) + event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_asmd'}) + + event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv') + .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '8x #gtceu:inductors', '16x #gtceu:capacitors', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') + .inputFluids(Fluid.of('gtceu:tin', 576)) + .itemOutputs('gtceu:micro_processor_mainframe') + .duration(20 * 40) + .EUt(GTValues.VA[GTValues.HV]) + .cleanroom(CleanroomType.CLEANROOM) + + event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_soldering_alloy') + .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '8x #gtceu:inductors', '16x #gtceu:capacitors', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') + .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) + .itemOutputs('gtceu:micro_processor_mainframe') + .duration(20 * 40) + .EUt(GTValues.VA[GTValues.HV]) + .cleanroom(CleanroomType.CLEANROOM) + + event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_asmd') + .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '2x gtceu:advanced_smd_inductor', '4x gtceu:advanced_smd_capacitor', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') + .inputFluids(Fluid.of('gtceu:tin', 576)) + .itemOutputs('gtceu:micro_processor_mainframe') + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.HV]) + .cleanroom(CleanroomType.CLEANROOM) + + event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_asmd_soldering_alloy') + .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '2x gtceu:advanced_smd_inductor', '4x gtceu:advanced_smd_capacitor', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') + .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) + .itemOutputs('gtceu:micro_processor_mainframe') + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.HV]) + .cleanroom(CleanroomType.CLEANROOM) + + // Quantum Eye + event.replaceInput({ id: 'gtceu:assembler/field_generator_ev' }, 'minecraft:nether_star', 'gtceu:quantum_eye') + + event.recipes.gtceu.shaped('gtceu:ev_field_generator', [ + 'ABA', + 'CDC', + 'ABA' + ], { + A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.UraniumTriplatinum, 1), + B: ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.Titanium, 1), + C: '#gtceu:circuits/ev', + D: 'gtceu:quantum_eye' + }).addMaterialInfo().id('gtceu:shaped/field_generator_ev') + + event.remove({ id: 'gtceu:chemical_bath/quantum_eye' }) + event.recipes.gtceu.chemical_bath('tfg:quantum_eye') + .itemInputs('tfg:cryo_fluix_pearl') + .inputFluids(Fluid.of('gtceu:radon', 250)) + .itemOutputs('gtceu:quantum_eye') + .duration(20 * 24) + .EUt(GTValues.VA[GTValues.HV]) + + // Nether Star + event.replaceInput({ id: 'gtceu:assembler/field_generator_iv' }, 'gtceu:quantum_star', 'minecraft:nether_star') + + event.recipes.gtceu.shaped('gtceu:iv_field_generator', [ + 'ABA', + 'CDC', + 'ABA' + ], { + A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.SamariumIronArsenicOxide, 1), + B: ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.TungstenSteel, 1), + C: '#gtceu:circuits/iv', + D: 'minecraft:nether_star' + }).addMaterialInfo().id('gtceu:shaped/field_generator_iv') + + event.recipes.gtceu.chemical_reactor('tfg:gtceu/nether_star_dust') + .itemInputs('2x #forge:dusts/iridium', '#forge:dusts/diamond') + .circuit(10) + .itemOutputs('gtceu:nether_star_dust') + // TODO: change to something else with venus + .inputFluids(Fluid.of('gtceu:neon', 1000)) + .duration(700) + .EUt(2720) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/machines/recipes.ender_pearls.js b/kubejs/server_scripts/tfg/machines/recipes.ender_pearls.js new file mode 100644 index 000000000..84162e695 --- /dev/null +++ b/kubejs/server_scripts/tfg/machines/recipes.ender_pearls.js @@ -0,0 +1,61 @@ +"use strict"; + +function registerTFGEnderPearlRecipes(event) { + event.recipes.gtceu.chemical_reactor('kaolinite') + .itemInputs('5x #tfg:aluminium_oxide', '2x #forge:dusts/silicon') + .inputFluids(Fluid.of('gtceu:distilled_water', 6000), Fluid.of('gtceu:chlorine', 8000)) + .itemOutputs('17x tfc:powder/kaolinite') + .outputFluids(Fluid.of('gtceu:hydrochloric_acid', 8000)) + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('kaolinite_ruby') + .itemInputs('6x #forge:dusts/ruby', '2x #forge:dusts/silicon') + .inputFluids(Fluid.of('gtceu:distilled_water', 6000), Fluid.of('gtceu:chlorine', 8000)) + .itemOutputs('17x tfc:powder/kaolinite', '1x #forge:dusts/chromium') + .outputFluids(Fluid.of('gtceu:hydrochloric_acid', 8000)) + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.pyrolyse_oven('vitrified_ender_dust') + .itemInputs('minecraft:ender_pearl', '2x tfc:powder/kaolinite', '4x #forge:insulation_t1') + .inputFluids(Fluid.of('gtceu:nitrogen', 100)) + .itemOutputs('tfg:vitrified_pearl') + .chancedOutput('gtceu:ash_dust', 2500, 0) + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_dynamite') + .itemInputs('4x #forge:dusts/vitrified_pearl', '2x gtceu:dynamite') + .itemOutputs('3x tfg:vitrified_pearl') + .chancedOutput('#forge:dusts/dark_ash', 2500, 0) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_powderbarrel') + .itemInputs('4x #forge:dusts/vitrified_pearl', '8x gtceu:powderbarrel') + .itemOutputs('3x tfg:vitrified_pearl') + .chancedOutput('#forge:dusts/dark_ash', 2500, 0) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_tnt') + .itemInputs('4x #forge:dusts/vitrified_pearl', '4x minecraft:tnt') + .itemOutputs('3x tfg:vitrified_pearl') + .chancedOutput('#forge:dusts/dark_ash', 2500, 0) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_itnt') + .itemInputs('4x #forge:dusts/vitrified_pearl', 'gtceu:industrial_tnt') + .itemOutputs('3x tfg:vitrified_pearl') + .chancedOutput('#forge:dusts/dark_ash', 2500, 0) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.macerator('vitrified_ender_pearl') + .itemInputs('tfg:vitrified_pearl') + .itemOutputs('#forge:dusts/vitrified_pearl') + .duration(40) + .EUt(GTValues.VA[GTValues.ULV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.molds.js b/kubejs/server_scripts/tfg/machines/recipes.molds.js similarity index 100% rename from kubejs/server_scripts/tfg/recipes.molds.js rename to kubejs/server_scripts/tfg/machines/recipes.molds.js diff --git a/kubejs/server_scripts/tfg/machines/recipes.multiblocks.js b/kubejs/server_scripts/tfg/machines/recipes.multiblocks.js new file mode 100644 index 000000000..1b54c719c --- /dev/null +++ b/kubejs/server_scripts/tfg/machines/recipes.multiblocks.js @@ -0,0 +1,177 @@ +"use strict"; + +function registerTFGMultiblockRecipes(event) { + + // Multi-Smelter + event.shaped('gtceu:multi_smelter', [ + 'AAA', + 'BCB', + 'DBD' + ], { + A: 'gtceu:hp_steam_furnace', + B: '#gtceu:circuits/hv', + C: 'gtceu:heatproof_machine_casing', + D: 'gtceu:copper_single_cable' + }).id('gtceu:shaped/multi_furnace') + + event.shaped('gtceu:multi_smelter', [ + 'AAA', + 'BCB', + 'DBD' + ], { + A: 'gtceu:lv_electric_furnace', + B: '#gtceu:circuits/hv', + C: 'gtceu:heatproof_machine_casing', + D: 'gtceu:copper_single_cable' + }).id('gtceu:shaped/multi_furnace2') + + // Electric Blast Furnace + event.shaped('gtceu:electric_blast_furnace', [ + 'AAA', + 'BCB', + 'DBD' + ], { + A: 'gtceu:hp_steam_furnace', + B: '#gtceu:circuits/lv', + C: 'gtceu:heatproof_machine_casing', + D: 'gtceu:tin_single_cable' + }).id('gtceu:shaped/electric_blast_furnace') + + event.shaped('gtceu:electric_blast_furnace', [ + 'AAA', + 'BCB', + 'DBD' + ], { + A: 'gtceu:lv_electric_furnace', + B: '#gtceu:circuits/lv', + C: 'gtceu:heatproof_machine_casing', + D: 'gtceu:tin_single_cable' + }).id('gtceu:shaped/electric_blast_furnace2') + + // TFG customs + event.shaped('tfg:electric_greenhouse', [ + 'ABA', + 'CDC', + 'BCB' + ], { + A: '#gtceu:circuits/mv', + B: '#forge:single_cables/copper', + C: 'tfc:compost', + D: 'gtceu:steel_machine_casing' + }).id('tfg:shaped/electric_greenhouse') + + event.shaped('gtceu:steam_bloomery', [ + 'CEC', + 'DAD', + 'CBC' + ], { + A: 'tfc:bloomery', + B: '#forge:frames/bronze', + C: '#forge:rods/black_steel', + D: '#forge:screws/wrought_iron', + E: '#forge:tools/wrenches' + }) + + event.shaped('tfg:ostrum_linear_accelerator', [ + 'USU', + 'WZW', + 'PTP' + ], { + S: 'tfg:casings/machine_casing_vacuum_engine_intake', + Z: 'gtceu:iv_machine_hull', + W: '#gtceu:circuits/iv', + U: '#forge:double_plates/stellite_100', + T: '#forge:single_cables/platinum', + P: 'gtceu:iv_electric_pump' + } + ).id('tfg:shaped/ostrum_linear_accelerator') + + event.recipes.gtceu.assembler('tfg:ostrum_harvester') + .itemInputs( + '1x gtceu:ev_machine_hull', + '4x #gtceu:circuits/ev', + '4x gtceu:ev_electric_motor', + '4x #forge:rotors/black_steel', + '4x gtceu:ev_electric_pump', + '4x #forge:gears/desh') + .itemOutputs('gtceu:ostrum_harvester') + .duration(400) + .EUt(GTValues.VA[GTValues.EV]) + .circuit(2) + + event.recipes.gtceu.assembler('tfg:moon_dust_harvester') + .itemInputs( + '1x gtceu:hv_machine_hull', + '4x #gtceu:circuits/hv', + '4x gtceu:hv_electric_motor', + '4x #forge:rotors/titanium', + '4x gtceu:hv_electric_pump', + '4x #forge:gears/rocket_alloy_t1') + .itemOutputs('gtceu:moon_dust_harvester') + .duration(400) + .EUt(GTValues.VA[GTValues.HV]) + .circuit(2) + + event.recipes.gtceu.shaped('tfg:evaporation_tower', [ + 'TUT', + 'WZW', + 'TUT' + ], { + T: '#gtceu:circuits/iv', + W: 'gtceu:ev_electric_pump', + U: '#forge:double_wires/nichrome', + Z: 'gtceu:ev_machine_hull' + }).addMaterialInfo().id('tfg:shaped/evaporation_tower') + + event.shaped('deafission:fission_reactor_mk1', [ + 'TUT', + 'WZW', + 'TUT' + ], { + T: 'gtceu:atomic_casing', + W: '#gtceu:circuits/ev', + U: 'gtceu:hv_field_generator', + Z: 'gtceu:ev_machine_hull' + } + ).id('tfg:shaped/fission_reactor_mk1') + + event.shaped('gtceu:nuclear_fuel_factory', [ + 'TUT', + 'WZW', + 'TBT' + ], { + T: 'gtceu:atomic_casing', + W: '#gtceu:circuits/ev', + U: 'gtceu:ev_emitter', + Z: 'gtceu:ev_machine_hull', + B: 'gtceu:ev_robot_arm' + } + ).id('tfg:shaped/nuclear_fuel_factory') + + event.shaped('gtceu:heat_exchanger', [ + 'TUT', + 'WZW', + 'GBG' + ], { + T: 'gtceu:high_temperature_smelting_casing', + W: '#gtceu:circuits/ev', + U: 'gtceu:ev_sensor', + Z: 'gtceu:ev_machine_hull', + B: 'gtceu:ev_fluid_regulator', + G: '#forge:gears/ostrum_iodide' + } + ).id('tfg:shaped/heat_exchanger') + + event.shaped('tfg:nuclear_turbine', [ + 'CTC', + 'TZT', + 'BTB' + ], { + T: '#forge:gears/magnalium', + Z: 'gtceu:ev_machine_hull', + B: 'gtceu:ultimet_large_item_pipe', + C: '#gtceu:circuits/ev' + } + ).id('tfg:shaped/nuclear_turbine') + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/machines/recipes.steam_bloomery.js b/kubejs/server_scripts/tfg/machines/recipes.steam_bloomery.js new file mode 100644 index 000000000..7f5b1888e --- /dev/null +++ b/kubejs/server_scripts/tfg/machines/recipes.steam_bloomery.js @@ -0,0 +1,38 @@ +"use strict"; + +function registerTFGSteamBloomeryRecipes(event) { + + event.recipes.gtceu.steam_bloomery('steam_raw_iron_bloom_coal') + .itemInputs('#forge:ingots/iron', '#tfg:steam_bloomery_basic_fuels') + .itemOutputs('tfc:raw_iron_bloom') + .duration(2400) + .EUt(2) + + event.recipes.gtceu.steam_bloomery('steam_raw_iron_bloom_coalcoke') + .itemInputs('2x #forge:ingots/iron', '#tfc:blast_furnace_fuel') + .itemOutputs('2x tfc:raw_iron_bloom') + .duration(2400) + .EUt(2) + + forEachMaterial(material => { + + const tfcProperty = material.getProperty(TFGPropertyKey.TFC_PROPERTY) + if (tfcProperty === null) + return; + + const outputMaterial = tfcProperty.getOutputMaterial() === null ? material : tfcProperty.getOutputMaterial() + if (outputMaterial === GTMaterials.Iron) { + event.recipes.gtceu.steam_bloomery(`steam_raw_iron_bloom_coal_${material.getName()}`) + .itemInputs(ChemicalHelper.get(TagPrefix.dust, material, 1), '#tfg:steam_bloomery_basic_fuels') + .itemOutputs('tfc:raw_iron_bloom') + .duration(2400) + .EUt(2) + + event.recipes.gtceu.steam_bloomery(`steam_raw_iron_bloom_coalcoke_${material.getName()}`) + .itemInputs(ChemicalHelper.get(TagPrefix.dust, material, 2), '#tfc:blast_furnace_fuel') + .itemOutputs('2x tfc:raw_iron_bloom') + .duration(2400) + .EUt(2) + } + }) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/tags.facades.js b/kubejs/server_scripts/tfg/machines/tags.facades.js similarity index 99% rename from kubejs/server_scripts/tfg/tags.facades.js rename to kubejs/server_scripts/tfg/machines/tags.facades.js index cb12fa3e3..33a59ebbd 100644 --- a/kubejs/server_scripts/tfg/tags.facades.js +++ b/kubejs/server_scripts/tfg/machines/tags.facades.js @@ -1,7 +1,7 @@ // priority: 0 "use strict"; -function registerFacadeWhitelistTags(event) { +function registerTFGFacadeWhitelistItemTags(event) { const facade_materials = [ //tags diff --git a/kubejs/server_scripts/tfg/mars/data.mars.js b/kubejs/server_scripts/tfg/mars/data.mars.js new file mode 100644 index 000000000..0a40f9896 --- /dev/null +++ b/kubejs/server_scripts/tfg/mars/data.mars.js @@ -0,0 +1,68 @@ +"use strict"; + +function registerTFGMarsBedrockFluidVeins(event) { + + const Registries = Java.loadClass("net.minecraft.core.registries.Registries") + const ResourceKey = Java.loadClass("net.minecraft.resources.ResourceKey") + const martianAmberHillsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/amber_hills") + const martianAmberPlainsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/amber_plains") + const martianMountainsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/martian_mountains") + const martianRusticusHillsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/rusticus_hills") + const martianRusticusPlainsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/rusticus_plains") + const martianSangnumHillsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/sangnum_hills") + const martianSangnumPlainsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/sangnum_plains") + + event.add('tfg:semiheavy_ammoniacal_water', vein => { + vein.dimensions('ad_astra:mars') + vein.fluid(() => Fluid.of('tfg:semiheavy_ammoniacal_water').fluid) + vein.weight(100) + vein.minimumYield(200) + vein.maximumYield(400) + vein.depletionAmount(1) + vein.depletionChance(20) + vein.depletedYield(15) + }) + + event.add('tfg:liquid_carbon_dioxide', vein => { + vein.dimensions('ad_astra:mars') + vein.fluid(() => Fluid.of('gtceu:liquid_carbon_dioxide').fluid) + vein.weight(30) + vein.minimumYield(20) + vein.maximumYield(350) + vein.depletionAmount(1) + vein.depletionChance(20) + vein.depletedYield(5) + }) + + event.add('tfg:liquid_ice', vein => { + vein.dimensions('ad_astra:mars') + vein.fluid(() => Fluid.of('gtceu:ice').fluid) + vein.weight(20) + vein.minimumYield(20) + vein.maximumYield(200) + vein.depletionAmount(1) + vein.depletionChance(20) + vein.depletedYield(5) + }) + + // Heavy Ammonical Water in Specific Biome Credit to Monifactory from https://github.com/ThePansmith/Monifactory/blob/main/kubejs/server_scripts/worldgen/fluidVeins.js + + event.add('tfg:heavy_ammoniacal_water', vein => { + vein.dimensions('ad_astra:mars') + vein.fluid(() => Fluid.of('tfg:heavy_ammoniacal_water').fluid) + vein.biomes(20, martianAmberHillsResourceKey) + vein.biomes(20, martianAmberPlainsResourceKey) + vein.biomes(20, martianRusticusHillsResourceKey) + vein.biomes(20, martianRusticusPlainsResourceKey) + vein.biomes(20, martianSangnumHillsResourceKey) + vein.biomes(20, martianSangnumPlainsResourceKey) + // This one is exclusively far inland, so it's ok to buff it a bit in case the player has bad luck + vein.biomes(50, martianMountainsResourceKey) + vein.weight(0) + vein.minimumYield(100) + vein.maximumYield(650) + vein.depletionAmount(1) + vein.depletionChance(20) + vein.depletedYield(30) + }) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/events.mars.js b/kubejs/server_scripts/tfg/mars/events.sandstorm.js similarity index 100% rename from kubejs/server_scripts/tfg/events.mars.js rename to kubejs/server_scripts/tfg/mars/events.sandstorm.js diff --git a/kubejs/server_scripts/tfg/mars/recipes.iodine.js b/kubejs/server_scripts/tfg/mars/recipes.iodine.js new file mode 100644 index 000000000..371c0a9fc --- /dev/null +++ b/kubejs/server_scripts/tfg/mars/recipes.iodine.js @@ -0,0 +1,102 @@ +"use strict"; + +function registerTFGMarsIodineRecipes(event) { + + // This file is specifically for the crappy mars-based iodine recipe chain. + // The "proper" venus one is elsewhere + + event.recipes.afc.tree_tapping(TFC.blockIngredient('beneath:wood/log/crimson')) + .resultFluid(Fluid.of('tfg:crimsene', 1)) + .minTemp(-110) + .maxTemp(-15) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/crimson_log") + + event.recipes.afc.tree_tapping(TFC.blockIngredient('beneath:wood/wood/crimson')) + .resultFluid(Fluid.of('tfg:crimsene', 1)) + .minTemp(-110) + .maxTemp(-15) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/crimson_wood") + + event.recipes.afc.tree_tapping(TFC.blockIngredient('beneath:wood/log/warped')) + .resultFluid(Fluid.of('tfg:warpane', 1)) + .minTemp(-110) + .maxTemp(-15) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/warped_log") + + event.recipes.afc.tree_tapping(TFC.blockIngredient('beneath:wood/wood/warped')) + .resultFluid(Fluid.of('tfg:warpane', 1)) + .minTemp(-110) + .maxTemp(-15) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/warped_wood") + + event.recipes.gtceu.autoclave('tfg:crimsene') + .inputFluids(Fluid.of('tfg:crimsene', 144), Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) + .outputFluids(Fluid.of('gtceu:carbon_monoxide', 1000)) + .itemOutputs('#forge:gems/crimsene') + .duration(20 * 30) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.autoclave('tfg:warpane') + .inputFluids(Fluid.of('tfg:warpane', 144), Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) + .outputFluids(Fluid.of('gtceu:hydrogen', 1000)) + .itemOutputs('#forge:gems/warpane') + .duration(20 * 30) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.macerator('tfg:crimsene') + .itemInputs('#forge:gems/crimsene') + .itemOutputs('#forge:dusts/crimsene') + .duration(20 * 5) + .EUt(2) + + event.recipes.gtceu.macerator('tfg:warpane') + .itemInputs('#forge:gems/warpane') + .itemOutputs('#forge:dusts/warpane') + .duration(20 * 5) + .EUt(2) + + event.recipes.gtceu.mixer('tfg:mars_sap') + .itemInputs('#forge:dusts/warpane', '#forge:dusts/crimsene') + .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 1000), Fluid.of('gtceu:krypton', 500)) + .itemOutputs('#forge:dusts/mycelienzene') + .duration(30 * 20) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.deafission.fission_reactor_processing('tfg:mars_sap') + .itemInputs('#forge:dusts/mycelienzene') + .outputFluids(Fluid.of('tfg:cooked_mycelienzane', 1000)) + .blastFurnaceTemp(100) + .duration(30 * 10) + + event.recipes.gtceu.centrifuge('mars_sap_separation') + .inputFluids(Fluid.of('tfg:cooked_mycelienzane', 2000)) + .outputFluids( + Fluid.of('tfg:iodomethane', 1000), + Fluid.of('tfg:trideuteroiodomethane', 1000), + Fluid.of('gtceu:krypton', 1000), + Fluid.of('gtceu:diluted_hydrochloric_acid', 4000)) + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_reactor('tfg:iodomethane_separation') + .inputFluids( + Fluid.of('tfg:iodomethane', 1000), + Fluid.of('gtceu:hydrogen', 1000)) + .itemOutputs('#forge:dusts/iodine') + .outputFluids(Fluid.of('gtceu:methane', 1000)) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.chemical_reactor('tfg:trideuteroiodomethane_separation') + .inputFluids( + Fluid.of('tfg:trideuteroiodomethane', 1000), + Fluid.of('gtceu:oxygen', 1500)) + .itemOutputs('#forge:dusts/iodine', '#forge:dusts/carbon') + .outputFluids(Fluid.of('tfg:heavy_water', 1500)) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.MV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/mars/recipes.mars.js b/kubejs/server_scripts/tfg/mars/recipes.mars.js new file mode 100644 index 000000000..1e3f8e1b4 --- /dev/null +++ b/kubejs/server_scripts/tfg/mars/recipes.mars.js @@ -0,0 +1,261 @@ +"use strict"; + +function registerTFGMarsRecipes(event) { + + // Mars air + + event.recipes.gtceu.vacuum_freezer('tfg:liquid_mars_air') + .inputFluids(Fluid.of('tfg:mars_air', 4000)) + .outputFluids(Fluid.of('tfg:liquid_mars_air', 4000)) + .duration(80) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.centrifuge('tfg:centrifuge_mars_air') + .inputFluids(Fluid.of('tfg:mars_air', 10000)) + .outputFluids(Fluid.of('gtceu:carbon_dioxide', 3900), Fluid.of('gtceu:nitrogen', 1000), Fluid.of('gtceu:argon', 500)) + .duration(1600) + .EUt(GTValues.VA[GTValues.MV]) + + // TODO: move neon and xenon somewhere else + event.recipes.gtceu.distillation_tower('tfg:distill_liquid_mars_air') + .inputFluids(Fluid.of('tfg:liquid_mars_air', 100000)) + .outputFluids(Fluid.of('gtceu:carbon_dioxide', 80000)) + .outputFluids(Fluid.of('gtceu:nitrogen', 7000)) + .outputFluids(Fluid.of('gtceu:argon', 5000)) + .outputFluids(Fluid.of('gtceu:oxygen', 3000)) + .outputFluids(Fluid.of('gtceu:krypton', 1000)) + .outputFluids(Fluid.of('gtceu:neon', 1000)) + .outputFluids(Fluid.of('gtceu:xenon', 1000)) + .chancedOutput('gtceu:ammonium_chloride_dust', 2250, 0) + .disableDistilleryRecipes(true) + .duration(2000) + .EUt(GTValues.VA[GTValues.EV]) + + //#region Mars Water + + event.recipes.gtceu.centrifuge('mars_heavy_water') + .inputFluids(Fluid.of('tfg:heavy_ammoniacal_water', 1000)) + .outputFluids(Fluid.of('tfg:heavy_water', 500)) + .itemOutputs('#forge:dusts/ammonium_chloride', '2x #forge:small_dusts/ammonium_chloride') + .duration(20*9) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.centrifuge('mars_semiheavy_water') + .inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 1000)) + .outputFluids(Fluid.of('tfg:semiheavy_water', 500)) + .itemOutputs('2x #forge:tiny_dusts/ammonium_chloride') + .duration(20*9) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.distillery('mars_semiheavy_water') + .inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 1000)) + .outputFluids(Fluid.of('minecraft:water', 250)) + .duration(20*5) + .EUt(GTValues.VA[GTValues.MV]) + + // Mars plants + + event.recipes.gtceu.mixer('tfg:bio_glowstone') + .itemInputs('betterend:cave_pumpkin_chunks', '4x species:alphacene_mushroom_block') + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .itemOutputs('2x minecraft:glowstone_dust') + .duration(5 * 20) + .EUt(GTValues.VA[GTValues.EV]) + .dimension('ad_astra:mars') + + // Ad astra woods + + global.AD_ASTRA_WOOD.forEach(wood => { + woodBuilder(event, wood.name, wood.lumber, wood.logs, wood.log, wood.stripped_log, wood.plank, wood.stair, wood.slab, wood.door, wood.trapdoor, wood.fence, wood.fence_gate, wood.support, wood.pressure_plate, wood.button) + }) + + event.shaped('16x ad_astra:aeronos_ladder', [ + 'A A', + 'ABA', + 'A A' + ], { + A: 'tfg:wood/lumber/aeronos', + B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1), + }).id('tfg:shaped/aeronos_ladder') + + event.shaped('16x ad_astra:strophar_ladder', [ + 'A A', + 'ABA', + 'A A' + ], { + A: 'tfg:wood/lumber/strophar', + B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1), + }).id('tfg:shaped/strophar_ladder') + + + generateGreenHouseRecipe(event, '8x tfg:saplings/strophar', 'tfg:semiheavy_ammoniacal_water', 16000, + '64x ad_astra:strophar_stem', 'tfg:green_house/strophar_mushroom', 'ad_astra:mars', 8, + '16x ad_astra:strophar_cap', GTValues.VA[GTValues.MV]) + generateGreenHouseRecipe(event, '8x tfg:saplings/aeronos', 'tfg:semiheavy_ammoniacal_water', 16000, + '64x ad_astra:aeronos_stem', 'tfg:green_house/aeronos_mushroom', 'ad_astra:mars', 8, + '16x ad_astra:aeronos_cap', GTValues.VA[GTValues.MV]) + generateGreenHouseRecipe(event, '8x tfg:saplings/glacian', 'tfg:semiheavy_ammoniacal_water', 16000, + '64x ad_astra:glacian_log', 'tfg:green_house/glacian_tree', 'ad_astra:mars', 8, + '8x species:alphacene_moss_block', GTValues.VA[GTValues.MV]) + + // Beneath woods + + generateGreenHouseRecipe(event, '8x tfg:saplings/warped', 'tfg:semiheavy_ammoniacal_water', 16000, + '64x beneath:wood/log/warped', 'tfg:green_house/warped_fungus', 'ad_astra:mars', 8, + '32x minecraft:warped_wart_block', GTValues.VA[GTValues.MV]) + generateGreenHouseRecipe(event, '8x tfg:saplings/crimson', 'tfg:semiheavy_ammoniacal_water', 16000, + '64x beneath:wood/log/crimson', 'tfg:green_house/crimson_fungus', 'ad_astra:mars', 8, + '32x minecraft:nether_wart_block', GTValues.VA[GTValues.MV]) + + // don't pass in the items like doors, trapdoors etc because beneath already has good recipes for those + woodBuilder(event, 'crimson', 'beneath:wood/lumber/crimson', '#tfc:crimson_logs', 'beneath:wood/log/crimson', + 'beneath:wood/stripped_log/crimson', 'beneath:wood/planks/crimson', null, + 'beneath:wood/planks/crimson_slab', null, null, null, null, null, 'beneath:wood/planks/crimson_pressure_plate', + 'beneath:wood/planks/crimson_button') + + event.recipes.gtceu.lathe(`tfg:cutter/crimson_stripped_wood_from_wood`) + .itemInputs('beneath:wood/wood/crimson') + .itemOutputs('beneath:wood/stripped_wood/crimson') + .duration(50) + .EUt(GTValues.VA[GTValues.ULV]) + + event.custom({ + type: 'vintageimprovements:polishing', + ingredients: [{ item: 'beneath:wood/wood/crimson' }], + results: [{ item: 'beneath:wood/stripped_wood/crimson' }], + speed_limits: 0, + processingTime: 50 + }).id(`tfg:vi/lathe/stripping_crimson_wood`) + + woodBuilder(event, 'warped', 'beneath:wood/lumber/warped', '#tfc:warped_logs', 'beneath:wood/log/warped', + 'beneath:wood/stripped_log/warped', 'beneath:wood/planks/warped', null, + 'beneath:wood/planks/warped_slab', null, null, null, null, null, 'beneath:wood/planks/warped_pressure_plate', + 'beneath:wood/planks/warped_button') + + event.recipes.gtceu.lathe(`tfg:cutter/warped_stripped_wood_from_wood`) + .itemInputs('beneath:wood/wood/warped') + .itemOutputs('beneath:wood/stripped_wood/warped') + .duration(50) + .EUt(GTValues.VA[GTValues.ULV]) + + event.custom({ + type: 'vintageimprovements:polishing', + ingredients: [{ item: 'beneath:wood/wood/warped' }], + results: [{ item: 'beneath:wood/stripped_wood/warped' }], + speed_limits: 0, + processingTime: 50 + }).id(`tfg:vi/lathe/stripping_warped_wood`) + + // Alphacene + + generateGreenHouseRecipe(event, '8x tfg:saplings/alphacene', 'tfg:semiheavy_ammoniacal_water', 16000, + '64x species:alphacene_mushroom_block', 'tfg:green_house/alphacene_mushroom', 'ad_astra:mars', 8, + '8x minecraft:mushroom_stem', GTValues.VA[GTValues.MV]) + + //Large Nest + event.shaped('tfg:large_nest_box', + [ + 'B B', + 'ABA', + 'AAA' + ], { + A: 'beneath:crimson_thatch', + B: 'beneath:crimson_straw' + }).id('tfg:shaped_large_nest_crimson') + + event.shaped('tfg:large_nest_box_warped', + [ + 'B B', + 'ABA', + 'AAA' + ], { + A: 'beneath:warped_thatch', + B: 'beneath:warped_straw' + }).id('tfg:shaped_large_nest_warped') + + // Animal stuff + + event.shapeless('species:cracked_wraptor_egg', ['tfg:wraptor_egg', '#forge:tools/hammers']).id('tfg:shapeless/crack_egg') + event.shapeless('2x tfg:wraptor_sugar', ['species:cracked_wraptor_egg']).id('tfg:shapeless/juice_egg') + + event.recipes.gtceu.extractor('tfg:juice_wraptor_egg_mv') + .itemInputs('species:cracked_wraptor_egg') + .itemOutputs('4x tfg:wraptor_sugar') + .duration(100) + .EUt(GTValues.VA[GTValues.MV]) + event.recipes.gtceu.extractor('tfg:juice_wraptor_egg_full') + .itemInputs('tfg:wraptor_egg') + .itemOutputs('4x tfg:wraptor_sugar') + .duration(200) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.extractor('tfg:juice_sniffer_egg') + .itemInputs('tfg:sniffer_egg') + .outputFluids(Fluid.of('firmalife:cream', 1000)) + .duration(100) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.tfc.loom( + '8x ad_astra:glacian_fur', + '8x tfg:glacian_wool', + 8, + 'ad_astra:block/glacian_fur' + ) + + event.recipes.gtceu.assembler('tfg:assembler/glacian_fur') + .itemInputs('tfg:glacian_wool') + .circuit(10) + .itemOutputs('ad_astra:glacian_fur') + .duration(100) + .EUt(4) + + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless('8x tfc:wool_yarn', [ + 'tfc:spindle', + 'tfg:glacian_wool' + ]).id('tfg:shapeless/glacian_wool_to_yarn')) + + event.recipes.gtceu.wiremill('tfg:glacian_wool_yarn') + .itemInputs('tfg:glacian_wool') + .itemOutputs('8x tfc:wool_yarn') + .duration(100) + .EUt(4) + + event.shaped('minecraft:pink_bed', [ + 'AAA', + 'BBB' + ], { + A: 'ad_astra:glacian_fur', + B: '#tfc:lumber' + }).id('tfg:shaped/glacian_bed') + + // Plants + + Ingredient.of('#tfg:mars_plants').stacks.forEach(element => { + const itemId = element.id; + const recipeId = `greenhouse_${itemId.replace(':', '_')}`; + + generateGreenHouseRecipe(event, itemId, 'tfg:semiheavy_ammoniacal_water', 8000, `8x ${itemId}`, + recipeId, 'ad_astra:mars', 8, itemId, GTValues.VA[GTValues.LV]); + }); + + generateGreenHouseRecipe(event, '8x betterend:amber_root_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, + '24x betterend:amber_root_product', 'amber_root', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) + + generateGreenHouseRecipe(event, '8x betterend:blossom_berry_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, + '24x betterend:blossom_berry_product', 'blossom_berry', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) + + generateGreenHouseRecipe(event, '8x betterend:bolux_mushroom_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, + '24x betterend:bolux_mushroom_product', 'bolux_mushroom', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) + + generateGreenHouseRecipe(event, '8x betterend:cave_pumpkin_plant_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, + '24x betterend:cave_pumpkin', 'cave_pumpkin', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) + + generateGreenHouseRecipe(event, '8x betterend:chorus_mushroom_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, + '24x betterend:chorus_mushroom_product', 'chorus_mushroom', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) + + generateGreenHouseRecipe(event, '8x betterend:shadow_berry_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, + '24x betterend:shadow_berry_product', 'shadow_berry', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) + + event.recipes.firmalife.oven('betterend:cave_pumpkin_pie_raw', 400, 60 * 20, 'betterend:cave_pumpkin_pie') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/mars/recipes.ostrum.js b/kubejs/server_scripts/tfg/mars/recipes.ostrum.js new file mode 100644 index 000000000..7aa0cdffd --- /dev/null +++ b/kubejs/server_scripts/tfg/mars/recipes.ostrum.js @@ -0,0 +1,140 @@ +"use strict"; + +function registerTFGMarsOstrumRecipes(event) { + + var $HeatRecipeCapability = Java.loadClass("fi.dea.mc.deafission.common.data.recipe.HeatRecipeCapability"); + var $HeatIngredient = Java.loadClass("fi.dea.mc.deafission.common.data.recipe.HeatIngredient"); + const $ChanceLogic = Java.loadClass('com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic') + + // Ostrum Harvester + + event.recipes.gtceu.ostrum_harvester(`tfg:ostrum_harvesting`) + .perTick(true) + .inputFluids('gtceu:drilling_fluid 4') + .perTick(false) + .dimension('ad_astra:mars') + .itemOutputsRanged('gtceu:ostrum_dust', 1, 5) + .duration(20 * 30) + .EUt(GTValues.VA[GTValues.LV]); + + // Ostrum Linear Accelerator Recipes + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum_transformation') + .inputFluids('gtceu:residual_radioactive_concoction 100') + .itemInputs('32x #forge:dusts/ostrum') + .chancedFluidOutputLogic($ChanceLogic.XOR) + .chancedFluidOutput('gtceu:lightweight_ostrum_vapor', 6000, 0) + .chancedFluidOutput('gtceu:ostrum_vapor', 3000, 0) + .chancedFluidOutput('gtceu:dense_ostrum_vapor', 1000, 0) + .dimension('ad_astra:mars') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.EV]); + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum') + .inputFluids('gtceu:lightweight_ostrum_vapor 1000') + .inputFluids('gtceu:residual_radioactive_concoction 100') + .inputFluids(Fluid.of('tfg:heavy_water', 1000)) + .itemOutputsRanged('#forge:dusty_raw_materials/pitchblende', 1, 10) + .itemOutputsRanged('#forge:dusty_raw_materials/silver', 1, 10) + .itemOutputsRanged('#forge:dusty_raw_materials/tricalcium_phosphate', 1, 10) + .dimension('ad_astra:mars') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.IV]); + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum') + .inputFluids('gtceu:ostrum_vapor 1000') + .inputFluids('gtceu:residual_radioactive_concoction 100') + .inputFluids(Fluid.of('gtceu:radon', 100)) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/beryllium'), 1, 10) + .dimension('ad_astra:mars') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.IV]); + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:dense_ostrum') + .inputFluids('gtceu:dense_ostrum_vapor 1000') + .inputFluids('gtceu:residual_radioactive_concoction 100') + .inputFluids(Fluid.of('gtceu:tritiated_water', 500)) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/uraninite'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/hematite'), 1, 10) + .dimension('ad_astra:mars') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.IV]); + + // Ostrum Linear Accelerator Recipes + + // .input($HeatRecipeCapability.CAP, new $HeatIngredient(X, Y)) where X is Minimal Temperature to run and where Y is HU consummed per craft + /* + event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum_transformation') + .inputFluids('gtceu:residual_radioactive_concoction 100') + .itemInputs('32x #forge:dusts/ostrum') + .chancedFluidOutputLogic($ChanceLogic.XOR) + .chancedFluidOutput('gtceu:lightweight_ostrum_vapor', 6000, 0) + .chancedFluidOutput('gtceu:ostrum_vapor', 3000, 0) + .chancedFluidOutput('gtceu:dense_ostrum_vapor', 1000, 0) + .dimension('ad_astra:mars') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.EV]); + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t1') + .perTick(true) + .inputFluids('gtceu:residual_radioactive_concoction 1') + .perTick(false) + .inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000)) + .inputFluids(Fluid.of('gtceu:radon', 10)) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10) + .itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10) + //.input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500)) + .dimension('ad_astra:mars') + .duration(20 * 20) + .circuit(1); + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t2') + .perTick(true) + .inputFluids('gtceu:residual_radioactive_concoction 1') + .inputFluids(Fluid.of('tfg:semiheavy_water', 1)) + .perTick(false) + .inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000)) + .inputFluids(Fluid.of('gtceu:radon', 10)) + .inputFluids(Fluid.of('gtceu:krypton', 10)) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 10, 20) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10) + .itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10) + .itemOutputsRanged(Item.of('gtceu:dusty_raw_pitchblende'), 1, 10) + //.input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500)) + .dimension('ad_astra:mars') + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.IV]) + .circuit(2); + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t3') + .perTick(true) + .inputFluids('gtceu:residual_radioactive_concoction 1') + .inputFluids(Fluid.of('tfg:semiheavy_water', 1)) + .perTick(false) + .inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000)) + .inputFluids(Fluid.of('gtceu:radon', 10)) + .inputFluids(Fluid.of('gtceu:krypton', 10)) + .inputFluids(Fluid.of('gtceu:tritiated_water', 10)) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 10, 20) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10) + .itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 10, 10) + .itemOutputsRanged(Item.of('gtceu:dusty_raw_pitchblende'), 10, 20) + .input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500)) + .dimension('ad_astra:mars') + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.IV]) + .circuit(3); + */ + //#endregion + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/mars/tags.mars.js b/kubejs/server_scripts/tfg/mars/tags.mars.js new file mode 100644 index 000000000..bd1cbc9ef --- /dev/null +++ b/kubejs/server_scripts/tfg/mars/tags.mars.js @@ -0,0 +1,529 @@ +"use strict"; + +function registerTFGMarsItemTags(event) { + + event.add('c:hidden_from_recipe_viewers', 'tfg:mars_ice') + + event.add('tfc:compost_greens', 'ad_astra:aeronos_cap') + event.add('tfc:compost_greens', 'ad_astra:strophar_cap') + + // Dirt + event.add('minecraft:dirt', 'tfg:grass/mars_dirt') + event.add('minecraft:dirt', 'tfg:grass/mars_clay_dirt') + event.add('tfc:dirt', 'tfg:grass/mars_dirt') + event.add('tfc:dirt', 'tfg:grass/mars_clay_dirt') + event.add('tfc:grass', 'tfg:grass/amber_mycelium') + event.add('tfc:grass', 'tfg:grass/amber_clay_mycelium') + event.add('tfc:grass', 'tfg:grass/rusticus_mycelium') + event.add('tfc:grass', 'tfg:grass/rusticus_clay_mycelium') + event.add('tfc:grass', 'tfg:grass/sangnum_mycelium') + event.add('tfc:grass', 'tfg:grass/sangnum_clay_mycelium') + event.add('tfc:farmland', 'tfg:grass/mars_farmland') + event.add('tfc:paths', 'tfg:grass/mars_path') + event.add('tfc:kaolin_clay', 'tfg:grass/amber_kaolin_mycelium') + event.add('tfc:kaolin_clay', 'tfg:grass/rusticus_kaolin_mycelium') + event.add('tfc:kaolin_clay', 'tfg:grass/sangnum_kaolin_mycelium') + + // Mars animals + event.add('tfg:martian_eggs', 'tfg:sniffer_egg') + event.add('tfg:martian_eggs', 'tfg:wraptor_egg') + event.add('forge:eggs', '#tfg:martian_eggs') + event.add('firmalife:foods/raw_eggs', '#tfg:martian_eggs') + + event.add('tfg:martian_animal_foods', 'betterend:amber_root_product') + event.add('tfg:martian_animal_foods', 'betterend:blossom_berry_product') + event.add('tfg:martian_animal_foods', 'betterend:chorus_mushroom_product') + event.add('tfg:martian_animal_foods', 'betterend:shadow_berry_product') + event.add('tfg:martian_animal_foods', 'betterend:bolux_mushroom_product') + event.add('tfg:martian_animal_foods', 'betterend:cave_pumpkin_chunks') + + event.add('tfg:glacian_ram_food', '#tfg:martian_animal_foods') + event.add('tfg:sniffer_food', '#tfg:martian_animal_foods') + event.add('tfg:wraptor_food', '#tfg:martian_animal_foods') + + event.remove('minecraft:wool', 'ad_astra:glacian_fur') + + event.add('tfg:mineral_rich_wool', 'tfg:wraptor_wool') + event.add('tfg:mineral_rich_wool', 'tfg:sniffer_wool') + + event.add('buildinggadgets2:deny', 'tfg:spice') + + // these are log tags + event.remove('ad_astra:aeronos_caps', 'ad_astra:aeronos_cap') + event.remove('ad_astra:strophar_caps', 'ad_astra:strophar_cap') + + event.add('tfc:makes_tannin', '#ad_astra:glacian_logs') + event.add('tfc:makes_tannin', '#tfc:crimson_logs') + event.add('tfc:makes_tannin', '#tfc:warped_logs') + + // Crops + event.add('forge:seeds', 'betterend:amber_root_seeds') + event.add('forge:seeds', 'betterend:blossom_berry_seeds') + event.add('forge:seeds', 'betterend:bolux_mushroom_seeds') + event.add('forge:seeds', 'betterend:cave_pumpkin_seeds') + event.add('forge:seeds', 'betterend:shadow_berry_seeds') + + event.add('tfc:foods', 'betterend:amber_root_product') + event.add('tfc:foods/grains', 'betterend:amber_root_product') + + event.add('tfc:foods', 'betterend:blossom_berry_product') + event.add('tfc:foods/fruits', 'betterend:blossom_berry_product') + + event.add('tfc:foods', 'betterend:bolux_mushroom_product') + event.add('tfc:foods/vegetables', 'betterend:bolux_mushroom_product') + event.add('forge:mushrooms', 'betterend:bolux_mushroom_product') + event.add('tfc:foods', 'betterend:bolux_mushroom_cooked') + event.add('tfc:foods/vegetables', 'betterend:bolux_mushroom_cooked') + event.add('forge:mushrooms', 'betterend:bolux_mushroom_cooked') + + event.add('tfc:foods', 'betterend:cave_pumpkin') + event.add('tfc:foods', 'betterend:cave_pumpkin_chunks') + event.add('tfc:foods/fruits', 'betterend:cave_pumpkin_chunks') + event.add('tfc:foods', 'betterend:cave_pumpkin_pie_dough') + event.add('tfc:foods', 'betterend:cave_pumpkin_pie_raw') + event.add('tfc:foods', 'betterend:cave_pumpkin_pie') + event.add('firmalife:foods/washable', 'betterend:cave_pumpkin_pie_raw') + event.add('firmalife:foods/washable', 'betterend:cave_pumpkin_pie') + + event.add('tfc:foods', 'betterend:chorus_mushroom_product') + event.add('tfc:foods/vegetables', 'betterend:chorus_mushroom_product') + event.add('forge:mushrooms', 'betterend:chorus_mushroom_product') + event.add('tfc:foods', 'betterend:chorus_mushroom_cooked') + event.add('tfc:foods/vegetables', 'betterend:chorus_mushroom_cooked') + event.add('forge:mushrooms', 'betterend:chorus_mushroom_cooked') + + event.add('tfc:foods', 'betterend:shadow_berry_product') + event.add('tfc:foods/fruits', 'betterend:shadow_berry_product') + event.add('tfc:foods', 'betterend:shadow_berry_cooked') + event.add('tfc:foods/fruits', 'betterend:shadow_berry_cooked') + + event.add('forge:mushrooms', 'betterend:flammalix') + event.add('forge:mushrooms', 'betterend:small_amaranita_mushroom') +} + +function registerTFGMarsBlockTags(event) { + + event.add('buildinggadgets2:deny', 'tfg:spice') + event.add('ae2:blacklisted/spatial', 'tfg:spice') + + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/dacite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/dacite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/dacite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/basalt') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/basalt') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/basalt') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/gabbro') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/gabbro') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/gabbro') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/diorite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/diorite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/diorite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/rhyolite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/rhyolite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/rhyolite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/andesite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/andesite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/andesite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/chert') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/chert') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/chert') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/conglomerate') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/conglomerate') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/conglomerate') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/claystone') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/claystone') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/claystone') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/limestone') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/limestone') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/limestone') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/dolomite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/dolomite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/dolomite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/shale') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/shale') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/shale') + event.add('ad_astra:mars_stone_replaceables', 'ad_astra:mars_stone') + event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/hardened_mars_stone') + event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/gravel_mars') + event.add('ad_astra:mars_stone_replaceables', 'minecraft:red_sandstone') + event.add('ad_astra:mars_stone_replaceables', 'ad_astra:venus_stone') + event.add('ad_astra:mars_stone_replaceables', 'ad_astra:venus_sandstone') + event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/hardened_venus_stone') + event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/gravel_venus') + event.add('ad_astra:mars_stone_replaceables', 'gtceu:red_granite') + event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/hardened_red_granite') + event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/gravel_red_granite') + event.add('ad_astra:mars_stone_replaceables', 'create:ochrum') + + event.add('tfc:can_carve', '#ad_astra:mars_stone_replaceables') + + event.add('tfg:mars_soil', 'minecraft:red_sand') + event.add('tfg:mars_soil', 'ad_astra:mars_sand') + event.add('tfg:mars_soil', 'ad_astra:venus_sand') + event.add('tfg:mars_soil', 'tfg:rock/gravel_venus') + event.add('tfg:mars_soil', 'tfg:rock/gravel_mars') + event.add('tfg:mars_soil', 'tfc:rock/gravel/dacite') + event.add('tfg:mars_soil', 'tfc:rock/gravel/basalt') + event.add('tfg:mars_soil', 'tfc:rock/gravel/gabbro') + event.add('tfg:mars_soil', 'tfc:rock/gravel/diorite') + event.add('tfg:mars_soil', 'tfc:rock/gravel/rhyolite') + event.add('tfg:mars_soil', 'tfc:rock/gravel/andesite') + event.add('tfg:mars_soil', 'tfc:rock/gravel/conglomerate') + event.add('tfg:mars_soil', 'tfc:rock/gravel/claystone') + event.add('tfg:mars_soil', 'tfc:rock/gravel/limestone') + event.add('tfg:mars_soil', 'tfc:rock/gravel/dolomite') + event.add('tfg:mars_soil', 'tfc:rock/gravel/shale') + event.add('tfg:mars_soil', 'tfc:sand/black') + event.add('tfg:mars_soil', 'tfc:sand/red') + event.add('tfg:mars_soil', 'tfc:sand/pink') + event.add('tfg:mars_soil', 'tfg:grass/mars_dirt') + event.add('tfg:mars_soil', 'tfg:grass/mars_clay_dirt') + event.add('tfg:mars_soil', 'tfg:grass/amber_mycelium') + event.add('tfg:mars_soil', 'tfg:grass/rusticus_mycelium') + event.add('tfg:mars_soil', 'tfg:grass/sangnum_mycelium') + event.add('tfg:mars_soil', 'tfg:grass/amber_clay_mycelium') + event.add('tfg:mars_soil', 'tfg:grass/rusticus_clay_mycelium') + event.add('tfg:mars_soil', 'tfg:grass/sangnum_clay_mycelium') + event.add('tfg:mars_soil', 'tfg:grass/amber_kaolin_mycelium') + event.add('tfg:mars_soil', 'tfg:grass/rusticus_kaolin_mycelium') + event.add('tfg:mars_soil', 'tfg:grass/sangnum_kaolin_mycelium') + + event.add('ad_astra:mars_stone_replaceables', '#tfg:mars_soil') + event.add('minecraft:animals_spawnable_on', '#tfg:mars_soil') + event.add('minecraft:animals_spawnable_on', '#tfg:mars_plants') + event.add('minecraft:valid_spawn', '#minecraft:animals_spawnable_on') + + event.removeAll('minecraft:sniffer_diggable_block') + + event.add('tfc:can_be_snow_piled', 'minecraft:crimson_fungus') + event.add('tfc:can_be_snow_piled', 'minecraft:warped_fungus') + event.add('tfc:can_be_snow_piled', 'minecraft:torchflower') + event.add('tfc:can_be_snow_piled', 'minecraft:pitcher_plant') + + event.add('tfg:heightmap_ignore', 'ad_astra:strophar_cap') + event.add('tfg:heightmap_ignore', 'ad_astra:strophar_stem') + event.add('tfg:heightmap_ignore', 'ad_astra:aeronos_cap') + event.add('tfg:heightmap_ignore', 'ad_astra:aeronos_stem') + event.add('tfg:heightmap_ignore', 'minecraft:nether_wart_block') + event.add('tfg:heightmap_ignore', 'minecraft:warped_wart_block') + event.add('tfg:heightmap_ignore', 'species:alphacene_mushroom_block') + event.add('tfg:heightmap_ignore', 'species:alphacene_mushroom_growth') + event.add('tfg:heightmap_ignore', 'tfg:glacian_leaves') + event.add('tfg:heightmap_ignore', 'betterend:glacian_hymenophore') + event.add('tfg:heightmap_ignore', 'species:alphacene_moss_block') + event.add('tfg:heightmap_ignore', 'minecraft:ice') + + event.remove('minecraft:enderman_holdable', 'minecraft:crimson_fungus') + event.remove('minecraft:enderman_holdable', 'minecraft:warped_fungus') + + event.remove('ad_astra:strophar_caps', 'ad_astra:strophar_cap') + event.remove('ad_astra:aeronos_caps', 'ad_astra:aeronos_cap') + + event.add('tfc:can_be_snow_piled', 'ad_astra:aeronos_mushroom') + event.add('tfc:can_be_snow_piled', 'ad_astra:strophar_mushroom') + + event.add('minecraft:dirt', 'tfg:grass/mars_dirt') + event.add('minecraft:dirt', 'tfg:grass/mars_clay_dirt') + event.add('minecraft:dirt', 'tfg:grass/amber_mycelium') + event.add('minecraft:dirt', 'tfg:grass/rusticus_mycelium') + event.add('minecraft:dirt', 'tfg:grass/sangnum_mycelium') + event.add('minecraft:dirt', 'tfg:grass/amber_clay_mycelium') + event.add('minecraft:dirt', 'tfg:grass/rusticus_clay_mycelium') + event.add('minecraft:dirt', 'tfg:grass/sangnum_clay_mycelium') + event.add('minecraft:dirt', 'tfg:grass/amber_kaolin_mycelium') + event.add('minecraft:dirt', 'tfg:grass/rusticus_kaolin_mycelium') + event.add('minecraft:dirt', 'tfg:grass/sangnum_kaolin_mycelium') + + event.add('tfc:dirt', 'tfg:grass/mars_dirt') + event.add('tfc:dirt', 'tfg:grass/mars_clay_dirt') + event.add('tfc:farmland', 'tfg:grass/mars_farmland') + + event.add('tfc:paths', 'tfg:grass/mars_path') + + event.add('tfc:grass', 'tfg:grass/amber_mycelium') + event.add('tfc:grass', 'tfg:grass/rusticus_mycelium') + event.add('tfc:grass', 'tfg:grass/sangnum_mycelium') + event.add('tfc:grass', 'tfg:grass/amber_clay_mycelium') + event.add('tfc:grass', 'tfg:grass/rusticus_clay_mycelium') + event.add('tfc:grass', 'tfg:grass/sangnum_clay_mycelium') + event.add('tfc:grass', 'tfg:grass/amber_kaolin_mycelium') + event.add('tfc:grass', 'tfg:grass/rusticus_kaolin_mycelium') + event.add('tfc:grass', 'tfg:grass/sangnum_kaolin_mycelium') + + event.add('tfc:kaolin_clay', 'tfg:grass/amber_kaolin_mycelium') + event.add('tfc:kaolin_clay', 'tfg:grass/rusticus_kaolin_mycelium') + event.add('tfc:kaolin_clay', 'tfg:grass/sangnum_kaolin_mycelium') + + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/amber_mycelium') + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/rusticus_mycelium') + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/sangnum_mycelium') + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/amber_clay_mycelium') + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/rusticus_clay_mycelium') + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/sangnum_clay_mycelium') + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/amber_kaolin_mycelium') + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/rusticus_kaolin_mycelium') + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/sangnum_kaolin_mycelium') + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/mars_farmland') + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/mars_path') + + event.add('tfc:can_landslide', 'tfg:grass/mars_dirt') + event.add('tfc:can_landslide', 'tfg:grass/mars_clay_dirt') + event.add('tfc:can_landslide', 'tfg:grass/mars_farmland') + event.add('tfc:can_landslide', 'tfg:grass/mars_path') + event.add('tfc:can_landslide', 'tfg:grass/amber_mycelium') + event.add('tfc:can_landslide', 'tfg:grass/rusticus_mycelium') + event.add('tfc:can_landslide', 'tfg:grass/sangnum_mycelium') + event.add('tfc:can_landslide', 'tfg:grass/amber_clay_mycelium') + event.add('tfc:can_landslide', 'tfg:grass/rusticus_clay_mycelium') + event.add('tfc:can_landslide', 'tfg:grass/sangnum_clay_mycelium') + event.add('tfc:can_landslide', 'tfg:grass/amber_kaolin_mycelium') + event.add('tfc:can_landslide', 'tfg:grass/rusticus_kaolin_mycelium') + event.add('tfc:can_landslide', 'tfg:grass/sangnum_kaolin_mycelium') + + event.add('minecraft:mineable/shovel', 'tfg:grass/mars_dirt') + event.add('minecraft:mineable/shovel', 'tfg:grass/mars_clay_dirt') + event.add('minecraft:mineable/shovel', 'tfg:grass/mars_path') + event.add('minecraft:mineable/shovel', 'tfg:grass/mars_farmland') + event.add('minecraft:mineable/shovel', 'tfg:grass/amber_mycelium') + event.add('minecraft:mineable/shovel', 'tfg:grass/amber_clay_mycelium') + event.add('minecraft:mineable/shovel', 'tfg:grass/amber_kaolin_mycelium') + event.add('minecraft:mineable/shovel', 'tfg:grass/rusticus_mycelium') + event.add('minecraft:mineable/shovel', 'tfg:grass/rusticus_clay_mycelium') + event.add('minecraft:mineable/shovel', 'tfg:grass/rusticus_kaolin_mycelium') + event.add('minecraft:mineable/shovel', 'tfg:grass/sangnum_mycelium') + event.add('minecraft:mineable/shovel', 'tfg:grass/sangnum_clay_mycelium') + event.add('minecraft:mineable/shovel', 'tfg:grass/sangnum_kaolin_mycelium') + + event.add('tfc:bush_plantable_on', 'tfg:grass/mars_farmland') + event.add('tfc:grass_plantable_on', 'tfg:grass/mars_farmland') + event.add('tfc:creeping_plantable_on', 'tfg:grass/mars_farmland') + + event.add('tfg:decorative_plant_attachable', '#minecraft:logs') + event.add('tfg:decorative_plant_attachable', 'minecraft:mushroom_stem') + event.add('tfg:decorative_plant_attachable', 'species:alphacene_mushroom_block') + event.add('tfg:decorative_plant_attachable', 'species:alphacene_moss_block') + event.add('tfg:decorative_plant_attachable', 'ad_astra:aeronos_cap') + event.add('tfg:decorative_plant_attachable', 'ad_astra:strophar_cap') + event.add('tfg:decorative_plant_attachable', 'tfg:glacian_leaves') + event.add('tfg:decorative_plant_attachable', 'minecraft:nether_wart_block') + event.add('tfg:decorative_plant_attachable', 'minecraft:warped_wart_block') + event.add('tfg:decorative_plant_attachable', 'betterend:cave_bush') + event.add('tfg:decorative_plant_attachable', 'betterend:lucernia_leaves') + + event.add('minecraft:mineable/shovel', 'tfg:ash_pile') + event.add('minecraft:mineable/shovel', 'tfg:pile/black_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/white_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/brown_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/red_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/yellow_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/pink_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/green_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/moon_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/mars_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/venus_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/hematitic_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/mars_sand_covering') + event.add('minecraft:mineable/shovel', 'tfg:pile/venus_sand_covering') + event.add('minecraft:mineable/shovel', 'tfg:pile/hematitic_sand_covering') +} + +function registerTFGMarsBiomeTags(event) { + + global.MARS_BIOMES.forEach(biome => { + event.add('tfg:mars_biomes', biome) + }) + + event.add('sandworm_mod:can_spawn_sandworms', 'tfg:mars/martian_dunes') + event.add('sandworm_mod:can_spawn_sandworms', 'tfg:mars/martian_deep_desert') + + event.add('tfg:has_dark_sand_particles', 'tfg:mars/martian_dunes') + event.add('tfg:has_dark_sand_particles', 'tfg:mars/martian_deep_desert') + event.add('tfg:has_dark_sand_particles', 'tfg:mars/martian_mountains') + event.add('tfg:has_medium_sand_particles', 'tfg:mars/amber_plains') + event.add('tfg:has_medium_sand_particles', 'tfg:mars/amber_hills') + event.add('tfg:has_medium_sand_particles', 'tfg:mars/rusticus_plains') + event.add('tfg:has_medium_sand_particles', 'tfg:mars/rusticus_hills') + event.add('tfg:has_medium_sand_particles', 'tfg:mars/sangnum_plains') + event.add('tfg:has_medium_sand_particles', 'tfg:mars/sangnum_hills') + event.add('tfg:has_light_sand_particles', 'tfg:mars/martian_dune_edge') + event.add('tfg:has_light_sand_particles', 'tfg:mars/amber_edge') + event.add('tfg:has_light_sand_particles', 'tfg:mars/rusticus_edge') + event.add('tfg:has_light_sand_particles', 'tfg:mars/sangnum_edge') + event.add('tfg:has_light_sand_particles', 'tfg:mars/martian_river') + + event.add('tfg:has_mild_dust_storms', 'tfg:mars/martian_mountains') + event.add('tfg:has_mild_dust_storms', 'tfg:mars/martian_river') + event.add('tfg:has_mild_dust_storms', 'tfg:mars/amber_hills') + event.add('tfg:has_mild_dust_storms', 'tfg:mars/rusticus_hills') + event.add('tfg:has_mild_dust_storms', 'tfg:mars/sangnum_hills') + event.add('tfg:has_moderate_dust_storms', 'tfg:mars/amber_plains') + event.add('tfg:has_moderate_dust_storms', 'tfg:mars/amber_edge') + event.add('tfg:has_moderate_dust_storms', 'tfg:mars/rusticus_plains') + event.add('tfg:has_moderate_dust_storms', 'tfg:mars/rusticus_edge') + event.add('tfg:has_moderate_dust_storms', 'tfg:mars/sangnum_plains') + event.add('tfg:has_moderate_dust_storms', 'tfg:mars/sangnum_edge') + event.add('tfg:has_severe_dust_storms', 'tfg:mars/martian_dunes') + event.add('tfg:has_severe_dust_storms', 'tfg:mars/martian_deep_desert') +} + +function registerTFGMarsEntityTypeTags(event) { + + const ENTITIES = [ + 'tfg:sniffer', + 'tfg:glacian_ram', + 'tfg:wraptor', + 'species:goober', + 'species:cruncher', + 'species:springling', + 'species:quake', + 'species:stackatick', + 'endermanoverhaul:crimson_forest_enderman', + 'endermanoverhaul:warped_forest_enderman', + 'endermanoverhaul:badlands_enderman', + 'endermanoverhaul:cave_enderman', + 'wan_ancient_beasts:walker', + 'wan_ancient_beasts:eater', + 'wan_ancient_beasts:crusher', + 'wan_ancient_beasts:soarer', + 'wan_ancient_beasts:glider', + 'wan_ancient_beasts:toxlacanth', + 'wan_ancient_beasts:surfer', + 'tfg:surfer' + ] + + ENTITIES.forEach(entity => { + event.add('ad_astra:can_survive_extreme_cold', entity) + event.add('ad_astra:lives_without_oxygen', entity) + }) + + event.add('tfc:deals_piercing_damage', 'tfg:wraptor') + event.add('tfc:deals_piercing_damage', 'species:cruncher') + event.add('tfc:deals_piercing_damage', 'wan_ancient_beasts:eater') + event.add('tfc:deals_piercing_damage', 'wan_ancient_beasts:soarer') + event.add('tfc:deals_piercing_damage', 'wan_ancient_beasts:glider') + event.add('tfc:deals_piercing_damage', 'ad_astra:martian_raptor') + event.add('tfc:deals_crushing_damage', 'species:quake') + event.add('tfc:deals_crushing_damage', 'wan_ancient_beasts:walker') + event.add('tfc:deals_crushing_damage', 'wan_ancient_beasts:crusher') + event.add('tfc:deals_slashing_damage', 'endermanoverhaul:crimson_forest_enderman') + event.add('tfc:deals_slashing_damage', 'endermanoverhaul:warped_forest_enderman') + event.add('tfc:deals_slashing_damage', 'endermanoverhaul:badlands_enderman') + event.add('tfc:deals_slashing_damage', 'endermanoverhaul:cave_enderman') + + // this guy has a bounce animation that looks silly in low grav + event.add('tfg:ignores_gravity', 'wan_ancient_beasts:crusher') + // this huge guy also looks silly in low grav + event.add('tfg:ignores_gravity', 'wan_ancient_beasts:walker') + event.add('tfg:ignores_gravity', 'wan_ancient_beasts:eater') + // flying mobs + event.add('tfg:ignores_gravity', 'wan_ancient_beasts:soarer') + event.add('tfg:ignores_gravity', 'wan_ancient_beasts:glider') + // swimming mobs + event.add('tfg:ignores_gravity', 'tfg:surfer') + event.add('tfg:ignores_gravity', 'wan_ancient_beasts:toxlacanth') + event.add('tfg:ignores_gravity', 'endermanoverhaul:coral_enderman') +} + +function registerTFGMarsPlacedFeatures(event) { + // Underground decoration + event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/loose_rocks') + event.add('tfg:mars_underground_decoration', 'tfc:cave_spike') + event.add('tfg:mars_underground_decoration', 'tfc:cave_column') + event.add('tfg:mars_underground_decoration', 'tfc:large_cave_spike') + event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/noise_cave_stalagmite') + event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/noise_cave_stalagtite') + + event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/calcite') + event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/mega_calcite') + + event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/ice_cave') + event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/icicle') + event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/icicle_extra') + event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/ochrum_blob') + + event.add('tfg:mars_underground_decoration', "tfg:earth/geode/amethyst") + event.add('tfg:mars_underground_decoration', "tfg:earth/geode/barite") + event.add('tfg:mars_underground_decoration', "tfg:earth/geode/calcite") + event.add('tfg:mars_underground_decoration', "tfg:earth/geode/gypsum") + event.add('tfg:mars_underground_decoration', "tfg:earth/geode/opal") + event.add('tfg:mars_underground_decoration', "tfg:earth/geode/pyrite") + event.add('tfg:mars_underground_decoration', "tfg:earth/geode/quartzite") + + // Vegetation + event.add("tfg:mars_global_small_plants", "tfg:mars/tree/lucernia") + event.add("tfg:mars_global_small_plants", "tfg:mars/tree/lucernia_common") + event.add("tfg:mars_global_small_plants", "tfg:mars/tree/cave_bush") + event.add("tfg:mars_global_small_plants", "tfg:mars/tree/cave_bush_common") + event.add("tfg:mars_global_small_plants", "tfg:mars/surface/charnia") + event.add("tfg:mars_global_small_plants", "tfg:mars/surface/flamaea") + event.add("tfg:mars_global_small_plants", "tfg:mars/surface/lacugrove") + + event.add("tfg:mars_amber_vegetal_decoration", "#tfg:mars_global_small_plants") + event.add("tfg:mars_rusticus_vegetal_decoration", "#tfg:mars_global_small_plants") + event.add("tfg:mars_sangnum_vegetal_decoration", "#tfg:mars_global_small_plants") + + + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/crop/amber_root") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/crop/blossom_berry") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/crop/bolux_mushroom") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/crop/cave_pumpkin") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/crop/chorus_mushroom") + + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/lanceleaf") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/lanceleaf_small") + + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/bulb_moss") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/aurant_polypore") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/filalux_wings") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/filalux_wings_top") + + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/amber_grass") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/flammalix") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/lutebus") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/orango") + + + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/amber_root") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/blossom_berry") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/bolux_mushroom") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/chorus_mushroom") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/shadow_berry") + + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/lucernia_outer_leaves") + + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/bulb_moss") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/aurant_polypore") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/purple_polypore") + + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/aeridium") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/flammalix") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/lamellarium") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/lutebus") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/orango") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/ruscus") + + + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/crop/blossom_berry") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/crop/bolux_mushroom") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/crop/cave_pumpkin") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/crop/chorus_mushroom") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/crop/shadow_berry") + + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/small_amaranita_mushroom") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/large_amaranita_mushroom") + + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/purple_polypore") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/filalux_wings") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/filalux_wings_top") + + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/cave_grass") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/clawfern") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/globulagus") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/lamellarium") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/ruscus") + + // Top layer + event.add("tfg:mars_top_layer_modification", "tfg:glow_lichen") + event.add("tfg:mars_top_layer_modification", "tfc:surface_loose_rocks") + event.add("tfg:mars_top_layer_modification", "tfg:mars/terrain/mars_poles") +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/moon/data.moon.js b/kubejs/server_scripts/tfg/moon/data.moon.js new file mode 100644 index 000000000..7e72dfc32 --- /dev/null +++ b/kubejs/server_scripts/tfg/moon/data.moon.js @@ -0,0 +1,38 @@ +"use strict"; + +function registerTFGMoonBedrockFluidVeins(event) { + + event.add('tfg:moon_helium_3', vein => { + vein.dimensions('ad_astra:moon') + vein.fluid(() => Fluid.of('gtceu:helium_3').fluid) + vein.weight(100) + vein.minimumYield(200) + vein.maximumYield(400) + vein.depletionAmount(1) + vein.depletionChance(1) + vein.depletedYield(200) + }) + + event.add('tfg:moon_helium', vein => { + vein.dimensions('ad_astra:moon') + vein.fluid(() => Fluid.of('gtceu:helium').fluid) + vein.weight(10) + vein.minimumYield(20) + vein.maximumYield(50) + vein.depletionAmount(1) + vein.depletionChance(1) + vein.depletedYield(20) + }) + + event.add('tfg:moon_argon', vein => { + vein.dimensions('ad_astra:moon') + vein.fluid(() => Fluid.of('gtceu:argon').fluid) + vein.weight(5) + vein.minimumYield(10) + vein.maximumYield(30) + vein.depletionAmount(1) + vein.depletionChance(1) + vein.depletedYield(10) + }) + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/moon/recipes.moon.js b/kubejs/server_scripts/tfg/moon/recipes.moon.js new file mode 100644 index 000000000..2a6ca6a5c --- /dev/null +++ b/kubejs/server_scripts/tfg/moon/recipes.moon.js @@ -0,0 +1,27 @@ +"use strict"; + +function registerTFGMoonRecipes(event) { + + // Cryo Fluix + event.recipes.gtceu.vacuum_freezer('gtceu:cryo_fluix') + .inputFluids(Fluid.of('gtceu:helium_3', 1000)) + .inputFluids(Fluid.of('tfg:fluix', 144)) + .outputFluids(Fluid.of('tfg:cryogenized_fluix', 576)) + .duration(30 * 20) + .EUt(GTValues.VA[GTValues.MV]) + .dimension('ad_astra:moon') + + event.recipes.gtceu.fluid_heater('tfg:cryo_fluix') + .inputFluids(Fluid.of('tfg:cryogenized_fluix', 576)) + .outputFluids(Fluid.of('tfg:fluix', 144)) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.autoclave('tfg:cryo_fluix_pearl') + .inputFluids(Fluid.of('tfg:cryogenized_fluix', 576)) + .itemInputs('tfg:vitrified_pearl') + .itemOutputs('tfg:cryo_fluix_pearl') + .duration(300) + .EUt(GTValues.VA[GTValues.EV]) + .cleanroom(CleanroomType.CLEANROOM) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/moon/recipes.plants.js b/kubejs/server_scripts/tfg/moon/recipes.plants.js new file mode 100644 index 000000000..38c5e8f8b --- /dev/null +++ b/kubejs/server_scripts/tfg/moon/recipes.plants.js @@ -0,0 +1,118 @@ +"use strict"; + +function registerTFGMoonPlantRecipes(event) { + + // Plants - Can't use the default builder here because fertiliser is much harder to get on the moon, + // and we're using helium-3 as the fertiliser + + // Chorus + event.recipes.gtceu.greenhouse('tfg:chorus') + .notConsumable('8x tfg:lunar_chorus_flower') + .itemOutputs('64x minecraft:chorus_fruit') + .chancedOutput('8x tfg:lunar_chorus_flower', 750, 0) + .chancedOutput('8x tfg:lunar_chorus_flower', 500, 0) + .chancedOutput('8x tfg:lunar_chorus_flower', 750, 0) + .duration(36000) // 30 mins + .circuit(1) + .EUt(GTValues.VA[GTValues.MV]) + .dimension('ad_astra:moon') + + event.recipes.gtceu.greenhouse('tfg:chorus_helium') + .notConsumable('8x tfg:lunar_chorus_flower') + .inputFluids(Fluid.of('gtceu:helium_3', 2000)) + .itemOutputs('64x minecraft:chorus_fruit') + .chancedOutput('8x tfg:lunar_chorus_flower', 4000, 0) + .chancedOutput('8x tfg:lunar_chorus_flower', 3000, 0) + .chancedOutput('8x tfg:lunar_chorus_flower', 4000, 0) + .duration(12000) // 10 mins + .circuit(2) + .EUt(GTValues.VA[GTValues.MV]) + .dimension('ad_astra:moon') + + // Replace the built-in greg one to add a circuit + event.recipes.gtceu.fermenter('fermented_biomass') + .inputFluids(Fluid.of('gtceu:biomass', 100)) + .outputFluids(Fluid.of('gtceu:fermented_biomass', 100)) + .circuit(1) + .duration(150) + .EUt(2) + + event.recipes.gtceu.fermenter('tfg:chorus') + .itemInputs('minecraft:chorus_fruit') + .inputFluids(Fluid.of('gtceu:biomass', 20)) + .chancedOutput('ae2:ender_dust', 100, 0) + .outputFluids(Fluid.of('gtceu:nitrogen', 1000)) + .circuit(2) + .duration(5 * 20) + .EUt(GTValues.VA[GTValues.MV]) + .dimension('ad_astra:moon') + + event.recipes.gtceu.fermenter('tfg:chorus_flower') + .itemInputs('tfg:lunar_chorus_flower') + .inputFluids(Fluid.of('gtceu:biomass', 20)) + .chancedOutput('ae2:ender_dust', 100, 0) + .outputFluids(Fluid.of('gtceu:nitrogen', 1000)) + .circuit(2) + .duration(5 * 20) + .EUt(GTValues.VA[GTValues.MV]) + .dimension('ad_astra:moon') + + // Lightblooms + event.recipes.gtceu.greenhouse('tfg:lightbloom') + .notConsumable('8x minecraft:twisting_vines') + .itemOutputs('16x minecraft:twisting_vines') + .chancedOutput('minecraft:pearlescent_froglight', 2500, 0) + .chancedOutput('minecraft:verdant_froglight', 2500, 0) + .chancedOutput('minecraft:ochre_froglight', 2500, 0) + .duration(36000) // 30 mins + .circuit(1) + .EUt(GTValues.VA[GTValues.LV]) + .dimension('ad_astra:moon') + + event.recipes.gtceu.greenhouse('tfg:lightbloom_helium') + .notConsumable('8x minecraft:twisting_vines') + .inputFluids(Fluid.of('gtceu:helium_3', 2000)) + .itemOutputs('16x minecraft:twisting_vines') + .chancedOutput('minecraft:pearlescent_froglight', 3500, 0) + .chancedOutput('minecraft:verdant_froglight', 3500, 0) + .chancedOutput('minecraft:ochre_froglight', 3500, 0) + .duration(12000) // 30 mins + .circuit(2) + .EUt(GTValues.VA[GTValues.LV]) + .dimension('ad_astra:moon') + + event.recipes.gtceu.brewery('biomass_from_twisting_vines') + .itemInputs('minecraft:twisting_vines') + .inputFluids("#tfg:clean_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 20)) + .duration(50) + .EUt(3) + + Ingredient.of('#tfg:moon_plants').stacks.forEach(element => { + const itemId = element.id; + const recipeId = `betterend:greenhouse_${itemId.replace(':', '_')}`; + + event.recipes.gtceu.greenhouse(recipeId) + .notConsumable(element.id) + .itemOutputs(`8x ${element.id}`) + .chancedOutput(element.id, 750, 0) + .chancedOutput(element.id, 500, 0) + .chancedOutput(element.id, 750, 0) + .duration(36000) // 30 mins + .circuit(1) + .EUt(GTValues.VA[GTValues.MV]) + .dimension('ad_astra:moon') + + event.recipes.gtceu.greenhouse(`${recipeId}_helium`) + .notConsumable(element.id) + .inputFluids(Fluid.of('gtceu:helium_3', 500)) + .itemOutputs(`8x ${element.id}`) + .chancedOutput(element.id, 4000, 0) + .chancedOutput(element.id, 3000, 0) + .chancedOutput(element.id, 4000, 0) + .duration(12000) // 30 mins + .circuit(2) + .EUt(GTValues.VA[GTValues.MV]) + .dimension('ad_astra:moon') + }); +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/moon/recipes.regolith.js b/kubejs/server_scripts/tfg/moon/recipes.regolith.js new file mode 100644 index 000000000..1d43f7489 --- /dev/null +++ b/kubejs/server_scripts/tfg/moon/recipes.regolith.js @@ -0,0 +1,144 @@ +"use strict"; + +function registerTFGMoonRegolithRecipes(event) { + + //#region Moon Harvester + + event.recipes.gtceu.moon_dust_harvester('tfg:lunar_assurine_harvester') + .biome('tfg:moon/lunar_asurine_dense') + .itemOutputsRanged('#forge:dusts/certus_regolith', 1, 5) + .duration(20 * 80) + .EUt(GTValues.VA[GTValues.LV]) + .circuit(1) + + event.recipes.gtceu.moon_dust_harvester('tfg:lunar_chorus_dense') + .biome('tfg:moon/lunar_chorus_dense') + .itemOutputsRanged('#forge:dusts/goethe_regolith', 1, 5) + .duration(20 * 80) + .EUt(GTValues.VA[GTValues.LV]) + .circuit(2) + + event.recipes.gtceu.moon_dust_harvester('tfg:lunar_corals_dense') + .biome('tfg:moon/lunar_corals_dense') + .itemOutputsRanged('#forge:dusts/bright_regolith', 1, 5) + .duration(20 * 80) + .EUt(GTValues.VA[GTValues.LV]) + .circuit(3) + + event.recipes.gtceu.moon_dust_harvester('tfg:lunar_lights_dense') + .biome('tfg:moon/lunar_lights_dense') + .itemOutputsRanged('#forge:dusts/cassiterite_regolith', 1, 5) + .duration(20 * 80) + .EUt(GTValues.VA[GTValues.LV]) + .circuit(4) + + //#endregion + + //#region Regolith Vapor Processing + + event.recipes.gtceu.mixer('tfg:regolith_slurry_suspension') + .itemInputs('ad_astra:moon_sand', 'tfg:dry_ice') + .itemOutputs('#forge:dusts/regolith_mush') + .dimension('ad_astra:moon') + .duration(20 * 60) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.chemical_bath('tfg:regolith_vapor') + .itemInputs('#forge:dusts/regolith_mush') + .inputFluids('gtceu:nitrogen 1000') + .itemOutputs('#forge:dusts/silicon_dioxide') + .outputFluids('gtceu:regolith_vapor 1000') + .dimension('ad_astra:moon') + .duration(20 * 28) + .EUt(GTValues.VHA[GTValues.LV]) + + //#endregion + + //#region Making Dusty Ores + + const $ChanceLogic = Java.loadClass('com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic') + + event.recipes.gtceu.chemical_reactor('tfg:dusty_certus_reactor') + .itemInputs('#forge:dusts/certus_regolith') + .inputFluids('gtceu:regolith_vapor 100') + .itemOutputs('gtceu:dusty_raw_certus_quartz') + .dimension('ad_astra:moon') + .duration(20 * 68) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor('tfg:dusty_goethite_reactor') + .itemInputs('#forge:dusts/goethe_regolith') + .inputFluids('gtceu:regolith_vapor 100') + .itemOutputs('gtceu:dusty_raw_goethite') + .dimension('ad_astra:moon') + .duration(20 * 68) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor('tfg:dusty_shiny_reactor') + .itemInputs('#forge:dusts/bright_regolith') + .inputFluids('gtceu:regolith_vapor 100') + .chancedItemOutputLogic($ChanceLogic.XOR) + .chancedOutput('gtceu:dusty_raw_diamond', 2000, 0) + .chancedOutput('gtceu:dusty_raw_gold', 8000, 0) + .dimension('ad_astra:moon') + .duration(20 * 68) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor('tfg:dusty_cassiterite_reactor') + .itemInputs('#forge:dusts/cassiterite_regolith') + .inputFluids('gtceu:regolith_vapor 100') + .itemOutputs('gtceu:dusty_raw_cassiterite') + .dimension('ad_astra:moon') + .duration(20 * 68) + .EUt(GTValues.VHA[GTValues.ULV]) + + //#endregion + + //#region Basic dusty ore centrifuging + + // These have special recipes + const DUSTY_ORE_EXCEPTIONS = [ + GTMaterials.Goethite, + GTMaterials.Cassiterite, + GTMaterials.Bauxite + ] + + // Otherwise everything else just centrifuges into its dust version + forEachMaterial(material => { + if (DUSTY_ORE_EXCEPTIONS.indexOf(material) >= 0) + return; + + const dustyOre = ChemicalHelper.get(TFGTagPrefix.dustyRawOre, material, 1) + const dust = ChemicalHelper.get(TagPrefix.dust, material, 1) + + if (dustyOre !== null && dust !== null) { + event.recipes.gtceu.centrifuge(`tfg:dusty_to_dust_${material.getName()}`) + .itemInputs(dustyOre) + .itemOutputs(dust) + .duration(20 * 45) + .EUt(GTValues.VA[GTValues.MV]) + } + }) + + event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_goethite') + .itemInputs('#forge:dusty_raw_materials/goethite') + .chancedItemOutputLogic($ChanceLogic.XOR) + .chancedOutput('#forge:dusts/iron', 5000, 0) + .chancedOutput('#forge:dusts/copper', 5000, 0) + .duration(20 * 45) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_bauxite') + .itemInputs('#forge:dusty_raw_materials/bauxite') + .itemOutputs('#forge:dusts/aluminium') + .duration(20 * 45) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_tin') + .itemInputs('#forge:dusty_raw_materials/cassiterite') + .itemOutputs('#forge:dusts/tin') + .duration(20 * 45) + .EUt(GTValues.VA[GTValues.MV]) + // #endregion + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/moon/tags.moon.js b/kubejs/server_scripts/tfg/moon/tags.moon.js new file mode 100644 index 000000000..33b50a4d3 --- /dev/null +++ b/kubejs/server_scripts/tfg/moon/tags.moon.js @@ -0,0 +1,117 @@ +"use strict"; + +function registerTFGMoonItemTags(event) { + + event.add('tfg:moon_plants', 'tfg:lunar_roots') + event.add('tfg:moon_plants', 'tfg:lunar_sprouts') + + event.add('tfc:compost_greens_high', 'minecraft:pearlescent_froglight') + event.add('tfc:compost_greens_high', 'minecraft:verdant_froglight') + event.add('tfc:compost_greens_high', 'minecraft:ochre_froglight') +} + +function registerTFGMoonBlockTags(event) { + + event.add('minecraft:rabbits_spawnable_on', '#ad_astra:moon_stone_replaceables') + event.add('species:limpet_spawnable_on', '#ad_astra:moon_stone_replaceables') + + event.add('ad_astra:moon_stone_replaceables', 'ad_astra:moon_sand') + event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/hardened_moon_stone') + event.add('ad_astra:moon_stone_replaceables', 'tfc:sand/white') + event.add('ad_astra:moon_stone_replaceables', 'tfc:sand/black') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/diorite') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/gabbro') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/basalt') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/rhyolite') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/andesite') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/dacite') + event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/gravel_moon') + event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/gravel_moon_deepslate') + event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/gravel_glacio') + event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/hardened_moon_deepslate') + event.add('ad_astra:moon_stone_replaceables', 'ad_astra:glacio_stone') + event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/hardened_glacio_stone') + event.add('ad_astra:moon_stone_replaceables', 'ad_astra:glacio_cobblestone') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/basalt') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/basalt') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/gabbro') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/gabbro') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/diorite') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/diorite') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/rhyolite') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/rhyolite') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/andesite') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/andesite') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/dacite') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/dacite') + + event.add('tfc:can_carve', '#ad_astra:moon_stone_replaceables') +} + +function registerTFGMoonBiomeTags(event) { + global.MOON_BIOMES.forEach(biome => { + event.add('tfg:moon_biomes', biome) + event.add('tfg:has_structure/meteors', biome) + event.add('tfg:has_structure/cheese_ores', biome) + event.add('tfg:has_structure/moonbase', biome) + event.add('tfg:has_structure/moon_rabbit_houses', biome) + event.add('species:limpet_spawns', biome) + }) +} + +function registerTFGMoonEntityTypeTags(event) { + const ENTITIES = [ + 'tfc:rat', + 'tfg:moon_rabbit', + 'minecraft:enderman', + 'minecraft:shulker', + 'minecraft:shulker_bullet', + 'minecraft:skeleton', + 'minecraft:stray', + 'species:limpet', + 'species:birt', + 'endermanoverhaul:windswept_hills_enderman', + 'endermanoverhaul:soulsand_valley_enderman', + 'endermanoverhaul:spirit', + 'endermanoverhaul:end_enderman', + 'endermanoverhaul:end_islands_enderman', + ] + + ENTITIES.forEach(entity => { + event.add('ad_astra:can_survive_extreme_cold', entity) + event.add('ad_astra:lives_without_oxygen', entity) + }) + + event.add('tfc:deals_piercing_damage', 'minecraft:stray') + event.add('tfc:deals_slashing_damage', 'minecraft:enderman') + event.add('tfc:deals_slashing_damage', 'endermanoverhaul:windswept_hills_enderman') + event.add('tfc:deals_slashing_damage', 'endermanoverhaul:soulsand_valley_enderman') + event.add('tfc:deals_piercing_damage', 'endermanoverhaul:end_enderman') + event.add('tfc:deals_slashing_damage', 'endermanoverhaul:end_islands_enderman') + event.add('tfc:deals_crushing_damage', 'ad_astra:star_crawler') + event.add('tfc:deals_crushing_damage', 'species:birt') + + event.add('tfg:ignores_gravity', 'minecraft:shulker_bullet') + event.add('tfg:ignores_gravity', 'endermanoverhaul:spirit') + event.add('tfg:ignores_gravity', 'species:birt') + event.add('tfg:ignores_gravity', 'ad_astra:star_crawler') +} + +function registerTFGMoonPlacedFeatures(event) { + event.add('tfg:moon_craters', 'tfg:moon/crater/extra_large') + event.add('tfg:moon_craters', 'tfg:moon/crater/large') + event.add('tfg:moon_craters', 'tfg:moon/crater/medium') + event.add('tfg:moon_craters', 'tfg:moon/crater/small') + + global.MOON_STONE_TYPES.forEach(stone => { + // only in the sparse ones + event.add('tfg:moon_large_rock_features', `tfg:moon/surface/delta/${stone}`) + // in all moon biomes + event.add('tfg:moon_small_rock_features', `tfg:moon/surface/pile/${stone}`) + event.add('tfg:moon_small_rock_features', `tfg:moon/surface/loose/${stone}`) + }) + + event.add('tfg:moon_small_rock_features', 'tfg:moon/surface/pile_moon_sand') + event.add('tfg:moon_small_rock_features', 'tfg:moon/surface/pile_white_sand') + event.add('tfg:moon_small_rock_features', 'tfg:moon/surface/pile_black_sand') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfc/recipes.alabaster.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.alabaster.js similarity index 98% rename from kubejs/server_scripts/tfc/recipes.alabaster.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.alabaster.js index 3fe1055cb..9c65df063 100644 --- a/kubejs/server_scripts/tfc/recipes.alabaster.js +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.alabaster.js @@ -1,7 +1,7 @@ // priority: 0 "use strict"; -function registerTFCAlabasterRecipes(event) { +function registerTFGAlabasterRecipes(event) { event.recipes.tfc.damage_inputs_shapeless_crafting(event.recipes.minecraft.crafting_shapeless('4x tfc:alabaster_brick', ['#forge:raw_materials/gypsum', '#tfc:chisels'])) .id('tfc:crafting/alabaster_brick/raw_gypsum') diff --git a/kubejs/server_scripts/tfg/recipes.collapse.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.collapse.js similarity index 97% rename from kubejs/server_scripts/tfg/recipes.collapse.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.collapse.js index a61d69a52..2c39a3f07 100644 --- a/kubejs/server_scripts/tfg/recipes.collapse.js +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.collapse.js @@ -122,6 +122,10 @@ function registerTFGCollapseRecipes(event) { // #endregion // #region Other + event.recipes.tfc.collapse('#tfg:rock_slabs').id('tfg:collapse/rock_slabs') + event.recipes.tfc.collapse('#tfg:rock_stairs').id('tfg:collapse/rock_stairs') + event.recipes.tfc.collapse('#tfg:rock_walls').id('tfg:collapse/rock_walls') + event.recipes.tfc.collapse('minecraft:cobblestone', 'minecraft:stone') event.recipes.tfc.landslide('minecraft:cobblestone', 'minecraft:cobblestone') event.recipes.tfc.landslide('minecraft:mossy_cobblestone', 'minecraft:mossy_cobblestone') diff --git a/kubejs/server_scripts/tfg/natural_blocks/recipes.concrete.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.concrete.js new file mode 100644 index 000000000..b305c5209 --- /dev/null +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.concrete.js @@ -0,0 +1,144 @@ +"use strict"; + +function registerTFGConcreteRecipes(event) { + + const recipe = event.recipes.gtceu.mixer('concrete_from_marble') + .itemInputs(Ingredient.of('#tfg:stone_dusts').subtract('gtceu:marble_dust').withCount(2), 'gtceu:marble_dust', 'gtceu:gypsum_dust') + .inputFluids("#tfg:clean_water 1000") + .outputFluids('gtceu:concrete 1152') + .duration(40) + .EUt(16) + + generateMixerRecipe(event, ['3x #tfg:stone_dusts', 'gtceu:clay_dust'], + "#tfg:clean_water 500", [], null, 'gtceu:concrete 576', 20, 16, 64, 'concrete_from_clay') + + generateMixerRecipe(event, ['3x #tfg:stone_dusts', 'gtceu:calcite_dust', 'gtceu:gypsum_dust'], + "#tfg:clean_water 1000", [], null, 'gtceu:concrete 1152', 40, 16, 64, 'concrete_from_calcite') + + //GT light/dark concrete recipe fix + + event.remove({ id: 'gtceu:fluid_solidifier/solidify_concrete_block' }) + event.remove({ id: 'gtceu:chemical_bath/light_to_dark_concrete' }) + + event.recipes.gtceu.fluid_solidifier('gtceu:fluid_solidifier/solidify_light_concrete') + .inputFluids(Fluid.of('gtceu:concrete', 144)) + .notConsumable('1x gtceu:block_casting_mold') + .itemOutputs('1x gtceu:light_concrete') + .duration(98) + .EUt(7) + + event.recipes.gtceu.chemical_bath('gtceu:chemical_bath/dark_concrete') + .inputFluids(Fluid.of('tfc:black_dye', 18)) + .itemInputs('1x gtceu:light_concrete') + .itemOutputs('1x gtceu:dark_concrete') + .duration(20) + .EUt(7) + + event.recipes.gtceu.extractor('gtceu:extractor/extract_light_concrete') + .itemInputs('1x gtceu:light_concrete') + .outputFluids(Fluid.of('gtceu:concrete', 144)) + .duration(98) + .EUt(30) + + event.stonecutting('gtceu:light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_bricks') + event.stonecutting('gtceu:chiseled_light_concrete', 'gtceu:light_concrete').id('tfg:stonecutting/chiseled_light_concrete') + event.stonecutting('gtceu:light_concrete_tile', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_tile') + event.stonecutting('gtceu:light_concrete_small_tile', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_small_tile') + event.stonecutting('gtceu:light_concrete_windmill_a', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_windmill_a') + event.stonecutting('gtceu:light_concrete_windmill_b', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_windmill_b') + event.stonecutting('gtceu:small_light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/small_light_concrete_bricks') + event.stonecutting('gtceu:square_light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/square_light_concrete_bricks') + + event.stonecutting('gtceu:dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_bricks') + event.stonecutting('gtceu:chiseled_dark_concrete', 'gtceu:dark_concrete').id('tfg:stonecutting/chiseled_dark_concrete') + event.stonecutting('gtceu:dark_concrete_tile', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_tile') + event.stonecutting('gtceu:dark_concrete_small_tile', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_small_tile') + event.stonecutting('gtceu:dark_concrete_windmill_a', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_windmill_a') + event.stonecutting('gtceu:dark_concrete_windmill_b', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_windmill_b') + event.stonecutting('gtceu:small_dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/small_dark_concrete_bricks') + event.stonecutting('gtceu:square_dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/square_dark_concrete_bricks') + + // Handcrafted artisanal concrete + + event.recipes.firmalife.mixing_bowl() + .ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/marble', '#forge:dusts/gypsum'], Fluid.of('minecraft:water', 1000)) + .outputFluid(Fluid.of('gtceu:concrete', 1000)) + + event.recipes.firmalife.mixing_bowl() + .ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/clay'], Fluid.of('minecraft:water', 500)) + .outputFluid(Fluid.of('gtceu:concrete', 500)) + + event.recipes.firmalife.mixing_bowl() + .ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/calcite', '#forge:dusts/gypsum'], Fluid.of('minecraft:water', 1000)) + .outputFluid(Fluid.of('gtceu:concrete', 1000)) + + event.recipes.tfc.barrel_sealed(1000) + .inputFluid(Fluid.of('gtceu:concrete', 144)) + .inputItem('gtceu:wood_frame') + .outputItem('gtceu:light_concrete') + .id('tfg:barrel/light_concrete') + + event.recipes.tfc.barrel_sealed(1000) + .inputFluid(Fluid.of('gtceu:concrete', 96)) + .inputItem('tfg:rebar_support') + .outputItem('tfg:reinforced_light_concrete_support') + .id('tfg:barrel/reinforced_light_concrete_support') + + event.recipes.tfc.barrel_sealed(500) + .inputItem('gtceu:light_concrete') + .inputFluid(Fluid.of('tfc:black_dye', 18)) + .outputItem('gtceu:dark_concrete') + .id('tfg:barrel/dark_concrete') + + event.recipes.tfc.barrel_sealed(500) + .inputItem('tfg:light_concrete_support') + .inputFluid(Fluid.of('tfc:black_dye', 10)) + .outputItem('tfg:dark_concrete_support') + .id('tfg:barrel/dark_concrete_support') + + event.recipes.tfc.barrel_sealed(500) + .inputItem('tfg:reinforced_light_concrete_support') + .inputFluid(Fluid.of('tfc:black_dye', 10)) + .outputItem('tfg:reinforced_dark_concrete_support') + .id('tfg:barrel/reinforced_dark_concrete_support') + + // Titanium concrete + event.recipes.gtceu.assembler('tfg:titanium_concrete') + .itemInputs('2x #forge:rods/titanium', '#forge:dusts/kaolinite') + .inputFluids(Fluid.of('gtceu:concrete', 144 * 1.5)) + .itemOutputs('tfg:titanium_concrete') + .circuit(2) + .duration(20) + .EUt(GTValues.VH[GTValues.EV]) + + event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks') + .itemInputs('tfg:polished_titanium_concrete') + .notConsumable('#forge:lenses/light_blue') + .itemOutputs('tfg:titanium_concrete_bricks') + .duration(20 * (2.5)) + .EUt(GTValues.VA[GTValues.LV]) + event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks_small') + .itemInputs('tfg:polished_titanium_concrete') + .notConsumable('#forge:lenses/pink') + .itemOutputs('tfg:titanium_concrete_bricks_small') + .duration(20 * (2.5)) + .EUt(GTValues.VA[GTValues.LV]) + event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks_square') + .itemInputs('tfg:polished_titanium_concrete') + .notConsumable('#forge:lenses/green') + .itemOutputs('tfg:titanium_concrete_bricks_square') + .duration(20 * (2.5)) + .EUt(GTValues.VA[GTValues.LV]) + event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_tile') + .itemInputs('tfg:polished_titanium_concrete') + .notConsumable('#forge:lenses/red') + .itemOutputs('tfg:titanium_concrete_tile') + .duration(20 * (2.5)) + .EUt(GTValues.VA[GTValues.LV]) + event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_tile_small') + .itemInputs('tfg:polished_titanium_concrete') + .notConsumable('#forge:lenses/black') + .itemOutputs('tfg:titanium_concrete_tile_small') + .duration(20 * (2.5)) + .EUt(GTValues.VA[GTValues.LV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfc/recipes.dirt.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.dirt.js similarity index 95% rename from kubejs/server_scripts/tfc/recipes.dirt.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.dirt.js index 89f2ba194..714706f91 100644 --- a/kubejs/server_scripts/tfc/recipes.dirt.js +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.dirt.js @@ -1,7 +1,14 @@ ๏ปฟ// priority: 0 "use strict"; -function registerTFCDirtRecipes(event) { +function registerTFGDirtRecipes(event) { + + // Dirt creation + event.recipes.gtceu.macerator('dirt_from_bio_chaff') + .itemInputs('gtceu:bio_chaff') + .itemOutputs('tfc:dirt/loam') + .duration(300) + .EUt(4) // Loam + Silt -> Silty Loam (ะœะธะบัะตั€) event.recipes.gtceu.mixer('silty_loam_dirt') diff --git a/kubejs/server_scripts/tfg/recipes.rocks.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.rocks.js similarity index 98% rename from kubejs/server_scripts/tfg/recipes.rocks.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.rocks.js index 7851c6e91..fe606f170 100644 --- a/kubejs/server_scripts/tfg/recipes.rocks.js +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.rocks.js @@ -1238,4 +1238,29 @@ function registerTFGRockRecipes(event) { }) //#endregion Magma Blocks + + //#region GT marble + event.stonecutting('gtceu:polished_marble', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_polished_marble') + event.stonecutting('gtceu:chiseled_marble', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_chiseled_marble') + event.stonecutting('gtceu:marble_tile', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_tile') + event.stonecutting('gtceu:marble_small_tile', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_small_tile') + event.stonecutting('gtceu:marble_windmill_a', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_windmill_a') + event.stonecutting('gtceu:marble_windmill_b', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_windmill_b') + event.stonecutting('gtceu:small_marble_bricks', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_small_marble_bricks') + event.stonecutting('gtceu:square_marble_bricks', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_square_marble_bricks') + //#endregion + + // Blackstone Buttons + removeCutterRecipe(event, 'blackstone_button') + removeCutterRecipe(event, 'blackstone_button_water') + removeCutterRecipe(event, 'blackstone_button_distilled_water') + removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button') + removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button_water') + removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button_distilled_water') + + event.recipes.gtceu.cutter('tfg:blackstone_button') + .itemInputs('minecraft:polished_blackstone_pressure_plate') + .itemOutputs('6x minecraft:polished_blackstone_button') + .EUt(7) + .duration(100) } \ No newline at end of file diff --git a/kubejs/server_scripts/tfc/recipes.sand.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.sand.js similarity index 93% rename from kubejs/server_scripts/tfc/recipes.sand.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.sand.js index 2ef29e6a1..6b035dca2 100644 --- a/kubejs/server_scripts/tfc/recipes.sand.js +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.sand.js @@ -1,7 +1,7 @@ ๏ปฟ// priority: 0 "use strict"; -function registerTFCSandRecipes(event) { +function registerTFGSandRecipes(event) { // ะะตั„ั‚ะตะฝะพัะฝั‹ะน -> ะ–ะตะปั‚ั‹ะน ะฟะตัะพะบ event.recipes.gtceu.centrifuge('oilsands_ore_separation') @@ -210,4 +210,25 @@ function registerTFCSandRecipes(event) { event.recipes.greate.pressing('tfc:sand/pink', '#tfc:pink_gravel') .recipeTier(1) .id(`greate:pressing/pink_gravel_to_sand`) + + // Quartz sand + event.shaped('gtceu:quartz_sand_dust', [ + 'A', + 'B' + ], { + A: '#forge:sand', + B: '#forge:tools/mortars' + }).id('gtceu:shaped/quartz_sand') + + event.recipes.gtceu.macerator('quartz_sand_from_sand') + .itemInputs('#forge:sand') + .itemOutputs('gtceu:quartz_sand_dust') + .duration(30) + .EUt(2) + + event.recipes.gtceu.electrolyzer('sand_electrolysis') + .itemInputs('8x #forge:sand') + .itemOutputs('gtceu:silicon_dioxide_dust') + .duration(500) + .EUt(25) } \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.stone_dusts.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.stone_dusts.js similarity index 95% rename from kubejs/server_scripts/tfg/recipes.stone_dusts.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.stone_dusts.js index 2ce4ca2eb..f805affa3 100644 --- a/kubejs/server_scripts/tfg/recipes.stone_dusts.js +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.stone_dusts.js @@ -6,6 +6,24 @@ */ function registerTFGStoneDustRecipes(event) { + event.recipes.gtceu.electrolyzer('gtceu:decomposition_electrolyzing_clay') + .itemInputs('13x #forge:dusts/clay') + .itemOutputs('2x #forge:dusts/sodium', '1x #forge:dusts/lithium', '2x #forge:dusts/aluminium', '2x #forge:dusts/silicon') + .outputFluids(Fluid.of('minecraft:water', 6000)) + .duration(GTMaterials.Clay.getMass() * 13) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.centrifuge('gtceu:stone_dust_separation') + .itemInputs('gtceu:stone_dust') + .chancedOutput('#forge:small_dusts/quartzite', 2500, 0) + .chancedOutput('#forge:small_dusts/potassium_feldspar', 2500, 0) + .chancedOutput('#forge:small_dusts/marble', 2222, 0) + .chancedOutput('#forge:small_dusts/biotite', 1111, 0) + .chancedOutput('#forge:small_dusts/metal_mixture', 825, 80) + .chancedOutput('#forge:small_dusts/sodalite', 550, 55) + .duration(12 * 20) + .EUt(GTValues.VA[GTValues.HV]) + event.remove({ id: 'gtceu:electrolyzer/decomposition_electrolyzing_blackstone' }) event.recipes.gtceu.centrifuge('gtceu:decomposition_centrifuging__diorite') diff --git a/kubejs/server_scripts/tfc/recipes.stone.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.tfc_stone.js similarity index 100% rename from kubejs/server_scripts/tfc/recipes.stone.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.tfc_stone.js diff --git a/kubejs/server_scripts/tfg/tags.stones.js b/kubejs/server_scripts/tfg/natural_blocks/tags.stones.js similarity index 99% rename from kubejs/server_scripts/tfg/tags.stones.js rename to kubejs/server_scripts/tfg/natural_blocks/tags.stones.js index d1c642af9..2df6ade7c 100644 --- a/kubejs/server_scripts/tfg/tags.stones.js +++ b/kubejs/server_scripts/tfg/natural_blocks/tags.stones.js @@ -1,6 +1,6 @@ // priority: 0 -function registerTFGItemStoneTags(event) { +function registerTFGStoneItemTags(event) { event.add('tfc:fluxstone', 'tfg:loose/dripstone') diff --git a/kubejs/server_scripts/tfg/nuclear/recipes.ostrum.js b/kubejs/server_scripts/tfg/nuclear/recipes.ostrum.js deleted file mode 100644 index 779b382ad..000000000 --- a/kubejs/server_scripts/tfg/nuclear/recipes.ostrum.js +++ /dev/null @@ -1,83 +0,0 @@ - // priority: 0 - -function registerTFGNOstrumRecipes(event) { - - var $HeatRecipeCapability = Java.loadClass("fi.dea.mc.deafission.common.data.recipe.HeatRecipeCapability"); - var $HeatIngredient = Java.loadClass("fi.dea.mc.deafission.common.data.recipe.HeatIngredient"); - const $ChanceLogic = Java.loadClass('com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic') - - // Ostrum Linear Accelerator Recipes - - // .input($HeatRecipeCapability.CAP, new $HeatIngredient(X, Y)) where X is Minimal Temperature to run and where Y is HU consummed per craft -/* - event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum_transformation') - .inputFluids('gtceu:residual_radioactive_concoction 100') - .itemInputs('32x #forge:dusts/ostrum') - .chancedFluidOutputLogic($ChanceLogic.XOR) - .chancedFluidOutput('gtceu:lightweight_ostrum_vapor', 6000, 0) - .chancedFluidOutput('gtceu:ostrum_vapor', 3000, 0) - .chancedFluidOutput('gtceu:dense_ostrum_vapor', 1000, 0) - .dimension('ad_astra:mars') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.EV]); - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t1') - .perTick(true) - .inputFluids('gtceu:residual_radioactive_concoction 1') - .perTick(false) - .inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000)) - .inputFluids(Fluid.of('gtceu:radon', 10)) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10) - .itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10) - //.input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500)) - .dimension('ad_astra:mars') - .duration(20 * 20) - .circuit(1); - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t2') - .perTick(true) - .inputFluids('gtceu:residual_radioactive_concoction 1') - .inputFluids(Fluid.of('tfg:semiheavy_water', 1)) - .perTick(false) - .inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000)) - .inputFluids(Fluid.of('gtceu:radon', 10)) - .inputFluids(Fluid.of('gtceu:krypton', 10)) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 10, 20) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10) - .itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10) - .itemOutputsRanged(Item.of('gtceu:dusty_raw_pitchblende'), 1, 10) - //.input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500)) - .dimension('ad_astra:mars') - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.IV]) - .circuit(2); - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t3') - .perTick(true) - .inputFluids('gtceu:residual_radioactive_concoction 1') - .inputFluids(Fluid.of('tfg:semiheavy_water', 1)) - .perTick(false) - .inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000)) - .inputFluids(Fluid.of('gtceu:radon', 10)) - .inputFluids(Fluid.of('gtceu:krypton', 10)) - .inputFluids(Fluid.of('gtceu:tritiated_water', 10)) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 10, 20) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10) - .itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 10, 10) - .itemOutputsRanged(Item.of('gtceu:dusty_raw_pitchblende'), 10, 20) - .input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500)) - .dimension('ad_astra:mars') - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.IV]) - .circuit(3); -*/ - //#endregion - -} \ No newline at end of file diff --git a/kubejs/server_scripts/gregtech/loot.js b/kubejs/server_scripts/tfg/ores_and_materials/loot.ores.js similarity index 99% rename from kubejs/server_scripts/gregtech/loot.js rename to kubejs/server_scripts/tfg/ores_and_materials/loot.ores.js index 70f787b9c..0d8f49c3d 100644 --- a/kubejs/server_scripts/gregtech/loot.js +++ b/kubejs/server_scripts/tfg/ores_and_materials/loot.ores.js @@ -34,7 +34,7 @@ const STONE_TYPES_TO_COBBLE = { permafrost: 'gtceu:ice_dust' } -const registerGTCEULoots = (event) => { +const registerTFGOreLoots = (event) => { // Have to define these here because normal loot table jsons don't support checking for hammers diff --git a/kubejs/server_scripts/gregtech/recipes.tfcmetals.js b/kubejs/server_scripts/tfg/ores_and_materials/recipes.alloys.js similarity index 63% rename from kubejs/server_scripts/gregtech/recipes.tfcmetals.js rename to kubejs/server_scripts/tfg/ores_and_materials/recipes.alloys.js index dc88c4a57..6700415b1 100644 --- a/kubejs/server_scripts/gregtech/recipes.tfcmetals.js +++ b/kubejs/server_scripts/tfg/ores_and_materials/recipes.alloys.js @@ -1,10 +1,10 @@ -// priority: 0 +๏ปฟ// priority: 0 "use strict"; /** * @param {Internal.RecipesEventJS} event */ -function registerGTCEuTFCMetalsRecipes(event) { +function registerTFGAlloyingRecipes(event) { // #region Colored steels @@ -93,7 +93,40 @@ function registerGTCEuTFCMetalsRecipes(event) { //#endregion - // red alloy, because crucible always makes 4+1=5 + // Rose Gold + Sterling Silver + const copper_types = [ + "#forge:ingots/copper", + "#forge:dusts/copper", + "#forge:ingots/annealed_copper", + "#forge:dusts/annealed_copper" + ]; + const gold_types = [ + "#forge:ingots/gold", + "#forge:dusts/gold" + ]; + const silver_types = [ + "#forge:ingots/silver", + "#forge:dusts/silver" + ]; + + copper_types.forEach(copper_types_array => { + gold_types.forEach(gold_types_array => { + event.recipes.gtceu.alloy_smelter(`rose_gold_from_${copper_types_array.replace(/:/g, "/").replace(/#/g, "")}_and_${gold_types_array.replace(/:/g, "/").replace(/#/g, "")}`) + .itemInputs(Ingredient.of(copper_types_array).withCount(1), Ingredient.of(gold_types_array).withCount(4)) + .itemOutputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.RoseGold, 5)) + .duration(20*10) + .EUt(GTValues.VA[GTValues.LV]) + }); + silver_types.forEach(silver_types_array => { + event.recipes.gtceu.alloy_smelter(`sterling_silver_from_${copper_types_array.replace(/:/g, "/").replace(/#/g, "")}_and_${silver_types_array.replace(/:/g, "/").replace(/#/g, "")}`) + .itemInputs(Ingredient.of(copper_types_array).withCount(1), Ingredient.of(silver_types_array).withCount(4)) + .itemOutputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.SterlingSilver, 5)) + .duration(20*10) + .EUt(GTValues.VA[GTValues.LV]) + }); + }); + + // Red alloy, because crucible always makes 4+1=5 event.recipes.gtceu.alloy_blast_smelter('red_alloy') .itemInputs('1x gtceu:copper_dust', '4x minecraft:redstone') @@ -140,4 +173,44 @@ function registerGTCEuTFCMetalsRecipes(event) { .itemOutputs('5x gtceu:red_alloy_ingot') .duration(50) .EUt(16) + + event.remove({ id: 'gtceu:mixer/sterling_silver' }) + generateMixerRecipe(event, ['#forge:dusts/copper', '4x #forge:dusts/silver'], [], '5x gtceu:sterling_silver_dust', + 1, [], 500, 7, 64, 'gtceu:mixer/sterling_silver') + + event.remove({ id: 'gtceu:mixer/rose_gold' }) + generateMixerRecipe(event, ['#forge:dusts/copper', '4x #forge:dusts/gold'], [], '5x gtceu:rose_gold_dust', + 3, [], 500, 7, 64, 'gtceu:mixer/rose_gold') + + // Glowstone + event.recipes.gtceu.mixer('gtceu:lv_glowstone') + .itemInputs('gtceu:gold_dust', 'minecraft:redstone', 'gtceu:sulfur_dust') + .itemOutputs('2x minecraft:glowstone_dust') + .circuit(8) + .duration(1200) + .EUt(30) + + event.recipes.gtceu.alloy_blast_smelter('abs:liquid_glowstone') + .itemInputs('#forge:dusts/gold', '#forge:dusts/redstone', '#forge:dusts/sulfur') + .outputFluids(Fluid.of('gtceu:glowstone', 288)) + .duration(20 * 60 / 1.3) + .EUt(GTValues.VA[GTValues.LV]) + .blastFurnaceTemp(1064) + .circuit(9) + + // New Alloys + + event.recipes.gtceu.mixer('tfg:ostrum_iodide') + .itemInputs('1x #forge:dusts/iodine', '2x #forge:dusts/ostrum') + .itemOutputs('3x #forge:dusts/ostrum_iodide') + .duration(20 * 12) + .circuit(1) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.mixer('tfg:tungsten_bismuth_oxide_composite') + .itemInputs('2x #forge:dusts/bismuth', 'gtceu:tungsten_dust') + .inputFluids(Fluid.of('gtceu:oxygen', 3000)) + .itemOutputs('3x tfg:tungsten_bismuth_oxide_composite_dust') + .duration(20 * 12) + .EUt(GTValues.VA[GTValues.EV]) } diff --git a/kubejs/server_scripts/tfg/ores_and_materials/recipes.bromine.js b/kubejs/server_scripts/tfg/ores_and_materials/recipes.bromine.js new file mode 100644 index 000000000..76f55f6ab --- /dev/null +++ b/kubejs/server_scripts/tfg/ores_and_materials/recipes.bromine.js @@ -0,0 +1,126 @@ +"use strict"; + +function registerTFGBromineRecipes(event) { + + /* + + event.recipes.gtceu.evaporation_tower('evaporation_brine') + .inputFluids(Fluid.of('tfc:salt_water', 20000)) + .outputFluids(Fluid.of('gtceu:raw_brine', 1000)) + .duration(20*50) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.evaporation_tower('evaporation_brine_mars') + .inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 20000)) + .outputFluids(Fluid.of('gtceu:raw_brine', 1000)) + .duration(20*50) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.fluid_heater('heat_brine') + .inputFluids(Fluid.of("gtceu:raw_brine", 1000)) + .outputFluids(Fluid.of("gtceu:hot_brine", 1000)) + .duration(20*600) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.heat_exchanger('heat_brine_nuclear') + .inputFluids(Fluid.of("gtceu:raw_brine", 1000)) + .inputFluids(Fluid.of("gtceu:irradiated_steam", 1000)) + .outputFluids(Fluid.of("gtceu:hot_brine", 1000)) + .outputFluids(Fluid.of("gtceu:dense_steam", 1000)) + .duration(20*100) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('debrominated_brine_raw_brine_mixing') + .inputFluids(Fluid.of("gtceu:raw_brine", 1000)) + .inputFluids(Fluid.of('gtceu:hot_debrominated_brine', 1000)) + .outputFluids(Fluid.of('gtceu:hot_brine', 2000)) + .outputFluids(Fluid.of('gtceu:debrominated_brine', 1000)) + .duration(20*10) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('brine_acidification') + .inputFluids(Fluid.of("gtceu:hot_brine", 2000)) + .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 1000)) + .outputFluids(Fluid.of('gtceu:hot_alkaline_debrominated_brine', 2000)) + .outputFluids(Fluid.of('gtceu:hydrogen_iodide', 1000)) + .duration(20*5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('aciditic_bromine_exhaust_heating') + .inputFluids(Fluid.of("gtceu:hot_brine", 1000)) + .inputFluids(Fluid.of('gtceu:acidic_bromine_exhaust', 1000)) + .outputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000)) + .outputFluids(Fluid.of('gtceu:steam', 3000)) + .duration(20*5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('brine_chloroination') + .inputFluids(Fluid.of("gtceu:hot_brine", 1000)) + .inputFluids(Fluid.of('gtceu:chlorine', 1000)) + .outputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000)) + .duration(20*5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('brine_neutralization') + .inputFluids(Fluid.of("gtceu:hot_alkaline_debrominated_brine", 3000)) + .itemInputs('gtceu:potassium_dust') + .outputFluids(Fluid.of('gtceu:hot_debrominated_brine', 2000)) + .itemOutputs(Item.of('2x gtceu:rock_salt_dust')) + .duration(20*5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.centrifuge('debrominated_brine_decomposition') + .inputFluids(Fluid.of('gtceu:debrominated_brine', 2000)) + .outputFluids(Fluid.of('tfc:salt_water'), 1000) + .duration(20*3) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.chemical_reactor('brine_filtration') + .inputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000)) + .inputFluids(Fluid.of('gtceu:chlorine', 1000)) + .inputFluids(Fluid.of('gtceu:steam', 1000)) + .outputFluids(Fluid.of('gtceu:hot_alkaline_debrominated_brine', 1000)) + .outputFluids(Fluid.of('gtceu:brominated_chlorine_vapor', 2000)) + .duration(20*15) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('brominated_chlorine_vapor_condensation') + .inputFluids(Fluid.of('gtceu:brominated_chlorine_vapor', 1000)) + .inputFluids(Fluid.of('minecraft:water', 1000)) + .outputFluids(Fluid.of('gtceu:acidic_bromine_solution', 1000)) + .outputFluids(Fluid.of('minecraft:water', 2000)) + .duration(20*15) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('bromine_vapor_concentration') + .inputFluids(Fluid.of('gtceu:acidic_bromine_solution', 1000)) + .inputFluids(Fluid.of('gtceu:steam', 1000)) + .outputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 1000)) + .outputFluids(Fluid.of('gtceu:acidic_bromine_exhaust', 1000)) + .duration(20*5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.distillery('bromine_distillation_to_chlorine') + .inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 100)) + .outputFluids(Fluid.of('gtceu:chlorine', 50)) + .duration(20*5) + .circuit(1) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.distillery('bromine_distillation_to_bromine') + .inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 40)) + .outputFluids(Fluid.of('gtceu:bromine', 40)) + .duration(20*2) + .circuit(2) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.distillation_tower('bromine_distillation') + .inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 1000)) + .outputFluids(Fluid.of('gtceu:chlorine', 500)) + .outputFluids(Fluid.of('gtceu:bromine', 1000)) + .duration(20*25) + .EUt(GTValues.VA[GTValues.HV]) + + */ + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/ores_and_materials/recipes.quartzes.js b/kubejs/server_scripts/tfg/ores_and_materials/recipes.quartzes.js new file mode 100644 index 000000000..aef120457 --- /dev/null +++ b/kubejs/server_scripts/tfg/ores_and_materials/recipes.quartzes.js @@ -0,0 +1,132 @@ +"use strict"; + +function registerTFGQuartzRecipes(event) { + + //#region Rose Quartz fabrication + decomposition + event.remove({ id: 'gtceu:autoclave/autoclave_dust_rose_quartz_water' }) + event.remove({ id: 'gtceu:autoclave/autoclave_dust_rose_quartz_distilled' }) + + generateMixerRecipe(event, ['gtceu:nether_quartz_dust', '8x minecraft:redstone'], [], '9x gtceu:rose_quartz_dust', 2, [], 180, 60, 64, 'rose_quartz_dust_mixing') + generateMixerRecipe(event, ['gtceu:tiny_nether_quartz_dust', '8x gtceu:tiny_redstone_dust'], [], 'gtceu:rose_quartz_dust', 2, [], 20, 60, 64, 'tiny_rose_quartz_dust_mixing') + + event.recipes.gtceu.autoclave("autoclave_dust_rose_quartz_ice") + .itemInputs('#forge:dusts/rose_quartz') + .inputFluids(Fluid.of("gtceu:ice", 144)) + .itemOutputs("#forge:gems/rose_quartz") + .duration(2000) + .EUt(120) + + event.recipes.gtceu.electrolyzer('electrolyze_rose_quartz_dust') + .itemInputs('9x gtceu:rose_quartz_dust') + .itemOutputs('1x gtceu:nether_quartz_dust', '8x minecraft:redstone') + .duration(7 * 20) + .EUt(60) + //#endregion + + //#region Glass + + event.recipes.gtceu.arc_furnace('glass_from_sand') + .itemInputs('#forge:sand') + .itemOutputs('2x minecraft:glass') + .duration(20) + .EUt(30) + + global.TFC_BATCH_TO_BOTTLE_ASSEMBLING_RECIPE_COMPONENTS.forEach(element => { + event.recipes.gtceu.alloy_smelter(`tfg:tfc/${element.name}`) + .itemInputs(element.input) + .notConsumable('gtceu:bottle_casting_mold') + .itemOutputs(element.output) + .duration(100) + .EUt(2) + .category(GTRecipeCategories.INGOT_MOLDING) + }) + + // Lamp Glass + event.recipes.gtceu.alloy_smelter(`tfg:tfc/lamp_glass`) + .itemInputs('#tfc:glass_batches') + .notConsumable('#tfg:unfinished_lamps') + .itemOutputs('tfc:lamp_glass') + .duration(100) + .EUt(2) + + event.recipes.gtceu.alloy_smelter(`tfg:tfc/lamp_glass_from_dust`) + .itemInputs('#forge:dusts/glass') + .notConsumable('#tfg:unfinished_lamps') + .itemOutputs('tfc:lamp_glass') + .duration(100) + .EUt(2) + + // Empty Jar + event.recipes.gtceu.alloy_smelter('tfc:jar_alloying') + .itemInputs('#tfc:glass_batches_tier_2') + .notConsumable('gtceu:ball_casting_mold') + .itemOutputs('tfc:empty_jar') + .duration(100) + .EUt(2) + .category(GTRecipeCategories.INGOT_MOLDING) + + event.recipes.gtceu.fluid_solidifier('tfc:jar_solidification') + .inputFluids(Fluid.of('gtceu:glass', 144)) + .notConsumable('gtceu:cylinder_casting_mold') + .itemOutputs('tfc:empty_jar') + .duration(100) + .EUt(2) + + event.recipes.gtceu.extractor('tfc:jar_extraction') + .itemInputs('#tfc:jars') + .outputFluids(Fluid.of('gtceu:glass', 144)) + .duration(50) + .EUt(2) + + event.recipes.gtceu.extractor('tfc:glass_batch_extraction') + .itemInputs('#tfc:glass_batches') + .outputFluids(Fluid.of('gtceu:glass', 144)) + .duration(50) + .EUt(2) + + event.recipes.gtceu.lathe('tfc:lens') + .itemInputs('#forge:glass') + .itemOutputs('tfc:lens') + .duration(100) + .EUt(16) + + // Add all glass colors to macerator/hammer + removeMaceratorRecipe(event, 'macerate_glass'); + event.recipes.gtceu.macerator("gtceu:macerator/macerate_glass") + .itemInputs( + "#forge:glass" + ) + .itemOutputs("gtceu:glass_dust") + .duration(20) + .EUt(2); + + removeMaceratorRecipe(event, 'macerate_glass_pane'); + event.recipes.gtceu.macerator("gtceu:macerator/macerate_glass_pane") + .itemInputs( + "#forge:glass_panes" + ) + .itemOutputs("3x gtceu:tiny_glass_dust") + .duration(6) + .EUt(2) + + event.replaceInput({ id: "gtceu:shaped/glass_dust_hammer" }, + "minecraft:glass", + "#forge:glass" + ); + + + event.recipes.gtceu.alloy_smelter('glass_bottle') + .itemInputs('#forge:dusts/glass') + .itemOutputs('tfc:silica_glass_bottle') + .notConsumable('gtceu:bottle_casting_mold') + .EUt(2) + .duration(20 * 5) + .category(GTRecipeCategories.INGOT_MOLDING) + + + // Glass Tube + event.recipes.tfc.glassworking('gtceu:glass_tube', '#tfc:glass_batches_tier_3', ['blow', 'stretch', 'stretch']) + .id('tfg:gtceu/glassworking/glass_tube') + + //#endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/ores_and_materials/recipes.tungsten.js b/kubejs/server_scripts/tfg/ores_and_materials/recipes.tungsten.js new file mode 100644 index 000000000..10511c843 --- /dev/null +++ b/kubejs/server_scripts/tfg/ores_and_materials/recipes.tungsten.js @@ -0,0 +1,86 @@ +"use strict"; + +function registerTFGTungstenRecipes(event) { + + event.remove({ id: 'gtceu:chemical_bath/tungstic_acid_from_scheelite' }) + event.remove({ id: 'gtceu:chemical_bath/tungstic_acid_from_tungstate' }) + event.remove({ id: 'gtceu:electrolyzer/tungstic_acid_electrolysis' }) + + // Transform Tungstate and Scheelite + + event.recipes.gtceu.large_chemical_reactor('tfg:scheelite_to_sodium_tungstate') + .itemInputs(Item.of('gtceu:scheelite_dust', 6)) + .itemInputs(Item.of('gtceu:soda_ash_dust', 6)) + .itemOutputs(Item.of('tfg:sodium_tungstate_dust', 7)) + .itemOutputs(Item.of('gtceu:calcite_dust', 5)) + .duration(20*12) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.large_chemical_reactor('tfg:tungstate_to_sodium_tungstate') + .itemInputs(Item.of('gtceu:tungstate_dust', 7)) + .itemInputs(Item.of('gtceu:soda_ash_dust', 6)) + .itemOutputs(Item.of('tfg:sodium_tungstate_dust', 7)) + .itemOutputs(Item.of('gtceu:lithium_dust', 2)) + .itemOutputs(Item.of('gtceu:carbon_dust', 1)) + .outputFluids(Fluid.of('gtceu:oxygen', 3000)) + .duration(20*12) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_bath('tfg:tungstate_to_tungsten_acid') + .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 2000)) + .itemInputs(Item.of('tfg:sodium_tungstate_dust', 7)) + .itemOutputs(Item.of('gtceu:salt_dust', 4)) + .itemOutputs(Item.of('gtceu:tungstic_acid_dust', 7)) + .duration(20*24) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_bath('tfg:tungsten_acid_to_ammonium_tungstate') + .inputFluids(Fluid.of('gtceu:ammonia', 10000)) + .itemInputs(Item.of('gtceu:tungstic_acid_dust', 7)) + .itemOutputs(Item.of('tfg:ammonium_tungstate_dust', 1)) + .duration(20*16) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.evaporation_tower('tfg:ammonium_tungstate_to_apt_h') + .itemInputs(Item.of('tfg:ammonium_tungstate_dust', 1)) + .itemOutputs(Item.of('tfg:apt_gem', 1)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .duration(20*48) + .EUt(GTValues.VHA[GTValues.HV]) + + event.recipes.gtceu.distillery('tfg:ammonium_tungstate_to_apt') + .itemInputs(Item.of('tfg:ammonium_tungstate_dust', 1)) + .itemOutputs(Item.of('tfg:apt_gem', 1)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .duration(20*48) + .EUt(GTValues.VHA[GTValues.HV]) + + event.recipes.gtceu.pyrolyse_oven('tfg:apt') + .itemInputs(Item.of('tfg:apt_gem', 1)) + .itemOutputs(Item.of('tfg:tungsten_oxide_dust', 1)) + .outputFluids(Fluid.of('gtceu:ammonia', 10000)) + .duration(20*36) + .EUt(GTValues.VA[GTValues.EV]) + .circuit(1) + + event.recipes.gtceu.pyrolyse_oven('tfg:apt_nitrogen') + .itemInputs(Item.of('tfg:apt_gem', 1)) + .inputFluids(Fluid.of('gtceu:nitrogen', 1000)) + .itemOutputs(Item.of('tfg:tungsten_oxide_dust', 1)) + .outputFluids(Fluid.of('gtceu:ammonia', 10000)) + .duration(20*18) + .EUt(GTValues.VA[GTValues.EV]) + .circuit(2) + + event.recipes.gtceu.arc_furnace('tfg:tungsten_apt') + .itemInputs(Item.of('tfg:tungsten_oxide_dust', 1)) + .inputFluids(Fluid.of('gtceu:hydrogen', 3000)) + .itemOutputs(Item.of('gtceu:tungsten_dust', 1)) + .duration(20*2.8) + .EUt(GTValues.VA[GTValues.EV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/ores_and_materials/recipes.zirconium.js b/kubejs/server_scripts/tfg/ores_and_materials/recipes.zirconium.js new file mode 100644 index 000000000..e1b8dc933 --- /dev/null +++ b/kubejs/server_scripts/tfg/ores_and_materials/recipes.zirconium.js @@ -0,0 +1,61 @@ +// priority: 0 + +function registerTFGZirconiumRecipes(event) { + + // #region Zirconium + + event.recipes.gtceu.chemical_reactor('tfg:silicon_tetrachloride') + .itemInputs('#forge:dusts/silicon') + .inputFluids('gtceu:chlorine 4000') + .outputFluids('tfg:silicon_tetrachloride 1000') + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.chemical_reactor('tfg:silicon_tetrachloride_decomp') + .inputFluids('tfg:silicon_tetrachloride 1000', 'minecraft:water 2000') + .itemOutputs('#forge:dusts/silicon') + .outputFluids('gtceu:hydrochloric_acid 4000', 'gtceu:oxygen 2000') + .duration(5 * 20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.chemical_reactor('tfg:zirconium_tetrachloride') + .itemInputs('4x #forge:dusts/carbon', '6x #forge:dusts/zircon') + .inputFluids('gtceu:chlorine 8000') + .outputFluids('gtceu:carbon_monoxide 4000', 'tfg:silicon_tetrachloride 1000') + .itemOutputs('5x #forge:dusts/zirconium_tetrachloride') + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.electric_blast_furnace('tfg:zirconium') + .itemInputs('2x #forge:dusts/magnesium', '5x #forge:dusts/zirconium_tetrachloride') + .itemOutputs('#forge:hot_ingots/zirconium', '6x #forge:dusts/magnesium_chloride') + .duration(55 * 20) + .blastFurnaceTemp(4241) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_reactor('tfg:zirconium_bromide') + .itemInputs('#forge:dusts/zirconium', '2x #forge:dusts/carbon') + .inputFluids('gtceu:bromine 4000', 'gtceu:oxygen 2000') + .itemOutputs('5x #forge:dusts/zirconium_bromide') + .outputFluids('gtceu:carbon_monoxide 2000') + .duration(10 * 20) + .EUt(GTValues.VA[GTValues.IV]) + + event.recipes.gtceu.chemical_reactor('tfg:zirconium_diboride') + .itemInputs('10x #forge:dusts/zirconium_bromide', '5x #forge:dusts/boron_carbide') + .notConsumable('#forge:dusts/carbon') + .itemOutputs('6x #forge:dusts/zirconium_diboride', '#forge:dusts/carbon') + .outputFluids('gtceu:bromine 8000') + .duration(10 * 20) + .EUt(GTValues.VA[GTValues.IV]) + + event.recipes.gtceu.chemical_reactor('tfg:boron_carbide') + .itemInputs('4x #forge:dusts/boron', '7x #forge:dusts/carbon') + .inputFluids('gtceu:oxygen 6000') + .itemOutputs('5x #forge:dusts/boron_carbide') + .outputFluids('gtceu:carbon_monoxide 6000') + .duration(10 * 20) + .EUt(GTValues.VA[GTValues.HV]) + + // #endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/nuclear/recipes.components.js b/kubejs/server_scripts/tfg/powergen/nuclear/recipes.components.js similarity index 100% rename from kubejs/server_scripts/tfg/nuclear/recipes.components.js rename to kubejs/server_scripts/tfg/powergen/nuclear/recipes.components.js diff --git a/kubejs/server_scripts/tfg/nuclear/recipes.nuclear.js b/kubejs/server_scripts/tfg/powergen/nuclear/recipes.nuclear.js similarity index 77% rename from kubejs/server_scripts/tfg/nuclear/recipes.nuclear.js rename to kubejs/server_scripts/tfg/powergen/nuclear/recipes.nuclear.js index 29df43882..a6257a9c3 100644 --- a/kubejs/server_scripts/tfg/nuclear/recipes.nuclear.js +++ b/kubejs/server_scripts/tfg/powergen/nuclear/recipes.nuclear.js @@ -85,28 +85,6 @@ function registerTFGNuclearRecipes(event) { //#endregion - //#region Mars Water - - event.recipes.gtceu.centrifuge('mars_heavy_water') - .inputFluids(Fluid.of('tfg:heavy_ammoniacal_water', 1000)) - .outputFluids(Fluid.of('tfg:heavy_water', 500)) - .itemOutputs('#forge:dusts/ammonium_chloride', '2x #forge:small_dusts/ammonium_chloride') - .duration(20*9) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.centrifuge('mars_semiheavy_water') - .inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 1000)) - .outputFluids(Fluid.of('tfg:semiheavy_water', 500)) - .itemOutputs('2x #forge:tiny_dusts/ammonium_chloride') - .duration(20*9) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.distillery('mars_semiheavy_water') - .inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 1000)) - .outputFluids(Fluid.of('minecraft:water', 250)) - .duration(20*5) - .EUt(GTValues.VA[GTValues.MV]) - // Martian Sludge event.recipes.gtceu.chemical_bath('dirty_hexafluorosilicic_acid') @@ -590,129 +568,6 @@ function registerTFGNuclearRecipes(event) { //#endregion - //#region Bromine Line - SCRAP FROM MARS TO VENUS - - /* - - event.recipes.gtceu.evaporation_tower('evaporation_brine') - .inputFluids(Fluid.of('tfc:salt_water', 20000)) - .outputFluids(Fluid.of('gtceu:raw_brine', 1000)) - .duration(20*50) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.evaporation_tower('evaporation_brine_mars') - .inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 20000)) - .outputFluids(Fluid.of('gtceu:raw_brine', 1000)) - .duration(20*50) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.fluid_heater('heat_brine') - .inputFluids(Fluid.of("gtceu:raw_brine", 1000)) - .outputFluids(Fluid.of("gtceu:hot_brine", 1000)) - .duration(20*600) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.heat_exchanger('heat_brine_nuclear') - .inputFluids(Fluid.of("gtceu:raw_brine", 1000)) - .inputFluids(Fluid.of("gtceu:irradiated_steam", 1000)) - .outputFluids(Fluid.of("gtceu:hot_brine", 1000)) - .outputFluids(Fluid.of("gtceu:dense_steam", 1000)) - .duration(20*100) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('debrominated_brine_raw_brine_mixing') - .inputFluids(Fluid.of("gtceu:raw_brine", 1000)) - .inputFluids(Fluid.of('gtceu:hot_debrominated_brine', 1000)) - .outputFluids(Fluid.of('gtceu:hot_brine', 2000)) - .outputFluids(Fluid.of('gtceu:debrominated_brine', 1000)) - .duration(20*10) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('brine_acidification') - .inputFluids(Fluid.of("gtceu:hot_brine", 2000)) - .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 1000)) - .outputFluids(Fluid.of('gtceu:hot_alkaline_debrominated_brine', 2000)) - .outputFluids(Fluid.of('gtceu:hydrogen_iodide', 1000)) - .duration(20*5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('aciditic_bromine_exhaust_heating') - .inputFluids(Fluid.of("gtceu:hot_brine", 1000)) - .inputFluids(Fluid.of('gtceu:acidic_bromine_exhaust', 1000)) - .outputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000)) - .outputFluids(Fluid.of('gtceu:steam', 3000)) - .duration(20*5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('brine_chloroination') - .inputFluids(Fluid.of("gtceu:hot_brine", 1000)) - .inputFluids(Fluid.of('gtceu:chlorine', 1000)) - .outputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000)) - .duration(20*5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('brine_neutralization') - .inputFluids(Fluid.of("gtceu:hot_alkaline_debrominated_brine", 3000)) - .itemInputs('gtceu:potassium_dust') - .outputFluids(Fluid.of('gtceu:hot_debrominated_brine', 2000)) - .itemOutputs(Item.of('2x gtceu:rock_salt_dust')) - .duration(20*5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.centrifuge('debrominated_brine_decomposition') - .inputFluids(Fluid.of('gtceu:debrominated_brine', 2000)) - .outputFluids(Fluid.of('tfc:salt_water'), 1000) - .duration(20*3) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.chemical_reactor('brine_filtration') - .inputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000)) - .inputFluids(Fluid.of('gtceu:chlorine', 1000)) - .inputFluids(Fluid.of('gtceu:steam', 1000)) - .outputFluids(Fluid.of('gtceu:hot_alkaline_debrominated_brine', 1000)) - .outputFluids(Fluid.of('gtceu:brominated_chlorine_vapor', 2000)) - .duration(20*15) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('brominated_chlorine_vapor_condensation') - .inputFluids(Fluid.of('gtceu:brominated_chlorine_vapor', 1000)) - .inputFluids(Fluid.of('minecraft:water', 1000)) - .outputFluids(Fluid.of('gtceu:acidic_bromine_solution', 1000)) - .outputFluids(Fluid.of('minecraft:water', 2000)) - .duration(20*15) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('bromine_vapor_concentration') - .inputFluids(Fluid.of('gtceu:acidic_bromine_solution', 1000)) - .inputFluids(Fluid.of('gtceu:steam', 1000)) - .outputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 1000)) - .outputFluids(Fluid.of('gtceu:acidic_bromine_exhaust', 1000)) - .duration(20*5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.distillery('bromine_distillation_to_chlorine') - .inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 100)) - .outputFluids(Fluid.of('gtceu:chlorine', 50)) - .duration(20*5) - .circuit(1) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.distillery('bromine_distillation_to_bromine') - .inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 40)) - .outputFluids(Fluid.of('gtceu:bromine', 40)) - .duration(20*2) - .circuit(2) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.distillation_tower('bromine_distillation') - .inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 1000)) - .outputFluids(Fluid.of('gtceu:chlorine', 500)) - .outputFluids(Fluid.of('gtceu:bromine', 1000)) - .duration(20*25) - .EUt(GTValues.VA[GTValues.HV]) - - */ - } diff --git a/kubejs/server_scripts/tfg/nuclear/tags.nuclear.js b/kubejs/server_scripts/tfg/powergen/nuclear/tags.nuclear.js similarity index 100% rename from kubejs/server_scripts/tfg/nuclear/tags.nuclear.js rename to kubejs/server_scripts/tfg/powergen/nuclear/tags.nuclear.js diff --git a/kubejs/server_scripts/tfg/powergen/recipes.biodiesel.js b/kubejs/server_scripts/tfg/powergen/recipes.biodiesel.js new file mode 100644 index 000000000..f9eab5cf2 --- /dev/null +++ b/kubejs/server_scripts/tfg/powergen/recipes.biodiesel.js @@ -0,0 +1,124 @@ +"use strict"; + +function registerTFGBiodieselRecipes(event) { + + // Biofuels + + event.recipes.gtceu.chemical_reactor(`seed_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:seed_oil', 6000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + // So you can craft Biodiesel without Chemical Reactor + event.recipes.gtceu.mixer(`tfg:seed_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:seed_oil', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor(`olive_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('tfc:olive_oil', 4000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + // So you can craft Biodiesel without Chemical Reactor + event.recipes.gtceu.mixer(`tfg:olive_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('tfc:olive_oil', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor(`soybean_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('firmalife:soybean_oil', 4000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + // So you can craft Biodiesel without Chemical Reactor + event.recipes.gtceu.mixer(`tfg:soybean_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('firmalife:soybean_oil', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor(`fish_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:fish_oil', 6000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor(`tallow_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('tfc:tallow', 6000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + + // So you can craft Biodiesel without Chemical Reactor + event.recipes.gtceu.mixer(`tfg:fish_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:fish_oil', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + + event.recipes.gtceu.mixer(`tfg:tallow_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('tfc:tallow', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor(`olive_oil_ethanol_biodiesel`) + .inputFluids(Fluid.of('tfc:olive_oil', 4000), Fluid.of('gtceu:ethanol', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.LV]) + + event.recipes.gtceu.chemical_reactor(`olive_oil_methanol_biodiesel`) + .inputFluids(Fluid.of('tfc:olive_oil', 4000), Fluid.of('gtceu:methanol', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.LV]) + + event.recipes.gtceu.chemical_reactor(`soybean_oil_ethanol_biodiesel`) + .inputFluids(Fluid.of('firmalife:soybean_oil', 4000), Fluid.of('gtceu:ethanol', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.LV]) + + event.recipes.gtceu.chemical_reactor(`soybean_oil_methanol_biodiesel`) + .inputFluids(Fluid.of('firmalife:soybean_oil', 4000), Fluid.of('gtceu:methanol', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.LV]) + + event.recipes.gtceu.chemical_reactor(`tallow_methanol_biodiesel`) + .inputFluids(Fluid.of('tfc:tallow', 6000), Fluid.of('gtceu:methanol', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.LV]) + + event.recipes.gtceu.chemical_reactor(`tallow_ethanol_biodiesel`) + .inputFluids(Fluid.of('tfc:tallow', 6000), Fluid.of('gtceu:ethanol', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.LV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/powergen/recipes.boiler.js b/kubejs/server_scripts/tfg/powergen/recipes.boiler.js new file mode 100644 index 000000000..1633a1a34 --- /dev/null +++ b/kubejs/server_scripts/tfg/powergen/recipes.boiler.js @@ -0,0 +1,111 @@ +"use strict"; + +function registerTFGBoilerRecipes(event) { + + // The 9x buff for large boiler recipes above does not apply to this for some reason, so it gets 3x duration for an effective 1/3 reduction instead + + event.forEachRecipe({ id: /gtceu:large_boiler\/(minecraft_ladder|gtceu_wood_frame)/ }, recipe => { + var newDuration = recipe.get("duration") + recipe.set("duration", newDuration*3) + }) + + event.forEachRecipe({ id: /gtceu:steam_boiler\/(minecraft_ladder|gtceu_wood_frame)/ }, recipe => { + var newDuration = recipe.get("duration") + recipe.set("duration", newDuration/3) + }) + + // Allow oil in small boilers + + event.remove({ id: "gtceu:large_boiler/gtceu_oil" }) + event.remove({ id: "gtceu:large_boiler/gtceu_oil_heavy" }) + event.remove({ id: "gtceu:large_boiler/gtceu_fish_oil" }) + // This generates both a small boiler and large boiler recipe. Remove it above to avoid a duplicate + event.recipes.gtceu.steam_boiler('tfg:oil') + .inputFluids(Fluid.of('gtceu:oil', 200)) + .duration(200) + .dimension('minecraft:overworld') + + event.recipes.gtceu.steam_boiler('tfg:heavy_oil') + .inputFluids(Fluid.of('gtceu:oil_heavy', 32)) + .duration(200) + .dimension('minecraft:overworld') + + event.recipes.gtceu.steam_boiler('tfg:fish_oil') + .inputFluids(Fluid.of('gtceu:fish_oil', 160)) + .duration(200) + .dimension('minecraft:overworld') + + // These aren't in base GT, but they have the same stats as oil + event.recipes.gtceu.steam_boiler('tfg:raw_oil') + .inputFluids(Fluid.of('gtceu:oil_medium', 200)) + .duration(200) + .dimension('minecraft:overworld') + + event.recipes.gtceu.steam_boiler('tfg:light_oil') + .inputFluids(Fluid.of('gtceu:oil_light', 200)) + .duration(200) + .dimension('minecraft:overworld') + + // Same stats as fish oil + event.recipes.gtceu.steam_boiler('tfg:olive_oil') + .inputFluids(Fluid.of('tfc:olive_oil', 160)) + .duration(200) + .dimension('minecraft:overworld') + + event.recipes.gtceu.steam_boiler('tfg:seed_oil') + .inputFluids(Fluid.of('gtceu:seed_oil', 160)) + .duration(200) + .dimension('minecraft:overworld') + + event.recipes.gtceu.steam_boiler('tfg:soybean_oil') + .inputFluids(Fluid.of('firmalife:soybean_oil', 160)) + .duration(200) + .dimension('minecraft:overworld') + + event.recipes.gtceu.steam_boiler('tfg:tallow') + .inputFluids(Fluid.of('tfc:tallow', 160)) + .duration(200) + .dimension('minecraft:overworld') + + // fish oil extraction + event.recipes.gtceu.extractor(`tfg:fish_oil`) + .itemInputs('#minecraft:fishes') + .outputFluids(Fluid.of('gtceu:fish_oil', 400)) + .duration(40) + .EUt(4) + + event.recipes.gtceu.extractor(`tfg:tallow`) + .itemInputs('tfc:blubber') + .outputFluids(Fluid.of('tfc:tallow', 400)) + .duration(40) + .EUt(4) + + // Seed oil + event.recipes.gtceu.extractor(`tfg:seed_oil`) + .itemInputs('#tfc:seeds') + .outputFluids(Fluid.of('gtceu:seed_oil', 50)) + .duration(32) + .EUt(2) + + event.recipes.gtceu.extractor(`rapeseed_oil`) + .itemInputs('tfg:rapeseed_product') + .outputFluids(Fluid.of('gtceu:seed_oil', 600)) + .duration(20 * 5) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.extractor(`sunflower_oil`) + .itemInputs('tfg:sunflower_product') + .outputFluids(Fluid.of('gtceu:seed_oil', 350)) + .duration(20 * 5) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.tfc.barrel_sealed(1000) + .inputs('tfg:rapeseed_product', Fluid.of('minecraft:water', 100)) + .outputFluid(Fluid.of('gtceu:seed_oil', 250)) + .id('tfg:barrel/rapeseed_to_oil') + + event.recipes.tfc.barrel_sealed(1000) + .inputs('tfg:sunflower_product', Fluid.of('minecraft:water', 100)) + .outputFluid(Fluid.of('gtceu:seed_oil', 120)) + .id('tfg:barrel/sunflower_to_oil') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/powergen/recipes.coal.js b/kubejs/server_scripts/tfg/powergen/recipes.coal.js new file mode 100644 index 000000000..6220f542f --- /dev/null +++ b/kubejs/server_scripts/tfg/powergen/recipes.coal.js @@ -0,0 +1,96 @@ +"use strict"; + +function registerTFGCoalRecipes(event) { + + event.recipes.gtceu.coke_oven("tfg:poor_coal_to_coke") + .itemInputs('2x gtceu:poor_raw_coal') + .itemOutputs('1x gtceu:coke_gem') + .outputFluids(Fluid.of('gtceu:creosote', 500)) + .duration(900) + + event.recipes.gtceu.coke_oven("tfg:coal_to_coke") + .itemInputs('gtceu:raw_coal') + .itemOutputs('2x gtceu:coke_gem') + .outputFluids(Fluid.of('gtceu:creosote', 1000)) + .duration(900) + + event.recipes.gtceu.coke_oven("tfg:rich_coal_to_coke") + .itemInputs('gtceu:rich_raw_coal') + .itemOutputs('4x gtceu:coke_gem') + .outputFluids(Fluid.of('gtceu:creosote', 2000)) + .duration(900) + + event.recipes.gtceu.pyrolyse_oven("tfg:rich_coal_to_tar") + .itemInputs('3x gtceu:rich_raw_coal') + .chancedOutput('gtceu:dark_ash_dust', 5000, 0) + .outputFluids(Fluid.of('gtceu:coal_tar', 3000)) + .duration(288) + .EUt(96) + .circuit(8) + + event.recipes.gtceu.pyrolyse_oven("tfg:rich_coal_to_coke_creosote") + .itemInputs('4x gtceu:rich_raw_coal') + .itemOutputs('16x gtceu:coke_gem') + .outputFluids(Fluid.of('gtceu:creosote', 8000)) + .duration(576) + .EUt(64) + .circuit(1) + + event.recipes.gtceu.pyrolyse_oven("tfg:coal_to_coal_gas") + .itemInputs('4x gtceu:rich_raw_coal') + .itemOutputs('16x gtceu:coke_gem') + .inputFluids(Fluid.of('gtceu:steam')) + .outputFluids(Fluid.of('gtceu:coal_gas', 4000)) + .duration(288) + .EUt(96) + .circuit(22) + + event.recipes.gtceu.pyrolyse_oven("tfg:coal_to_coke_creosote_nitrogen") + .itemInputs('4x gtceu:rich_raw_coal') + .itemOutputs('16x gtceu:coke_gem') + .inputFluids(Fluid.of('gtceu:nitrogen')) + .outputFluids(Fluid.of('gtceu:creosote', 8000)) + .duration(288) + .EUt(96) + .circuit(2) + + event.recipes.gtceu.coke_oven("tfg:raw_coal_to_coke") + .itemInputs('gtceu:raw_coal') + .itemOutputs('2x gtceu:coke_gem') + .outputFluids(Fluid.of('gtceu:creosote', 2000)) + .duration(1710) + + event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_tar") + .itemInputs('6x gtceu:raw_coal') + .chancedOutput('gtceu:dark_ash_dust', 5000, 0) + .outputFluids(Fluid.of('gtceu:coal_tar', 3000)) + .duration(288) + .EUt(96) + .circuit(8) + + event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coke_creosote") + .itemInputs('8x gtceu:raw_coal') + .itemOutputs('16x gtceu:coke_gem') + .outputFluids(Fluid.of('gtceu:creosote', 8000)) + .duration(576) + .EUt(64) + .circuit(1) + + event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coal_gas") + .itemInputs('8x gtceu:raw_coal') + .itemOutputs('16x gtceu:coke_gem') + .inputFluids(Fluid.of('gtceu:steam')) + .outputFluids(Fluid.of('gtceu:coal_gas', 4000)) + .duration(288) + .EUt(96) + .circuit(22) + + event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coke_creosote_nitrogen") + .itemInputs('8x gtceu:raw_coal') + .itemOutputs('16x gtceu:coke_gem') + .inputFluids(Fluid.of('gtceu:nitrogen')) + .outputFluids(Fluid.of('gtceu:creosote', 8000)) + .duration(288) + .EUt(96) + .circuit(2) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/early_power.js b/kubejs/server_scripts/tfg/powergen/recipes.early_gas.js similarity index 77% rename from kubejs/server_scripts/tfg/early_power.js rename to kubejs/server_scripts/tfg/powergen/recipes.early_gas.js index 07181dec9..c4bbf5de1 100644 --- a/kubejs/server_scripts/tfg/early_power.js +++ b/kubejs/server_scripts/tfg/powergen/recipes.early_gas.js @@ -1,6 +1,6 @@ // priority: 0 -function registerTFGEarlyPower(event) { +function registerTFGEarlyGasRecipes(event) { const $ChanceLogic = Java.loadClass('com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic') @@ -204,72 +204,8 @@ function registerTFGEarlyPower(event) { //#endregion - //#region Rebalance Fuel - // Change - // The 9x buff for large boiler recipes above does not apply to this for some reason, so it gets 3x duration for an effective 1/3 reduction instead - - event.forEachRecipe({ id: /gtceu:large_boiler\/(minecraft_ladder|gtceu_wood_frame)/ }, recipe => { - var newDuration = recipe.get("duration") - recipe.set("duration", newDuration*3) - }) - - event.forEachRecipe({ id: /gtceu:steam_boiler\/(minecraft_ladder|gtceu_wood_frame)/ }, recipe => { - var newDuration = recipe.get("duration") - recipe.set("duration", newDuration/3) - }) - - // Allow oil in small boilers - - event.remove({ id: "gtceu:large_boiler/gtceu_oil" }) - event.remove({ id: "gtceu:large_boiler/gtceu_oil_heavy" }) - event.remove({ id: "gtceu:large_boiler/gtceu_fish_oil" }) - // This generates both a small boiler and large boiler recipe. Remove it above to avoid a duplicate - event.recipes.gtceu.steam_boiler('tfg:oil') - .inputFluids(Fluid.of('gtceu:oil', 200)) - .duration(200) - .dimension('minecraft:overworld') - - event.recipes.gtceu.steam_boiler('tfg:heavy_oil') - .inputFluids(Fluid.of('gtceu:oil_heavy', 32)) - .duration(200) - .dimension('minecraft:overworld') - - event.recipes.gtceu.steam_boiler('tfg:fish_oil') - .inputFluids(Fluid.of('gtceu:fish_oil', 160)) - .duration(200) - .dimension('minecraft:overworld') - - // These aren't in base GT, but they have the same stats as oil - event.recipes.gtceu.steam_boiler('tfg:raw_oil') - .inputFluids(Fluid.of('gtceu:oil_medium', 200)) - .duration(200) - .dimension('minecraft:overworld') - - event.recipes.gtceu.steam_boiler('tfg:light_oil') - .inputFluids(Fluid.of('gtceu:oil_light', 200)) - .duration(200) - .dimension('minecraft:overworld') - - // Same stats as fish oil - event.recipes.gtceu.steam_boiler('tfg:olive_oil') - .inputFluids(Fluid.of('tfc:olive_oil', 160)) - .duration(200) - .dimension('minecraft:overworld') - - event.recipes.gtceu.steam_boiler('tfg:seed_oil') - .inputFluids(Fluid.of('gtceu:seed_oil', 160)) - .duration(200) - .dimension('minecraft:overworld') - - event.recipes.gtceu.steam_boiler('tfg:soybean_oil') - .inputFluids(Fluid.of('firmalife:soybean_oil', 160)) - .duration(200) - .dimension('minecraft:overworld') - - //#region New Power Generation - // Add Syngas event.recipes.gtceu.steam_boiler('tfg:syngas') // Small Boiler and Large Boiler divided by 4 diff --git a/kubejs/server_scripts/tfg/powergen/recipes.solar.js b/kubejs/server_scripts/tfg/powergen/recipes.solar.js new file mode 100644 index 000000000..e74ec4cb7 --- /dev/null +++ b/kubejs/server_scripts/tfg/powergen/recipes.solar.js @@ -0,0 +1,184 @@ +"use strict"; + +function registerTFGSolarRecipes(event) { + + //#region Large Solar Panel + + event.shaped( + 'gtceu:large_solar_panel', + ['WSW', 'TZT', 'WUW'], + { + S: 'tfg:photo_cell_t1', + Z: 'ad_astra:solar_panel', + W: '#gtceu:circuits/ev', + U: '#forge:gears/rocket_alloy_t1', + T: '#forge:gears/desh' + } + ).id('gtceu:shaped/large_solar_panel') + + event.shaped( + 'gtceu:large_solar_panel_tier2', + ['WSW', 'TZT', 'WUW'], + { + S: 'ad_astra:photovoltaic_etrium_cell', + Z: 'gtceu:large_solar_panel', + W: '#gtceu:circuits/iv', + U: '#forge:gears/rocket_alloy_t1', + T: '#forge:gears/desh' + } + ).id('gtceu:shaped/large_solar_panel_tier2') + + event.shaped( + 'gtceu:large_solar_panel_tier3', + ['WSW', 'TZT', 'WUW'], + { + S: 'ad_astra:photovoltaic_vesnium_cell', + Z: 'gtceu:large_solar_panel_tier2', + W: '#gtceu:circuits/luv', + U: '#forge:gears/rocket_alloy_t1', + T: '#forge:gears/desh' + } + ).id('gtceu:shaped/large_solar_panel_tier3') + + event.recipes.gtceu.chemical_reactor('advanced_photovoltaic_cell') + .itemInputs('8x tfg:photo_cell_t1', + '6x #forge:dusts/vanadium_gallium', + '#forge:insulation_t2/sheet') + .inputFluids(Fluid.of('gtceu:helium_3', 1000)) + .itemOutputs('8x ad_astra:photovoltaic_etrium_cell') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_reactor('expert_photovoltaic_cell') + .itemInputs('8x ad_astra:photovoltaic_etrium_cell', + '6x gtceu:energium_dust', + '#forge:insulation_t3/sheet') + .inputFluids(Fluid.of('tfg:cryogenized_fluix', 1000)) + .itemOutputs('8x ad_astra:photovoltaic_vesnium_cell') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.IV]) + + //#region Chemical Reaction for Solar Panel + + event.recipes.gtceu.chemical_reactor('tfg:chlorine_pentafluoride') + .inputFluids(Fluid.of('gtceu:fluorine', 5000), Fluid.of('gtceu:chlorine', 1000)) + .outputFluids(Fluid.of('tfg:chlorine_pentafluoride', 1000)) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('tfg:chloryl_fluoride') + .inputFluids(Fluid.of('tfg:chlorine_pentafluoride', 1000), Fluid.of('minecraft:water', 2000)) + .outputFluids(Fluid.of('tfg:chloryl_fluoride', 1000), Fluid.of('gtceu:hydrofluoric_acid', 4000)) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.large_chemical_reactor('tfg:solar_coolant') + .inputFluids(Fluid.of('tfg:chloryl_fluoride', 3000), Fluid.of('gtceu:helium_3', 8000), Fluid.of('minecraft:water', 8000)) + .outputFluids(Fluid.of('tfg:solar_coolant', 1000), Fluid.of('gtceu:hydrofluoric_acid', 3000), Fluid.of('gtceu:hypochlorous_acid', 3000)) + .duration(20 * 5) + .EUt(GTValues.VH[GTValues.EV]) + + event.recipes.gtceu.large_chemical_reactor('tfg:solar_coolant_t2') + .inputFluids(Fluid.of('tfg:solar_coolant', 8000), Fluid.of('gtceu:argon', 1000)) + .itemInputs(Item.of('#forge:aerogels')) + .outputFluids(Fluid.of('tfg:solar_coolant_tier2', 8000)) + .duration(20 * 15) + .EUt(GTValues.VH[GTValues.IV]) + + //#endregion + + // LSP Generating recipes + + // Solar T1 + + event.recipes.gtceu.large_solar_panel('solar_panel_t1_emergency') + .chancedInput('tfg:photo_cell_t1', 100, 0) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-((GTValues.V[GTValues.HV])), 2) + .circuit(1) + + event.recipes.gtceu.large_solar_panel('solar_panel_t1') + .notConsumable('tfg:photo_cell_t1') + .perTick(true) + .chancedFluidInput('tfg:compressed_trimix_3 4', 5000, 0) + .perTick(false) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.EV]), 2) + .circuit(2) + + // Solar T2 + + event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_emergency') + .chancedInput('ad_astra:photovoltaic_etrium_cell', 100, 0) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.EV]), 2) + .circuit(1) + + event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_strong') + .notConsumable('ad_astra:photovoltaic_etrium_cell') + .perTick(true) + .chancedFluidInput('tfg:solar_coolant 10', 5000, 0) + .inputFluids('tfg:cryogenized_fluix 4') + .outputFluids('tfg:fluix 1') + .perTick(false) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.IV]), 2) + .circuit(2) + + event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_cheap') + .notConsumable('ad_astra:photovoltaic_etrium_cell') + .perTick(true) + .inputFluids('tfg:compressed_trimix_3 1') + .perTick(false) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.EV]), 2) + .circuit(3) + + // Solar T3 + + event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_emergency') + .chancedInput('ad_astra:photovoltaic_vesnium_cell', 100, 0) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.IV]), 2) + .circuit(1) + + event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_strong') + .notConsumable('ad_astra:photovoltaic_vesnium_cell') + .perTick(true) + .chancedFluidInput('tfg:solar_coolant_tier2 10', 5000, 0) + .inputFluids('tfg:cryogenized_fluix 4') + .outputFluids('tfg:fluix 1') + .perTick(false) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.LuV]), 2) + .circuit(2) + + event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_cheap') + .notConsumable('ad_astra:photovoltaic_vesnium_cell') + .perTick(true) + .chancedFluidInput('tfg:solar_coolant 10', 5000, 0) + .inputFluids('tfg:cryogenized_fluix 4') + .outputFluids('tfg:fluix 1') + .perTick(false) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.IV]), 2) + .circuit(2) + + //#endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/fishing_nets/events.fishing_nets.js b/kubejs/server_scripts/tfg/primitive/fishing_nets/events.fishing_nets.js new file mode 100644 index 000000000..c8bb64476 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/fishing_nets/events.fishing_nets.js @@ -0,0 +1,93 @@ +const fish = [ + 'cod', + 'crappie', + 'jellyfish', + 'lake_trout', + 'largemouth_bass', + 'rainbow_trout', + 'salmon', + 'smallmouth_bass', + 'tropical_fish', + 'bluegill' +]; + +const shellfish = [ + 'lobster', + 'isopod', + 'crayfish' +]; + +//tags wont work here (or at least I couldnt get it to work) so we need to manually declare each net tier. +const tiers = [ + 'wood', + 'brass', + 'rose_gold', + 'sterling_silver', + 'invar', + 'tin_alloy', + 'cupronickel', + 'magnalium' +]; + +//Event detects if fish is right clicked with fishing net and then teleports the mob into the void, plays some actions and gives the player the proper item. +tiers.forEach(tier => { + fish.forEach(fish => { + ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => { + const { item, player, server, target } = event; + + if (target.type !== `tfc:${fish}`) return + server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`) + server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`) + server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`) + event.player.give(`tfc:food/${fish}`) + player.swing() + if (player.isCreative() === false) { + item.damageValue++ + if (item.damageValue >= item.maxDamage) { + server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`) + item.count-- + } + } + }) + }) + + //Shellfish Exception + shellfish.forEach(shellfish => { + ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => { + const { item, player, server, target } = event; + + if (target.type !== `tfc:${shellfish}`) return + server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`) + server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`) + server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`) + event.player.give('tfc:food/shellfish') + player.swing() + if (player.isCreative() === false) { + item.damageValue++ + if (item.damageValue >= item.maxDamage) { + server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`) + item.count-- + } + } + }) + }) + + //Pufferfish Exception + ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => { + const { item, player, server, target } = event; + + if (target.type !== 'tfc:pufferfish') return + server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`) + server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`) + server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`) + event.player.give('minecraft:pufferfish') + player.swing() + if (player.isCreative() === false) { + item.damageValue++ + if (item.damageValue >= item.maxDamage) { + server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`) + item.count-- + } + } + }) +}) \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.fishing_nets.js b/kubejs/server_scripts/tfg/primitive/fishing_nets/recipes.fishing_nets.js similarity index 100% rename from kubejs/server_scripts/tfg/recipes.fishing_nets.js rename to kubejs/server_scripts/tfg/primitive/fishing_nets/recipes.fishing_nets.js diff --git a/kubejs/server_scripts/tfg/primitive/medicine/events.medicine.js b/kubejs/server_scripts/tfg/primitive/medicine/events.medicine.js new file mode 100644 index 000000000..115e3caf7 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/medicine/events.medicine.js @@ -0,0 +1,100 @@ + +//Pills & Tablets +const pill_event = [ + 'haste', + 'luck', + 'night_vision', + 'poison', + 'regeneration', + 'slowness', + 'speed', + 'water_breathing', + 'weakness', +]; + +pill_event.forEach(pill_event => { + + ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:${pill_event}_pill`) return + item.count-- + player.addItemCooldown(item, 100) + server.runCommandSilent(`effect give ${player.username} minecraft:${pill_event} 480 0 true`) + server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) + }); + + ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:${pill_event}_tablet`) return + item.count-- + player.addItemCooldown(item, 100) + server.runCommandSilent(`effect give ${player.username} minecraft:${pill_event} 1800 0 true`) + server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) + }); +}); + +ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:antipoison_pill`) return + item.count-- + player.addItemCooldown(item, 50) + event.player.removeEffect('minecraft:poison') + server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) +}); + +ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:antipoison_tablet`) return + item.count-- + player.addItemCooldown(item, 50) + event.player.removeEffect('minecraft:poison') + event.player.removeEffect('minecraft:wither') + event.player.removeEffect('minecraft:weakness') + event.player.removeEffect('minecraft:slowness') + event.player.removeEffect('minecraft:mining_fatigue') + event.player.removeEffect('minecraft:nausea') + event.player.removeEffect('minecraft:blindness') + event.player.removeEffect('minecraft:hunger') + event.player.removeEffect('minecraft:bad_omen') + event.player.removeEffect('minecraft:darkness') + event.player.removeEffect('minecraft:unluck') + server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) +}); + +//salvos +const salvo_event = [ + 'fire_resistance', + 'invisibility', + 'luck', + 'resistance', +]; + +salvo_event.forEach(salvo_event => { + + ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:${salvo_event}_salvo`) return + item.count-- + player.addItemCooldown(item, 100) + server.runCommandSilent(`effect give ${player.username} minecraft:${salvo_event} 480 0 true`) + server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`) + }); +}); + +ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:absorption_salvo`) return + item.count-- + player.addItemCooldown(item, 200) + server.runCommandSilent(`effect give ${player.username} minecraft:absorption 480 4 true`) + server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`) +}); + +ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:instant_health_salvo`) return + item.count-- + player.addItemCooldown(item, 100) + server.runCommandSilent(`effect give ${player.username} minecraft:instant_health 1 1 true`) + server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`) +}); \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.medicine.js b/kubejs/server_scripts/tfg/primitive/medicine/recipes.medicine.js similarity index 100% rename from kubejs/server_scripts/tfg/recipes.medicine.js rename to kubejs/server_scripts/tfg/primitive/medicine/recipes.medicine.js diff --git a/kubejs/server_scripts/tfg/primitive/medicine/tags.medicine.js b/kubejs/server_scripts/tfg/primitive/medicine/tags.medicine.js new file mode 100644 index 000000000..edfe6bceb --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/medicine/tags.medicine.js @@ -0,0 +1,67 @@ +"use strict"; + +function registerTFGMedicineItemTags(event) { + + event.add('tfg:antipoison_ingredients', 'tfc:plant/blood_lily') + event.add('tfg:antipoison_ingredients', 'tfc:plant/pistia') + event.add('tfg:antipoison_ingredients', 'tfc:powder/bismuthinite') + event.add('tfg:antipoison_ingredients', 'gtceu:mica_dust') + event.add('tfg:antipoison_ingredients', 'gtceu:fullers_earth_dust') + + event.add('tfg:poison_ingredients', 'tfc:plant/butterfly_milkweed') + event.add('tfg:poison_ingredients', 'tfc:plant/grape_hyacinth') + event.add('tfg:poison_ingredients', 'tfc:plant/lily_of_the_valley') + event.add('tfg:poison_ingredients', 'tfc:plant/pulsatilla') + event.add('tfg:poison_ingredients', 'firmalife:food/nightshade_berry') + event.add('tfg:poison_ingredients', 'minecraft:red_mushroom') + + event.add('tfg:regeneration_ingredients', 'tfc:plant/lilac') + event.add('tfg:regeneration_ingredients', 'tfc:plant/field_horsetail') + event.add('tfg:regeneration_ingredients', 'tfc:plant/licorice_fern') + event.add('tfg:regeneration_ingredients', 'tfc:plant/sacred_datura') + + event.add('tfg:speed_ingredients', 'tfc:plant/labrador_tea') + event.add('tfg:speed_ingredients', 'firmalife:raw_honey') + + event.add('tfg:slowness_ingredients', 'tfc:plant/marigold') + event.add('tfg:slowness_ingredients', 'tfc:plant/nasturtium') + event.add('tfg:slowness_ingredients', 'tfc:plant/snapdragon_red') + event.add('tfg:slowness_ingredients', 'tfc:plant/snapdragon_white') + event.add('tfg:slowness_ingredients', 'tfc:plant/snapdragon_yellow') + + event.add('tfg:weakness_ingredients', 'tfc:plant/laminaria') + event.add('tfg:weakness_ingredients', 'tfc:plant/sea_palm') + event.add('tfg:weakness_ingredients', 'tfc:plant/sea_lavender') + event.add('tfg:weakness_ingredients', 'tfc:plant/canna') + event.add('tfg:weakness_ingredients', 'tfc:plant/water_canna') + + event.add('tfg:haste_ingredients', '#tfg:sugars') + + event.add('tfg:water_breathing_ingredients', 'tfc:powder/saltpeter') + event.add('tfg:water_breathing_ingredients', 'tfc:powder/charcoal') + event.add('tfg:water_breathing_ingredients', 'tfg:rapeseed_product') + + event.add('tfg:night_vision_ingredients', 'tfc:food/carrot') + event.add('tfg:night_vision_ingredients', 'beneath:gleamflower') + event.add('tfg:night_vision_ingredients', 'tfg:sunflower_product') + + event.add('tfg:invisibility_ingredients', 'tfc:plant/calendula') + event.add('tfg:absorption_ingredients', 'beneath:burpflower') + + event.add('tfg:fire_resistance_ingredients', 'tfc:plant/cattail') + event.add('tfg:fire_resistance_ingredients', 'tfc:plant/meads_milkweed') + event.add('tfg:fire_resistance_ingredients', 'firmalife:plant/bay_laurel') + event.add('tfg:fire_resistance_ingredients', 'beneath:ghost_pepper') + + event.add('tfg:resistance_ingredients', 'tfc:plant/hibiscus') + event.add('tfg:resistance_ingredients', 'gtceu:calcium_dust') + + event.add('tfg:instant_health_ingredients', 'tfc:plant/foxglove') + event.add('tfg:instant_health_ingredients', 'tfc:plant/artists_conk') + + event.add('tfg:absorption_ingredients', 'tfc:plant/poppy') + event.add('tfg:invisibility_ingredients', 'tfc:plant/snapdragon_pink') + + event.add('tfg:luck_ingredients', 'tfc:plant/goldenrod') + event.add('tfg:luck_ingredients', 'tfc:plant/heather') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.arrows.js b/kubejs/server_scripts/tfg/primitive/recipes.arrows.js new file mode 100644 index 000000000..05962e312 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.arrows.js @@ -0,0 +1,75 @@ +"use strict"; + +function registerTFGArrowRecipes(event) { + // Arrow Parts + event.recipes.tfc.knapping( + '4x tfg:flint_arrow_head', + 'tfg:flint', + [ + ' XXX', + ' XXXX', + 'XXXXX', + ' XXX ', + ' X ' + ] + ).outsideSlotRequired(false) + .id('tfg:knapping/flint_arrow_head') + + event.recipes.gtceu.assembler('tfg:assembler/flint_arrow_head') + .itemInputs('1x minecraft:flint') + .itemOutputs('4x tfg:flint_arrow_head') + .duration(20) + .circuit(4) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless('4x tfg:fletching', [ + 'minecraft:feather', + '#forge:tools/knives' + ]).id('tfg:shapeless/fletching')) + + event.recipes.gtceu.assembler('tfg:assembler/fletching') + .itemInputs('1x minecraft:feather') + .itemOutputs('4x tfg:fletching') + .duration(20) + .circuit(4) + .EUt(GTValues.VA[GTValues.ULV]) + + event.shaped('4x minecraft:arrow', [ + ' A ', + ' B ', + ' C ' + ], { + A: 'tfg:flint_arrow_head', + B: '#forge:rods/wooden', + C: 'tfg:fletching' + }).id('tfg:shaped/arrow') + + // Wraptor feathers + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless('4x tfg:fletching', [ + 'tfg:wraptor_wool', + '#forge:tools/knives' + ]).id('tfg:shapeless/wraptor_feather_fletching')) + + event.recipes.gtceu.assembler('tfg:assembler/wraptor_feather_fletching') + .itemInputs('1x tfg:wraptor_wool') + .itemOutputs('4x tfg:fletching') + .duration(20) + .circuit(4) + .EUt(GTValues.VA[GTValues.ULV]) + + // Glider feathers + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless('4x tfg:fletching', [ + 'wan_ancient_beasts:glider_feather', + '#forge:tools/knives' + ]).id('tfg:shapeless/glider_feather_fletching')) + + event.recipes.gtceu.assembler('tfg:assembler/glider_feather_fletching') + .itemInputs('1x wan_ancient_beasts:glider_feather') + .itemOutputs('4x tfg:fletching') + .duration(20) + .circuit(4) + .EUt(GTValues.VA[GTValues.ULV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.baskets.js b/kubejs/server_scripts/tfg/primitive/recipes.baskets.js new file mode 100644 index 000000000..a6bdc30ff --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.baskets.js @@ -0,0 +1,64 @@ +"use strict"; + +function registerTFGBasketRecipes(event) { + event.shaped('tfg:harvest_basket', [ + 'BDB', + 'ACA', + 'AAA' + ], { + A: 'tfg:soaked_hardwood_strip', + B: ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 1), + C: 'tfc:glue', + D: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) + }).id('tfg:shaped/harvest_basket_from_wood') + + event.recipes.gtceu.assembler('tfg:assembler/harvest_basket_from_wood') + .itemInputs( + '5x tfg:soaked_hardwood_strip', + ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 2), + ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) + ) + .inputFluids(Fluid.of('gtceu:glue', 50)) + .itemOutputs('tfg:harvest_basket') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.shaped('tfg:harvest_basket', [ + 'BDB', + 'ACA', + 'AAA' + ], { + A: 'tfc:soaked_papyrus_strip', + B: ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 1), + C: 'tfc:glue', + D: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) + }).id('tfg:shaped/harvest_basket_from_papyrus') + + event.recipes.gtceu.assembler('tfg:assembler/harvest_basket_from_papyrus') + .itemInputs( + '5x tfc:soaked_papyrus_strip', + ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 2), + ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) + ) + .inputFluids(Fluid.of('gtceu:glue', 50)) + .itemOutputs('tfg:harvest_basket') + .circuit(2) + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.assembler('tfg:assembler/aluminium_harvest_basket') + .itemInputs( + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 3), + ChemicalHelper.get(TagPrefix.foil, GTMaterials.Aluminium, 2), + ChemicalHelper.get(TagPrefix.bolt, GTMaterials.Steel, 2), + ChemicalHelper.get(TagPrefix.rodLong, + GTMaterials.Aluminium, 1) + ) + .inputFluids(Fluid.of('gtceu:cobalt_brass', 144)) + .itemOutputs('tfg:aluminium_harvest_basket') + .duration(200) + .circuit(4) + .EUt(GTValues.VA[GTValues.LV]) + .addMaterialInfo(true) + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.clay.js b/kubejs/server_scripts/tfg/primitive/recipes.clay.js new file mode 100644 index 000000000..153455c8a --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.clay.js @@ -0,0 +1,144 @@ +๏ปฟ"use strict"; + +function registerTFGClayRecipes(event) { + + event.shapeless('tfc:crucible', ['tfc:crucible']).id('tfg:empty_crucible') + + event.shaped('minecraft:clay', [ + 'AA', + 'AA' + ], { + A: 'minecraft:clay_ball' + }).id('tfg:shaped/clay_balls_to_block') + + event.shapeless('4x minecraft:clay_ball', ['minecraft:clay']) + .id('tfg:shapeless/clay_block_to_balls') + + global.TFC_FURNACE_MOLD_RECIPE_COMPONENTS.forEach(element => { + event.smelting(element.output, element.input) + .id(`tfg:smelting/${element.name}`) + }) + + global.MINECRAFT_DYE_NAMES.forEach(dye => { + event.smelting(`tfc:ceramic/${dye}_glazed_vessel`, `tfc:ceramic/${dye}_unfired_vessel`) + .id(`tfg:smelting/${dye}_glazed_vessel`) + + event.smelting(`tfc:ceramic/large_vessel/${dye}`, `tfc:ceramic/unfired_large_vessel/${dye}`) + .id(`tfg:smelting/${dye}_large_vessel`) + }) + + for (let i = 0; i < global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) { + let element = global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS[i]; + + event.recipes.gtceu.assembler(`tfg:tfc/${element.name}`) + .itemInputs(element.input) + .circuit(i) + .itemOutputs(element.output) + .duration(450) + .EUt(2) + } + + for (let i = 0; i < global.TFC_FIRE_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) { + let element = global.TFC_FIRE_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS[i]; + + event.recipes.gtceu.assembler(`tfg:tfc/${element.name}`) + .itemInputs(element.input) + .circuit(i) + .itemOutputs(element.output) + .duration(450) + .EUt(2) + } + + event.recipes.gtceu.extruder('tfg:unfired_clay_brick') + .itemInputs('minecraft:clay_ball') + .notConsumable('gtceu:ingot_extruder_mold') + .itemOutputs('tfc:ceramic/unfired_brick') + .duration(20) + .EUt(2) + + event.recipes.gtceu.extruder('tfg:unfired_fire_clay_brick') + .itemInputs('tfc:fire_clay') + .notConsumable('gtceu:ingot_extruder_mold') + .itemOutputs('tfc:ceramic/unfired_fire_brick') + .duration(20) + .EUt(2) + + // Kaolinite Clay - regular smelting recipes can't have multiple inputs + event.recipes.gtceu.alloy_smelter('tfg:kaolinite') + .itemInputs('tfc:kaolin_clay') + .circuit(1) + .chancedOutput('tfc:powder/kaolinite', 2000, 0) + .duration(100) + .EUt(16) + + // Fire Clay + event.recipes.gtceu.alloy_smelter('tfg:cheaper_fire_clay') + .itemInputs('#forge:dusts/graphite', '4x tfc:kaolin_clay') + .itemOutputs('2x tfc:fire_clay') + .duration(600) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.alloy_smelter('tfg:oops_i_smelted_all_my_kaolin') + .itemInputs('minecraft:clay_ball', 'tfc:powder/kaolinite') + .itemOutputs('tfc:kaolin_clay') + .duration(600) + .EUt(GTValues.VA[GTValues.ULV]) + + // Compressed Coke Clay + event.shaped('gtceu:compressed_coke_clay', [ + 'AAA', + 'BCB', + 'BBB' + ], { + A: 'minecraft:clay_ball', + B: '#minecraft:sand', + C: 'gtceu:brick_wooden_form' + }).replaceIngredient('gtceu:brick_wooden_form', 'gtceu:brick_wooden_form').id('gtceu:shaped/compressed_coke_clay') + + // Coke Oven Brick + event.recipes.tfc.heating('gtceu:compressed_coke_clay', 1399) + .resultItem('gtceu:coke_oven_brick') + .id('tfg:heating/coke_oven_bricks') + + event.recipes.gtceu.alloy_smelter('gtceu:coke_oven_brick') + .itemInputs('3x #minecraft:sand', '2x minecraft:clay_ball') + .itemOutputs('gtceu:coke_oven_brick') + .duration(7.5 * 20) + .EUt(GTValues.VA[GTValues.ULV]) + + // Ceramic Recycling + event.recipes.gtceu.macerator('tfg:sherd_to_brick_dust') + .itemInputs('firmalife:pottery_sherd') + .itemOutputs('#forge:dusts/brick') + .category(GTRecipeCategories.MACERATOR_RECYCLING) + .duration(20) + .EUt(2) + + event.recipes.gtceu.macerator('tfg:ceramic_molds') + .itemInputs('#tfc:fired_molds') + .itemOutputs('2x #forge:dusts/brick') + .category(GTRecipeCategories.MACERATOR_RECYCLING) + .duration(20) + .EUt(2) + + event.recipes.gtceu.macerator('tfg:large_vessels') + .itemInputs('#tfc:fired_large_vessels') + .itemOutputs('5x #forge:dusts/brick') + .category(GTRecipeCategories.MACERATOR_RECYCLING) + .duration(20) + .EUt(2) + + event.recipes.gtceu.macerator('tfg:casting_channel') + .itemInputs('tfcchannelcasting:channel') + .itemOutputs('1x #forge:dusts/brick') + .category(GTRecipeCategories.MACERATOR_RECYCLING) + .duration(20) + .EUt(2) + + event.recipes.gtceu.macerator('tfg:mold_table') + .itemInputs('tfcchannelcasting:mold_table') + .itemOutputs('5x #forge:dusts/brick') + .category(GTRecipeCategories.MACERATOR_RECYCLING) + .duration(20) + .EUt(2) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.cloth.js b/kubejs/server_scripts/tfg/primitive/recipes.cloth.js new file mode 100644 index 000000000..284666095 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.cloth.js @@ -0,0 +1,263 @@ +"use strict"; + +function registerTFGClothRecipes(event) { + + //Cloth & String + event.recipes.gtceu.wiremill('tfg:wiremill/phantom_thread') + .itemInputs('1x minecraft:phantom_membrane') + .itemOutputs('16x tfg:phantom_thread') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.wiremill('tfg:wiremill/polycaprolactam_string') + .itemInputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Polycaprolactam, 1)) + .itemOutputs('32x tfg:polycaprolactam_string') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.assembler('tfg:assembler/phantom_silk') + .itemInputs('16x tfg:phantom_thread') + .itemOutputs('1x tfg:phantom_silk') + .duration(100) + .circuit(3) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.assembler('tfg:assembler/polycaprolactam_fabric') + .itemInputs('16x tfg:polycaprolactam_string') + .itemOutputs('1x tfg:polycaprolactam_fabric') + .duration(100) + .circuit(3) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.chemical_bath('tfg:chemical_bath/bleaching/polycaprolactam_string') + .itemInputs('tfg:polycaprolactam_string') + .inputFluids(Fluid.of('gtceu:chlorine', 16)) + .itemOutputs('minecraft:string') + .duration(80) + .EUt(GTValues.VA[GTValues.ULV]) + .category(GTRecipeCategories.CHEM_DYES) + + event.recipes.tfc.loom( + '1x tfg:phantom_silk', + '16x tfg:phantom_thread', + 8, + 'tfg:block/phantom_silk_block' + ) + + event.recipes.tfc.loom( + '1x tfg:polycaprolactam_fabric', + '16x tfg:polycaprolactam_string', + 8, + 'tfg:block/polycaprolactam_fabric_block' + ) + + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless('16x tfg:phantom_thread', [ + 'minecraft:phantom_membrane', + 'tfc:spindle' + ]).id('tfg:shapeless/phantom_thread')) + + // Wool Yarn + event.recipes.gtceu.wiremill('tfg:tfc/wool_yarn') + .itemInputs('tfc:wool') + .itemOutputs('8x tfc:wool_yarn') + .duration(100) + .EUt(4) + + // Burlap Cloth + event.recipes.gtceu.assembler('tfg:tfc/burlap_cloth') + .itemInputs('12x tfc:jute_fiber') + .circuit(0) + .itemOutputs('tfc:burlap_cloth') + .duration(100) + .EUt(4) + + // Silk Cloth + event.recipes.gtceu.assembler('tfg:tfc/silk_cloth') + .itemInputs('24x minecraft:string') + .circuit(0) + .itemOutputs('tfc:silk_cloth') + .duration(100) + .EUt(4) + + // Wool Cloth + event.recipes.gtceu.assembler('tfg:tfc/wool_cloth') + .itemInputs('16x tfc:wool_yarn') + .circuit(0) + .itemOutputs('tfc:wool_cloth') + .duration(100) + .EUt(4) + + // Cloths to Wool + event.recipes.gtceu.assembler('tfg:tfc/cloth_to_wool') + .itemInputs('4x #tfc:sewing_light_cloth') + .itemOutputs('8x minecraft:white_wool') + .circuit(16) + .duration(100) + .EUt(4) + + // Wool Yarn + event.recipes.gtceu.macerator('macerate_wool') + .itemInputs('#minecraft:wool') + .itemOutputs('tfc:wool_yarn') + .chancedOutput('tfc:wool_yarn', 9000, 0) + .chancedOutput('tfc:wool_yarn', 5000, 0) + .chancedOutput('tfc:wool_yarn', 2000, 0) + .duration(200) + .EUt(2) + + // Jute Fiber + generateMixerRecipe(event, 'tfc:jute', "#tfg:clean_water 200", + 'tfc:jute_fiber', null, [], 100, 4, 16, 'tfg:tfc/jute_fiber') + + //#region flax stuff + + event.shapeless('1x tfg:flax_bundle', ['9x tfg:flax_product']) + event.recipes.gtceu.packer('tfg:packer/flax_bundle') + .itemInputs('9x tfg:flax_product') + .itemOutputs('tfg:flax_bundle') + .duration('100') + .EUt(GTValues.VA[GTValues.ULV]) + + event.shapeless('1x tfg:bundled_scraped_flax', ['9x tfg:flax_waste']) + event.recipes.gtceu.packer('tfg:packer/bundled_scraped_flax') + .itemInputs('9x tfg:flax_waste') + .itemOutputs('tfg:bundled_scraped_flax') + .duration('100') + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.tfc.scraping( + 'tfg:flax_waste', + 'tfg:flax_product', + 'tfg:item/flax_waste', + 'tfg:item/flax_product', + '2x tfg:flax_line' + ).id('tfg:scraping/flax_line') + + event.recipes.tfc.scraping( + 'tfg:bundled_scraped_flax', + 'tfg:flax_bundle', + 'tfg:item/bundled_scraped_flax', + 'tfg:item/flax_bundle', + '18x tfg:flax_line' + ).id('tfg:scraping/flax_line_from_bundle') + + event.recipes.tfc.scraping( + 'tfc:groundcover/humus', + 'tfg:flax_waste', + 'tfc:item/groundcover/humus', + 'tfg:item/flax_waste', + 'tfg:flax_tow' + ).id('tfg:scraping/flax_tow') + + event.recipes.tfc.scraping( + '9x tfc:groundcover/humus', + 'tfg:bundled_scraped_flax', + 'tfc:item/groundcover/humus', + 'tfg:item/bundled_scraped_flax', + '9x tfg:flax_tow' + ).id('tfg:scraping/flax_tow_from_pile') + + event.recipes.gtceu.cutter('tfg:flax_line_in_cutter') + .itemInputs('tfg:flax_product') + .itemOutputs('2x tfg:flax_line', 'tfg:flax_waste') + .duration(60) + .EUt(2) + + event.recipes.gtceu.cutter('tfg:flax_line_from_bundle_in_cutter') + .itemInputs('tfg:flax_bundle') + .itemOutputs('18x tfg:flax_line', 'tfg:bundled_scraped_flax') + .duration(540) + .EUt(2) + + event.recipes.gtceu.cutter('tfg:flax_tow_in_cutter') + .itemInputs('tfg:flax_waste') + .itemOutputs('1x tfg:flax_tow', '1x tfc:groundcover/humus') + .duration(60) + .EUt(2) + + event.recipes.gtceu.cutter('tfg:flax_tow_from_bundle_in_cutter') + .itemInputs('tfg:bundled_scraped_flax') + .itemOutputs('9x tfg:flax_tow', '9x tfc:groundcover/humus') + .duration(540) + .EUt(2) + + event.recipes.gtceu.centrifuge('tfg:flax_product') + .itemInputs('tfg:flax_product') + .itemOutputs('2x tfg:flax_line', 'tfg:flax_tow', 'tfc:groundcover/humus') + .duration(200) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.centrifuge('tfg:flax_product_from_bundle') + .itemInputs('tfg:flax_bundle') + .itemOutputs('18x tfg:flax_line', '9x tfg:flax_tow', '9x tfc:groundcover/humus') + .duration(1800) + .EUt(GTValues.VA[GTValues.LV]) + + event.custom({ + type: 'vintageimprovements:centrifugation', + ingredients: [{ item: 'tfg:flax_product' }], + results: [{ item: 'tfg:flax_line', count: 2 }, { item: 'tfg:flax_tow' }, { item: 'tfc:groundcover/humus' }], + processingTime: 40 * 10 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER + }).id('tfg:vi_seperate_flax') + + event.custom({ + type: 'vintageimprovements:centrifugation', + ingredients: [{ item: 'tfg:flax_bundle' }], + results: [{ item: 'tfg:flax_line', count: 18 }, { item: 'tfg:flax_tow', count: 9 }, { item: 'tfc:groundcover/humus', count: 9 }], + processingTime: 360 * 90 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER + }).id('tfg:vi_seperate_flax_from_bundle') + + // #endregion + + //#region flax line spinning + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless('4x tfg:linen_thread', [ + 'tfg:flax_line', + 'tfc:spindle' + ]).id('tfg:shapeless/linen_thread') + ) + + event.custom({ + type: 'vintageimprovements:coiling', + ingredients: [{ item: 'tfg:flax_line' }], + results: [{ item: 'tfg:linen_thread', count: 4 }], + processingTime: 2 * 10 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER + }).id('tfg:vi_spin_flax_line') + + event.recipes.gtceu.wiremill('tfg:spin_flax_line') + .itemInputs('tfg:flax_line') + .itemOutputs('4x tfg:linen_thread') + .duration(80) + .EUt(GTValues.VA[GTValues.LV]) + //#endregion + //#region flax looming + event.recipes.tfc.loom( + '1x tfg:linen_cloth', + '16x tfg:linen_thread', + 8, + 'tfc:block/burlap' + ) + + event.recipes.tfc.loom( + '1x tfc:burlap_cloth', + '16x tfg:flax_tow', + 12, + 'tfc:block/burlap' + ) + + event.recipes.gtceu.assembler('tfg:assembler/linen_cloth') + .itemInputs('16x tfg:linen_thread') + .circuit(10) + .itemOutputs('tfg:linen_cloth') + .duration(100) + .EUt(4) + + event.recipes.gtceu.assembler('tfg:assembler/flax_burlap') + .itemInputs('16x tfg:flax_tow') + .circuit(10) + .itemOutputs('tfc:burlap_cloth') + .duration(100) + .EUt(4) + //#endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.compost.js b/kubejs/server_scripts/tfg/primitive/recipes.compost.js new file mode 100644 index 000000000..623e231a2 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.compost.js @@ -0,0 +1,194 @@ +"use strict"; + +function registerTFGCompostRecipes(event) { + //#region Fertiliser + event.recipes.gtceu.mixer('tfg:fertilizer') + .itemInputs( + '#tfc:dirt', + '2x #tfg:wood_dusts', + '4x #forge:sand' + ) + .circuit(1) + .inputFluids("#tfg:clean_water 1000") + .itemOutputs('4x gtceu:fertilizer') + .duration(300) + .EUt(30) + + event.recipes.gtceu.mixer('tfg:fertilizer_2') + .itemInputs('tfc:compost') + .inputFluids('#tfg:clean_water 1000') + .itemOutputs('4x gtceu:fertilizer') + .duration(300) + .EUt(30) + + event.recipes.gtceu.centrifuge('tfg:gtceu/centrifuge/pure_fertilizers') + .itemInputs('1x gtceu:fertilizer') + .itemOutputs('1x tfc:pure_nitrogen', '1x tfc:pure_potassium', '1x tfc:pure_phosphorus') + .duration(340) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.mixer('tfg:tfc/mixer/fertilizer') + .itemInputs('1x tfc:pure_nitrogen', '1x tfc:pure_potassium', '1x tfc:pure_phosphorus', ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Clay, 1)) + .itemOutputs('1x gtceu:fertilizer') + .duration(160) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.gas_pressurizer('tfg:pure_nitrogen') + .itemInputs('#forge:wax') + .inputFluids(Fluid.of('gtceu:nitrogen', 1000)) + .itemOutputs('16x tfc:pure_nitrogen') + .duration(100) + .EUt(GTValues.VA[GTValues.LV]) + //#endregion + + // Humus and compost + event.recipes.gtceu.extractor('tfg:humus_from_leaves') + .itemInputs('#minecraft:leaves') + .itemOutputs('tfc:groundcover/humus') + .duration(600) + .EUt(2) + + event.recipes.gtceu.extractor('tfg:humus_from_fallen_leaves') + .itemInputs('#tfc:fallen_leaves') + .itemOutputs('tfc:groundcover/humus') + .duration(600) + .EUt(2) + + event.recipes.gtceu.fermenter('tfg:fertilizer_to_compost') + .itemInputs('4x gtceu:fertilizer') + .itemOutputs('tfc:compost') + .duration(1200) + .EUt(2) + + const BROWNS = [ '16x #tfc:compost_browns_low', '8x #tfc:compost_browns', '4x #tfc:compost_browns_high' ]; + const GREENS = [ '16x #tfc:compost_greens_low', '8x #tfc:compost_greens', '4x #tfc:compost_greens_high' ]; + + let i = 0; + BROWNS.forEach(brown => { + GREENS.forEach(green => { + event.recipes.gtceu.mixer(`tfg:compost_${i++}`) + .itemInputs(brown, green) + .itemOutputs('tfc:compost') + .duration(1200) + .EUt(2) + }) + }) + + //Greens + // Lows via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_greens', 1), [ + 'AB' + ], { + A: '#tfc:compost_greens_low', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_greens_from_low') + + // Mediums via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_greens', 2), [ + 'AB' + ], { + A: '#tfc:compost_greens', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_greens_from_medium') + + // Highs via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_greens', 4), [ + 'AB' + ], { + A: '#tfc:compost_greens_high', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_greens_from_high') + + // Filters + const greens_low = Ingredient.of('#tfc:compost_greens_low') + const browns_low = Ingredient.of('#tfc:compost_browns_low').itemIds + const greens_medium = Ingredient.of('#tfc:compost_greens') + const browns_medium = Ingredient.of('#tfc:compost_browns').itemIds + const greens_high = Ingredient.of('#tfc:compost_greens_high') + const browns_high = Ingredient.of('#tfc:compost_browns_high').itemIds + + let low_filtered = greens_low + let medium_filtered = greens_medium + let high_filtered = greens_high + + browns_low.forEach(item => { + low_filtered = low_filtered.subtract(item) + low_filtered = low_filtered.subtract('tfg:universal_compost_greens') + }) + browns_medium.forEach(item => { + medium_filtered = medium_filtered.subtract(item) + }) + browns_high.forEach(item => { + high_filtered = high_filtered.subtract(item) + }) + + // Lows via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_low') + .itemInputs(low_filtered) + .itemOutputs('tfg:universal_compost_greens') + .duration(20) + .EUt(8) + + // Mediums via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_medium') + .itemInputs(medium_filtered) + .itemOutputs(Item.of('tfg:universal_compost_greens', 2)) + .duration(20) + .EUt(8) + + // Highs via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_high') + .itemInputs(high_filtered) + .itemOutputs(Item.of('tfg:universal_compost_greens', 4)) + .duration(20) + .EUt(8) + + //Browns + // Lows via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_browns', 1), [ + 'A', + 'B' + ], { + A: '#tfc:compost_browns_low', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_browns_from_low') + + // Mediums via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_browns', 2), [ + 'A', + 'B' + ], { + A: '#tfc:compost_browns', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_browns_from_medium') + + // Highs via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_browns', 4), [ + 'A', + 'B' + ], { + A: '#tfc:compost_browns_high', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_browns_from_high') + + // Lows via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_low') + .itemInputs('#tfc:compost_browns_low') + .itemOutputs('tfg:universal_compost_browns') + .duration(20) + .EUt(8) + + // Mediums via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_medium') + .itemInputs('#tfc:compost_browns') + .itemOutputs(Item.of('tfg:universal_compost_browns', 2)) + .duration(20) + .EUt(8) + + // Highs via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_high') + .itemInputs('#tfc:compost_browns_high') + .itemOutputs(Item.of('tfg:universal_compost_browns', 4)) + .duration(20) + .EUt(8) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.glue_and_chipboard.js b/kubejs/server_scripts/tfg/primitive/recipes.glue_and_chipboard.js new file mode 100644 index 000000000..29ccd1771 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.glue_and_chipboard.js @@ -0,0 +1,101 @@ +"use strict"; + +function registerTFGChipboardRecipes(event) { + + // Glue from resin + event.recipes.gtceu.extractor('tfg:glue_from_tfc_glue') + .itemInputs('tfc:glue') + .outputFluids(Fluid.of('gtceu:glue', 50)) + .duration(20 * 10) + .EUt(5) + + event.recipes.gtceu.extractor('tfg:glue_from_sticky_resin') + .itemInputs('gtceu:sticky_resin') + .outputFluids(Fluid.of('gtceu:glue', 100)) + .duration(20 * 10) + .EUt(5) + + event.recipes.gtceu.extractor('tfg:glue_from_conifer_resin') + .itemInputs('tfg:conifer_rosin') + .outputFluids(Fluid.of('gtceu:glue', 50)) + .duration(20 * 10) + .EUt(5) + + event.recipes.gtceu.mixer('tfg:glue_from_bone_meal') + .itemInputs('minecraft:bone_meal') + .inputFluids(Fluid.of('tfc:limewater', 500)) + .outputFluids(Fluid.of('gtceu:glue', 50)) + .duration(100) + .EUt(5) + + // Chipboard + event.recipes.gtceu.mixer('gtceu:chipboard_composite_wax') + .itemInputs('2x #tfg:wood_dusts', + '1x #forge:wax') + .itemOutputs('2x tfg:chipboard_composite') + .duration(100) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.mixer('gtceu:chipboard_composite_resin') + .itemInputs('4x #tfg:wood_dusts', + '1x gtceu:sticky_resin') + .itemOutputs('4x tfg:chipboard_composite') + .duration(100) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.mixer('gtceu:chipboard_composite_glue') + .itemInputs('2x #tfg:wood_dusts', + '1x tfc:glue') + .itemOutputs('2x tfg:chipboard_composite') + .duration(100) + .EUt(GTValues.VA[GTValues.LV]) + + + event.recipes.gtceu.mixer('gtceu:chipboard_composite_fluid_glue') + .itemInputs('1x #tfg:wood_dusts') + .inputFluids(Fluid.of('gtceu:glue', 25)) + .itemOutputs('1x tfg:chipboard_composite') + .duration(10) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.compressor('gtceu:wood_mdf') + .itemInputs('1x tfg:chipboard_composite') + .itemOutputs('gtceu:wood_plate') + .duration(200) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.chemical_bath('gtceu:treated_chipboard_composite') + .itemInputs('1x tfg:chipboard_composite') + .inputFluids(Fluid.of('gtceu:creosote', 50)) + .itemOutputs('tfg:treated_chipboard_composite') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.chemical_bath('gtceu:bath_high_density_treated_fiberboard') + .itemInputs('1x gtceu:wood_plate') + .inputFluids(Fluid.of('gtceu:creosote', 50)) + .itemOutputs('tfg:high_density_treated_fiberboard') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.chemical_bath('gtceu:bath_treated_wood_dust') + .itemInputs('#tfg:wood_dusts') + .inputFluids(Fluid.of('gtceu:creosote', 50)) + .itemOutputs('gtceu:treated_wood_dust') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.compressor('tfg:compressed_treated_chipboard_composite') + .itemInputs('tfg:treated_chipboard_composite') + .itemOutputs('tfg:high_density_treated_fiberboard') + .duration(200) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.assembler('tfg:resin_circuit_assembler') + .itemInputs('gtceu:wood_plate', '2x gtceu:sticky_resin') + .itemOutputs('gtceu:resin_circuit_board') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.ULV]) + + event.replaceInput({ id: 'gtceu:assembler/phenolic_board' }, '#tfg:wood_dusts', 'tfg:high_density_treated_fiberboard') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.ice.js b/kubejs/server_scripts/tfg/primitive/recipes.ice.js new file mode 100644 index 000000000..b610d3c9a --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.ice.js @@ -0,0 +1,104 @@ +"use strict"; + +function registerTFGIceRecipes(event) { + + // Ice + event.remove({ id: 'gtceu:compressor/ice_from_dust' }) + event.remove({ id: 'gtceu:compressor/ice_from_snow' }) + + event.shapeless('#forge:dusts/ice', ['#forge:tools/mortars', '4x firmalife:ice_shavings']) + .id('tfg:shaped/ice_shavings') + + event.recipes.tfc.quern('#forge:small_dusts/ice', 'firmalife:ice_shavings') + .id('tfg:quern/ice_dust') + + event.recipes.gtceu.macerator('tfg:macerating_ice_shavings') + .itemInputs('firmalife:ice_shavings') + .itemOutputs('#forge:small_dusts/ice') + .duration(10) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.macerator('tfg:macerating_ice_shavings_reverse') + .itemInputs('#forge:dusts/ice') + .itemOutputs('4x firmalife:ice_shavings') + .duration(20) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.fluid_solidifier('tfg:ice') + .inputFluids("#tfg:clean_water 144") + .notConsumable('gtceu:block_casting_mold') + .itemOutputs('minecraft:ice') + .duration(200) + .EUt(GTValues.VA[GTValues.LV]) + + event.shapeless('4x firmalife:ice_shavings', ['#forge:dusts/ice', '#forge:tools/hammers']) + + event.recipes.gtceu.mixer('tfg:ice_slush_from_dry_ice') + .itemInputs('1x tfg:dry_ice') + .inputFluids("#tfc:water 8000") + .outputFluids(Fluid.of('gtceu:ice', 8000)) + .duration(80) + .EUt(GTValues.VA[GTValues.ULV]) + + // Cooling water + event.recipes.tfc.barrel_sealed(250) + .inputItem('1x tfg:dry_ice') + .inputFluid(Fluid.of('minecraft:water', 5000)) + .outputFluid(Fluid.of('gtceu:ice', 5000)) + .id('tfg:barrel/cooling_water_0') + + event.recipes.tfc.barrel_sealed(1000) + .inputItem('1x #forge:dusts/ice') + .inputFluid(Fluid.of('minecraft:water', 144)) + .outputFluid(Fluid.of('gtceu:ice', 144)) + .id('tfg:barrel/cooling_water_1') + + event.recipes.tfc.barrel_sealed(1000) + .inputItem('16x minecraft:snowball') + .inputFluid(Fluid.of('minecraft:water', 144)) + .outputFluid(Fluid.of('gtceu:ice', 144)) + .id('tfg:barrel/cooling_water_2') + + event.recipes.tfc.barrel_sealed(2000) + .inputItem('1x #forge:dusts/ice') + .inputFluid(Fluid.of('tfc:salt_water', 144)) + .outputFluid(Fluid.of('gtceu:ice', 144)) + .id('tfg:barrel/cooling_water_3') + + event.recipes.tfc.barrel_sealed(2000) + .inputItem('16x minecraft:snowball') + .inputFluid(Fluid.of('tfc:salt_water', 144)) + .outputFluid(Fluid.of('gtceu:ice', 144)) + .id('tfg:barrel/cooling_water_4') + + // Freezing it + event.recipes.tfc.barrel_sealed(3000) + .inputItem('9x #forge:dusts/ice') + .inputFluid(Fluid.of('gtceu:ice', 144)) + .outputItem('minecraft:packed_ice') + .id('tfg:barrel/packed_ice') + + // Heating it back up + event.recipes.tfc.pot([], Fluid.of('gtceu:ice', 144), 300, 100) + .fluidOutput(Fluid.of('minecraft:water', 144)) + + event.recipes.firmalife.vat() + .inputFluid(Fluid.of('gtceu:ice', 144)) + .outputFluid(Fluid.of('minecraft:water', 144)) + .length(300) + .temperature(100) + + // Snow + event.recipes.firmalife.stomping('minecraft:snow', 'minecraft:snowball', + 'minecraft:block/snow', 'minecraft:block/snow', 'minecraft:block.snow.place') + .id('tfg:stomping/snow_layer') + + event.shapeless('minecraft:snow_block', ['8x minecraft:snow']) + .id('tfg:shapeless/snow_block') + + event.shapeless('8x minecraft:snowball', ['minecraft:snow_block']) + .id('tfg:shapeless/snowball') + + event.shapeless('8x minecraft:snow', ['minecraft:snow_block', '#forge:tools/saws']) + .id('tfg:shapeless/snow') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfc/recipes.knapping.js b/kubejs/server_scripts/tfg/primitive/recipes.knapping.js similarity index 99% rename from kubejs/server_scripts/tfc/recipes.knapping.js rename to kubejs/server_scripts/tfg/primitive/recipes.knapping.js index 1240dd49d..8c9113e82 100644 --- a/kubejs/server_scripts/tfc/recipes.knapping.js +++ b/kubejs/server_scripts/tfg/primitive/recipes.knapping.js @@ -1,7 +1,7 @@ ๏ปฟ// priority: 0 "use strict"; -function registerTFCKnappingRecipes(event) { +function registerTFGKnappingRecipes(event) { //#region ะขะพะฟะพั€ diff --git a/kubejs/server_scripts/tfg/primitive/recipes.leather.js b/kubejs/server_scripts/tfg/primitive/recipes.leather.js new file mode 100644 index 000000000..4a99ace21 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.leather.js @@ -0,0 +1,212 @@ +๏ปฟ// priority: 0 +"use strict"; + +function registerTFGLeatherRecipes(event) { + + // Limewater + event.recipes.gtceu.mixer('tfg:limewater_from_lime') + .itemInputs('tfc:powder/lime') + .inputFluids(Fluid.of('water', 500)) + .outputFluids(Fluid.of('tfc:limewater', 500)) + .duration(20) + .EUt(16) + + event.recipes.gtceu.mixer('tfg:limewater_from_flux') + .itemInputs('tfc:powder/flux') + .inputFluids(Fluid.of('water', 500)) + .outputFluids(Fluid.of('tfc:limewater', 500)) + .duration(20) + .EUt(16) + + // Tannin + event.recipes.gtceu.chemical_bath('tfg:tannin') + .itemInputs('#tfc:makes_tannin') + .inputFluids(Fluid.of('water', 1000)) + .outputFluids(Fluid.of('tfc:tannin', 1000)) + .duration(2400) + .EUt(16) + + // Soaked hides + event.recipes.gtceu.chemical_bath('tfg:small_soaked_hide') + .itemInputs('tfc:small_raw_hide') + .inputFluids(Fluid.of('tfc:limewater', 300)) + .itemOutputs('tfc:small_soaked_hide') + .duration(1600) + .EUt(16) + + event.recipes.gtceu.chemical_bath('tfg:medium_soaked_hide') + .itemInputs('tfc:medium_raw_hide') + .inputFluids(Fluid.of('tfc:limewater', 400)) + .itemOutputs('tfc:medium_soaked_hide') + .duration(2400) + .EUt(16) + + event.recipes.gtceu.chemical_bath('tfg:large_soaked_hide') + .itemInputs('tfc:large_raw_hide') + .inputFluids(Fluid.of('tfc:limewater', 500)) + .itemOutputs('tfc:large_soaked_hide') + .duration(3200) + .EUt(16) + + // Scraped Hides + event.recipes.gtceu.cutter('tfg:small_scraped_hide') + .itemInputs('tfc:small_soaked_hide') + .itemOutputs('tfc:small_scraped_hide') + .duration(100) + .EUt(7) + + event.recipes.gtceu.cutter('tfg:medium_scraped_hide') + .itemInputs('tfc:medium_soaked_hide') + .itemOutputs('tfc:medium_scraped_hide') + .duration(100) + .EUt(7) + + event.recipes.gtceu.cutter('tfg:large_scraped_hide') + .itemInputs('tfc:large_soaked_hide') + .itemOutputs('tfc:large_scraped_hide') + .duration(100) + .EUt(7) + + // Prepared hides + event.recipes.gtceu.chemical_bath('tfg:small_prepared_hide') + .itemInputs('tfc:small_soaked_hide') + .inputFluids(Fluid.of('water', 300)) + .itemOutputs('tfc:small_prepared_hide') + .duration(1600) + .EUt(16) + + event.recipes.gtceu.chemical_bath('tfg:medium_prepared_hide') + .itemInputs('tfc:medium_soaked_hide') + .inputFluids(Fluid.of('water', 400)) + .itemOutputs('tfc:medium_prepared_hide') + .duration(2400) + .EUt(16) + + event.recipes.gtceu.chemical_bath('tfg:large_prepared_hide') + .itemInputs('tfc:large_soaked_hide') + .inputFluids(Fluid.of('water', 500)) + .itemOutputs('tfc:large_prepared_hide') + .duration(3200) + .EUt(16) + + // Leather + event.recipes.gtceu.chemical_bath('tfg:small_leather') + .itemInputs('tfc:small_prepared_hide') + .inputFluids(Fluid.of('tfc:tannin', 300)) + .itemOutputs('minecraft:leather') + .duration(1600) + .EUt(16) + + event.recipes.gtceu.chemical_bath('tfg:medium_leather') + .itemInputs('tfc:medium_prepared_hide') + .inputFluids(Fluid.of('tfc:tannin', 400)) + .itemOutputs('2x minecraft:leather') + .duration(2400) + .EUt(16) + + event.recipes.gtceu.chemical_bath('tfg:large_leather') + .itemInputs('tfc:large_prepared_hide') + .inputFluids(Fluid.of('tfc:tannin', 500)) + .itemOutputs('3x minecraft:leather') + .duration(3200) + .EUt(16) + + // 1x Small SheepSkin -> 1x Wool + event.recipes.gtceu.assembler('tfg:tfc/wool_1') + .itemInputs('tfc:small_sheepskin_hide') + .itemOutputs('tfc:wool') + .duration(100) + .circuit(3) + .EUt(4) + + // 1x Medium SheepSkin -> 1x Wool + event.recipes.gtceu.assembler('tfg:tfc/wool_2') + .itemInputs('tfc:medium_sheepskin_hide') + .itemOutputs('2x tfc:wool') + .duration(100) + .circuit(3) + .EUt(4) + + // 1x Large SheepSkin -> 1x Wool + event.recipes.gtceu.assembler('tfg:tfc/wool_3') + .itemInputs('tfc:large_sheepskin_hide') + .itemOutputs('3x tfc:wool') + .duration(100) + .circuit(3) + .EUt(4) + + //Hide Sewing + const stages = [ + 'raw', + 'soaked', + 'scraped', + 'prepared', + 'sheepskin' + ]; + + stages.forEach(stage => { + //Combining + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless(`1x tfc:medium_${stage}_hide`, [ + `2x tfc:small_${stage}_hide`, + '#tfc:sewing_needles', + '#forge:string', + 'tfc:glue' + ]).id(`tfg:tfc/small_to_medium_${stage}_hide`) + ) + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless(`1x tfc:large_${stage}_hide`, [ + `3x tfc:small_${stage}_hide`, + '#tfc:sewing_needles', + '#forge:string', + 'tfc:glue' + ]).id(`tfg:tfc/small_to_large_${stage}_hide`) + ) + + event.recipes.gtceu.assembler(`tfg:gtceu/assembler/small_to_medium_${stage}_hide`) + .inputFluids(Fluid.of('gtceu:glue', 25)) + .itemOutputs(`1x tfc:medium_${stage}_hide`) + .itemInputs(`2x tfc:small_${stage}_hide`) + .duration(60) + .circuit(7) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.assembler(`tfg:gtceu/assembler/small_to_large_${stage}_hide`) + .inputFluids(Fluid.of('gtceu:glue', 25)) + .itemOutputs(`1x tfc:large_${stage}_hide`) + .itemInputs(`3x tfc:small_${stage}_hide`) + .duration(60) + .circuit(9) + .EUt(GTValues.VA[GTValues.ULV]) + + //Cutting + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless(`2x tfc:small_${stage}_hide`, [ + `1x tfc:medium_${stage}_hide`, + '#forge:shears' + ]).id(`tfg:tfc/medium_to_small_${stage}_hide`) + ) + + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless(`3x tfc:small_${stage}_hide`, [ + `1x tfc:large_${stage}_hide`, + '#forge:shears' + ]).id(`tfg:tfc/large_to_small_${stage}_hide`) + ) + + event.recipes.gtceu.assembler(`tfg:gtceu/assembler/medium_to_small_${stage}_hide`) + .itemOutputs(`2x tfc:small_${stage}_hide`) + .itemInputs(`1x tfc:medium_${stage}_hide`) + .duration(60) + .circuit(4) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.assembler(`tfg:gtceu/assembler/large_to_small_${stage}_hide`) + .itemOutputs(`3x tfc:small_${stage}_hide`) + .itemInputs(`1x tfc:large_${stage}_hide`) + .duration(60) + .circuit(6) + .EUt(GTValues.VA[GTValues.ULV]) + }); + +} diff --git a/kubejs/server_scripts/tfg/recipes.paper.js b/kubejs/server_scripts/tfg/primitive/recipes.paper.js similarity index 91% rename from kubejs/server_scripts/tfg/recipes.paper.js rename to kubejs/server_scripts/tfg/primitive/recipes.paper.js index ced487b9f..63cc6a933 100644 --- a/kubejs/server_scripts/tfg/recipes.paper.js +++ b/kubejs/server_scripts/tfg/primitive/recipes.paper.js @@ -5,7 +5,34 @@ * @param {Internal.RecipesEventJS} event */ function registerTFGPapermakingRecipes(event) { - + + event.recipes.gtceu.cutter('tfg:unrefined_paper') + .itemInputs('tfc:unrefined_paper') + .itemOutputs('minecraft:paper') + .duration(100) + .EUt(7) + + event.recipes.gtceu.chemical_bath('paper_from_papyrus_distilled') + .itemInputs('tfc:papyrus') + .inputFluids(Fluid.of('gtceu:distilled_water', 100)) + .itemOutputs('4x tfc:soaked_papyrus_strip') + .duration(100) + .EUt(7) + + event.recipes.gtceu.chemical_bath('paper_from_papyrus') + .itemInputs('tfc:papyrus') + .inputFluids("#tfg:clean_water 100") + .itemOutputs('4x tfc:soaked_papyrus_strip') + .duration(100) + .EUt(7) + + event.recipes.gtceu.assembler('papyrus_strips') + .itemInputs('4x tfc:soaked_papyrus_strip') + .itemOutputs('minecraft:paper') + .circuit(1) + .duration(100) + .EUt(7) + const generateVatRecipe = (id, inputItem, fluid, fluidAmount, output) => { event.custom({ "type": "firmalife:vat", diff --git a/kubejs/server_scripts/tfg/primitive/recipes.rubber.js b/kubejs/server_scripts/tfg/primitive/recipes.rubber.js new file mode 100644 index 000000000..5920707dd --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.rubber.js @@ -0,0 +1,145 @@ +"use strict"; + +function registerTFGRubberRecipes(event) { + + // Tapping + event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/rubber_fig")) + .resultFluid(Fluid.of("tfg:latex", 2)) + .minTemp(4) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/latex/rubber_fig") + event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_rubber_fig")) + .resultFluid(Fluid.of("tfg:latex", 2)) + .minTemp(4) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/latex/ancient_rubber_fig") + + event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/hevea")) + .resultFluid(Fluid.of("tfg:latex", 3)) + .minTemp(8) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/latex/hevea") + event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_hevea")) + .resultFluid(Fluid.of("tfg:latex", 3)) + .minTemp(8) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/latex/ancient_hevea") + + event.recipes.afc.tree_tapping(TFC.blockIngredient("tfc:wood/log/kapok")) + .resultFluid(Fluid.of("tfg:latex", 4)) + .minTemp(12) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/kapok_latex") + event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_kapok")) + .resultFluid(Fluid.of("tfg:latex", 4)) + .minTemp(12) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/ancient_kapok_latex") + + // Latex + event.recipes.gtceu.extractor('latex_from_log') + .itemInputs('#tfg:latex_logs') + .outputFluids(Fluid.of('tfg:latex', 250)) + .duration(600) + .EUt(20) + + event.recipes.gtceu.extractor('latex_from_sapling') + .itemInputs('#tfg:rubber_saplings') + .outputFluids(Fluid.of('tfg:latex', 100)) + .duration(750) + .EUt(20) + + event.recipes.gtceu.extractor('latex_from_leaves') + .itemInputs('#tfg:rubber_leaves') + .outputFluids(Fluid.of('tfg:latex', 50)) + .duration(750) + .EUt(20) + + // Sticky resin + event.recipes.tfc.pot('tfc:powder/wood_ash', Fluid.of('tfg:latex', 1000), 1200, 300) + .itemOutput('gtceu:sticky_resin') + .id('tfg:pot/sticky_resin_from_latex') + + event.recipes.tfc.pot('tfc:powder/wood_ash', Fluid.of('tfg:conifer_pitch', 1000), 1200, 300) + .itemOutput('gtceu:sticky_resin') + .id('tfg:pot/sticky_resin_from_conifer_pitch') + + event.recipes.gtceu.fluid_solidifier('tfg:fluid_solidifier/latex_to_sticky_resin') + .duration(12 * 20) + .EUt(30) + .itemInputs('tfc:powder/wood_ash') + .itemOutputs('gtceu:sticky_resin') + .inputFluids(Fluid.of('tfg:latex', 1000)) + + event.recipes.gtceu.fluid_solidifier('tfg:fluid_solidifier/pitch_to_sticky_resin') + .duration(12 * 20) + .EUt(30) + .itemInputs('tfc:powder/wood_ash') + .itemOutputs('gtceu:sticky_resin') + .inputFluids(Fluid.of('tfg:conifer_pitch', 1000)) + + // Rubber Processing Line + event.recipes.firmalife.vat() + .inputs('tfc:powder/sulfur', Fluid.of('tfg:latex', 1000)) + .outputFluid(Fluid.of('tfg:vulcanized_latex', 1000)) + .length(300) + .temperature(300) + .id('tfg:vat/vulcanized_latex') + + event.recipes.tfc.pot('tfc:powder/sulfur', Fluid.of('tfg:latex', 1000), 1200, 300) + .fluidOutput(Fluid.of('tfg:vulcanized_latex', 1000)) + .id('tfg:pot/vulcanized_latex') + + event.recipes.gtceu.chemical_reactor('tfg:latex_to_vulcanized_latex') + .duration(100) + .EUt(20) + .itemInputs('tfc:powder/sulfur') + .inputFluids(Fluid.of('tfg:latex', 1000)) + .outputFluids(Fluid.of('tfg:vulcanized_latex', 1000)) + + event.recipes.gtceu.fluid_solidifier('tfg:vulcanized_latex_to_raw_rubber_pulp') + .duration(100) + .EUt(20) + .inputFluids(Fluid.of('tfg:vulcanized_latex', 1000)) + .itemOutputs('4x gtceu:raw_rubber_dust') + + event.recipes.gtceu.fluid_solidifier('tfg:solidify_glue') + .inputFluids(Fluid.of('gtceu:glue', 50)) + .notConsumable('gtceu:ball_casting_mold') + .itemOutputs('tfc:glue') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.centrifuge('tfg:centrifuge_rosin') + .itemInputs('tfg:conifer_rosin') + .outputFluids(Fluid.of('gtceu:glue', 50)) + .itemOutputs('2x #forge:dusts/carbon') + .chancedOutput('gtceu:plant_ball', 7500, 0) + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.centrifuge('tfg:centrifuge_sticky_resin') + .itemInputs('gtceu:sticky_resin') + .outputFluids(Fluid.of('gtceu:glue', 100)) + .itemOutputs('3x #forge:dusts/carbon') + .chancedOutput('gtceu:plant_ball', 5000, 0) + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.chemical_reactor(`tfg:treat_latex_plants_into_latex`) + .itemInputs('16x #tfg:rubber_plants', 'gtceu:tiny_sodium_hydroxide_dust') + .circuit(1) + .outputFluids(Fluid.of('tfg:latex', 1000)) + .duration(200) + .EUt(20) + + event.recipes.gtceu.centrifuge('rubber_log_separation') + .itemInputs('#tfg:latex_logs') + .chancedOutput('gtceu:raw_rubber_dust', 5000, 0) + .chancedOutput('gtceu:plant_ball', 3750, 0) + .chancedOutput('gtceu:sticky_resin', 2500, 0) + .chancedOutput('gtceu:wood_dust', 2500, 0) + .outputFluids(Fluid.of('gtceu:methane', 60)) + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.MV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.supports.js b/kubejs/server_scripts/tfg/primitive/recipes.supports.js similarity index 100% rename from kubejs/server_scripts/tfg/recipes.supports.js rename to kubejs/server_scripts/tfg/primitive/recipes.supports.js diff --git a/kubejs/server_scripts/tfg/primitive/recipes.vases.js b/kubejs/server_scripts/tfg/primitive/recipes.vases.js new file mode 100644 index 000000000..ac6355a85 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.vases.js @@ -0,0 +1,59 @@ +"use strict"; + +function registerTFGVaseRecipes(event) { + + global.MINECRAFT_DYE_NAMES.forEach(color => { + event.recipes.gtceu.chemical_bath(`tfg:chemical_bath/dyeing/decorative_vase/unfired/${color}`) + .itemInputs('#tfg:decorative_vases/unfired') + .inputFluids(Fluid.of(`tfc:${color}_dye`, 25)) + .itemOutputs(`tfg:decorative_vase/unfired/${color}`) + .duration(80) + .EUt(GTValues.VA[GTValues.ULV]) + .category(GTRecipeCategories.CHEM_DYES) + + event.recipes.tfc.heating(`tfg:decorative_vase/unfired/${color}`, 1399) + .resultItem(`tfg:decorative_vase/${color}`) + .id(`tfg:heating/decorative_vase/unfired/${color}`) + + event.recipes.tfc.barrel_sealed(1000) + .outputItem(`tfg:decorative_vase/unfired/${color}`) + .inputItem(Ingredient.of('#tfg:decorative_vases/unfired').subtract(`tfg:decorative_vase/unfired/${color}`)) + .inputFluid(Fluid.of(`tfc:${color}_dye`, 25)) + .id(`tfg:barrel/dyeing/decorative_vase/${color}`) + + event.smelting( + `1x tfg:decorative_vase/${color}`, + `tfg:decorative_vase/unfired/${color}` + ).id(`tfg:smelting/decorative_vase/${color}`) + }) + + event.recipes.gtceu.chemical_bath(`tfg:chemical_bath/bleaching/decorative_vase/unfired`) + .itemInputs('#tfg:decorative_vases/unfired') + .inputFluids(Fluid.of('gtceu:chlorine', 72)) + .itemOutputs('tfg:decorative_vase/unfired') + .duration(80) + .EUt(GTValues.VA[GTValues.ULV]) + .category(GTRecipeCategories.CHEM_DYES) + + event.smelting( + '1x tfg:decorative_vase', + 'tfg:decorative_vase/unfired' + ).id('tfg:smelting/decorative_vase') + + event.recipes.tfc.heating('tfg:decorative_vase/unfired', 1399) + .resultItem('tfg:decorative_vase') + .id('tfg:heating/decorative_vase/unfired') + + event.recipes.tfc.knapping( + 'tfg:decorative_vase/unfired', + 'tfc:clay', + [ + ' X X ', + 'XX XX', + 'X X', + 'X X', + 'XXXXX' + ] + ).outsideSlotRequired(false) + .id('tfg:knapping/decorative_vase/unfired') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.wax.js b/kubejs/server_scripts/tfg/primitive/recipes.wax.js new file mode 100644 index 000000000..e3376285f --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.wax.js @@ -0,0 +1,138 @@ +"use strict"; + +function registerTFGWaxRecipes(event) { + + //forge:wax + event.replaceInput({}, 'firmalife:beeswax', '#forge:wax') + + //paraffin + event.recipes.gtceu.chemical_reactor('tfg:paraffin_wax_from_lubricant') + .circuit(7) + .itemOutputs('6x tfg:paraffin_wax') + .outputFluids(Fluid.of('gtceu:oil_light', 25)) + .inputFluids(Fluid.of('gtceu:lubricant', 250), Fluid.of('gtceu:acetone', 25)) + .duration(500) + .EUt(GTValues.VA[GTValues.LV]) + + // Tapping + event.recipes.afc.tree_tapping(TFC.blockIngredient("tfc:wood/log/aspen")) + .resultFluid(Fluid.of('tfg:conifer_pitch', 2)) + .minTemp(-10) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/aspen_resin") + event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_aspen")) + .resultFluid(Fluid.of('tfg:conifer_pitch', 2)) + .minTemp(-10) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/ancient_aspen_resin") + + event.recipes.afc.tree_tapping(TFC.blockIngredient("tfc:wood/log/spruce")) + .resultFluid(Fluid.of('tfg:conifer_pitch', 4)) + .minTemp(-15) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/spruce_resin") + event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_spruce")) + .resultFluid(Fluid.of('tfg:conifer_pitch', 4)) + .minTemp(-15) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/ancient_spruce_resin") + + event.recipes.afc.tree_tapping(TFC.blockIngredient("tfc:wood/log/white_cedar")) + .resultFluid(Fluid.of('tfg:conifer_pitch', 3)) + .minTemp(-8) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/white_cedar_resin") + event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_white_cedar")) + .resultFluid(Fluid.of('tfg:conifer_pitch', 3)) + .minTemp(-8) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/ancient_white_cedar_resin") + + event.recipes.afc.tree_tapping(TFC.blockIngredient('tfc:wood/log/douglas_fir')) + .resultFluid(Fluid.of('tfg:conifer_pitch', 2)) + .minTemp(-8) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/douglas_fir_resin") + event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_douglas_fir")) + .resultFluid(Fluid.of('tfg:conifer_pitch', 2)) + .minTemp(-8) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/ancient_douglas_fir_resin") + + // Conifer Pitch + event.recipes.gtceu.extractor('conifer_from_log') + .itemInputs('#tfg:rosin_logs') + .outputFluids(Fluid.of('tfg:conifer_pitch', 250)) + .duration(600) + .EUt(20) + + event.recipes.gtceu.extractor('conifer_from_sapling') + .itemInputs('#tfg:rosin_saplings') + .outputFluids(Fluid.of('tfg:conifer_pitch', 100)) + .duration(750) + .EUt(20) + + event.recipes.gtceu.extractor('conifer_from_leaves') + .itemInputs('#tfg:rosin_leaves') + .outputFluids(Fluid.of('tfg:conifer_pitch', 50)) + .duration(750) + .EUt(20) + + event.recipes.gtceu.centrifuge('conifer_log_separation') + .itemInputs('#tfg:rosin_logs') + .chancedOutput('tfg:conifer_rosin', 7500, 0) + .chancedOutput('gtceu:plant_ball', 3750, 0) + .chancedOutput('gtceu:sticky_resin', 2500, 0) + .chancedOutput('gtceu:wood_dust', 2500, 0) + .outputFluids(Fluid.of('gtceu:methane', 60)) + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.MV]) + + // Rosin + event.recipes.firmalife.vat() + .inputs('tfc:powder/charcoal', Fluid.of('tfg:conifer_pitch', 1000)) + .outputItem('tfg:conifer_rosin') + .id('tfg:vat/conifer_pitch_to_rosin'); + + event.recipes.tfc.pot('tfc:powder/charcoal', Fluid.of('tfg:conifer_pitch', 1000), 1200, 300) + .itemOutput('tfg:conifer_rosin') + .id('tfg:pot/conifer_pitch_to_rosin') + + event.recipes.gtceu.fluid_solidifier('tfg:pitch_to_rosin') + .inputFluids(Fluid.of('tfg:conifer_pitch', 1000)) + .itemInputs('tfc:powder/charcoal') + .itemOutputs('tfg:conifer_rosin') + .duration(20 * 12) + .EUt(GTValues.VA[GTValues.LV]) + + //#region Wax Unification + + // Recipe Removals + event.remove({ id: 'gtceu:extractor/extract_honeycomb_block' }); + event.remove({ id: 'gtceu:extractor/extract_honeycomb' }); + event.remove({ id: 'gtceu:extractor/extract_wax_dust' }); + + // Extractor Recipe + event.recipes.gtceu.extractor('tfg:wax_melting') + .itemInputs(Ingredient.of('#forge:wax')) + .outputFluids(Fluid.of('gtceu:wax', 144)) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.LV]) + .category(GTRecipeCategories.EXTRACTOR_RECYCLING); + + event.recipes.gtceu.extractor('tfg:tiny_wax_dust_melting') + .itemInputs(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Wax, 1)) + .outputFluids(Fluid.of('gtceu:wax', 16)) + .duration(10) + .EUt(GTValues.VA[GTValues.LV]) + .category(GTRecipeCategories.EXTRACTOR_RECYCLING); + + event.recipes.gtceu.extractor('tfg:small_wax_dust_melting') + .itemInputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Wax, 1)) + .outputFluids(Fluid.of('gtceu:wax', 36)) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + .category(GTRecipeCategories.EXTRACTOR_RECYCLING); + + //#endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.wood.js b/kubejs/server_scripts/tfg/primitive/recipes.wood.js new file mode 100644 index 000000000..23367a412 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.wood.js @@ -0,0 +1,236 @@ +๏ปฟ"use strict"; + +function registerTFGWoodRecipes(event) { + + event.replaceInput({ output: '#tfc:sewing_tables'}, '#forge:shears', '#forge:tools/knives') + event.replaceInput({ id: 'gtceu:shaped/powderbarrel' }, 'gtceu:wood_plate', '#tfc:lumber') + + // Wood ash + event.smelting('4x tfc:powder/wood_ash', '1x #minecraft:logs_that_burn').id('tfg:wood_ash') + + event.recipes.gtceu.chemical_reactor('tfg:wood_ash_to_wood_gas_air') + .itemInputs('8x tfc:powder/wood_ash') + .inputFluids(Fluid.of('gtceu:air', 100)) + .outputFluids('gtceu:wood_gas 100') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.create.splashing([Item.of('tfc:powder/wood_ash').withChance(0.25), Item.of('minecraft:stick').withChance(0.25)], 'tfc:torch') + .id('tfg:splashing/wash_torch') + + // Just a dummy recipe to tell people they can get wood ash by throwing torches in water via TFC + event.custom({ + type: "ae2:transform", + circumstance: { + type: "fluid", + tag: "tfc:water" + }, + ingredients: [{ item: 'tfc:torch' }], + result: { item: 'tfc:powder/wood_ash' } + }).id(`tfg:ae_transform/torch_to_wood_ash`) + + // Ladder + event.shaped('8x minecraft:ladder', [ + 'A A', + 'AAA', + 'A A' + ], { + A: '#forge:rods/wooden' + }).id('gtceu:shaped/ladder') + + event.shaped('8x minecraft:ladder', [ + 'A A', + 'AAA', + 'A A' + ], { + A: '#tfc:lumber' + }).id('tfc:crafting/vanilla/ladder') + + event.replaceInput({ id: 'tfc:crafting/vanilla/armor_stand' }, '#minecraft:planks', '#tfc:lumber') + event.remove({ id: 'tfc:crafting/vanilla/armor_stand_bulk' }) + + // Treated Wood + event.remove({ id: 'gtceu:shaped/treated_wood_planks' }) + + event.recipes.tfc.barrel_sealed(4000) + .outputItem('gtceu:treated_wood_planks') + .inputs('#minecraft:planks', TFC.fluidStackIngredient('#forge:creosote', 100)) + .id('tfg:barrel/treated_wood_planks') + + event.recipes.tfc.barrel_sealed(2000) + .outputItem('gtceu:treated_wood_dust') + .inputs('#tfg:wood_dusts', TFC.fluidStackIngredient('#forge:creosote', 50)) + .id('tfg:barrel/treated_wood_dust') + + event.shaped('2x gtceu:treated_wood_door', [ + 'AA ', + 'AA ', + 'AA ' + ], { + A: 'gtceu:treated_wood_plate' + }).id('tfg:shaped/treated_door') + + event.shaped('3x gtceu:treated_wood_trapdoor', [ + 'AAA', + 'AAA', + ' ' + ], { + A: 'gtceu:treated_wood_plate' + }).id('tfg:shaped/treated_trapdoor') + + event.shaped('gtceu:treated_wood_pressure_plate', [ + ' B ', + 'CDC', + ' E ' + ], { + B: '#tfc:hammers', + C: 'gtceu:treated_wood_slab', + D: '#forge:small_springs', + E: '#forge:tools/screwdrivers' + }).id('gtceu:shaped/treated_pressure_plate') + + event.recipes.gtceu.assembler('gtceu:treated_pressure_plate') + .itemInputs('#forge:small_springs', '2x gtceu:treated_wood_slab') + .itemOutputs('gtceu:treated_wood_pressure_plate') + .circuit(3) + .duration(50) + .EUt(2) + + event.replaceOutput({ id: 'gtceu:cutter/treated_button' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button') + event.replaceOutput({ id: 'gtceu:cutter/treated_button_water' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button') + event.replaceOutput({ id: 'gtceu:cutter/treated_button_distilled_water' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button') + + event.replaceOutput({ id: 'gtceu:cutter/bamboo_button' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button') + event.replaceOutput({ id: 'gtceu:cutter/bamboo_button_water' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button') + event.replaceOutput({ id: 'gtceu:cutter/bamboo_button_distilled_water' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button') + + // Empty Wooden Form + event.shaped('gtceu:empty_wooden_form', [ + ' AA', + 'BAA' + ], { + A: '#minecraft:planks', + B: '#forge:tools/saws' + }).id('gtceu:shaped/plank_to_wooden_shape') + + // Wood gears + event.shaped('gtceu:small_wood_gear', [ + 'AB ', + 'BCB', + ' B ' + ], { + A: '#forge:tools/saws', + B: '#forge:rods/wooden', + C: 'tfc:glue' + }).id('gtceu:shaped/small_gear_wood') + + event.shaped('gtceu:wood_gear', [ + 'AB ', + 'BCB', + ' B ' + ], { + A: '#forge:tools/saws', + B: '#minecraft:planks', + C: 'tfc:glue' + }).id('gtceu:shaped/gear_wood') + + // Sticks + event.shapeless('2x minecraft:stick', ['#minecraft:saplings', '#forge:tools/knives']).id('tfg:strip_saplings') + + event.recipes.gtceu.cutter('tfg:saplings_to_sticks') + .itemInputs('#minecraft:saplings') + .itemOutputs('2x minecraft:stick') + .duration(20) + .EUt(7) + + event.recipes.gtceu.packer('tfg:stick_bunch') + .itemInputs('9x #forge:rods/wooden') + .circuit(5) + .itemOutputs('tfc:stick_bunch') + .duration(50) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.packer('tfg:stick_bundle') + .itemInputs('18x #forge:rods/wooden') + .circuit(8) + .itemOutputs('tfc:stick_bundle') + .duration(50) + .EUt(GTValues.VA[GTValues.ULV]) + + + // ะšะฐะบะธะต ั‚ะพ ั€ะตั†ะตะฟั‚ั‹ ะดะตั€ะตะฒะฐ + global.TFC_WOOD_TYPES.forEach(wood => { + event.remove({ id: `tfc:crafting/wood/${wood}_axle` }) + event.remove({ id: `tfc:crafting/wood/${wood}_bladed_axle` }) + event.remove({ id: `tfc:crafting/wood/${wood}_encased_axle` }) + event.remove({ id: `tfc:crafting/wood/${wood}_clutch` }) + event.remove({ id: `tfc:crafting/wood/${wood}_gear_box` }) + event.remove({ id: `tfc:crafting/wood/${wood}_water_wheel` }) + + // ะ‘ั€ะตะฒะฝะฐ -> ะŸะธะปะพะผะฐั‚ะตั€ะธะฐะปั‹ + generateCutterRecipe(event, `#tfc:${wood}_logs`, `16x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_log`) + + // ะ”ะพัะบะธ -> ะŸะธะปะพะผะฐั‚ะตั€ะธะฐะปั‹ + generateCutterRecipe(event, `tfc:wood/planks/${wood}`, `4x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_planks`) + + // ะกั‚ัƒะฟะตะฝัŒ -> ะŸะธะปะพะผะฐั‚ะตั€ะธะฐะปั‹ + generateCutterRecipe(event, `tfc:wood/planks/${wood}_stairs`, `3x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_stairs`) + + + // ะŸะปะธั‚ะฐ -> ะŸะธะปะพะผะฐั‚ะตั€ะธะฐะปั‹ + generateCutterRecipe(event, `tfc:wood/planks/${wood}_slab`, `2x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_slab`) + + // ? -> ะ”ะตั€ะตะฒัะฝะฝะฐั ะฝะฐะถะธะผะฝะฐั ะฟะปะฐัั‚ะธะฝะฐ + event.shaped(`tfc:wood/planks/${wood}_pressure_plate`, [ + ' B ', + 'CDC', + ' E ' + ], { + B: '#tfc:hammers', + C: `tfc:wood/planks/${wood}_slab`, + D: '#forge:small_springs', + E: '#forge:tools/screwdrivers' + }).id(`tfc:crafting/wood/${wood}_pressure_plate`) + + event.recipes.gtceu.assembler(`${wood}_pressure_plate`) + .itemInputs('#forge:small_springs', `2x tfc:wood/planks/${wood}_slab`) + .circuit(3) + .itemOutputs(`2x tfc:wood/planks/${wood}_pressure_plate`) + .duration(50) + .EUt(2) + + // ? -> ะ”ะตั€ะตะฒัะฝะฝะฐั ะบะฝะพะฟะบะฐ + event.remove({ id: `tfc:crafting/wood/${wood}_button` }) + + generateCutterRecipe(event, `tfc:wood/planks/${wood}_pressure_plate`, `6x tfc:wood/planks/${wood}_button`, 50, 7, `${wood}_button`) + + // Stripped logs + event.recipes.gtceu.lathe(`tfg:stripping_${wood}_log`) + .itemInputs(`tfc:wood/log/${wood}`) + .itemOutputs(`tfc:wood/stripped_log/${wood}`) + .duration(50) + .EUt(2) + + event.recipes.gtceu.lathe(`tfg:stripping_${wood}_wood`) + .itemInputs(`tfc:wood/wood/${wood}`) + .itemOutputs(`tfc:wood/stripped_wood/${wood}`) + .duration(50) + .EUt(2) + + event.custom({ + type: 'vintageimprovements:polishing', + ingredients: [{ item: `tfc:wood/log/${wood}` }], + results: [{ item: `tfc:wood/stripped_log/${wood}` }], + speed_limits: 0, + processingTime: 50 + }).id(`tfg:vi/lathe/stripping_${wood}_log`) + + event.custom({ + type: 'vintageimprovements:polishing', + ingredients: [{ item: `tfc:wood/wood/${wood}` }], + results: [{ item: `tfc:wood/stripped_wood/${wood}` }], + speed_limits: 0, + processingTime: 50 + }).id(`tfg:vi/lathe/stripping_${wood}_wood`) + }) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/tags.primitive.js b/kubejs/server_scripts/tfg/primitive/tags.primitive.js new file mode 100644 index 000000000..02915188c --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/tags.primitive.js @@ -0,0 +1,88 @@ +"use strict"; + +function registerTFGPrimitiveItemTags(event) { + + //Decorative Vases + global.MINECRAFT_DYE_NAMES.forEach(color => { + event.add('c:hidden_from_recipe_viewers', `tfg:decorative_vase/generated/${color}`) + event.add('tfg:decorative_vases/generated', `tfg:decorative_vase/generated/${color}`) + event.add('tfg:decorative_vases', `tfg:decorative_vase/${color}`) + event.add('tfg:decorative_vases/unfired', `tfg:decorative_vase/unfired/${color}`) + }) + event.add('tfg:decorative_vases', 'tfg:decorative_vase') + event.add('tfg:decorative_vases/unfired', 'tfg:decorative_vase/unfired') + + //Knapping + event.add('tfc:any_knapping', 'minecraft:flint') + + // Tools + event.add('forge:tools/fishing_nets', 'tfg:fishing_net/wood') + event.add('forge:tools/fishing_nets', 'tfg:fishing_net/brass') + event.add('forge:tools/fishing_nets', 'tfg:fishing_net/rose_gold') + event.add('forge:tools/fishing_nets', 'tfg:fishing_net/sterling_silver') + event.add('forge:tools/fishing_nets', 'tfg:fishing_net/invar') + event.add('forge:tools/fishing_nets', 'tfg:fishing_net/tin_alloy') + event.add('forge:tools/fishing_nets', 'tfg:fishing_net/cupronickel') + event.add('forge:tools/fishing_nets', 'tfg:fishing_net/magnalium') + + event.add('forge:tools/trowels', 'tfg:trowel') + + event.add('tfg:harvester', 'tfg:harvest_basket') + event.add('tfg:harvester', 'tfg:aluminium_harvest_basket') + + event.add('tfg:tools/ore_prospectors/copper', 'tfc:metal/propick/copper') + event.add('tfg:tools/ore_prospectors/bronze', 'tfc:metal/propick/bronze') + event.add('tfg:tools/ore_prospectors/bronze', 'tfc:metal/propick/bismuth_bronze') + event.add('tfg:tools/ore_prospectors/bronze', 'tfc:metal/propick/black_bronze') + event.add('tfg:tools/ore_prospectors/wrought_iron', 'tfc:metal/propick/wrought_iron') + event.add('tfg:tools/ore_prospectors/steel', 'tfc:metal/propick/steel') + event.add('tfg:tools/ore_prospectors/black_steel', 'tfc:metal/propick/black_steel') + event.add('tfg:tools/ore_prospectors/blue_steel', 'tfc:metal/propick/blue_steel') + event.add('tfg:tools/ore_prospectors/red_steel', 'tfc:metal/propick/red_steel') + + // Paper from wood + event.add('tfg:hardwood_strips', 'tfg:hardwood_strip') + event.add('tfg:hardwood_strips', 'tfg:soaked_hardwood_strip') + //Adding any of these dusts to the forge dusts/wood tag will make it so you can craft softwood pulp using hardwood pulp. which is not ok. + event.add('tfg:wood_dusts', 'gtceu:hardwood_dust') + event.add('tfg:tiny_wood_dusts', 'gtceu:tiny_hardwood_dust') + event.add('tfg:small_wood_dusts', 'gtceu:small_hardwood_dust') + event.add('tfg:wood_dusts', 'gtceu:wood_dust') + event.add('tfg:tiny_wood_dusts', 'gtceu:tiny_wood_dust') + event.add('tfg:small_wood_dusts', 'gtceu:small_wood_dust') + + // Waxe + event.add('forge:wax', 'gtceu:wax_dust'); + event.add('forge:wax', 'tfg:paraffin_wax') + event.add('forge:wax', 'firmalife:beeswax') + event.add('forge:wax', 'tfg:conifer_rosin') + event.add('forge:wax', 'tfg:crimsene_gem') + event.add('forge:wax', 'tfg:warpane_gem') + + // Cloth & String + event.add('tfg:lightweight_cloth', 'tfc:silk_cloth') + event.add('tfg:lightweight_cloth', 'tfg:phantom_silk') + event.add('tfg:lightweight_cloth', 'tfg:polycaprolactam_fabric') + event.add('forge:cloth', 'tfg:phantom_silk') + event.add('forge:cloth', 'tfg:polycaprolactam_fabric') + event.add('tfc:high_quality_cloth', 'tfg:phantom_silk') + event.add('tfc:high_quality_cloth', 'tfg:polycaprolactam_fabric') + event.add('tfc:sewing_light_cloth', 'tfg:phantom_silk') + event.add('tfc:sewing_dark_cloth', 'tfg:polycaprolactam_fabric') + event.add('forge:string', 'tfg:phantom_thread') + event.add('forge:string', 'tfg:polycaprolactam_string') + event.add('forge:string', 'firmalife:pineapple_yarn') +} + +function registerTFGPrimitiveBlockTags(event) { + event.add('minecraft:mineable/shovel', 'tfg:ash_pile') + + event.add('tfg:harvester_harvestable', '#tfc:fruit_tree_leaves') + event.add('tfg:harvester_harvestable', '#tfc:berry_bushes') + event.add('tfg:harvester_harvestable', '#tfc:any_spreading_bush') + event.add('tfg:harvester_harvestable', '#firmalife:grape_strings') + event.add('tfg:harvester_harvestable', '#firmalife:grape_trellis_posts_plant') + //added for QOL but doesnt harvest anything + event.add('tfg:harvester_harvestable', 'firmalife:grape_fluff_red') + event.add('tfg:harvester_harvestable', 'firmalife:grape_fluff_white') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.js b/kubejs/server_scripts/tfg/recipes.js index 858f97f91..e078a55b3 100644 --- a/kubejs/server_scripts/tfg/recipes.js +++ b/kubejs/server_scripts/tfg/recipes.js @@ -6,22 +6,78 @@ */ const registerTFGRecipes = (event) => { - registerTFGPapermakingRecipes(event) + registerTFGMoldRecipes(event) + registerTFGMiscellaneousRecipes(event) + registerTFGConvertingRecipes(event) + + registerTFGFoodRecipes(event) + registerTFGRefrigeratorRecipes(event) + registerTFGMealBagRecipes(event) + registerTFGBiomassRecipes(event) + + // TFC stone types + registerTFCStoneRecipes(event) + // Non-TFC stone types registerTFGRockRecipes(event) registerTFGCollapseRecipes(event) - registerTFGEarlyPower(event) - registerTFGMoldRecipes(event) - registerTFGMedicineRecipes(event) - registerTFGMiscellaneousRecipes(event) - registerTFGSupportRecipes(event) - registerTFGFishingNetsRecipes(event) - registerTFGConvertingRecipes(event) - registerTFGFoodRecipes(event) - registerTFGSpaceRecipes(event) registerTFGStoneDustRecipes(event) + registerTFGConcreteRecipes(event) + registerTFGAlabasterRecipes(event) + registerTFGDirtRecipes(event) + registerTFGSandRecipes(event) + + registerTFGPapermakingRecipes(event) + registerTFGMedicineRecipes(event) + registerTFGFishingNetsRecipes(event) + registerTFGSupportRecipes(event) + registerTFGVaseRecipes(event) + registerTFGIceRecipes(event) + registerTFGBasketRecipes(event) + registerTFGArrowRecipes(event) + registerTFGCompostRecipes(event) + registerTFGClothRecipes(event) + registerTFGChipboardRecipes(event) + registerTFGWaxRecipes(event) + registerTFGRubberRecipes(event) + registerTFGWoodRecipes(event) + registerTFGKnappingRecipes(event) + registerTFGLeatherRecipes(event) + registerTFGClayRecipes(event) + registerTFGEquipmentRecipes(event) + + registerTFGCasingRecipes(event) + registerTFGEnderPearlRecipes(event) + registerTFGMultiblockRecipes(event) + registerTFGSteamBloomeryRecipes(event) + registerTFGElectronicComponentsRecipes(event) + + registerTFGEarlyGasRecipes(event) + registerTFGBoilerRecipes(event) + registerTFGBiodieselRecipes(event) registerTFGNuclearRecipes(event) registerTFGNuclearComponentsRecipes(event) - registerTFGNOstrumRecipes(event) + registerTFGSolarRecipes(event) + registerTFGCoalRecipes(event) + + registerTFGZirconiumRecipes(event) + registerTFGBromineRecipes(event) + registerTFGTungstenRecipes(event) + registerTFGAlloyingRecipes(event) + registerTFGQuartzRecipes(event) + + registerTFGSpaceRecipes(event) + registerTFGRailgunRecipes(event) + registerTFGRocketRecipes(event) + registerTFGSpaceSuitRecipes(event) + registerTFGInsulationRecipes(event) + + registerTFGMoonRecipes(event) + registerTFGMoonPlantRecipes(event) + registerTFGMoonRegolithRecipes(event) + + registerTFGMarsRecipes(event) + registerTFGMarsIodineRecipes(event) + registerTFGMarsOstrumRecipes(event) + registerTFGBiochemRecipes(event) - registerTFGSpaceOres(event) } diff --git a/kubejs/server_scripts/tfg/recipes.miscellaneous.js b/kubejs/server_scripts/tfg/recipes.miscellaneous.js index 38d61ef34..bfa6163b8 100644 --- a/kubejs/server_scripts/tfg/recipes.miscellaneous.js +++ b/kubejs/server_scripts/tfg/recipes.miscellaneous.js @@ -7,13 +7,9 @@ */ function registerTFGMiscellaneousRecipes(event) { - //tfc:moss + //Moss event.replaceInput({}, 'minecraft:vine', '#tfc:moss') - //forge:wax - event.replaceInput({}, 'firmalife:beeswax', '#forge:wax') - - //Moss event.shapeless('1x minecraft:moss_block', [ '#tfc:dirt', '#tfc:moss' @@ -25,354 +21,13 @@ function registerTFGMiscellaneousRecipes(event) { A: 'minecraft:moss_block' }).id(`tfg:shaped/moss_carpet`) - //paraffin - event.recipes.gtceu.chemical_reactor('tfg:paraffin_wax_from_lubricant') - .circuit(7) - .itemOutputs('6x tfg:paraffin_wax') - .outputFluids(Fluid.of('gtceu:oil_light', 25)) - .inputFluids(Fluid.of('gtceu:lubricant', 250), Fluid.of('gtceu:acetone', 25)) - .duration(500) - .EUt(GTValues.VA[GTValues.LV]) - - // Rosin - event.recipes.firmalife.vat() - .inputs('tfc:powder/charcoal', Fluid.of('tfg:conifer_pitch', 1000)) - .outputItem('tfg:conifer_rosin') - .id('tfg:vat/conifer_pitch_to_rosin'); - - event.recipes.tfc.pot('tfc:powder/charcoal', Fluid.of('tfg:conifer_pitch', 1000), 1200, 300) - .itemOutput('tfg:conifer_rosin') - .id('tfg:pot/conifer_pitch_to_rosin') - - event.recipes.gtceu.fluid_solidifier('tfg:pitch_to_rosin') - .inputFluids(Fluid.of('tfg:conifer_pitch', 1000)) - .itemInputs('tfc:powder/charcoal') - .itemOutputs('tfg:conifer_rosin') - .duration(20 * 12) - .EUt(GTValues.VA[GTValues.LV]) - - // Decorative Vases - global.MINECRAFT_DYE_NAMES.forEach(color => { - event.recipes.gtceu.chemical_bath(`tfg:chemical_bath/dyeing/decorative_vase/unfired/${color}`) - .itemInputs('#tfg:decorative_vases/unfired') - .inputFluids(Fluid.of(`tfc:${color}_dye`, 25)) - .itemOutputs(`tfg:decorative_vase/unfired/${color}`) - .duration(80) - .EUt(GTValues.VA[GTValues.ULV]) - .category(GTRecipeCategories.CHEM_DYES) - - event.recipes.tfc.heating(`tfg:decorative_vase/unfired/${color}`, 1399) - .resultItem(`tfg:decorative_vase/${color}`) - .id(`tfg:heating/decorative_vase/unfired/${color}`) - - event.recipes.tfc.barrel_sealed(1000) - .outputItem(`tfg:decorative_vase/unfired/${color}`) - .inputItem(Ingredient.of('#tfg:decorative_vases/unfired').subtract(`tfg:decorative_vase/unfired/${color}`)) - .inputFluid(Fluid.of(`tfc:${color}_dye`, 25)) - .id(`tfg:barrel/dyeing/decorative_vase/${color}`) - - event.smelting( - `1x tfg:decorative_vase/${color}`, - `tfg:decorative_vase/unfired/${color}` - ).id(`tfg:smelting/decorative_vase/${color}`) - }) - - event.recipes.gtceu.chemical_bath(`tfg:chemical_bath/bleaching/decorative_vase/unfired`) - .itemInputs('#tfg:decorative_vases/unfired') - .inputFluids(Fluid.of('gtceu:chlorine', 72)) - .itemOutputs('tfg:decorative_vase/unfired') - .duration(80) - .EUt(GTValues.VA[GTValues.ULV]) - .category(GTRecipeCategories.CHEM_DYES) - - event.smelting( - '1x tfg:decorative_vase', - 'tfg:decorative_vase/unfired' - ).id('tfg:smelting/decorative_vase') - - event.recipes.tfc.heating('tfg:decorative_vase/unfired', 1399) - .resultItem('tfg:decorative_vase') - .id('tfg:heating/decorative_vase/unfired') - - event.recipes.tfc.knapping( - 'tfg:decorative_vase/unfired', - 'tfc:clay', - [ - ' X X ', - 'XX XX', - 'X X', - 'X X', - 'XXXXX' - ] - ).outsideSlotRequired(false) - .id('tfg:knapping/decorative_vase/unfired') - - - //Scaffolding Frame - event.shaped('tfg:scaffolding_frame', - [ - ' A ', - 'ABA', - ' A ' - ], - { - A: '#forge:rods/wood', - B: '#forge:cloth' - }).id('tfg:shaped/scaffolding_frame'); - - //Airship Hull - event.shaped('tfg:airship_hull', [ - 'A B', - 'C C', - 'CCC' - ], { - A: '#forge:tools/screwdrivers', - B: '#forge:tools/hammers', - C: 'immersive_aircraft:hull' - }).id('tfg:shaped/airship_hull'); - event.recipes.gtceu.assembler('tfg:assembler/airship_hull') - .itemInputs('5x immersive_aircraft:hull') - .itemOutputs('tfg:airship_hull') - .duration(40) - .circuit(1) - .EUt(GTValues.VA[GTValues.ULV]); - - //Airship Balloon - event.shaped('tfg:airship_balloon', [ - 'ABA', - 'BAB', - 'ABA' - ], { - A: '#forge:string', - B: 'immersive_aircraft:sail' - }).id('tfg:shaped/airship_balloon') - - event.recipes.gtceu.assembler('tfg:assembler/airship_balloon') - .itemInputs('4x immersive_aircraft:sail', '4x #forge:string') - .itemOutputs('tfg:airship_balloon') - .duration(40) - .circuit(1) - .EUt(GTValues.VA[GTValues.ULV]) - - // Steam bloomery - event.shaped('gtceu:steam_bloomery', [ - 'CEC', - 'DAD', - 'CBC' - ], { - A: 'tfc:bloomery', - B: '#forge:frames/bronze', - C: '#forge:rods/black_steel', - D: '#forge:screws/wrought_iron', - E: '#forge:tools/wrenches' - }) - - // Arrow Parts - event.recipes.tfc.knapping( - '4x tfg:flint_arrow_head', - 'tfg:flint', - [ - ' XXX', - ' XXXX', - 'XXXXX', - ' XXX ', - ' X ' - ] - ).outsideSlotRequired(false) - .id('tfg:knapping/flint_arrow_head') - - event.recipes.gtceu.assembler('tfg:assembler/flint_arrow_head') - .itemInputs('1x minecraft:flint') - .itemOutputs('4x tfg:flint_arrow_head') - .duration(20) - .circuit(4) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless('4x tfg:fletching', [ - 'minecraft:feather', - '#forge:tools/knives' - ]).id('tfg:shapeless/fletching')) - - event.recipes.gtceu.assembler('tfg:assembler/fletching') - .itemInputs('1x minecraft:feather') - .itemOutputs('4x tfg:fletching') - .duration(20) - .circuit(4) - .EUt(GTValues.VA[GTValues.ULV]) - - event.shaped('4x minecraft:arrow', [ - ' A ', - ' B ', - ' C ' - ], { - A: 'tfg:flint_arrow_head', - B: '#forge:rods/wooden', - C: 'tfg:fletching' - }).id('tfg:shaped/arrow') - - // Ice - event.remove({ id: 'gtceu:compressor/ice_from_dust' }) - event.remove({ id: 'gtceu:compressor/ice_from_snow' }) - - event.shapeless('#forge:dusts/ice', ['#forge:tools/mortars', '4x firmalife:ice_shavings']) - .id('tfg:shaped/ice_shavings') - - event.recipes.tfc.quern('#forge:small_dusts/ice', 'firmalife:ice_shavings') - .id('tfg:quern/ice_dust') - - event.recipes.gtceu.macerator('tfg:macerating_ice_shavings') - .itemInputs('firmalife:ice_shavings') - .itemOutputs('#forge:small_dusts/ice') - .duration(10) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.macerator('tfg:macerating_ice_shavings_reverse') - .itemInputs('#forge:dusts/ice') - .itemOutputs('4x firmalife:ice_shavings') - .duration(20) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.fluid_solidifier('tfg:ice') - .inputFluids("#tfg:clean_water 144") - .notConsumable('gtceu:block_casting_mold') - .itemOutputs('minecraft:ice') - .duration(200) - .EUt(GTValues.VA[GTValues.LV]) - - event.shapeless('4x firmalife:ice_shavings', ['#forge:dusts/ice', '#forge:tools/hammers']) - - event.recipes.gtceu.mixer('tfg:ice_slush_from_dry_ice') - .itemInputs('1x tfg:dry_ice') - .inputFluids("#tfc:water 8000") - .outputFluids(Fluid.of('gtceu:ice', 8000)) - .duration(80) - .EUt(GTValues.VA[GTValues.ULV]) - - // Cooling water - event.recipes.tfc.barrel_sealed(250) - .inputItem('1x tfg:dry_ice') - .inputFluid(Fluid.of('minecraft:water', 5000)) - .outputFluid(Fluid.of('gtceu:ice', 5000)) - .id('tfg:barrel/cooling_water_0') - - event.recipes.tfc.barrel_sealed(1000) - .inputItem('1x #forge:dusts/ice') - .inputFluid(Fluid.of('minecraft:water', 144)) - .outputFluid(Fluid.of('gtceu:ice', 144)) - .id('tfg:barrel/cooling_water_1') - - event.recipes.tfc.barrel_sealed(1000) - .inputItem('16x minecraft:snowball') - .inputFluid(Fluid.of('minecraft:water', 144)) - .outputFluid(Fluid.of('gtceu:ice', 144)) - .id('tfg:barrel/cooling_water_2') - - event.recipes.tfc.barrel_sealed(2000) - .inputItem('1x #forge:dusts/ice') - .inputFluid(Fluid.of('tfc:salt_water', 144)) - .outputFluid(Fluid.of('gtceu:ice', 144)) - .id('tfg:barrel/cooling_water_3') - - event.recipes.tfc.barrel_sealed(2000) - .inputItem('16x minecraft:snowball') - .inputFluid(Fluid.of('tfc:salt_water', 144)) - .outputFluid(Fluid.of('gtceu:ice', 144)) - .id('tfg:barrel/cooling_water_4') - - // Freezing it - event.recipes.tfc.barrel_sealed(3000) - .inputItem('9x #forge:dusts/ice') - .inputFluid(Fluid.of('gtceu:ice', 144)) - .outputItem('minecraft:packed_ice') - .id('tfg:barrel/packed_ice') - - // Heating it back up - event.recipes.tfc.pot([], Fluid.of('gtceu:ice', 144), 300, 100) - .fluidOutput(Fluid.of('minecraft:water', 144)) - - event.recipes.firmalife.vat() - .inputFluid(Fluid.of('gtceu:ice', 144)) - .outputFluid(Fluid.of('minecraft:water', 144)) - .length(300) - .temperature(100) - - // Snow - event.recipes.firmalife.stomping('minecraft:snow', 'minecraft:snowball', - 'minecraft:block/snow', 'minecraft:block/snow', 'minecraft:block.snow.place') - .id('tfg:stomping/snow_layer') - - event.shapeless('minecraft:snow_block', ['8x minecraft:snow']) - .id('tfg:shapeless/snow_block') - - event.shapeless('8x minecraft:snowball', ['minecraft:snow_block']) - .id('tfg:shapeless/snowball') - - event.shapeless('8x minecraft:snow', ['minecraft:snow_block', '#forge:tools/saws']) - .id('tfg:shapeless/snow') - - //Cloth & String - event.recipes.gtceu.wiremill('tfg:wiremill/phantom_thread') - .itemInputs('1x minecraft:phantom_membrane') - .itemOutputs('16x tfg:phantom_thread') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.wiremill('tfg:wiremill/polycaprolactam_string') - .itemInputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Polycaprolactam, 1)) - .itemOutputs('32x tfg:polycaprolactam_string') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.assembler('tfg:assembler/phantom_silk') - .itemInputs('16x tfg:phantom_thread') - .itemOutputs('1x tfg:phantom_silk') - .duration(100) - .circuit(3) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.assembler('tfg:assembler/polycaprolactam_fabric') - .itemInputs('16x tfg:polycaprolactam_string') - .itemOutputs('1x tfg:polycaprolactam_fabric') - .duration(100) - .circuit(3) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.chemical_bath('tfg:chemical_bath/bleaching/polycaprolactam_string') - .itemInputs('tfg:polycaprolactam_string') - .inputFluids(Fluid.of('gtceu:chlorine', 16)) - .itemOutputs('minecraft:string') - .duration(80) - .EUt(GTValues.VA[GTValues.ULV]) - .category(GTRecipeCategories.CHEM_DYES) - - event.recipes.tfc.loom( - '1x tfg:phantom_silk', - '16x tfg:phantom_thread', - 8, - 'tfg:block/phantom_silk_block' - ) - - event.recipes.tfc.loom( - '1x tfg:polycaprolactam_fabric', - '16x tfg:polycaprolactam_string', - 8, - 'tfg:block/polycaprolactam_fabric_block' - ) - - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless('16x tfg:phantom_thread', [ - 'minecraft:phantom_membrane', - 'tfc:spindle' - ]).id('tfg:shapeless/phantom_thread')) - // Universal Circuit global.UNIVERSAL_CIRCUIT_TIERS.forEach(tier => { event.shapeless(Item.of(`tfg:${tier}_universal_circuit`, 1), [Ingredient.of([`#gtceu:circuits/${tier}`]).subtract([`tfg:${tier}_universal_circuit`])] ).id(`universal_circuits_${tier}`); }); - + // Armor stands event.shapeless('1x tfg:armor_stand_arms', [ 'minecraft:armor_stand' ]).id(`tfg:shapeless/armor_stand_arms`) @@ -381,6 +36,7 @@ function registerTFGMiscellaneousRecipes(event) { 'tfg:armor_stand_arms' ]).id(`tfg:shapeless/armor_stand`) + // Piglin disguise event.recipes.tfc.sewing( '1x tfg:piglin_disguise', [ @@ -397,7 +53,7 @@ function registerTFGMiscellaneousRecipes(event) { ] ).id('tfg:sewing/piglin_disguise') - //trowel + //Trowel event.shaped('tfg:trowel', [ 'DBC', 'AA ', @@ -416,844 +72,6 @@ function registerTFGMiscellaneousRecipes(event) { .circuit(4) .EUt(GTValues.VA[GTValues.ULV]) - // Food related - event.recipes.gtceu.forming_press('tfg:forming_press/foil_pack') - .itemInputs(ChemicalHelper.get(TagPrefix.foil, GTMaterials.Aluminium, 1), ChemicalHelper.get(TagPrefix.foil, GTMaterials.Polyethylene, 1)) - .itemOutputs('1x tfg:foil_pack') - .duration(100) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.gas_pressurizer('tfg:fluid_solidifier/dry_ice') - .inputFluids(Fluid.of('gtceu:carbon_dioxide', 1000)) - .notConsumable('gtceu:block_casting_mold') - .itemOutputs('2x tfg:dry_ice') - .duration(100) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/liq_co2') - .inputFluids(Fluid.of('gtceu:carbon_dioxide', 1000)) - .outputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) - .duration(160) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/dry_ice') - .inputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) - .notConsumable('gtceu:block_casting_mold') - .itemOutputs('10x tfg:dry_ice') - .duration(60) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.fluid_heater('tfg:fluid_heater/decompress_liq_co2') - .itemInputs('1x tfg:dry_ice') - .outputFluids(Fluid.of('gtceu:carbon_dioxide', 100)) - .duration(20) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.fluid_heater('tfg:fluid_heater/decompress_dry_ice') - .inputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 100)) - .outputFluids(Fluid.of('gtceu:carbon_dioxide', 100)) - .duration(20) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.mixer('tfg:clean_foil_pack') - .itemInputs('1x tfg:used_foil_pack') - .inputFluids("#tfg:clean_water 100") - .itemOutputs('1x tfg:clean_foil_pack') - .duration(200) - .circuit(1) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.ore_washer('tfg:ore_washer/distilled/clean_foil_pack') - .itemInputs('1x tfg:used_foil_pack') - .inputFluids(Fluid.of('gtceu:distilled_water', 10)) - .itemOutputs('1x tfg:clean_foil_pack') - .duration(200) - .circuit(2) - .EUt(GTValues.VA[GTValues.ULV]) - - event.custom({ - type: "ae2:transform", - circumstance: { - type: "fluid", - tag: "tfc:water" - }, - ingredients: [ - { item: 'tfg:used_foil_pack' }], - result: { item: 'tfg:clean_foil_pack' } - }).id('tfg:ae_transform/clean_foil_pack') - - event.recipes.greate.splashing(['tfg:clean_foil_pack'], 'tfg:used_foil_pack') - .id('tfg:splashing/clean_foil_pack') - - event.shapeless('1x tfg:used_foil_pack', [ - 'tfg:food/calorie_paste' - ]).id('tfg:shapeless/emptying/calorie_paste') - - event.shapeless('1x tfg:used_foil_pack', [ - 'tfg:food/meal_bag' - ]).id('tfg:shapeless/emptying/meal_bag') - - global.FOOD_FRUIT.forEach(fruit => { - event.shapeless('1x tfg:used_foil_pack', [ - `tfg:food/freeze_dried/${fruit.name}` - ]).id(`tfg:shapeless/emptying/freeze_dried/${fruit.name}`) - }) - - // Refrigerants - - event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/chlorodifluoromethane') - .inputFluids(Fluid.of('gtceu:chloroform', 1000), Fluid.of('gtceu:hydrofluoric_acid', 2000)) - .outputFluids(Fluid.of('tfg:chlorodifluoromethane', 1000), Fluid.of('gtceu:hydrochloric_acid', 2000)) - .duration(480) - .circuit(2) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/breakdown/chlorodifluoromethane') - .inputFluids(Fluid.of('tfg:chlorodifluoromethane', 200)) - .outputFluids(Fluid.of('gtceu:tetrafluoroethylene', 100), Fluid.of('gtceu:hydrochloric_acid', 200)) - .duration(100) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/acetylene') - .inputFluids(Fluid.of('gtceu:methane', 2000), Fluid.of('gtceu:oxygen', 3000)) - .outputFluids(Fluid.of('tfg:acetylene', 1000), Fluid.of('minecraft:water', 3000)) - .circuit(4) - .duration(120) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/1_1_1_2_tetrafluoroethane') - .inputFluids(Fluid.of('tfg:acetylene', 1000), Fluid.of('gtceu:chlorine', 4000), Fluid.of('gtceu:hydrofluoric_acid', 4000)) - .outputFluids(Fluid.of('tfg:1_1_1_2_tetrafluoroethane', 1000), Fluid.of('gtceu:hydrochloric_acid', 4000)) - .circuit(4) - .duration(480) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.cracker('tfg:cracker/isobutane') - .inputFluids(Fluid.of('gtceu:butane', 4000)) - .outputFluids(Fluid.of('tfg:isobutane', 1000), Fluid.of('gtceu:lpg', 3000)) - .circuit(4) - .duration(2400) - .EUt(GTValues.VA[GTValues.HV]) - - // Biofuels - - event.recipes.gtceu.chemical_reactor(`seed_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:seed_oil', 6000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - // So you can craft Biodiesel without Chemical Reactor - event.recipes.gtceu.mixer(`tfg:seed_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:seed_oil', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor(`olive_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('tfc:olive_oil', 4000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - // So you can craft Biodiesel without Chemical Reactor - event.recipes.gtceu.mixer(`tfg:olive_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('tfc:olive_oil', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor(`soybean_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('firmalife:soybean_oil', 4000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - // So you can craft Biodiesel without Chemical Reactor - event.recipes.gtceu.mixer(`tfg:soybean_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('firmalife:soybean_oil', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor(`fish_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:fish_oil', 6000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - // So you can craft Biodiesel without Chemical Reactor - event.recipes.gtceu.mixer(`tfg:fish_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:fish_oil', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor(`olive_oil_ethanol_biodiesel`) - .inputFluids(Fluid.of('tfc:olive_oil', 4000), Fluid.of('gtceu:ethanol', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.LV]) - - event.recipes.gtceu.chemical_reactor(`olive_oil_methanol_biodiesel`) - .inputFluids(Fluid.of('tfc:olive_oil', 4000), Fluid.of('gtceu:methanol', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.LV]) - - event.recipes.gtceu.chemical_reactor(`soybean_oil_ethanol_biodiesel`) - .inputFluids(Fluid.of('firmalife:soybean_oil', 4000), Fluid.of('gtceu:ethanol', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.LV]) - - event.recipes.gtceu.chemical_reactor(`soybean_oil_methanol_biodiesel`) - .inputFluids(Fluid.of('firmalife:soybean_oil', 4000), Fluid.of('gtceu:methanol', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.LV]) - - event.recipes.gtceu.extractor(`rapeseed_oil`) - .itemInputs('tfg:rapeseed_product') - .outputFluids(Fluid.of('gtceu:seed_oil', 600)) - .duration(20 * 5) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.extractor(`sunflower_oil`) - .itemInputs('tfg:sunflower_product') - .outputFluids(Fluid.of('gtceu:seed_oil', 350)) - .duration(20 * 5) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.tfc.barrel_sealed(1000) - .inputs('tfg:rapeseed_product', Fluid.of('minecraft:water', 100)) - .outputFluid(Fluid.of('gtceu:seed_oil', 250)) - .id('tfg:barrel/rapeseed_to_oil') - - event.recipes.tfc.barrel_sealed(1000) - .inputs('tfg:sunflower_product', Fluid.of('minecraft:water', 100)) - .outputFluid(Fluid.of('gtceu:seed_oil', 120)) - .id('tfg:barrel/sunflower_to_oil') - - // Not-ender pearl stuff - - event.recipes.gtceu.chemical_reactor('kaolinite') - .itemInputs('5x #tfg:aluminium_oxide', '2x #forge:dusts/silicon') - .inputFluids(Fluid.of('gtceu:distilled_water', 6000), Fluid.of('gtceu:chlorine', 8000)) - .itemOutputs('17x tfc:powder/kaolinite') - .outputFluids(Fluid.of('gtceu:hydrochloric_acid', 8000)) - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('kaolinite_ruby') - .itemInputs('6x #forge:dusts/ruby', '2x #forge:dusts/silicon') - .inputFluids(Fluid.of('gtceu:distilled_water', 6000), Fluid.of('gtceu:chlorine', 8000)) - .itemOutputs('17x tfc:powder/kaolinite', '1x #forge:dusts/chromium') - .outputFluids(Fluid.of('gtceu:hydrochloric_acid', 8000)) - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.pyrolyse_oven('vitrified_ender_dust') - .itemInputs('minecraft:ender_pearl', '2x tfc:powder/kaolinite', '4x #forge:insulation_t1') - .inputFluids(Fluid.of('gtceu:nitrogen', 100)) - .itemOutputs('tfg:vitrified_pearl') - .chancedOutput('gtceu:ash_dust', 2500, 0) - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_dynamite') - .itemInputs('4x #forge:dusts/vitrified_pearl', '2x gtceu:dynamite') - .itemOutputs('3x tfg:vitrified_pearl') - .chancedOutput('#forge:dusts/dark_ash', 2500, 0) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_powderbarrel') - .itemInputs('4x #forge:dusts/vitrified_pearl', '8x gtceu:powderbarrel') - .itemOutputs('3x tfg:vitrified_pearl') - .chancedOutput('#forge:dusts/dark_ash', 2500, 0) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_tnt') - .itemInputs('4x #forge:dusts/vitrified_pearl', '4x minecraft:tnt') - .itemOutputs('3x tfg:vitrified_pearl') - .chancedOutput('#forge:dusts/dark_ash', 2500, 0) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_itnt') - .itemInputs('4x #forge:dusts/vitrified_pearl', 'gtceu:industrial_tnt') - .itemOutputs('3x tfg:vitrified_pearl') - .chancedOutput('#forge:dusts/dark_ash', 2500, 0) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.macerator('vitrified_ender_pearl') - .itemInputs('tfg:vitrified_pearl') - .itemOutputs('#forge:dusts/vitrified_pearl') - .duration(40) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.shaped('gtceu:mv_field_generator', [ - 'ABA', - 'CDC', - 'ABA' - ], { - A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.MagnesiumDiboride, 1), - B: ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 1), - C: '#gtceu:circuits/mv', - D: 'tfg:vitrified_pearl' - }).addMaterialInfo().id('gtceu:shaped/field_generator_mv') - - event.recipes.gtceu.assembler('field_generator_mv') - .itemInputs('tfg:vitrified_pearl', '2x #forge:plates/aluminium', '2x #gtceu:circuits/mv', '4x #forge:quadruple_wires/magnesium_diboride') - .itemOutputs('gtceu:mv_field_generator') - .duration(100) - .EUt(30) - - // Harvest Baskets - - event.shaped('tfg:harvest_basket', [ - 'BDB', - 'ACA', - 'AAA' - ], { - A: 'tfg:soaked_hardwood_strip', - B: ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 1), - C: 'tfc:glue', - D: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) - }).id('tfg:shaped/harvest_basket_from_wood') - - event.recipes.gtceu.assembler('tfg:assembler/harvest_basket_from_wood') - .itemInputs( - '5x tfg:soaked_hardwood_strip', - ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 2), - ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) - ) - .inputFluids(Fluid.of('gtceu:glue', 50)) - .itemOutputs('tfg:harvest_basket') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.shaped('tfg:harvest_basket', [ - 'BDB', - 'ACA', - 'AAA' - ], { - A: 'tfc:soaked_papyrus_strip', - B: ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 1), - C: 'tfc:glue', - D: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) - }).id('tfg:shaped/harvest_basket_from_papyrus') - - event.recipes.gtceu.assembler('tfg:assembler/harvest_basket_from_papyrus') - .itemInputs( - '5x tfc:soaked_papyrus_strip', - ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 2), - ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) - ) - .inputFluids(Fluid.of('gtceu:glue', 50)) - .itemOutputs('tfg:harvest_basket') - .circuit(2) - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.assembler('tfg:assembler/aluminium_harvest_basket') - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 3), - ChemicalHelper.get(TagPrefix.foil, GTMaterials.Aluminium, 2), - ChemicalHelper.get(TagPrefix.bolt, GTMaterials.Steel, 2), - ChemicalHelper.get(TagPrefix.rodLong, - GTMaterials.Aluminium, 1) - ) - .inputFluids(Fluid.of('gtceu:cobalt_brass', 144)) - .itemOutputs('tfg:aluminium_harvest_basket') - .duration(200) - .circuit(4) - .EUt(GTValues.VA[GTValues.LV]) - .addMaterialInfo(true) - - //Rock-wool stuff - event.recipes.gtceu.mixer('tfg:aes_mix') - .itemInputs('5x gtceu:silicon_dioxide_dust', '4x gtceu:quicklime_dust', 'gtceu:magnesia_dust') - .itemOutputs('10x tfg:aes_mix_dust') - .duration(160) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.electric_blast_furnace('tfg:molten_aes') - .itemInputs('2x tfg:aes_mix_dust') - .outputFluids(Fluid.of('tfg:molten_aes', 1000)) - .chancedOutput('gtceu:ash_dust', 3000, 0) - .circuit(1) - .duration(400) - .blastFurnaceTemp(3000) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.electric_blast_furnace('tfg:molten_aes_he') - .itemInputs('2x tfg:aes_mix_dust') - .inputFluids(Fluid.of('gtceu:helium', 200)) - .outputFluids(Fluid.of('tfg:molten_aes', 1000)) - .circuit(2) - .duration(140) - .blastFurnaceTemp(3000) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.centrifuge('tfg:aes_wool') - .inputFluids(Fluid.of('tfg:molten_aes', 200)) - .itemOutputs('tfg:aes_wool') - .duration(30) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.forming_press('tfg:aes_compressed_wool') - .itemInputs('4x tfg:aes_wool') - .notConsumable('gtceu:ingot_casting_mold') - .itemOutputs('tfg:aes_compressed_wool') - .duration(40) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_bath('tfg:aes_insulation_sheet') - .itemInputs('tfg:aes_compressed_wool') - .inputFluids(Fluid.of('gtceu:epoxy', 72)) - .circuit(1) - .itemOutputs('tfg:aes_insulation_sheet') - .duration(80) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_bath('tfg:aes_insulation_roll') - .itemInputs('9x tfg:aes_compressed_wool') - .inputFluids(Fluid.of('gtceu:epoxy', 648)) - .itemOutputs('tfg:aes_insulation_roll') - .circuit(9) - .duration(400) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.assembler('tfg:aes_insulation_roll') - .itemInputs('9x tfg:aes_insulation_sheet') - .itemOutputs('tfg:aes_insulation_roll') - .circuit(0) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - - event.shaped('tfg:aes_insulation_roll', [ - 'AAA', - 'AAA', - 'AAA' - ], { - A: 'tfg:aes_insulation_sheet' - }).id('tfg:shaped/aes_insulation_roll') - - event.recipes.gtceu.assembler('tfg:aes_insulation_sheet') - .itemInputs('9x tfg:aes_insulation_sheet') - .itemOutputs('tfg:aes_insulation_roll') - .circuit(0) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - - event.shapeless('9x tfg:aes_insulation_sheet', [ - 'tfg:aes_insulation_roll' - ]).id('tfg:shapeless/aes_insulation_sheet') - - event.recipes.gtceu.electric_blast_furnace('tfg:smelt_aes_sheet') - .itemInputs('tfg:aes_insulation_sheet') - .inputFluids(Fluid.of('gtceu:helium', 200)) - .outputFluids(Fluid.of('tfg:molten_aes', 800)) - .chancedOutput('gtceu:ash_dust', 2500, 0) - .circuit(1) - .duration(140) - .blastFurnaceTemp(3000) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.electric_blast_furnace('tfg:smelt_aes_roll') - .itemInputs('tfg:aes_insulation_roll') - .inputFluids(Fluid.of('gtceu:helium', 1000)) - .itemOutputs('2x gtceu:ash_dust') - .outputFluids(Fluid.of('tfg:molten_aes', 7200)) - .circuit(9) - .duration(1000) - .blastFurnaceTemp(3000) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.electric_blast_furnace('tfg:smelt_sniffer_wool') - .itemInputs('tfg:sniffer_wool') - .chancedOutput('gtceu:ash_dust', 7500, 0) - .outputFluids(Fluid.of('tfg:molten_aes', 200)) - .circuit(4) - .duration(80) - .blastFurnaceTemp(3000) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.electric_blast_furnace('tfg:smelt_wraptor_wool') - .itemInputs('tfg:wraptor_wool') - .chancedOutput('gtceu:ash_dust', 5000, 0) - .outputFluids(Fluid.of('tfg:molten_aes', 100)) - .circuit(8) - .duration(60) - .blastFurnaceTemp(3000) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless('8x tfc:wool_yarn', [ - 'tfc:spindle', - 'tfg:glacian_wool' - ]).id('tfg:shapeless/glacian_wool_to_yarn')) - - event.recipes.gtceu.wiremill('tfg:glacian_wool_yarn') - .itemInputs('tfg:glacian_wool') - .itemOutputs('8x tfc:wool_yarn') - .duration(100) - .EUt(4) - - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless('4x tfg:fletching', [ - 'tfg:wraptor_wool', - '#forge:tools/knives' - ]).id('tfg:shapeless/wraptor_feather_fletching')) - - event.recipes.gtceu.assembler('tfg:assembler/wraptor_feather_fletching') - .itemInputs('1x tfg:wraptor_wool') - .itemOutputs('4x tfg:fletching') - .duration(20) - .circuit(4) - .EUt(GTValues.VA[GTValues.ULV]) - - - //endregion - - //#region Casings - global.GTCEU_SUPERCONDUCTORS.forEach((type, index) => { - const multiplier = index + 1 - - event.recipes.gtceu.assembler(`tfg:assembler/superconductor_coil_small_from_${type.name}`) - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, GTMaterials.HSLASteel, 4), - ChemicalHelper.get(TagPrefix.rod, GTMaterials.Steel, 2), - ChemicalHelper.get(TagPrefix.rod, GTMaterials.SteelMagnetic, 1), - ChemicalHelper.get(TagPrefix.wireFine, GTMaterials[type.materialId], 4) - ) - .inputFluids(Fluid.of('gtceu:epoxy', 144)) - .itemOutputs(Item.of('tfg:superconductor_coil_small', 4 * multiplier)) - .circuit(4) - .duration(400) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.assembler(`tfg:assembler/superconductor_coil_large_from_${type.name}`) - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, GTMaterials.HSLASteel, 4), - ChemicalHelper.get(TagPrefix.rod, GTMaterials.Steel, 2), - ChemicalHelper.get(TagPrefix.rod, GTMaterials.SteelMagnetic, 1), - ChemicalHelper.get(TagPrefix.wireGtSingle, GTMaterials[type.materialId], 4)) - .inputFluids(Fluid.of('gtceu:epoxy', 144)) - .itemOutputs(Item.of('tfg:superconductor_coil_large', 4 * multiplier)) - .circuit(7) - .duration(600) - .EUt(GTValues.VA[GTValues.MV]) - }) - - event.recipes.gtceu.assembler('tfg:assembler/electromagnetic_accelerator') - .itemInputs( - '2x #forge:plates/desh', - 'gtceu:mv_voltage_coil', - '5x tfg:dry_ice', - 'gtceu:nonconducting_casing' - ) - .inputFluids(Fluid.of('gtceu:blue_alloy', 288)) - .itemOutputs('6x tfg:electromagnetic_accelerator') - .circuit(4) - .duration(800) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.assembler('tfg:assembler/machine_casing_aluminium_plated_steel') - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 6), - ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Steel, 1) - ) - .inputFluids(Fluid.of('gtceu:silicon', 72)) - .itemOutputs('2x tfg:machine_casing_aluminium_plated_steel') - .circuit(6) - .duration(20 * (2.5)) - .EUt(GTValues.VH[GTValues.LV]) - - event.recipes.gtceu.assembler('tfg:reflector_from_lens') - .itemInputs( - '24x #forge:lenses', - ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1) - ) - .inputFluids(Fluid.of('gtceu:silver', 1296)) - .itemOutputs('1x tfg:reflector') - .circuit(6) - .duration(20 * (60)) - .EUt(GTValues.VH[GTValues.HV]) - - event.recipes.gtceu.assembler('tfg:reflector_from_inr') - .itemInputs( - '1x gtceu:neutron_reflector', - ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1) - ) - .itemOutputs('2x tfg:reflector') - .circuit(9) - .duration(20 * (20)) - .EUt(GTValues.VH[GTValues.MV]) - - event.recipes.gtceu.assembler('tfg:reflector_from_certus') - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, GTMaterials.CertusQuartz, 12), - ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1) - ) - .inputFluids(Fluid.of('gtceu:silver', 488)) - .itemOutputs('1x tfg:reflector') - .circuit(6) - .dimension('ad_astra:moon') - .duration(20 * (60)) - .EUt(GTValues.VH[GTValues.MV]) - - //#endregion - - //region ammonia borane - event.recipes.gtceu.chemical_reactor('tfg:sodium_hydride_synthesis') - .itemInputs('#forge:dusts/sodium') - .inputFluids(Fluid.of('gtceu:hydrogen', 1000)) - .itemOutputs('2x #forge:dusts/sodium_hydride') - .duration(400) - .EUt(GTValues.VA[GTValues.HV]) - event.recipes.gtceu.chemical_reactor('tfg:boric_acid_synthesis') - .itemInputs('23x #forge:dusts/borax') - .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 2000)) - .itemOutputs('28x #forge:dusts/boric_acid', '2x #forge:dusts/salt') - .outputFluids(Fluid.of('minecraft:water', 5000)) - .duration(400) - .EUt(GTValues.VA[GTValues.HV]) - event.recipes.gtceu.chemical_reactor('tfg:trimethyl_borate_synthesis') - .itemInputs('7x #forge:dusts/boric_acid') - .inputFluids(Fluid.of('gtceu:methanol', 3000), Fluid.of('gtceu:sulfuric_acid', 100)) - .outputFluids(Fluid.of('tfg:trimethyl_borate', 1000), Fluid.of('minecraft:water', 3000)) - .duration(300) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.chemical_reactor('tfg:sodium_borohydride_synthesis') - .itemInputs('4x #forge:dusts/sodium_hydride') - .inputFluids(Fluid.of('tfg:trimethyl_borate', 1000)) - .itemOutputs('6x #forge:dusts/sodium_borohydride', '18x #forge:dusts/sodium_methoxide') - .duration(160) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.chemical_reactor('tfg:ammonia_borane_synthesis') - .itemInputs('6x #forge:dusts/sodium_borohydride', '6x #forge:dusts/ammonium_chloride') - .itemOutputs('8x #forge:dusts/ammonia_borane', '2x #forge:dusts/salt') - .outputFluids(Fluid.of('gtceu:hydrogen', 2000)) - .duration(100) - .EUt(GTValues.VA[GTValues.IV]) - //endregion - - //region polyurethane - event.recipes.gtceu.chemical_reactor('tfg:aniline_synthesis') - .inputFluids(Fluid.of('gtceu:nitrobenzene', 1000), Fluid.of('gtceu:hydrogen', 6000)) - .notConsumable('#forge:dusts/iron') - .outputFluids(Fluid.of('tfg:aniline', 1000), Fluid.of('minecraft:water', 2000)) - .duration(140) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.chemical_reactor('tfg:dimethyl_carbonate_synthesis') - .inputFluids(Fluid.of('gtceu:carbon_monoxide', 1000), Fluid.of('gtceu:oxygen', 1000), Fluid.of('gtceu:methanol', 2000)) - .outputFluids(Fluid.of('tfg:dimethyl_carbonate', 1000), Fluid.of('minecraft:water', 1000)) - .duration(120) - .circuit(2) - .EUt(GTValues.VA[GTValues.HV]) - event.recipes.gtceu.chemical_reactor('tfg:methyl_phenylcarbamate_synthesis') - .inputFluids(Fluid.of('tfg:aniline', 1000), Fluid.of('tfg:dimethyl_carbonate', 1000)) - .outputFluids(Fluid.of('tfg:methyl_phenylcarbamate', 1000), Fluid.of('gtceu:methanol', 1000)) - .duration(200) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.chemical_reactor('tfg:mpc_synthesis') - .inputFluids(Fluid.of('tfg:methyl_phenylcarbamate', 2000), Fluid.of('gtceu:formaldehyde', 1000)) - .outputFluids(Fluid.of('tfg:methylene_diphenyl_dicarbamate', 1000), Fluid.of('minecraft:water', 1000)) - .duration(200) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.chemical_reactor('tfg:mpi_synthesis') - .inputFluids(Fluid.of('tfg:methylene_diphenyl_dicarbamate', 1000)) - .itemOutputs('27x #forge:dusts/methylene_diphenyl_diisocyanate') - .outputFluids(Fluid.of('gtceu:methanol', 2000)) - .duration(80) - .EUt(GTValues.VA[GTValues.IV]) - event.recipes.gtceu.mixer('tfg:aes_polyurethane_electric_only') - .itemInputs('2x #tfg:mineral_rich_wool', 'tfg:aes_compressed_wool', '27x #forge:dusts/methylene_diphenyl_diisocyanate') - .inputFluids(Fluid.of('gtceu:diethylenetriamine', 250), Fluid.of('gtceu:acetone', 1000)) - .itemOutputs('tfg:aes_polyurethane') - .duration(80) - .EUt(GTValues.VA[GTValues.IV]) - - //endregion - - //Aerogel - event.recipes.gtceu.chemical_reactor('tfg:tmos_synthesis') - .inputFluids(Fluid.of('tfg:dimethyl_carbonate', 2000)) - .itemInputs('3x #forge:dusts/silicon_dioxide') - .notConsumable('#forge:small_dusts/potassium_hydroxide') - .outputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:carbon_dioxide', 2000)) - .duration(100) - .EUt(GTValues.VA[GTValues.IV]) - event.recipes.gtceu.chemical_reactor('tfg:tmos_hydrolysis') - .inputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:distilled_water', 2000)) - .outputFluids(Fluid.of('gtceu:methanol', 4000)) - .itemOutputs('3x #forge:dusts/silicon_dioxide') - .duration(100) - .EUt(GTValues.VA[GTValues.MV]) - event.recipes.gtceu.large_chemical_reactor('tfg:silica_gel_synthesis') - .inputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:ethanol', 2000), Fluid.of('gtceu:distilled_water', 500), - Fluid.of('gtceu:hydrochloric_acid', 100)) - .outputFluids(Fluid.of('tfg:silica_gel', 1000)) - .duration(300) - .EUt(GTValues.VA[GTValues.IV]) - event.recipes.gtceu.chemical_reactor('tfg:silica_gel_soaking') - .inputFluids(Fluid.of('tfg:silica_gel', 1000), Fluid.of('gtceu:acetone', 2000)) - .outputFluids(Fluid.of('tfg:soaked_silica_gel', 1000)) - .duration(400) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.large_chemical_reactor('tfg:silica_aerogel') - .inputFluids(Fluid.of('tfg:soaked_silica_gel', 1000), Fluid.of('gtceu:liquid_carbon_dioxide', 3000)) - .outputFluids(Fluid.of('gtceu:carbon_dioxide', 3000), Fluid.of('gtceu:acetone', 1000)) - .itemOutputs('tfg:silica_aerogel') - .duration(400) - .EUt(GTValues.VA[GTValues.IV]) - //endregion - - //Tier 3 insulation - event.recipes.gtceu.forming_press('tfg:mli_shielding') - .itemInputs('4x #forge:plates/ammonia_borane', '2x tfg:aes_polyurethane', '4x gtceu:carbon_fiber_plate') - .itemOutputs('tfg:mli_shielding') - .duration(100) - .EUt(GTValues.VA[GTValues.IV]) - //endregion - - //#region Universal compost - - //Greens - // Lows via crafting with mortar - event.shaped(Item.of('tfg:universal_compost_greens', 1), [ - 'AB' - ], { - A: '#tfc:compost_greens_low', - B: '#forge:tools/mortars' - }).id('tfg:shaped/universal_compost_greens_from_low') - - // Mediums via crafting with mortar - event.shaped(Item.of('tfg:universal_compost_greens', 2), [ - 'AB' - ], { - A: '#tfc:compost_greens', - B: '#forge:tools/mortars' - }).id('tfg:shaped/universal_compost_greens_from_medium') - - // Highs via crafting with mortar - event.shaped(Item.of('tfg:universal_compost_greens', 4), [ - 'AB' - ], { - A: '#tfc:compost_greens_high', - B: '#forge:tools/mortars' - }).id('tfg:shaped/universal_compost_greens_from_high') - - // Filters - const greens_low = Ingredient.of('#tfc:compost_greens_low') - const browns_low = Ingredient.of('#tfc:compost_browns_low').itemIds - const greens_medium = Ingredient.of('#tfc:compost_greens') - const browns_medium = Ingredient.of('#tfc:compost_browns').itemIds - const greens_high = Ingredient.of('#tfc:compost_greens_high') - const browns_high = Ingredient.of('#tfc:compost_browns_high').itemIds - - let low_filtered = greens_low - let medium_filtered = greens_medium - let high_filtered = greens_high - - browns_low.forEach(item => { - low_filtered = low_filtered.subtract(item) - low_filtered = low_filtered.subtract('tfg:universal_compost_greens') - }) - browns_medium.forEach(item => { - medium_filtered = medium_filtered.subtract(item) - }) - browns_high.forEach(item => { - high_filtered = high_filtered.subtract(item) - }) - - // Lows via forge hammer - event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_low') - .itemInputs(low_filtered) - .itemOutputs('tfg:universal_compost_greens') - .duration(20) - .EUt(8) - - // Mediums via forge hammer - event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_medium') - .itemInputs(medium_filtered) - .itemOutputs(Item.of('tfg:universal_compost_greens', 2)) - .duration(20) - .EUt(8) - - // Highs via forge hammer - event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_high') - .itemInputs(high_filtered) - .itemOutputs(Item.of('tfg:universal_compost_greens', 4)) - .duration(20) - .EUt(8) - - //Browns - // Lows via crafting with mortar - event.shaped(Item.of('tfg:universal_compost_browns', 1), [ - 'A', - 'B' - ], { - A: '#tfc:compost_browns_low', - B: '#forge:tools/mortars' - }).id('tfg:shaped/universal_compost_browns_from_low') - - // Mediums via crafting with mortar - event.shaped(Item.of('tfg:universal_compost_browns', 2), [ - 'A', - 'B' - ], { - A: '#tfc:compost_browns', - B: '#forge:tools/mortars' - }).id('tfg:shaped/universal_compost_browns_from_medium') - - // Highs via crafting with mortar - event.shaped(Item.of('tfg:universal_compost_browns', 4), [ - 'A', - 'B' - ], { - A: '#tfc:compost_browns_high', - B: '#forge:tools/mortars' - }).id('tfg:shaped/universal_compost_browns_from_high') - - // Lows via forge hammer - event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_low') - .itemInputs('#tfc:compost_browns_low') - .itemOutputs('tfg:universal_compost_browns') - .duration(20) - .EUt(8) - - // Mediums via forge hammer - event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_medium') - .itemInputs('#tfc:compost_browns') - .itemOutputs(Item.of('tfg:universal_compost_browns', 2)) - .duration(20) - .EUt(8) - - // Highs via forge hammer - event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_high') - .itemInputs('#tfc:compost_browns_high') - .itemOutputs(Item.of('tfg:universal_compost_browns', 4)) - .duration(20) - .EUt(8) - - //#endregion - // Etching Tip event.recipes.tfc.damage_inputs_shapeless_crafting(event.recipes.minecraft.crafting_shapeless('tfg:etching_diamond_tip', [ '#forge:tools/hammers', @@ -1263,220 +81,7 @@ function registerTFGMiscellaneousRecipes(event) { event.replaceInput({ id: "minecraft:jukebox" }, 'minecraft:diamond', 'tfg:etching_diamond_tip'); - //Large Nest - event.shaped('tfg:large_nest_box', - [ - 'B B', - 'ABA', - 'AAA' - ], { - A: 'beneath:crimson_thatch', - B: 'beneath:crimson_straw' - }).id('tfg:shaped_large_nest_crimson') - - event.shaped('tfg:large_nest_box_warped', - [ - 'B B', - 'ABA', - 'AAA' - ], { - A: 'beneath:warped_thatch', - B: 'beneath:warped_straw' - }).id('tfg:shaped_large_nest_warped') - - //#endregion - - //#region flax stuff - - event.shapeless('1x tfg:flax_bundle', ['9x tfg:flax_product']) - event.recipes.gtceu.packer('tfg:packer/flax_bundle') - .itemInputs('9x tfg:flax_product') - .itemOutputs('tfg:flax_bundle') - .duration('100') - .EUt(GTValues.VA[GTValues.ULV]) - - event.shapeless('1x tfg:bundled_scraped_flax', ['9x tfg:flax_waste']) - event.recipes.gtceu.packer('tfg:packer/bundled_scraped_flax') - .itemInputs('9x tfg:flax_waste') - .itemOutputs('tfg:bundled_scraped_flax') - .duration('100') - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.tfc.scraping( - 'tfg:flax_waste', - 'tfg:flax_product', - 'tfg:item/flax_waste', - 'tfg:item/flax_product', - '2x tfg:flax_line' - ).id('tfg:scraping/flax_line') - - event.recipes.tfc.scraping( - 'tfg:bundled_scraped_flax', - 'tfg:flax_bundle', - 'tfg:item/bundled_scraped_flax', - 'tfg:item/flax_bundle', - '18x tfg:flax_line' - ).id('tfg:scraping/flax_line_from_bundle') - - event.recipes.tfc.scraping( - 'tfc:groundcover/humus', - 'tfg:flax_waste', - 'tfc:item/groundcover/humus', - 'tfg:item/flax_waste', - 'tfg:flax_tow' - ).id('tfg:scraping/flax_tow') - - event.recipes.tfc.scraping( - '9x tfc:groundcover/humus', - 'tfg:bundled_scraped_flax', - 'tfc:item/groundcover/humus', - 'tfg:item/bundled_scraped_flax', - '9x tfg:flax_tow' - ).id('tfg:scraping/flax_tow_from_pile') - - event.recipes.gtceu.cutter('tfg:flax_line_in_cutter') - .itemInputs('tfg:flax_product') - .itemOutputs('2x tfg:flax_line', 'tfg:flax_waste') - .duration(60) - .EUt(2) - - event.recipes.gtceu.cutter('tfg:flax_line_from_bundle_in_cutter') - .itemInputs('tfg:flax_bundle') - .itemOutputs('18x tfg:flax_line', 'tfg:bundled_scraped_flax') - .duration(540) - .EUt(2) - - event.recipes.gtceu.cutter('tfg:flax_tow_in_cutter') - .itemInputs('tfg:flax_waste') - .itemOutputs('1x tfg:flax_tow', '1x tfc:groundcover/humus') - .duration(60) - .EUt(2) - - event.recipes.gtceu.cutter('tfg:flax_tow_from_bundle_in_cutter') - .itemInputs('tfg:bundled_scraped_flax') - .itemOutputs('9x tfg:flax_tow', '9x tfc:groundcover/humus') - .duration(540) - .EUt(2) - - event.recipes.gtceu.centrifuge('tfg:flax_product') - .itemInputs('tfg:flax_product') - .itemOutputs('2x tfg:flax_line', 'tfg:flax_tow', 'tfc:groundcover/humus') - .duration(200) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.centrifuge('tfg:flax_product_from_bundle') - .itemInputs('tfg:flax_bundle') - .itemOutputs('18x tfg:flax_line', '9x tfg:flax_tow', '9x tfc:groundcover/humus') - .duration(1800) - .EUt(GTValues.VA[GTValues.LV]) - - event.custom({ - type: 'vintageimprovements:centrifugation', - ingredients: [{ item: 'tfg:flax_product' }], - results: [{ item: 'tfg:flax_line', count: 2 }, { item: 'tfg:flax_tow' }, { item: 'tfc:groundcover/humus' }], - processingTime: 40 * 10 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER - }).id('tfg:vi_seperate_flax') - - event.custom({ - type: 'vintageimprovements:centrifugation', - ingredients: [{ item: 'tfg:flax_bundle' }], - results: [{ item: 'tfg:flax_line', count: 18 }, { item: 'tfg:flax_tow', count: 9 }, { item: 'tfc:groundcover/humus', count: 9 }], - processingTime: 360 * 90 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER - }).id('tfg:vi_seperate_flax_from_bundle') - - //#region flax line spining - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless('4x tfg:linen_thread', [ - 'tfg:flax_line', - 'tfc:spindle' - ]).id('tfg:shapeless/linen_thread') - ) - - event.custom({ - type: 'vintageimprovements:coiling', - ingredients: [{ item: 'tfg:flax_line' }], - results: [{ item: 'tfg:linen_thread', count: 4 }], - processingTime: 2 * 10 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER - }).id('tfg:vi_spin_flax_line') - - event.recipes.gtceu.wiremill('tfg:spin_flax_line') - .itemInputs('tfg:flax_line') - .itemOutputs('4x tfg:linen_thread') - .duration(80) - .EUt(GTValues.VA[GTValues.LV]) - - //#region flax looming - event.recipes.tfc.loom( - '1x tfg:linen_cloth', - '16x tfg:linen_thread', - 8, - 'tfc:block/burlap' - ) - - event.recipes.tfc.loom( - '1x tfc:burlap_cloth', - '16x tfg:flax_tow', - 12, - 'tfc:block/burlap' - ) - - event.recipes.gtceu.assembler('tfg:assembler/linen_cloth') - .itemInputs('16x tfg:linen_thread') - .circuit(10) - .itemOutputs('tfg:linen_cloth') - .duration(100) - .EUt(4) - - event.recipes.gtceu.assembler('tfg:assembler/flax_burlap') - .itemInputs('16x tfg:flax_tow') - .circuit(10) - .itemOutputs('tfc:burlap_cloth') - .duration(100) - .EUt(4) - - - - event.recipes.gtceu.assembler('tfg:titanium_concrete') - .itemInputs('2x #forge:rods/titanium', '#forge:dusts/kaolinite') - .inputFluids(Fluid.of('gtceu:concrete', 144 * 1.5)) - .itemOutputs('tfg:titanium_concrete') - .circuit(2) - .duration(20) - .EUt(GTValues.VH[GTValues.EV]) - - event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks') - .itemInputs('tfg:polished_titanium_concrete') - .notConsumable('#forge:lenses/light_blue') - .itemOutputs('tfg:titanium_concrete_bricks') - .duration(20 * (2.5)) - .EUt(GTValues.VA[GTValues.LV]) - event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks_small') - .itemInputs('tfg:polished_titanium_concrete') - .notConsumable('#forge:lenses/pink') - .itemOutputs('tfg:titanium_concrete_bricks_small') - .duration(20 * (2.5)) - .EUt(GTValues.VA[GTValues.LV]) - event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks_square') - .itemInputs('tfg:polished_titanium_concrete') - .notConsumable('#forge:lenses/green') - .itemOutputs('tfg:titanium_concrete_bricks_square') - .duration(20 * (2.5)) - .EUt(GTValues.VA[GTValues.LV]) - event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_tile') - .itemInputs('tfg:polished_titanium_concrete') - .notConsumable('#forge:lenses/red') - .itemOutputs('tfg:titanium_concrete_tile') - .duration(20 * (2.5)) - .EUt(GTValues.VA[GTValues.LV]) - event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_tile_small') - .itemInputs('tfg:polished_titanium_concrete') - .notConsumable('#forge:lenses/black') - .itemOutputs('tfg:titanium_concrete_tile_small') - .duration(20 * (2.5)) - .EUt(GTValues.VA[GTValues.LV]) - // Interplanetary ae2 card - event.recipes.gtceu.assembler('tfg:wireless_card') .itemInputs( 'ae2:advanced_card', @@ -1529,35 +134,5 @@ function registerTFGMiscellaneousRecipes(event) { }); TFGHelpers.registerMaterialInfo('tfg:rnr_plow', {'cobalt_brass': 5, 'invar': 2, 'steel': 2, 'wrought_iron': 2, 'rubber': 1, 'treated_wood': 1}); - //#endregion - //#region Wax Unification - - // Recipe Removals - event.remove({id: 'gtceu:extractor/extract_honeycomb_block'}); - event.remove({id: 'gtceu:extractor/extract_honeycomb'}); - event.remove({id: 'gtceu:extractor/extract_wax_dust'}); - - // Extractor Recipe - event.recipes.gtceu.extractor('tfg:wax_melting') - .itemInputs(Ingredient.of('#forge:wax')) - .outputFluids(Fluid.of('gtceu:wax', 144)) - .duration(20*5) - .EUt(GTValues.VA[GTValues.LV]) - .category(GTRecipeCategories.EXTRACTOR_RECYCLING); - - event.recipes.gtceu.extractor('tfg:tiny_wax_dust_melting') - .itemInputs(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Wax, 1)) - .outputFluids(Fluid.of('gtceu:wax', 16)) - .duration(10) - .EUt(GTValues.VA[GTValues.LV]) - .category(GTRecipeCategories.EXTRACTOR_RECYCLING); - - event.recipes.gtceu.extractor('tfg:small_wax_dust_melting') - .itemInputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Wax, 1)) - .outputFluids(Fluid.of('gtceu:wax', 36)) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - .category(GTRecipeCategories.EXTRACTOR_RECYCLING); - //#endregion } diff --git a/kubejs/server_scripts/tfg/recipes.space.js b/kubejs/server_scripts/tfg/recipes.space.js deleted file mode 100644 index 17fb6edab..000000000 --- a/kubejs/server_scripts/tfg/recipes.space.js +++ /dev/null @@ -1,457 +0,0 @@ -// priority: 0 -"use strict"; - -/** - * @param {Internal.RecipesEventJS} event - */ -function registerTFGSpaceRecipes(event) { - - const allowedCombustibleDims = [ - { - dimension: "minecraft:the_nether", - type: "dimension" - }, - { - dimension: "minecraft:overworld", - type: "dimension" - } - ] - - event.findRecipes({ type: "gtceu:large_boiler" }).forEach(recipe => { - recipe.json.add("recipeConditions", allowedCombustibleDims) - }) - event.findRecipes({ type: "gtceu:steam_boiler" }).forEach(recipe => { - recipe.json.add("recipeConditions", allowedCombustibleDims) - }) - event.findRecipes({ type: "gtceu:combustion_generator" }).forEach(recipe => { - recipe.json.add("recipeConditions", allowedCombustibleDims) - }) - event.findRecipes({ type: "gtceu:gas_turbine" }).forEach(recipe => { - recipe.json.add("recipeConditions", allowedCombustibleDims) - }) - - // Air collector - - event.recipes.gtceu.gas_collector('tfg:nether') - .circuit(2) - .outputFluids(Fluid.of('gtceu:air', 10000)) - .dimension('minecraft:the_nether') - .duration(200) - .EUt(16) - - event.recipes.gtceu.gas_collector('tfg:moon') - .circuit(3) - .outputFluids(Fluid.of('gtceu:argon', 1)) - .dimension('ad_astra:moon') - .duration(20*60*30) - .EUt(16) - - event.recipes.gtceu.gas_collector('tfg:mars') - .circuit(4) - .outputFluids(Fluid.of('tfg:mars_air', 10000)) - .dimension('ad_astra:mars') - .duration(20*10) - .EUt(16) - - event.recipes.gtceu.vacuum_freezer('tfg:liquid_mars_air') - .inputFluids(Fluid.of('tfg:mars_air', 4000)) - .outputFluids(Fluid.of('tfg:liquid_mars_air', 4000)) - .duration(80) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.centrifuge('tfg:centrifuge_mars_air') - .inputFluids(Fluid.of('tfg:mars_air', 10000)) - .outputFluids(Fluid.of('gtceu:carbon_dioxide', 3900), Fluid.of('gtceu:nitrogen', 1000), Fluid.of('gtceu:argon', 500)) - .duration(1600) - .EUt(GTValues.VA[GTValues.MV]) - - // TODO: move neon and xenon somewhere else - event.recipes.gtceu.distillation_tower('tfg:distill_liquid_mars_air') - .inputFluids(Fluid.of('tfg:liquid_mars_air', 100000)) - .outputFluids(Fluid.of('gtceu:carbon_dioxide', 80000)) - .outputFluids(Fluid.of('gtceu:nitrogen', 7000)) - .outputFluids(Fluid.of('gtceu:argon', 5000)) - .outputFluids(Fluid.of('gtceu:oxygen', 3000)) - .outputFluids(Fluid.of('gtceu:krypton', 1000)) - .outputFluids(Fluid.of('gtceu:neon', 1000)) - .outputFluids(Fluid.of('gtceu:xenon', 1000)) - .chancedOutput('gtceu:ammonium_chloride_dust', 2250, 0) - .disableDistilleryRecipes(true) - .duration(2000) - .EUt(GTValues.VA[GTValues.EV]) - - // Aqueous accumulator -- use adjacentFluids (plural) to avoid rhino ambiguous method issues - - let aaCircuit = 1; - - event.recipes.gtceu.aqueous_accumulator('water') - .circuit(aaCircuit++) - .duration(20) - .EUt(GTValues.VHA[GTValues.ULV]) - .adjacentFluids(["minecraft:water"]) - .outputFluids(Fluid.of("minecraft:water", 1000)) - - event.recipes.gtceu.aqueous_accumulator('sea_water') - .circuit(aaCircuit++) - .duration(20) - .EUt(GTValues.VA[GTValues.ULV]) - .adjacentFluids(["tfc:salt_water"]) - .outputFluids(Fluid.of("tfc:salt_water", 1000)) - - event.recipes.gtceu.aqueous_accumulator('semiheavy_water_mars') - .circuit(aaCircuit++) - .dimension('ad_astra:mars') - .duration(20) - .EUt(GTValues.VHA[GTValues.ULV]) - .adjacentFluids(["tfg:semiheavy_ammoniacal_water"]) - .outputFluids(Fluid.of("tfg:semiheavy_ammoniacal_water", 1000)) - - event.recipes.gtceu.aqueous_accumulator('lava_overworld') - .circuit(aaCircuit++) - .dimension('minecraft:overworld') - .duration(20*15) - .EUt(GTValues.VHA[GTValues.HV]) - .adjacentFluids(["minecraft:lava"]) - .outputFluids(Fluid.of("minecraft:lava", 1000)) - - event.recipes.gtceu.aqueous_accumulator('lava_nether') - .circuit(aaCircuit++) - .dimension('minecraft:the_nether') - .duration(20*15) - .EUt(GTValues.VHA[GTValues.HV]) - .adjacentFluids(["minecraft:lava"]) - .outputFluids(Fluid.of("minecraft:lava", 1000)) - - event.recipes.gtceu.aqueous_accumulator('spring_water') - .circuit(aaCircuit++) - .dimension('minecraft:overworld') - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - .adjacentFluids(["tfc:spring_water"]) - .outputFluids(Fluid.of("tfc:spring_water", 1000)) - - event.recipes.gtceu.aqueous_accumulator('more_water') - .circuit(aaCircuit++) - .duration(10) - .EUt(GTValues.VHA[GTValues.HV]) - .adjacentFluids(["minecraft:water"]) - .outputFluids(Fluid.of("minecraft:water", 16000)) - - - // Plants - Can't use the default builder here because fertiliser is much harder to get on the moon, - // and we're using helium-3 as the fertiliser - - // Chorus - event.recipes.gtceu.greenhouse('tfg:chorus') - .notConsumable('8x tfg:lunar_chorus_flower') - .itemOutputs('64x minecraft:chorus_fruit') - .chancedOutput('8x tfg:lunar_chorus_flower', 750, 0) - .chancedOutput('8x tfg:lunar_chorus_flower', 500, 0) - .chancedOutput('8x tfg:lunar_chorus_flower', 750, 0) - .duration(36000) // 30 mins - .circuit(1) - .EUt(GTValues.VA[GTValues.MV]) - .dimension('ad_astra:moon') - - event.recipes.gtceu.greenhouse('tfg:chorus_helium') - .notConsumable('8x tfg:lunar_chorus_flower') - .inputFluids(Fluid.of('gtceu:helium_3', 2000)) - .itemOutputs('64x minecraft:chorus_fruit') - .chancedOutput('8x tfg:lunar_chorus_flower', 4000, 0) - .chancedOutput('8x tfg:lunar_chorus_flower', 3000, 0) - .chancedOutput('8x tfg:lunar_chorus_flower', 4000, 0) - .duration(12000) // 10 mins - .circuit(2) - .EUt(GTValues.VA[GTValues.MV]) - .dimension('ad_astra:moon') - - // Replace the built-in greg one to add a circuit - event.recipes.gtceu.fermenter('fermented_biomass') - .inputFluids(Fluid.of('gtceu:biomass', 100)) - .outputFluids(Fluid.of('gtceu:fermented_biomass', 100)) - .circuit(1) - .duration(150) - .EUt(2) - - event.recipes.gtceu.fermenter('tfg:chorus') - .itemInputs('minecraft:chorus_fruit') - .inputFluids(Fluid.of('gtceu:biomass', 20)) - .chancedOutput('ae2:ender_dust', 100, 0) - .outputFluids(Fluid.of('gtceu:nitrogen', 1000)) - .circuit(2) - .duration(5 * 20) - .EUt(GTValues.VA[GTValues.MV]) - .dimension('ad_astra:moon') - - event.recipes.gtceu.fermenter('tfg:chorus_flower') - .itemInputs('tfg:lunar_chorus_flower') - .inputFluids(Fluid.of('gtceu:biomass', 20)) - .chancedOutput('ae2:ender_dust', 100, 0) - .outputFluids(Fluid.of('gtceu:nitrogen', 1000)) - .circuit(2) - .duration(5 * 20) - .EUt(GTValues.VA[GTValues.MV]) - .dimension('ad_astra:moon') - - event.recipes.gtceu.mixer('tfg:bio_glowstone') - .itemInputs('betterend:cave_pumpkin_chunks', '4x species:alphacene_mushroom_block') - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .itemOutputs('2x minecraft:glowstone_dust') - .duration(5 * 20) - .EUt(GTValues.VA[GTValues.EV]) - .dimension('ad_astra:mars') - - // Lightblooms - event.recipes.gtceu.greenhouse('tfg:lightbloom') - .notConsumable('8x minecraft:twisting_vines') - .itemOutputs('16x minecraft:twisting_vines') - .chancedOutput('minecraft:pearlescent_froglight', 2500, 0) - .chancedOutput('minecraft:verdant_froglight', 2500, 0) - .chancedOutput('minecraft:ochre_froglight', 2500, 0) - .duration(36000) // 30 mins - .circuit(1) - .EUt(GTValues.VA[GTValues.LV]) - .dimension('ad_astra:moon') - - event.recipes.gtceu.greenhouse('tfg:lightbloom_helium') - .notConsumable('8x minecraft:twisting_vines') - .inputFluids(Fluid.of('gtceu:helium_3', 2000)) - .itemOutputs('16x minecraft:twisting_vines') - .chancedOutput('minecraft:pearlescent_froglight', 3500, 0) - .chancedOutput('minecraft:verdant_froglight', 3500, 0) - .chancedOutput('minecraft:ochre_froglight', 3500, 0) - .duration(12000) // 30 mins - .circuit(2) - .EUt(GTValues.VA[GTValues.LV]) - .dimension('ad_astra:moon') - - event.recipes.gtceu.brewery('biomass_from_twisting_vines') - .itemInputs('minecraft:twisting_vines') - .inputFluids("#tfg:clean_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 20)) - .duration(50) - .EUt(3) - - // Space suit gases - - event.recipes.gtceu.gas_pressurizer('compressed_nitrox') - .inputFluids(Fluid.of('gtceu:nitrogen', 8000), Fluid.of('gtceu:oxygen', 2000)) - .outputFluids(Fluid.of('tfg:compressed_nitrox', 1000)) - .circuit(1) - .duration(100) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.gas_pressurizer('compressed_heliox') - .inputFluids(Fluid.of('gtceu:helium', 8000), Fluid.of('gtceu:oxygen', 2000)) - .outputFluids(Fluid.of('tfg:compressed_heliox', 1000)) - .circuit(1) - .duration(100) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.gas_pressurizer('compressed_heliox_3') - .inputFluids(Fluid.of('gtceu:helium_3', 8000), Fluid.of('gtceu:oxygen', 2000)) - .outputFluids(Fluid.of('tfg:compressed_heliox_3', 1000)) - .circuit(1) - .duration(100) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.gas_pressurizer('compressed_trimix') - .inputFluids(Fluid.of('gtceu:nitrogen', 5000), Fluid.of('gtceu:oxygen', 3000), Fluid.of('gtceu:helium', 2000)) - .outputFluids(Fluid.of('tfg:compressed_trimix', 1000)) - .circuit(2) - .duration(100) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.gas_pressurizer('compressed_trimix_3') - .inputFluids(Fluid.of('gtceu:nitrogen', 5000), Fluid.of('gtceu:oxygen', 3000), Fluid.of('gtceu:helium_3', 2000)) - .outputFluids(Fluid.of('tfg:compressed_trimix_3', 1000)) - .circuit(2) - .duration(100) - .EUt(GTValues.VA[GTValues.HV]) - - //Cryo Fluix Pearl - event.recipes.gtceu.autoclave('tfg:cryo_fluix_pearl') - .inputFluids(Fluid.of('tfg:cryogenized_fluix', 576)) - .itemInputs('tfg:vitrified_pearl') - .itemOutputs('tfg:cryo_fluix_pearl') - .duration(300) - .EUt(GTValues.VA[GTValues.EV]) - .cleanroom(CleanroomType.CLEANROOM) - - // Railgun stuff - // (the railgun inputs and outputs are in tfg-core) - - - //item bus to railgun item bus conversion recipes - const GTTiers = ['ulv', 'lv', 'mv', 'hv', 'ev', 'iv', 'luv', 'zpm', 'uv', 'uhv'] - GTTiers.forEach(x => { - event.recipes.gtceu.assembler(`tfg:${x}_input_to_${x}_railgun_input_assembler`) - .itemInputs(`gtceu:${x}_input_bus`) - .circuit(4) - .itemOutputs(`tfg:${x}_railgun_item_loader_in`) - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.assembler(`tfg:${x}_output_to_${x}_railgun_output_assembler`) - .itemInputs(`gtceu:${x}_output_bus`) - .circuit(4) - .itemOutputs(`tfg:${x}_railgun_item_loader_out`) - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.LV]) - }) - - //Railgun ammo - event.recipes.gtceu.assembler('tfg:railgun_ammo_basic') - .itemInputs('#forge:double_plates/steel', '2x #forge:rods/magnetic_iron', '2x #forge:fine_wires/annealed_copper') - .inputFluids('gtceu:rocket_fuel 250') - .itemOutputs('tfg:railgun_ammo_shell') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.assembler('tfg:railgun_ammo_advanced') - .itemInputs('#forge:double_plates/titanium', '2x #forge:rods/magnetic_steel', '2x #forge:fine_wires/gold') - .inputFluids('gtceu:rocket_fuel 250') - .itemOutputs('4x tfg:railgun_ammo_shell') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.assembler('tfg:railgun_ammo_best') - .itemInputs('#forge:double_plates/tungsten', '2x #forge:rods/magnetic_neodymium', '2x #forge:fine_wires/aluminium') - .inputFluids('gtceu:rocket_fuel 250') - .itemOutputs('8x tfg:railgun_ammo_shell') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.assembler('tfg:railgun_ammo_moon') - .itemInputs('#forge:double_plates/steel', '2x ae2:charged_certus_quartz_crystal', '2x ae2:quartz_fiber') - .inputFluids('gtceu:rocket_fuel 250') - .itemOutputs('4x tfg:railgun_ammo_shell') - .dimension('ad_astra:moon') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.assembler('tfg:railgun_ammo_mars') - .itemInputs('#forge:double_plates/lead', '2x #forge:rods/ostrum', '2x #forge:fine_wires/silver') - .inputFluids('gtceu:rocket_fuel 250') - .itemOutputs('8x tfg:railgun_ammo_shell') - .dimension('ad_astra:mars') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.shaped('tfg:railgun_ammo_loader', [ - 'RMR', - 'MBM', - 'CCC' - ], { - B: 'gtceu:mv_input_bus', - R: 'gtceu:mv_robot_arm', - M: 'gtceu:mv_electric_motor', - C: '#forge:single_cables/annealed_copper' - }).addMaterialInfo().id('tfg:shaped/railgun_ammo_loader') - - event.recipes.gtceu.shaped('tfg:interplanetary_logistics_monitor', [ - 'CDC', - 'SHE', - 'WCW' - ], { - C: '#gtceu:circuits/hv', - D: 'gtceu:computer_monitor_cover', - S: 'gtceu:hv_sensor', - H: 'gtceu:hv_machine_hull', - E: 'gtceu:hv_emitter', - W: '#forge:single_cables/silver' - }).addMaterialInfo().id('tfg:shaped/interplanetary_logistics_monitor') - - event.recipes.gtceu.shaped('tfg:interplanetary_item_launcher', [ - 'NSN', - 'CHC', - 'NEN' - ], { - C: '#gtceu:circuits/ev', - S: 'gtceu:hv_sensor', - E: 'gtceu:hv_emitter', - H: 'gtceu:ev_machine_hull', - N: '#forge:plates/hsla_steel' - }).addMaterialInfo().id('tfg:shaped/interplanetary_item_launcher') - - event.recipes.gtceu.shaped('tfg:interplanetary_item_receiver', [ - 'CSC', - 'WHW', - 'CSC' - ], { - C: '#gtceu:circuits/mv', - S: 'gtceu:mv_sensor', - W: '#forge:double_cables/copper', - H: 'gtceu:mv_machine_hull' - }).addMaterialInfo().id('tfg:shaped/interplanetary_item_receiver') - - // Mars tree tapping - - event.recipes.gtceu.autoclave('tfg:crimsene') - .inputFluids(Fluid.of('tfg:crimsene', 144), Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) - .outputFluids(Fluid.of('gtceu:carbon_monoxide', 1000)) - .itemOutputs('#forge:gems/crimsene') - .duration(20 * 30) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.autoclave('tfg:warpane') - .inputFluids(Fluid.of('tfg:warpane', 144), Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) - .outputFluids(Fluid.of('gtceu:hydrogen', 1000)) - .itemOutputs('#forge:gems/warpane') - .duration(20 * 30) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.macerator('tfg:crimsene') - .itemInputs('#forge:gems/crimsene') - .itemOutputs('#forge:dusts/crimsene') - .duration(20 * 5) - .EUt(2) - - event.recipes.gtceu.macerator('tfg:warpane') - .itemInputs('#forge:gems/warpane') - .itemOutputs('#forge:dusts/warpane') - .duration(20 * 5) - .EUt(2) - - event.recipes.gtceu.mixer('tfg:mars_sap') - .itemInputs('#forge:dusts/warpane', '#forge:dusts/crimsene') - .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 1000), Fluid.of('gtceu:krypton', 500)) - .itemOutputs('#forge:dusts/mycelienzene') - .duration(30 * 20) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.deafission.fission_reactor_processing('tfg:mars_sap') - .itemInputs('#forge:dusts/mycelienzene') - .outputFluids(Fluid.of('tfg:cooked_mycelienzane', 1000)) - // TODO: change these to something appropriate - .blastFurnaceTemp(100) - .duration(30 * 10) - - event.recipes.gtceu.centrifuge('mars_sap_separation') - .inputFluids(Fluid.of('tfg:cooked_mycelienzane', 2000)) - .outputFluids( - Fluid.of('tfg:iodomethane', 1000), - Fluid.of('tfg:trideuteroiodomethane', 1000), - Fluid.of('gtceu:krypton', 1000), - Fluid.of('gtceu:diluted_hydrochloric_acid', 4000)) - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_reactor('tfg:iodomethane_separation') - .inputFluids( - Fluid.of('tfg:iodomethane', 1000), - Fluid.of('gtceu:hydrogen', 1000)) - .itemOutputs('#forge:dusts/iodine') - .outputFluids(Fluid.of('gtceu:methane', 1000)) - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.chemical_reactor('tfg:trideuteroiodomethane_separation') - .inputFluids( - Fluid.of('tfg:trideuteroiodomethane', 1000), - Fluid.of('gtceu:oxygen', 1500)) - .itemOutputs('#forge:dusts/iodine', '#forge:dusts/carbon') - .outputFluids(Fluid.of('tfg:heavy_water', 1500)) - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.MV]) -} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.space_ores.js b/kubejs/server_scripts/tfg/recipes.space_ores.js deleted file mode 100644 index ce2a650ae..000000000 --- a/kubejs/server_scripts/tfg/recipes.space_ores.js +++ /dev/null @@ -1,259 +0,0 @@ -// priority: 0 - -function registerTFGSpaceOres(event) { - - //#region Moon Harvester - - event.recipes.gtceu.moon_dust_harvester('tfg:lunar_assurine_harvester') - .biome('tfg:moon/lunar_asurine_dense') - .itemOutputsRanged('#forge:dusts/certus_regolith', 1, 5) - .duration(20 * 80) - .EUt(GTValues.VA[GTValues.LV]) - .circuit(1) - - event.recipes.gtceu.moon_dust_harvester('tfg:lunar_chorus_dense') - .biome('tfg:moon/lunar_chorus_dense') - .itemOutputsRanged('#forge:dusts/goethe_regolith', 1, 5) - .duration(20 * 80) - .EUt(GTValues.VA[GTValues.LV]) - .circuit(2) - - event.recipes.gtceu.moon_dust_harvester('tfg:lunar_corals_dense') - .biome('tfg:moon/lunar_corals_dense') - .itemOutputsRanged('#forge:dusts/bright_regolith', 1, 5) - .duration(20 * 80) - .EUt(GTValues.VA[GTValues.LV]) - .circuit(3) - - event.recipes.gtceu.moon_dust_harvester('tfg:lunar_lights_dense') - .biome('tfg:moon/lunar_lights_dense') - .itemOutputsRanged('#forge:dusts/cassiterite_regolith', 1, 5) - .duration(20 * 80) - .EUt(GTValues.VA[GTValues.LV]) - .circuit(4) - - //#endregion - - //#region Regolith Vapor Processing - - event.recipes.gtceu.mixer('tfg:regolith_slurry_suspension') - .itemInputs('ad_astra:moon_sand', 'tfg:dry_ice') - .itemOutputs('#forge:dusts/regolith_mush') - .dimension('ad_astra:moon') - .duration(20 * 60) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.chemical_bath('tfg:regolith_vapor') - .itemInputs('#forge:dusts/regolith_mush') - .inputFluids('gtceu:nitrogen 1000') - .itemOutputs('#forge:dusts/silicon_dioxide') - .outputFluids('gtceu:regolith_vapor 1000') - .dimension('ad_astra:moon') - .duration(20 * 28) - .EUt(GTValues.VHA[GTValues.LV]) - - //#endregion - - //#region Making Dusty Ores - - const $ChanceLogic = Java.loadClass('com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic') - - event.recipes.gtceu.chemical_reactor('tfg:dusty_certus_reactor') - .itemInputs('#forge:dusts/certus_regolith') - .inputFluids('gtceu:regolith_vapor 100') - .itemOutputs('gtceu:dusty_raw_certus_quartz') - .dimension('ad_astra:moon') - .duration(20 * 68) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor('tfg:dusty_goethite_reactor') - .itemInputs('#forge:dusts/goethe_regolith') - .inputFluids('gtceu:regolith_vapor 100') - .itemOutputs('gtceu:dusty_raw_goethite') - .dimension('ad_astra:moon') - .duration(20 * 68) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor('tfg:dusty_shiny_reactor') - .itemInputs('#forge:dusts/bright_regolith') - .inputFluids('gtceu:regolith_vapor 100') - .chancedItemOutputLogic($ChanceLogic.XOR) - .chancedOutput('gtceu:dusty_raw_diamond', 2000, 0) - .chancedOutput('gtceu:dusty_raw_gold', 8000, 0) - .dimension('ad_astra:moon') - .duration(20 * 68) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor('tfg:dusty_cassiterite_reactor') - .itemInputs('#forge:dusts/cassiterite_regolith') - .inputFluids('gtceu:regolith_vapor 100') - .itemOutputs('gtceu:dusty_raw_cassiterite') - .dimension('ad_astra:moon') - .duration(20 * 68) - .EUt(GTValues.VHA[GTValues.ULV]) - - //#endregion - - //#region Basic dusty ore centrifuging - - // These have special recipes - const DUSTY_ORE_EXCEPTIONS = [ - GTMaterials.Goethite, - GTMaterials.Cassiterite, - GTMaterials.Bauxite - ] - - // Otherwise everything else just centrifuges into its dust version - forEachMaterial(material => { - if (DUSTY_ORE_EXCEPTIONS.indexOf(material) >= 0) - return; - - const dustyOre = ChemicalHelper.get(TFGTagPrefix.dustyRawOre, material, 1) - const dust = ChemicalHelper.get(TagPrefix.dust, material, 1) - - if (dustyOre !== null && dust !== null) { - event.recipes.gtceu.centrifuge(`tfg:dusty_to_dust_${material.getName()}`) - .itemInputs(dustyOre) - .itemOutputs(dust) - .duration(20 * 45) - .EUt(GTValues.VA[GTValues.MV]) - } - }) - - event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_goethite') - .itemInputs('#forge:dusty_raw_materials/goethite') - .chancedItemOutputLogic($ChanceLogic.XOR) - .chancedOutput('#forge:dusts/iron', 5000, 0) - .chancedOutput('#forge:dusts/copper', 5000, 0) - .duration(20 * 45) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_bauxite') - .itemInputs('#forge:dusty_raw_materials/bauxite') - .itemOutputs('#forge:dusts/aluminium') - .duration(20 * 45) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_tin') - .itemInputs('#forge:dusty_raw_materials/cassiterite') - .itemOutputs('#forge:dusts/tin') - .duration(20 * 45) - .EUt(GTValues.VA[GTValues.MV]) - - //#region Mars Ores Line - - // Ostrum Harvester - - event.recipes.gtceu.ostrum_harvester(`tfg:ostrum_harvesting`) - .perTick(true) - .inputFluids('gtceu:drilling_fluid 4') - .perTick(false) - .dimension('ad_astra:mars') - .itemOutputsRanged('gtceu:ostrum_dust', 1, 5) - .duration(20 * 30) - .EUt(GTValues.VA[GTValues.LV]); - - // Ostrum Linear Accelerator Recipes - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum_transformation') - .inputFluids('gtceu:residual_radioactive_concoction 100') - .itemInputs('32x #forge:dusts/ostrum') - .chancedFluidOutputLogic($ChanceLogic.XOR) - .chancedFluidOutput('gtceu:lightweight_ostrum_vapor', 6000, 0) - .chancedFluidOutput('gtceu:ostrum_vapor', 3000, 0) - .chancedFluidOutput('gtceu:dense_ostrum_vapor', 1000, 0) - .dimension('ad_astra:mars') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.EV]); - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum') - .inputFluids('gtceu:lightweight_ostrum_vapor 1000') - .inputFluids('gtceu:residual_radioactive_concoction 100') - .inputFluids(Fluid.of('tfg:heavy_water', 1000)) - .itemOutputsRanged('#forge:dusty_raw_materials/pitchblende', 1, 10) - .itemOutputsRanged('#forge:dusty_raw_materials/silver', 1, 10) - .itemOutputsRanged('#forge:dusty_raw_materials/tricalcium_phosphate', 1, 10) - .dimension('ad_astra:mars') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.IV]); - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum') - .inputFluids('gtceu:ostrum_vapor 1000') - .inputFluids('gtceu:residual_radioactive_concoction 100') - .inputFluids(Fluid.of('gtceu:radon', 100)) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/beryllium'), 1, 10) - .dimension('ad_astra:mars') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.IV]); - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:dense_ostrum') - .inputFluids('gtceu:dense_ostrum_vapor 1000') - .inputFluids('gtceu:residual_radioactive_concoction 100') - .inputFluids(Fluid.of('gtceu:tritiated_water', 500)) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/uraninite'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/hematite'), 1, 10) - .dimension('ad_astra:mars') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.IV]); - - - // #region Zirconium - - event.recipes.gtceu.chemical_reactor('tfg:silicon_tetrachloride') - .itemInputs('#forge:dusts/silicon') - .inputFluids('gtceu:chlorine 4000') - .outputFluids('tfg:silicon_tetrachloride 1000') - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.chemical_reactor('tfg:silicon_tetrachloride_decomp') - .inputFluids('tfg:silicon_tetrachloride 1000', 'minecraft:water 2000') - .itemOutputs('#forge:dusts/silicon') - .outputFluids('gtceu:hydrochloric_acid 4000', 'gtceu:oxygen 2000') - .duration(5 * 20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.chemical_reactor('tfg:zirconium_tetrachloride') - .itemInputs('4x #forge:dusts/carbon', '6x #forge:dusts/zircon') - .inputFluids('gtceu:chlorine 8000') - .outputFluids('gtceu:carbon_monoxide 4000', 'tfg:silicon_tetrachloride 1000') - .itemOutputs('5x #forge:dusts/zirconium_tetrachloride') - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.electric_blast_furnace('tfg:zirconium') - .itemInputs('2x #forge:dusts/magnesium', '5x #forge:dusts/zirconium_tetrachloride') - .itemOutputs('#forge:hot_ingots/zirconium', '6x #forge:dusts/magnesium_chloride') - .duration(55 * 20) - .blastFurnaceTemp(4241) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_reactor('tfg:zirconium_bromide') - .itemInputs('#forge:dusts/zirconium', '2x #forge:dusts/carbon') - .inputFluids('gtceu:bromine 4000', 'gtceu:oxygen 2000') - .itemOutputs('5x #forge:dusts/zirconium_bromide') - .outputFluids('gtceu:carbon_monoxide 2000') - .duration(10 * 20) - .EUt(GTValues.VA[GTValues.IV]) - - event.recipes.gtceu.chemical_reactor('tfg:zirconium_diboride') - .itemInputs('10x #forge:dusts/zirconium_bromide', '5x #forge:dusts/boron_carbide') - .notConsumable('#forge:dusts/carbon') - .itemOutputs('6x #forge:dusts/zirconium_diboride', '#forge:dusts/carbon') - .outputFluids('gtceu:bromine 8000') - .duration(10 * 20) - .EUt(GTValues.VA[GTValues.IV]) - - event.recipes.gtceu.chemical_reactor('tfg:boron_carbide') - .itemInputs('4x #forge:dusts/boron', '7x #forge:dusts/carbon') - .inputFluids('gtceu:oxygen 6000') - .itemOutputs('5x #forge:dusts/boron_carbide') - .outputFluids('gtceu:carbon_monoxide 6000') - .duration(10 * 20) - .EUt(GTValues.VA[GTValues.HV]) - - // #endregion -} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/space_general/recipes.insulation.js b/kubejs/server_scripts/tfg/space_general/recipes.insulation.js new file mode 100644 index 000000000..40bd3062d --- /dev/null +++ b/kubejs/server_scripts/tfg/space_general/recipes.insulation.js @@ -0,0 +1,234 @@ +"use strict"; + +function registerTFGInsulationRecipes(event) { + + //#region Rock-wool stuff + event.recipes.gtceu.mixer('tfg:aes_mix') + .itemInputs('5x gtceu:silicon_dioxide_dust', '4x gtceu:quicklime_dust', 'gtceu:magnesia_dust') + .itemOutputs('10x tfg:aes_mix_dust') + .duration(160) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.electric_blast_furnace('tfg:molten_aes') + .itemInputs('2x tfg:aes_mix_dust') + .outputFluids(Fluid.of('tfg:molten_aes', 1000)) + .chancedOutput('gtceu:ash_dust', 3000, 0) + .circuit(1) + .duration(400) + .blastFurnaceTemp(3000) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.electric_blast_furnace('tfg:molten_aes_he') + .itemInputs('2x tfg:aes_mix_dust') + .inputFluids(Fluid.of('gtceu:helium', 200)) + .outputFluids(Fluid.of('tfg:molten_aes', 1000)) + .circuit(2) + .duration(140) + .blastFurnaceTemp(3000) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.centrifuge('tfg:aes_wool') + .inputFluids(Fluid.of('tfg:molten_aes', 200)) + .itemOutputs('tfg:aes_wool') + .duration(30) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.forming_press('tfg:aes_compressed_wool') + .itemInputs('4x tfg:aes_wool') + .notConsumable('gtceu:ingot_casting_mold') + .itemOutputs('tfg:aes_compressed_wool') + .duration(40) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_bath('tfg:aes_insulation_sheet') + .itemInputs('tfg:aes_compressed_wool') + .inputFluids(Fluid.of('gtceu:epoxy', 72)) + .circuit(1) + .itemOutputs('tfg:aes_insulation_sheet') + .duration(80) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_bath('tfg:aes_insulation_roll') + .itemInputs('9x tfg:aes_compressed_wool') + .inputFluids(Fluid.of('gtceu:epoxy', 648)) + .itemOutputs('tfg:aes_insulation_roll') + .circuit(9) + .duration(400) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.assembler('tfg:aes_insulation_roll') + .itemInputs('9x tfg:aes_insulation_sheet') + .itemOutputs('tfg:aes_insulation_roll') + .circuit(0) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + + event.shaped('tfg:aes_insulation_roll', [ + 'AAA', + 'AAA', + 'AAA' + ], { + A: 'tfg:aes_insulation_sheet' + }).id('tfg:shaped/aes_insulation_roll') + + event.recipes.gtceu.assembler('tfg:aes_insulation_sheet') + .itemInputs('9x tfg:aes_insulation_sheet') + .itemOutputs('tfg:aes_insulation_roll') + .circuit(0) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + + event.shapeless('9x tfg:aes_insulation_sheet', [ + 'tfg:aes_insulation_roll' + ]).id('tfg:shapeless/aes_insulation_sheet') + + event.recipes.gtceu.electric_blast_furnace('tfg:smelt_aes_sheet') + .itemInputs('tfg:aes_insulation_sheet') + .inputFluids(Fluid.of('gtceu:helium', 200)) + .outputFluids(Fluid.of('tfg:molten_aes', 800)) + .chancedOutput('gtceu:ash_dust', 2500, 0) + .circuit(1) + .duration(140) + .blastFurnaceTemp(3000) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.electric_blast_furnace('tfg:smelt_aes_roll') + .itemInputs('tfg:aes_insulation_roll') + .inputFluids(Fluid.of('gtceu:helium', 1000)) + .itemOutputs('2x gtceu:ash_dust') + .outputFluids(Fluid.of('tfg:molten_aes', 7200)) + .circuit(9) + .duration(1000) + .blastFurnaceTemp(3000) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.electric_blast_furnace('tfg:smelt_sniffer_wool') + .itemInputs('tfg:sniffer_wool') + .chancedOutput('gtceu:ash_dust', 7500, 0) + .outputFluids(Fluid.of('tfg:molten_aes', 200)) + .circuit(4) + .duration(80) + .blastFurnaceTemp(3000) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.electric_blast_furnace('tfg:smelt_wraptor_wool') + .itemInputs('tfg:wraptor_wool') + .chancedOutput('gtceu:ash_dust', 5000, 0) + .outputFluids(Fluid.of('tfg:molten_aes', 100)) + .circuit(8) + .duration(60) + .blastFurnaceTemp(3000) + .EUt(GTValues.VA[GTValues.EV]) + // #endregion + + //#region ammonia borane + event.recipes.gtceu.chemical_reactor('tfg:sodium_hydride_synthesis') + .itemInputs('#forge:dusts/sodium') + .inputFluids(Fluid.of('gtceu:hydrogen', 1000)) + .itemOutputs('2x #forge:dusts/sodium_hydride') + .duration(400) + .EUt(GTValues.VA[GTValues.HV]) + event.recipes.gtceu.chemical_reactor('tfg:boric_acid_synthesis') + .itemInputs('23x #forge:dusts/borax') + .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 2000)) + .itemOutputs('28x #forge:dusts/boric_acid', '2x #forge:dusts/salt') + .outputFluids(Fluid.of('minecraft:water', 5000)) + .duration(400) + .EUt(GTValues.VA[GTValues.HV]) + event.recipes.gtceu.chemical_reactor('tfg:trimethyl_borate_synthesis') + .itemInputs('7x #forge:dusts/boric_acid') + .inputFluids(Fluid.of('gtceu:methanol', 3000), Fluid.of('gtceu:sulfuric_acid', 100)) + .outputFluids(Fluid.of('tfg:trimethyl_borate', 1000), Fluid.of('minecraft:water', 3000)) + .duration(300) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.chemical_reactor('tfg:sodium_borohydride_synthesis') + .itemInputs('4x #forge:dusts/sodium_hydride') + .inputFluids(Fluid.of('tfg:trimethyl_borate', 1000)) + .itemOutputs('6x #forge:dusts/sodium_borohydride', '18x #forge:dusts/sodium_methoxide') + .duration(160) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.chemical_reactor('tfg:ammonia_borane_synthesis') + .itemInputs('6x #forge:dusts/sodium_borohydride', '6x #forge:dusts/ammonium_chloride') + .itemOutputs('8x #forge:dusts/ammonia_borane', '2x #forge:dusts/salt') + .outputFluids(Fluid.of('gtceu:hydrogen', 2000)) + .duration(100) + .EUt(GTValues.VA[GTValues.IV]) + //#endregion + + //#region polyurethane + event.recipes.gtceu.chemical_reactor('tfg:aniline_synthesis') + .inputFluids(Fluid.of('gtceu:nitrobenzene', 1000), Fluid.of('gtceu:hydrogen', 6000)) + .notConsumable('#forge:dusts/iron') + .outputFluids(Fluid.of('tfg:aniline', 1000), Fluid.of('minecraft:water', 2000)) + .duration(140) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.chemical_reactor('tfg:dimethyl_carbonate_synthesis') + .inputFluids(Fluid.of('gtceu:carbon_monoxide', 1000), Fluid.of('gtceu:oxygen', 1000), Fluid.of('gtceu:methanol', 2000)) + .outputFluids(Fluid.of('tfg:dimethyl_carbonate', 1000), Fluid.of('minecraft:water', 1000)) + .duration(120) + .circuit(2) + .EUt(GTValues.VA[GTValues.HV]) + event.recipes.gtceu.chemical_reactor('tfg:methyl_phenylcarbamate_synthesis') + .inputFluids(Fluid.of('tfg:aniline', 1000), Fluid.of('tfg:dimethyl_carbonate', 1000)) + .outputFluids(Fluid.of('tfg:methyl_phenylcarbamate', 1000), Fluid.of('gtceu:methanol', 1000)) + .duration(200) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.chemical_reactor('tfg:mpc_synthesis') + .inputFluids(Fluid.of('tfg:methyl_phenylcarbamate', 2000), Fluid.of('gtceu:formaldehyde', 1000)) + .outputFluids(Fluid.of('tfg:methylene_diphenyl_dicarbamate', 1000), Fluid.of('minecraft:water', 1000)) + .duration(200) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.chemical_reactor('tfg:mpi_synthesis') + .inputFluids(Fluid.of('tfg:methylene_diphenyl_dicarbamate', 1000)) + .itemOutputs('27x #forge:dusts/methylene_diphenyl_diisocyanate') + .outputFluids(Fluid.of('gtceu:methanol', 2000)) + .duration(80) + .EUt(GTValues.VA[GTValues.IV]) + event.recipes.gtceu.mixer('tfg:aes_polyurethane_electric_only') + .itemInputs('2x #tfg:mineral_rich_wool', 'tfg:aes_compressed_wool', '27x #forge:dusts/methylene_diphenyl_diisocyanate') + .inputFluids(Fluid.of('gtceu:diethylenetriamine', 250), Fluid.of('gtceu:acetone', 1000)) + .itemOutputs('tfg:aes_polyurethane') + .duration(80) + .EUt(GTValues.VA[GTValues.IV]) + + //#endregion + + //#region Aerogel + event.recipes.gtceu.chemical_reactor('tfg:tmos_synthesis') + .inputFluids(Fluid.of('tfg:dimethyl_carbonate', 2000)) + .itemInputs('3x #forge:dusts/silicon_dioxide') + .notConsumable('#forge:small_dusts/potassium_hydroxide') + .outputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:carbon_dioxide', 2000)) + .duration(100) + .EUt(GTValues.VA[GTValues.IV]) + event.recipes.gtceu.chemical_reactor('tfg:tmos_hydrolysis') + .inputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:distilled_water', 2000)) + .outputFluids(Fluid.of('gtceu:methanol', 4000)) + .itemOutputs('3x #forge:dusts/silicon_dioxide') + .duration(100) + .EUt(GTValues.VA[GTValues.MV]) + event.recipes.gtceu.large_chemical_reactor('tfg:silica_gel_synthesis') + .inputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:ethanol', 2000), Fluid.of('gtceu:distilled_water', 500), + Fluid.of('gtceu:hydrochloric_acid', 100)) + .outputFluids(Fluid.of('tfg:silica_gel', 1000)) + .duration(300) + .EUt(GTValues.VA[GTValues.IV]) + event.recipes.gtceu.chemical_reactor('tfg:silica_gel_soaking') + .inputFluids(Fluid.of('tfg:silica_gel', 1000), Fluid.of('gtceu:acetone', 2000)) + .outputFluids(Fluid.of('tfg:soaked_silica_gel', 1000)) + .duration(400) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.large_chemical_reactor('tfg:silica_aerogel') + .inputFluids(Fluid.of('tfg:soaked_silica_gel', 1000), Fluid.of('gtceu:liquid_carbon_dioxide', 3000)) + .outputFluids(Fluid.of('gtceu:carbon_dioxide', 3000), Fluid.of('gtceu:acetone', 1000)) + .itemOutputs('tfg:silica_aerogel') + .duration(400) + .EUt(GTValues.VA[GTValues.IV]) + //#endregion + + //#region Tier 3 insulation + event.recipes.gtceu.forming_press('tfg:mli_shielding') + .itemInputs('4x #forge:plates/ammonia_borane', '2x tfg:aes_polyurethane', '4x gtceu:carbon_fiber_plate') + .itemOutputs('tfg:mli_shielding') + .duration(100) + .EUt(GTValues.VA[GTValues.IV]) + //#endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/space_general/recipes.railgun.js b/kubejs/server_scripts/tfg/space_general/recipes.railgun.js new file mode 100644 index 000000000..fb532c5bf --- /dev/null +++ b/kubejs/server_scripts/tfg/space_general/recipes.railgun.js @@ -0,0 +1,111 @@ +"use strict"; + +function registerTFGRailgunRecipes(event) { + + // Railgun stuff + // (the railgun inputs and outputs are in tfg-core) + + + //item bus to railgun item bus conversion recipes + const GTTiers = ['ulv', 'lv', 'mv', 'hv', 'ev', 'iv', 'luv', 'zpm', 'uv', 'uhv'] + GTTiers.forEach(x => { + event.recipes.gtceu.assembler(`tfg:${x}_input_to_${x}_railgun_input_assembler`) + .itemInputs(`gtceu:${x}_input_bus`) + .circuit(4) + .itemOutputs(`tfg:${x}_railgun_item_loader_in`) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.assembler(`tfg:${x}_output_to_${x}_railgun_output_assembler`) + .itemInputs(`gtceu:${x}_output_bus`) + .circuit(4) + .itemOutputs(`tfg:${x}_railgun_item_loader_out`) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.LV]) + }) + + //Railgun ammo + event.recipes.gtceu.assembler('tfg:railgun_ammo_basic') + .itemInputs('#forge:double_plates/steel', '2x #forge:rods/magnetic_iron', '2x #forge:fine_wires/annealed_copper') + .inputFluids('gtceu:rocket_fuel 250') + .itemOutputs('tfg:railgun_ammo_shell') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.assembler('tfg:railgun_ammo_advanced') + .itemInputs('#forge:double_plates/titanium', '2x #forge:rods/magnetic_steel', '2x #forge:fine_wires/gold') + .inputFluids('gtceu:rocket_fuel 250') + .itemOutputs('4x tfg:railgun_ammo_shell') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.assembler('tfg:railgun_ammo_best') + .itemInputs('#forge:double_plates/tungsten', '2x #forge:rods/magnetic_neodymium', '2x #forge:fine_wires/aluminium') + .inputFluids('gtceu:rocket_fuel 250') + .itemOutputs('8x tfg:railgun_ammo_shell') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.assembler('tfg:railgun_ammo_moon') + .itemInputs('#forge:double_plates/steel', '2x ae2:charged_certus_quartz_crystal', '2x ae2:quartz_fiber') + .inputFluids('gtceu:rocket_fuel 250') + .itemOutputs('4x tfg:railgun_ammo_shell') + .dimension('ad_astra:moon') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.assembler('tfg:railgun_ammo_mars') + .itemInputs('#forge:double_plates/lead', '2x #forge:rods/ostrum', '2x #forge:fine_wires/silver') + .inputFluids('gtceu:rocket_fuel 250') + .itemOutputs('8x tfg:railgun_ammo_shell') + .dimension('ad_astra:mars') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.shaped('tfg:railgun_ammo_loader', [ + 'RMR', + 'MBM', + 'CCC' + ], { + B: 'gtceu:mv_input_bus', + R: 'gtceu:mv_robot_arm', + M: 'gtceu:mv_electric_motor', + C: '#forge:single_cables/annealed_copper' + }).addMaterialInfo().id('tfg:shaped/railgun_ammo_loader') + + event.recipes.gtceu.shaped('tfg:interplanetary_logistics_monitor', [ + 'CDC', + 'SHE', + 'WCW' + ], { + C: '#gtceu:circuits/hv', + D: 'gtceu:computer_monitor_cover', + S: 'gtceu:hv_sensor', + H: 'gtceu:hv_machine_hull', + E: 'gtceu:hv_emitter', + W: '#forge:single_cables/silver' + }).addMaterialInfo().id('tfg:shaped/interplanetary_logistics_monitor') + + event.recipes.gtceu.shaped('tfg:interplanetary_item_launcher', [ + 'NSN', + 'CHC', + 'NEN' + ], { + C: '#gtceu:circuits/ev', + S: 'gtceu:hv_sensor', + E: 'gtceu:hv_emitter', + H: 'gtceu:ev_machine_hull', + N: '#forge:plates/hsla_steel' + }).addMaterialInfo().id('tfg:shaped/interplanetary_item_launcher') + + event.recipes.gtceu.shaped('tfg:interplanetary_item_receiver', [ + 'CSC', + 'WHW', + 'CSC' + ], { + C: '#gtceu:circuits/mv', + S: 'gtceu:mv_sensor', + W: '#forge:double_cables/copper', + H: 'gtceu:mv_machine_hull' + }).addMaterialInfo().id('tfg:shaped/interplanetary_item_receiver') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/space_general/recipes.rockets.js b/kubejs/server_scripts/tfg/space_general/recipes.rockets.js new file mode 100644 index 000000000..161eb46af --- /dev/null +++ b/kubejs/server_scripts/tfg/space_general/recipes.rockets.js @@ -0,0 +1,283 @@ +"use strict"; + +function registerTFGRocketRecipes(event) { + + //#region Tier 1 rocket + + event.recipes.gtceu.assembler('tfg:rocket_nose_cone_t1') + .itemInputs( + 'gtceu:hv_emitter', + ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t1'), 1), + ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 3)) + .inputFluids(Fluid.of('gtceu:polyethylene', 144 * 16)) + .itemOutputs('ad_astra:rocket_nose_cone') + .duration(1200) + .circuit(2) + .EUt(480) + .addMaterialInfo(true, true) + + + event.recipes.gtceu.pyrolyse_oven('tfg:pyrolyse_vitrified_asbestos_dust') + .inputFluids(Fluid.of('gtceu:nitrogen', 100)) + .itemInputs('gtceu:asbestos_dust') + .itemOutputs('gtceu:vitrified_asbestos_dust') + .duration(80) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.mixer('tfg:rocket_alloy_t1') + .itemInputs('6x #forge:dusts/aluminium', '2x #forge:dusts/stainless_steel') + .inputFluids(Fluid.of('gtceu:red_steel', 144)) + .itemOutputs('9x #forge:dusts/rocket_alloy_t1') + .duration(580) + .circuit(2) + .EUt(480) + + event.recipes.gtceu.chemical_bath('tfg:rocket_alloy_cool_down_water') + .itemInputs('#forge:hot_ingots/rocket_alloy_t1') + .inputFluids(Fluid.of('minecraft:water', 100)) + .itemOutputs('#forge:ingots/rocket_alloy_t1') + .duration(400) + .EUt(120) + + event.recipes.gtceu.chemical_bath('tfg:rocket_alloy_cool_down_distilled_water') + .itemInputs('#forge:hot_ingots/rocket_alloy_t1') + .inputFluids(Fluid.of('gtceu:distilled_water', 100)) + .itemOutputs('#forge:ingots/rocket_alloy_t1') + .duration(250) + .EUt(120) + + event.recipes.gtceu.assembler(`tfg:rocket_fin_t1`) + .itemInputs( + ChemicalHelper.get(TagPrefix.plate, TFGHelpers.getMaterial('rocket_alloy_t1'), 1), + ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 1) + ) + .itemOutputs('ad_astra:rocket_fin') + .duration(150) + .circuit(2) + .EUt(GTValues.VA[GTValues.HV]) + .addMaterialInfo(true) + + + event.recipes.gtceu.assembler('tfg:rocket_steel_engine') + .itemInputs( + ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 2), + '2x #gtceu:circuits/hv', + 'gtceu:hv_electric_pump', + '2x gtceu:power_thruster', + ChemicalHelper.get(TagPrefix.rotor, GTMaterials.StainlessSteel, 1) + ) + .inputFluids(Fluid.of('gtceu:blue_steel', 144 * 8)) + .itemOutputs('ad_astra:steel_engine') + .duration(600) + .circuit(2) + .EUt(GTValues.VA[GTValues.HV]) + .addMaterialInfo(true, true) + + event.recipes.gtceu.assembler('ad_astra:assembler_tier_1_rocket') + .itemInputs( + ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t1'), 8), + '4x ad_astra:rocket_fin', + '1x ad_astra:steel_engine', + '1x ad_astra:rocket_nose_cone', + '16x #forge:insulation_t1', + '4x #gtceu:circuits/hv' + ) + .inputFluids(Fluid.of('gtceu:silicon', 144 * 16)) + .itemOutputs('ad_astra:tier_1_rocket') + .duration(1200) + .circuit(2) + .EUt(GTValues.VA[GTValues.HV]) + .addMaterialInfo(true, true) + + //#endregion + + + //region tier 2 rocket + + event.remove({ mod: 'gtceu', input: 'gtceu:hot_rocket_alloy_t2_ingot' }) + + event.recipes.gtceu.alloy_blast_smelter('gtceu:alloy_blast_smelter/rocket_alloy_t2') + .itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium') + .inputFluids(Fluid.of('gtceu:vanadium', 144 * 4), Fluid.of('gtceu:distilled_water', 16000)) + .outputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144 * 32)) + .duration(1320 * 20) + .circuit(2) + .blastFurnaceTemp(3200) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.alloy_blast_smelter('gtceu:alloy_blast_smelter/rocket_alloy_t2_gas') + .itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium') + .inputFluids(Fluid.of('gtceu:vanadium', 144 * 4), Fluid.of('gtceu:distilled_water', 16000), Fluid.of('gtceu:helium', 3200)) + .outputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144 * 32)) + .duration(17688) + .circuit(12) + .blastFurnaceTemp(3200) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/cool_molten_rocket_alloy_t2') + .notConsumable('gtceu:ingot_casting_mold') + .inputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144), Fluid.of('tfg:cryogenized_fluix', 288)) + .itemOutputs('#forge:ingots/rocket_alloy_t2') + .duration(120) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.mixer('tfg:rocket_alloy_t2') + .itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium') + .inputFluids(Fluid.of('gtceu:vanadium', 144 * 4)) + .itemOutputs('32x #forge:dusts/rocket_alloy_t2') + .duration(15 * 20) + .circuit(5) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/cool_rocket_alloy_t2') + .itemInputs('#forge:hot_ingots/rocket_alloy_t2') + .inputFluids(Fluid.of('gtceu:distilled_water', 500), Fluid.of('tfg:cryogenized_fluix', 288)) + .itemOutputs('#forge:ingots/rocket_alloy_t2') + .duration(120) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.assembler('tfg:rocket_fin_t2') + .itemInputs('#forge:plates/rocket_alloy_t2', + '#forge:double_plates/titanium') + .itemOutputs('tfg:rocket_fin_t2') + .duration(180) + .circuit(3) + .EUt(GTValues.VA[GTValues.EV]) + .addMaterialInfo(true) + + event.recipes.gtceu.assembler('tfg:rocket_cone_t2') + .itemInputs('gtceu:ev_emitter', '#forge:dense_plates/rocket_alloy_t2', '#forge:double_plates/titanium', + '#forge:double_plates/desh') + .itemOutputs('tfg:rocket_cone_t2') + .duration(1440) + .circuit(3) + .EUt(GTValues.VA[GTValues.EV]) + .addMaterialInfo(true) + + + event.recipes.gtceu.assembler('tfg:rocket_desh_engine') + .itemInputs( + ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.Titanium, 4), + '2x #gtceu:circuits/ev', + 'gtceu:ev_electric_pump', + '3x gtceu:advanced_power_thruster', + ChemicalHelper.get(TagPrefix.rod, GTMaterials.NeodymiumMagnetic, 4), + ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Titanium, 1)) + .inputFluids(Fluid.of('gtceu:desh', 144 * 12)) + .itemOutputs('ad_astra:desh_engine') + .duration(800) + .circuit(3) + .EUt(GTValues.VA[GTValues.EV]) + .addMaterialInfo(true, true) + + event.recipes.gtceu.assembler('ad_astra:tier_2_rocket') + .itemInputs( + ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t2'), 12), + '4x tfg:rocket_fin_t2', + '1x ad_astra:desh_engine', + '1x tfg:rocket_cone_t2', + '12x #forge:insulation_t2/roll', + '4x #gtceu:circuits/ev' + ) + .inputFluids(Fluid.of('gtceu:titanium', 144 * 16)) + .itemOutputs('ad_astra:tier_2_rocket') + .duration(1440) + .circuit(3) + .EUt(GTValues.VA[GTValues.EV]) + .addMaterialInfo(true, true) + + //#endregion + + //region Tier 3 DISABLED UNTIL IV + event.remove({ id: "gtceu:vacuum_freezer/cool_hot_rocket_alloy_t3_ingot" }) + event.remove({ id: "gtceu:vacuum_freezer/rocket_alloy_t3" }) + /* + event.recipes.gtceu.vacuum_freezer('tfg:cool_rocket_alloy_t3') + .inputFluids(Fluid.of('gtceu:molten_rocket_alloy_t3', 144), Fluid.of('gtceu:ice', 4000)) + .notConsumable('gtceu:ingot_casting_mold') + .itemOutputs('#forge:ingots/rocket_alloy_t3') + .duration(800) + .EUt(GTValues.VA[GTValues.HV]) + event.recipes.gtceu.vacuum_freezer('tfg:cool_hot_rocket_alloy_t3') + .itemInputs('#forge:hot_ingots/rocket_alloy_t3') + .inputFluids(Fluid.of('gtceu:liquid_helium', 500)) + .itemOutputs('#forge:ingots/rocket_alloy_t3') + .outputFluids(Fluid.of('gtceu:helium', 250)) + .duration(400) + .EUt(GTValues.VA[GTValues.HV]) + + //Add some unique cooling thing for molten ingots + + event.recipes.gtceu.assembler('tfg:rocket_fin_t3') + .itemInputs('#forge:plates/rocket_alloy_t3', '#forge:double_plates/tungsten_steel') + .itemOutputs('tfg:rocket_fin_t3') + .duration(220) + .circuit(4) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.recipes.gtceu.assembler('tfg:rocket_cone_t3') + .itemInputs('gtceu:iv_emitter', '#forge:dense_plates/rocket_alloy_t3', '#forge:double_plates/tungsten_steel', + '#forge:double_plates/ostrum', 'gtceu:plutonium_nugget') //change this to the pellet + .itemOutputs('tfg:rocket_cone_t3') + .duration(1700) + .circuit(4) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.recipes.gtceu.assembler('tfg:elite_power_thruster') + .itemInputs('gtceu:ev_electric_motor', '2x #forge:rings/titanium', '#forge:rods/titanium', + 'gtceu:ultimet_rotor', '2x gtceu:aluminium_single_cable') + .itemOutputs('tfg:elite_power_thruster') + .duration(200) + .EUt(GTValues.VA[GTValues.LV]) + .addMaterialInfo(true) + + event.recipes.gtceu.assembler('tfg:rocket_ostrum_engine') + .itemInputs( + '6x #forge:double_plates/tungsten_steel', + '4x #gtceu:circuits/iv', + 'gtceu:iv_electric_pump', + '3x tfg:elite_power_thruster', + '4x #forge:insulation_t3/cryo', + '6x #forge:rods/magnetic_neodymium', + '#forge:rotors/tungsten_steel') + .inputFluids(Fluid.of('gtceu:ostrum', 144 * 16)) + .itemOutputs('ad_astra:ostrum_engine') + .duration(960) + .circuit(4) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true, true) + + event.recipes.gtceu.assembler('tfg:rocket_ostrum_tank') + .itemInputs( + '4x #forge:double_plates/rocket_alloy_t3', + 'gtceu:iv_electric_pump', + 'tfg:elite_power_thruster', + '2x #forge:insulation_t3/cryo') + .inputFluids(Fluid.of('gtceu:ostrum', 144 * 4)) + .itemOutputs('ad_astra:ostrum_tank') + .duration(400) + .circuit(4) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true, true) + + event.recipes.gtceu.assembler('ad_astra:tier_3_rocket') + .itemInputs( + '16x #forge:dense_plates/rocket_alloy_t3', + '4x tfg:rocket_fin_t3', + '1x ad_astra:ostrum_engine', + '2x ad_astra:ostrum_tank', + '1x tfg:rocket_cone_t3', + '8x #forge:insulation_t3/sheet' + ) + .inputFluids(Fluid.of('gtceu:bromine', 1000 * 16)) + .itemOutputs('ad_astra:tier_3_rocket') + .duration(1700) + .circuit(4) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true, true) + + //#endregion +*/ +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/space_general/recipes.space.js b/kubejs/server_scripts/tfg/space_general/recipes.space.js new file mode 100644 index 000000000..88e54b3a5 --- /dev/null +++ b/kubejs/server_scripts/tfg/space_general/recipes.space.js @@ -0,0 +1,114 @@ +// priority: 0 +"use strict"; + +/** + * @param {Internal.RecipesEventJS} event + */ +function registerTFGSpaceRecipes(event) { + + const allowedCombustibleDims = [ + { + dimension: "minecraft:the_nether", + type: "dimension" + }, + { + dimension: "minecraft:overworld", + type: "dimension" + } + ] + + event.findRecipes({ type: "gtceu:large_boiler" }).forEach(recipe => { + recipe.json.add("recipeConditions", allowedCombustibleDims) + }) + event.findRecipes({ type: "gtceu:steam_boiler" }).forEach(recipe => { + recipe.json.add("recipeConditions", allowedCombustibleDims) + }) + event.findRecipes({ type: "gtceu:combustion_generator" }).forEach(recipe => { + recipe.json.add("recipeConditions", allowedCombustibleDims) + }) + event.findRecipes({ type: "gtceu:gas_turbine" }).forEach(recipe => { + recipe.json.add("recipeConditions", allowedCombustibleDims) + }) + + // Air collector + + event.recipes.gtceu.gas_collector('tfg:nether') + .circuit(2) + .outputFluids(Fluid.of('gtceu:air', 10000)) + .dimension('minecraft:the_nether') + .duration(200) + .EUt(16) + + event.recipes.gtceu.gas_collector('tfg:moon') + .circuit(3) + .outputFluids(Fluid.of('gtceu:argon', 1)) + .dimension('ad_astra:moon') + .duration(20*60*30) + .EUt(16) + + event.recipes.gtceu.gas_collector('tfg:mars') + .circuit(4) + .outputFluids(Fluid.of('tfg:mars_air', 10000)) + .dimension('ad_astra:mars') + .duration(20*10) + .EUt(16) + + + // Aqueous accumulator -- use adjacentFluids (plural) to avoid rhino ambiguous method issues + + let aaCircuit = 1; + + event.recipes.gtceu.aqueous_accumulator('water') + .circuit(aaCircuit++) + .duration(20) + .EUt(GTValues.VHA[GTValues.ULV]) + .adjacentFluids(["minecraft:water"]) + .outputFluids(Fluid.of("minecraft:water", 1000)) + + event.recipes.gtceu.aqueous_accumulator('sea_water') + .circuit(aaCircuit++) + .duration(20) + .EUt(GTValues.VA[GTValues.ULV]) + .adjacentFluids(["tfc:salt_water"]) + .outputFluids(Fluid.of("tfc:salt_water", 1000)) + + event.recipes.gtceu.aqueous_accumulator('semiheavy_water_mars') + .circuit(aaCircuit++) + .dimension('ad_astra:mars') + .duration(20) + .EUt(GTValues.VHA[GTValues.ULV]) + .adjacentFluids(["tfg:semiheavy_ammoniacal_water"]) + .outputFluids(Fluid.of("tfg:semiheavy_ammoniacal_water", 1000)) + + event.recipes.gtceu.aqueous_accumulator('lava_overworld') + .circuit(aaCircuit++) + .dimension('minecraft:overworld') + .duration(20*15) + .EUt(GTValues.VHA[GTValues.HV]) + .adjacentFluids(["minecraft:lava"]) + .outputFluids(Fluid.of("minecraft:lava", 1000)) + + event.recipes.gtceu.aqueous_accumulator('lava_nether') + .circuit(aaCircuit++) + .dimension('minecraft:the_nether') + .duration(20*15) + .EUt(GTValues.VHA[GTValues.HV]) + .adjacentFluids(["minecraft:lava"]) + .outputFluids(Fluid.of("minecraft:lava", 1000)) + + event.recipes.gtceu.aqueous_accumulator('spring_water') + .circuit(aaCircuit++) + .dimension('minecraft:overworld') + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + .adjacentFluids(["tfc:spring_water"]) + .outputFluids(Fluid.of("tfc:spring_water", 1000)) + + event.recipes.gtceu.aqueous_accumulator('more_water') + .circuit(aaCircuit++) + .duration(10) + .EUt(GTValues.VHA[GTValues.HV]) + .adjacentFluids(["minecraft:water"]) + .outputFluids(Fluid.of("minecraft:water", 16000)) + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/space_general/recipes.space_suits.js b/kubejs/server_scripts/tfg/space_general/recipes.space_suits.js new file mode 100644 index 000000000..7c1d54856 --- /dev/null +++ b/kubejs/server_scripts/tfg/space_general/recipes.space_suits.js @@ -0,0 +1,182 @@ +"use strict"; + +function registerTFGSpaceSuitRecipes(event) { + + event.recipes.gtceu.shaped('ad_astra:launch_pad', [ + 'BAB', + 'AAA', + 'BAB' + ], { + A: '#forge:plates/steel', + B: '#forge:rods/steel' + }).addMaterialInfo().id('tfg:launch_pad') + + + // Space suit gases + + event.recipes.gtceu.gas_pressurizer('compressed_nitrox') + .inputFluids(Fluid.of('gtceu:nitrogen', 8000), Fluid.of('gtceu:oxygen', 2000)) + .outputFluids(Fluid.of('tfg:compressed_nitrox', 1000)) + .circuit(1) + .duration(100) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.gas_pressurizer('compressed_heliox') + .inputFluids(Fluid.of('gtceu:helium', 8000), Fluid.of('gtceu:oxygen', 2000)) + .outputFluids(Fluid.of('tfg:compressed_heliox', 1000)) + .circuit(1) + .duration(100) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.gas_pressurizer('compressed_heliox_3') + .inputFluids(Fluid.of('gtceu:helium_3', 8000), Fluid.of('gtceu:oxygen', 2000)) + .outputFluids(Fluid.of('tfg:compressed_heliox_3', 1000)) + .circuit(1) + .duration(100) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.gas_pressurizer('compressed_trimix') + .inputFluids(Fluid.of('gtceu:nitrogen', 5000), Fluid.of('gtceu:oxygen', 3000), Fluid.of('gtceu:helium', 2000)) + .outputFluids(Fluid.of('tfg:compressed_trimix', 1000)) + .circuit(2) + .duration(100) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.gas_pressurizer('compressed_trimix_3') + .inputFluids(Fluid.of('gtceu:nitrogen', 5000), Fluid.of('gtceu:oxygen', 3000), Fluid.of('gtceu:helium_3', 2000)) + .outputFluids(Fluid.of('tfg:compressed_trimix_3', 1000)) + .circuit(2) + .duration(100) + .EUt(GTValues.VA[GTValues.HV]) + + //#region space suits + + event.recipes.gtceu.forming_press('space_suit_fabric') + .itemInputs( + '#forge:foils/aluminium', + 'gtceu:carbon_fiber_mesh', + '#forge:foils/silicone_rubber', + 'tfg:polycaprolactam_fabric' + ) + .itemOutputs('2x tfg:space_suit_fabric') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.HV]) + .addMaterialInfo(true) + + event.recipes.gtceu.forming_press('better_space_suit_fabric') + .itemInputs( + '#forge:foils/polybenzimidazole', + 'gtceu:carbon_fiber_mesh', + '#forge:aerogels', + 'tfg:glacian_wool' + ) + .itemOutputs('2x tfg:better_space_suit_fabric') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.recipes.gtceu.shaped('ad_astra:space_helmet', [ + 'AAA', + 'ADA', + 'BBB' + ], { + A: 'gtceu:tempered_glass', + B: 'tfg:space_suit_fabric', + D: '#forge:small_fluid_pipes/polyethylene' + }).addMaterialInfo().id('tfg:space_helmet') + + event.recipes.gtceu.assembler('ad_astra:netherite_space_helmet') + .itemInputs( + 'ad_astra:space_helmet', + '2x #forge:plates/tungsten_steel', + '1x #forge:plates/ostrum', + '3x tfg:better_space_suit_fabric', + '5x gtceu:laminated_glass' + ) + .itemOutputs('ad_astra:netherite_space_helmet') + .duration(400) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.recipes.gtceu.shaped('ad_astra:space_suit', [ + 'B B', + 'BDB', + 'BBB' + ], { + B: 'tfg:space_suit_fabric', + D: 'ad_astra:oxygen_gear' + }).addMaterialInfo().id('tfg:space_suit') + + event.shapeless('ad_astra:space_suit', ['ad_astra:space_suit']) + .id('tfg:empty_space_suit') + + event.recipes.gtceu.assembler('ad_astra:netherite_space_suit') + .itemInputs( + 'ad_astra:space_suit', + '3x #forge:plates/tungsten_steel', + '2x #forge:plates/ostrum', + '5x tfg:better_space_suit_fabric' + ) + .itemOutputs('ad_astra:netherite_space_suit') + .duration(400) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.shapeless('ad_astra:netherite_space_suit', ['ad_astra:netherite_space_suit']) + .id('tfg:empty_netherite_space_suit') + + event.recipes.gtceu.shaped('ad_astra:space_pants', [ + 'BAB', + 'B B', + 'B B' + ], { + A: 'gtceu:hv_electric_motor', + B: 'tfg:space_suit_fabric', + }).addMaterialInfo().id('tfg:space_pants') + + event.recipes.gtceu.assembler('ad_astra:netherite_space_pants') + .itemInputs( + 'ad_astra:space_pants', + '2x #forge:plates/tungsten_steel', + '2x #forge:plates/ostrum', + '4x tfg:better_space_suit_fabric' + ) + .itemOutputs('ad_astra:netherite_space_pants') + .duration(400) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.recipes.gtceu.shaped('ad_astra:space_boots', [ + 'B B', + 'A A' + ], { + A: '#forge:plates/polyphenylene_sulfide', + B: 'tfg:space_suit_fabric' + }).addMaterialInfo().id('tfg:space_boots') + + event.recipes.gtceu.assembler('ad_astra:netherite_space_boots') + .itemInputs( + 'ad_astra:space_boots', + '1x #forge:plates/tungsten_steel', + '1x #forge:plates/ostrum', + '2x tfg:better_space_suit_fabric' + ) + .itemOutputs('ad_astra:netherite_space_boots') + .duration(400) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.recipes.gtceu.shaped('ad_astra:oxygen_gear', [ + 'BAB', + 'ECE', + 'BDB' + ], { + A: '#gtceu:circuits/hv', + B: '#forge:tiny_fluid_pipes/stainless_steel', + C: 'gtceu:hv_electric_pump', + D: 'gtceu:fluid_detector_cover', + E: 'ad_astra:gas_tank' + }).addMaterialInfo().id('tfg:oxygen_gear') + + //#endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/space_general/tags.railgun.js b/kubejs/server_scripts/tfg/space_general/tags.railgun.js new file mode 100644 index 000000000..0ad284fb5 --- /dev/null +++ b/kubejs/server_scripts/tfg/space_general/tags.railgun.js @@ -0,0 +1,82 @@ +"use strict"; + +function registerTFGRailgunItemTags(event) { + + event.add('tfg:cannot_launch_in_railgun', '#tfc:vessels') + event.add('tfg:cannot_launch_in_railgun', '#tfc:large_vessels') + event.add('tfg:cannot_launch_in_railgun', 'ae2:item_storage_cell_1k') + event.add('tfg:cannot_launch_in_railgun', 'ae2:item_storage_cell_4k') + event.add('tfg:cannot_launch_in_railgun', 'ae2:item_storage_cell_16k') + event.add('tfg:cannot_launch_in_railgun', 'ae2:item_storage_cell_64k') + event.add('tfg:cannot_launch_in_railgun', 'ae2:item_storage_cell_256k') + event.add('tfg:cannot_launch_in_railgun', 'ae2:fluid_storage_cell_1k') + event.add('tfg:cannot_launch_in_railgun', 'ae2:fluid_storage_cell_4k') + event.add('tfg:cannot_launch_in_railgun', 'ae2:fluid_storage_cell_16k') + event.add('tfg:cannot_launch_in_railgun', 'ae2:fluid_storage_cell_64k') + event.add('tfg:cannot_launch_in_railgun', 'ae2:fluid_storage_cell_256k') + event.add('tfg:cannot_launch_in_railgun', 'ae2:spatial_storage_cell_2') + event.add('tfg:cannot_launch_in_railgun', 'ae2:spatial_storage_cell_16') + event.add('tfg:cannot_launch_in_railgun', 'ae2:spatial_storage_cell_128') + event.add('tfg:cannot_launch_in_railgun', 'megacells:item_storage_cell_1m') + event.add('tfg:cannot_launch_in_railgun', 'megacells:item_storage_cell_4m') + event.add('tfg:cannot_launch_in_railgun', 'megacells:item_storage_cell_16m') + event.add('tfg:cannot_launch_in_railgun', 'megacells:item_storage_cell_64m') + event.add('tfg:cannot_launch_in_railgun', 'megacells:fluid_storage_cell_1m') + event.add('tfg:cannot_launch_in_railgun', 'megacells:fluid_storage_cell_4m') + event.add('tfg:cannot_launch_in_railgun', 'megacells:fluid_storage_cell_16m') + event.add('tfg:cannot_launch_in_railgun', 'megacells:fluid_storage_cell_64m') + event.add('tfg:cannot_launch_in_railgun', 'create:minecart_contraption') + event.add('tfg:cannot_launch_in_railgun', 'tfg:railgun_ammo_shell') + event.add('tfg:cannot_launch_in_railgun', 'create:cardboard_package_12x10') + event.add('tfg:cannot_launch_in_railgun', 'create:cardboard_package_10x8') + event.add('tfg:cannot_launch_in_railgun', 'create:cardboard_package_10x12') + event.add('tfg:cannot_launch_in_railgun', 'create:cardboard_package_12x12') + event.add('tfg:cannot_launch_in_railgun', 'create_factory_logistics:composite_package') + event.add('tfg:cannot_launch_in_railgun', 'create_factory_logistics:copper_jar_package_8x8') + event.add('tfg:cannot_launch_in_railgun', 'sns:ore_sack') + event.add('tfg:cannot_launch_in_railgun', 'sns:leather_sack') + event.add('tfg:cannot_launch_in_railgun', 'sns:burlap_sack') + event.add('tfg:cannot_launch_in_railgun', 'sns:seed_pouch') + event.add('tfg:cannot_launch_in_railgun', 'sns:straw_basket') + event.add('tfg:cannot_launch_in_railgun', 'sns:frame_pack') + event.add('tfg:cannot_launch_in_railgun', 'tfclunchbox:lunchbox') + event.add('tfg:cannot_launch_in_railgun', 'tfclunchbox:cooling_lunchbox') + event.add('tfg:cannot_launch_in_railgun', 'tfclunchbox:electric_lunchbox') + event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:backpack') + event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:copper_backpack') + event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:iron_backpack') + event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:gold_backpack') + event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:diamond_backpack') + event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:netherite_backpack') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:wood_crate') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:bronze_crate') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:black_bronze_crate') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:bismuth_bronze_crate') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:steel_crate') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:aluminium_crate') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:stainless_steel_crate') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:titanium_crate') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:tungsten_steel_crate') + event.add('tfg:cannot_launch_in_railgun', '#create:toolboxes') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:ulv_super_chest') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:lv_super_chest') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:mv_super_chest') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:hv_super_chest') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:ev_super_chest') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:iv_quantum_chest') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:luv_quantum_chest') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:zpm_quantum_chest') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:uv_quantum_chest') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:uhv_quantum_chest') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:ulv_super_tank') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:lv_super_tank') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:mv_super_tank') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:hv_super_tank') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:ev_super_tank') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:iv_quantum_tank') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:luv_quantum_tank') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:zpm_quantum_tank') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:uv_quantum_tank') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:uhv_quantum_tank') + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/space_general/tags.rockets.js b/kubejs/server_scripts/tfg/space_general/tags.rockets.js new file mode 100644 index 000000000..fd6a8ef65 --- /dev/null +++ b/kubejs/server_scripts/tfg/space_general/tags.rockets.js @@ -0,0 +1,28 @@ +"use strict"; + +function registerTFGRocketItemTags(event) { + + // Insulation Tier 1 + event.add('forge:insulation_t1', 'gtceu:borosilicate_glass_dust') + event.add('forge:insulation_t1', 'gtceu:vitrified_asbestos_dust') + + //Insulation Tier 2 + event.add('forge:insulation_t2/sheet', 'tfg:aes_insulation_sheet') + event.add('forge:insulation_t2/roll', 'tfg:aes_insulation_roll') + + //Insulation Tier3 + event.add('forge:insulation_t3/foam', 'tfg:aes_polyurethane') + event.add('forge:insulation_t3/sheet', 'tfg:mli_shielding') + event.add('forge:insulation_t3/cryo', 'tfg:silica_aerogel') + + event.add('forge:aerogels', 'tfg:silica_aerogel') + + //Rocket Engines + event.add('ad_astra:rocket_engine', 'ad_astra:steel_engine') + event.add('ad_astra:rocket_engine', 'ad_astra:desh_engine') + event.add('ad_astra:rocket_engine', 'ad_astra:ostrum_engine') + + //Rocket Tank + event.add('ad_astra:rocket_tank', 'ad_astra:ostrum_tank') + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/tags.interaction.js b/kubejs/server_scripts/tfg/tags.interaction.js index 99be4b76f..ad0c2bea0 100644 --- a/kubejs/server_scripts/tfg/tags.interaction.js +++ b/kubejs/server_scripts/tfg/tags.interaction.js @@ -1,8 +1,8 @@ // priority: 0 "use strict"; -function registerBlockInteractionTags(event) { - +function registerBlockInteractionItemTags(event) { + /** * @typedef {Object} BrickVariant * @property {string} brick_type - The name of the brick variant. @@ -23,11 +23,11 @@ function registerBlockInteractionTags(event) { * @property {string|null} smooth_slab - Smooth brick slab block ID. * @property {string|null} smooth_wall - Smooth brick wall block ID. * @property {string|null} chiseled_brick - Chiseled brick block ID. - */ - - for (const b of global.BRICK_INDEX) { + */ + + for (const b of global.BRICK_INDEX) { if (b.brick !== null) { event.add('tfg:interaction/brick', b.brick) } - if (b.brick_stairs !== null) {event.add('tfg:interaction/brick_stairs', b.brick_stairs) } + if (b.brick_stairs !== null) { event.add('tfg:interaction/brick_stairs', b.brick_stairs) } if (b.brick_slab !== null) { event.add('tfg:interaction/brick_slab', b.brick_slab) } if (b.brick_wall !== null) { event.add('tfg:interaction/brick_wall', b.brick_wall) } @@ -42,27 +42,22 @@ function registerBlockInteractionTags(event) { if (b.mossy_wall !== null) { event.add('tfg:interaction/mossy_brick_wall', b.mossy_wall) } if (b.smooth_brick !== null) { event.add('tfg:interaction/smooth_brick', b.smooth_brick) } - //event.add('tfg:interaction/smooth_bricks', b.smooth_stairs) - //event.add('tfg:interaction/smooth_bricks', b.smooth_slab) - //event.add('tfg:interaction/smooth_bricks', b.smooth_wall) - + //event.add('tfg:interaction/smooth_bricks', b.smooth_stairs) + //event.add('tfg:interaction/smooth_bricks', b.smooth_slab) + //event.add('tfg:interaction/smooth_bricks', b.smooth_wall) + } - } - - - for (const c of global.COBBLE_INDEX) { - - event.add('tfg:interaction/cobble', c.block) - event.add('tfg:interaction/cobble_stairs', c.stairs) - event.add('tfg:interaction/cobble_slab', c.slab) - event.add('tfg:interaction/cobble_wall', c.wall) - event.add('tfg:interaction/mossy_cobble', c.mossy_block) - event.add('tfg:interaction/mossy_cobble_stairs', c.mossy_stairs) - event.add('tfg:interaction/mossy_cobble_slab', c.mossy_slab) - event.add('tfg:interaction/mossy_cobble_wall', c.mossy_wall) + for (const c of global.COBBLE_INDEX) { - - } - + event.add('tfg:interaction/cobble', c.block) + event.add('tfg:interaction/cobble_stairs', c.stairs) + event.add('tfg:interaction/cobble_slab', c.slab) + event.add('tfg:interaction/cobble_wall', c.wall) + + event.add('tfg:interaction/mossy_cobble', c.mossy_block) + event.add('tfg:interaction/mossy_cobble_stairs', c.mossy_stairs) + event.add('tfg:interaction/mossy_cobble_slab', c.mossy_slab) + event.add('tfg:interaction/mossy_cobble_wall', c.mossy_wall) + } } diff --git a/kubejs/server_scripts/tfg/tags.js b/kubejs/server_scripts/tfg/tags.js index 04a914fba..8735c6b48 100644 --- a/kubejs/server_scripts/tfg/tags.js +++ b/kubejs/server_scripts/tfg/tags.js @@ -2,62 +2,21 @@ const registerTFGItemTags = (event) => { - registerTFGTrimTags(event) - registerFacadeWhitelistTags(event) - registerBlockInteractionTags(event) - registerTFGItemStoneTags(event) - - //crop stuff - event.add('tfc:seeds', 'tfg:sunflower_seeds') - event.add('tfc:seeds', 'tfg:rapeseed_seeds') - event.add('tfc:seeds', 'tfg:flax_seeds') - event.add('tfc:compost_greens_high', 'tfg:rapeseed_product') - event.add('tfc:compost_greens_high', 'tfg:sunflower_product') - event.add('tfc:compost_greens_high', 'tfg:flax_product') - event.add('tfc:compost_greens_high', 'tfg:lunar_chorus_flower') - event.add('tfg:water_breathing_ingredients', 'tfg:rapeseed_product') - event.add('tfg:night_vision_ingredients', 'tfg:sunflower_product') - - // Actually "layers", can't rename them without screwing with peoples' worlds - event.add('c:hidden_from_recipe_viewers', 'tfg:ash_pile') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/black_sand') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/brown_sand') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/green_sand') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/pink_sand') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/red_sand') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/white_sand') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/yellow_sand') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/mars_sand') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/moon_sand') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/venus_sand') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/hematitic_sand') - - // Actually "piles", the kind that can hide plants inside them - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/mars_sand_covering') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/venus_sand_covering') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/hematitic_sand_covering') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/mars_snow_covering') - - // Actually "piles", the kind that can hide plants inside them - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/mars_sand_covering') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/venus_sand_covering') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/hematitic_sand_covering') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/mars_snow_covering') - - event.add('c:hidden_from_recipe_viewers', 'tfg:mars_ice') - - //Decorative Vases - global.MINECRAFT_DYE_NAMES.forEach(color => { - event.add('c:hidden_from_recipe_viewers', `tfg:decorative_vase/generated/${color}`) - event.add('tfg:decorative_vases/generated', `tfg:decorative_vase/generated/${color}`) - event.add('tfg:decorative_vases', `tfg:decorative_vase/${color}`) - event.add('tfg:decorative_vases/unfired', `tfg:decorative_vase/unfired/${color}`) - }) - event.add('tfg:decorative_vases', 'tfg:decorative_vase') - event.add('tfg:decorative_vases/unfired', 'tfg:decorative_vase/unfired') - - //Knapping - event.add('tfc:any_knapping', 'minecraft:flint') + registerTFGTrimItemTags(event) + registerTFGFacadeWhitelistItemTags(event) + registerBlockInteractionItemTags(event) + registerTFGStoneItemTags(event) + registerTFGFoodItemTags(event); + registerTFGMedicineItemTags(event); + registerTFGPrimitiveItemTags(event) + registerTFGEquipmentItemTags(event); + registerTFGRailgunItemTags(event) + registerTFGRocketItemTags(event) + registerTFGGeneralWorldgenItemTags(event); + registerTFGBeneathItemTags(event) + registerTFGMoonItemTags(event) + registerTFGMarsItemTags(event) + registerTFGVenusItemTags(event) //Circuit Stuff event.add('tfg:components/uv_leds', 'tfg:uv_led') @@ -71,134 +30,13 @@ const registerTFGItemTags = (event) => { event.add('tfg:platinum_ore_group', 'gtceu:purified_cooperite_ore') event.add('tfg:platinum_ore_group', 'gtceu:purified_chalcocite_ore') - //#region Tools & Armor - event.add('forge:tools/fishing_nets', 'tfg:fishing_net/wood') - event.add('forge:tools/fishing_nets', 'tfg:fishing_net/brass') - event.add('forge:tools/fishing_nets', 'tfg:fishing_net/rose_gold') - event.add('forge:tools/fishing_nets', 'tfg:fishing_net/sterling_silver') - event.add('forge:tools/fishing_nets', 'tfg:fishing_net/invar') - event.add('forge:tools/fishing_nets', 'tfg:fishing_net/tin_alloy') - event.add('forge:tools/fishing_nets', 'tfg:fishing_net/cupronickel') - event.add('forge:tools/fishing_nets', 'tfg:fishing_net/magnalium') - - event.add('minecraft:piglin_loved', 'tfg:piglin_disguise') - - event.add('forge:tools/trowels', 'tfg:trowel') - - event.add('tfg:harvester', 'tfg:harvest_basket') - event.add('tfg:harvester', 'tfg:aluminium_harvest_basket') - - event.add('tfg:tools/ore_prospectors/copper', 'tfc:metal/propick/copper') - event.add('tfg:tools/ore_prospectors/bronze', 'tfc:metal/propick/bronze') - event.add('tfg:tools/ore_prospectors/bronze', 'tfc:metal/propick/bismuth_bronze') - event.add('tfg:tools/ore_prospectors/bronze', 'tfc:metal/propick/black_bronze') - event.add('tfg:tools/ore_prospectors/wrought_iron', 'tfc:metal/propick/wrought_iron') - event.add('tfg:tools/ore_prospectors/steel', 'tfc:metal/propick/steel') - event.add('tfg:tools/ore_prospectors/black_steel', 'tfc:metal/propick/black_steel') - event.add('tfg:tools/ore_prospectors/blue_steel', 'tfc:metal/propick/blue_steel') - event.add('tfg:tools/ore_prospectors/red_steel', 'tfc:metal/propick/red_steel') - + //#region Tools event.add('tfg:empty_dna_syringes', 'tfg:empty_dna_syringe') event.add('tfg:empty_dna_syringes', 'tfg:clean_dna_syringe') event.add('tfc:sewing_needles', 'tfg:stainless_steel_needle') //#endregion - // #region Paper from wood - event.add('tfg:hardwood_strips', 'tfg:hardwood_strip') - event.add('tfg:hardwood_strips', 'tfg:soaked_hardwood_strip') - //Adding any of these dusts to the forge dusts/wood tag will make it so you can craft softwood pulp using hardwood pulp. which is not ok. - event.add('tfg:wood_dusts', 'gtceu:hardwood_dust') - event.add('tfg:tiny_wood_dusts', 'gtceu:tiny_hardwood_dust') - event.add('tfg:small_wood_dusts', 'gtceu:small_hardwood_dust') - event.add('tfg:wood_dusts', 'gtceu:wood_dust') - event.add('tfg:tiny_wood_dusts', 'gtceu:tiny_wood_dust') - event.add('tfg:small_wood_dusts', 'gtceu:small_wood_dust') - - event.add('forge:wax', 'tfg:paraffin_wax') - event.add('forge:wax', 'firmalife:beeswax') - event.add('forge:wax', 'tfg:conifer_rosin') - event.add('forge:wax', 'tfg:crimsene_gem') - event.add('forge:wax', 'tfg:warpane_gem') - // #endregion - - event.add('buildinggadgets2:deny', 'tfg:spice') - - //#region Cloth & String - event.add('forge:cloth', 'tfg:phantom_silk') - event.add('forge:cloth', 'tfg:polycaprolactam_fabric') - event.add('tfc:high_quality_cloth', 'tfg:phantom_silk') - event.add('tfc:high_quality_cloth', 'tfg:polycaprolactam_fabric') - event.add('tfc:sewing_light_cloth', 'tfg:phantom_silk') - event.add('tfc:sewing_dark_cloth', 'tfg:polycaprolactam_fabric') - event.add('forge:string', 'tfg:phantom_thread') - event.add('forge:string', 'tfg:polycaprolactam_string') - event.add('forge:string', 'firmalife:pineapple_yarn') - //#endregion - - // #region Medicines - event.add('tfg:antipoison_ingredients', 'tfc:plant/blood_lily') - event.add('tfg:antipoison_ingredients', 'tfc:plant/pistia') - event.add('tfg:antipoison_ingredients', 'tfc:powder/bismuthinite') - event.add('tfg:antipoison_ingredients', 'gtceu:mica_dust') - event.add('tfg:antipoison_ingredients', 'gtceu:fullers_earth_dust') - - event.add('tfg:poison_ingredients', 'tfc:plant/butterfly_milkweed') - event.add('tfg:poison_ingredients', 'tfc:plant/grape_hyacinth') - event.add('tfg:poison_ingredients', 'tfc:plant/lily_of_the_valley') - event.add('tfg:poison_ingredients', 'tfc:plant/pulsatilla') - event.add('tfg:poison_ingredients', 'firmalife:food/nightshade_berry') - event.add('tfg:poison_ingredients', 'minecraft:red_mushroom') - - event.add('tfg:regeneration_ingredients', 'tfc:plant/lilac') - event.add('tfg:regeneration_ingredients', 'tfc:plant/field_horsetail') - event.add('tfg:regeneration_ingredients', 'tfc:plant/licorice_fern') - event.add('tfg:regeneration_ingredients', 'tfc:plant/sacred_datura') - - event.add('tfg:speed_ingredients', 'tfc:plant/labrador_tea') - event.add('tfg:speed_ingredients', 'firmalife:raw_honey') - - event.add('tfg:slowness_ingredients', 'tfc:plant/marigold') - event.add('tfg:slowness_ingredients', 'tfc:plant/nasturtium') - event.add('tfg:slowness_ingredients', 'tfc:plant/snapdragon_red') - event.add('tfg:slowness_ingredients', 'tfc:plant/snapdragon_white') - event.add('tfg:slowness_ingredients', 'tfc:plant/snapdragon_yellow') - - event.add('tfg:weakness_ingredients', 'tfc:plant/laminaria') - event.add('tfg:weakness_ingredients', 'tfc:plant/sea_palm') - event.add('tfg:weakness_ingredients', 'tfc:plant/sea_lavender') - event.add('tfg:weakness_ingredients', 'tfc:plant/canna') - event.add('tfg:weakness_ingredients', 'tfc:plant/water_canna') - - event.add('tfg:haste_ingredients', '#tfg:sugars') - - event.add('tfg:water_breathing_ingredients', 'tfc:powder/saltpeter') - event.add('tfg:water_breathing_ingredients', 'tfc:powder/charcoal') - - event.add('tfg:night_vision_ingredients', 'tfc:food/carrot') - event.add('tfg:night_vision_ingredients', 'beneath:gleamflower') - - event.add('tfg:invisibility_ingredients', 'tfc:plant/calendula') - event.add('tfg:absorption_ingredients', 'beneath:burpflower') - - event.add('tfg:fire_resistance_ingredients', 'tfc:plant/cattail') - event.add('tfg:fire_resistance_ingredients', 'tfc:plant/meads_milkweed') - event.add('tfg:fire_resistance_ingredients', 'firmalife:plant/bay_laurel') - event.add('tfg:fire_resistance_ingredients', 'beneath:ghost_pepper') - - event.add('tfg:resistance_ingredients', 'tfc:plant/hibiscus') - event.add('tfg:resistance_ingredients', 'gtceu:calcium_dust') - - event.add('tfg:instant_health_ingredients', 'tfc:plant/foxglove') - event.add('tfg:instant_health_ingredients', 'tfc:plant/artists_conk') - - event.add('tfg:absorption_ingredients', 'tfc:plant/poppy') - event.add('tfg:invisibility_ingredients', 'tfc:plant/snapdragon_pink') - - event.add('tfg:luck_ingredients', 'tfc:plant/goldenrod') - event.add('tfg:luck_ingredients', 'tfc:plant/heather') - // #endregion - // Airplane Upgrades global.AIRCRAFT_UPGRADES.forEach(value => { event.add('immersive_aircraft:upgrades', `tfg:${value}`); @@ -230,396 +68,16 @@ const registerTFGItemTags = (event) => { event.add('forge:screws/any_bronze', '#forge:screws/bronze') event.add('forge:screws/any_bronze', '#forge:screws/bismuth_bronze') event.add('forge:screws/any_bronze', '#forge:screws/black_bronze') - - //#region Food - const RAW_MEATS = [ - 'tfg:food/raw_birt', - 'tfg:food/raw_crawlermari', - 'tfg:food/raw_limpet' - ] - RAW_MEATS.forEach(meat => { - event.add('tfc:foods', meat) - event.add('tfc:foods/meats', meat) - event.add('tfc:foods/raw_meats', meat) - }) - - const COOKED_MEATS = [ - 'tfg:food/cooked_birt', - 'tfg:food/cooked_crawlermari', - 'tfg:food/cooked_limpet' - ] - COOKED_MEATS.forEach(meat => { - event.add('tfc:foods', meat) - event.add('tfc:foods/meats', meat) - event.add('tfc:foods/cooked_meats', meat) - }) - - //These tags are used to add the tooltips and for searchability - global.COOLING_FOODS.forEach(food => { event.add('tfg:cooling_foods', food) }) - - event.add('tfg:cooling_foods_strong', 'tfg:food/ice_soup') - - global.WARMING_FOODS.forEach(food => { event.add('tfg:warming_foods', food) }) - - //jam sandwhich stuff - const usable_in_jam_sandwich = Ingredient.of('#tfc:foods/usable_in_jam_sandwich').itemIds.toArray().map(String); - const preserves = Ingredient.of('#tfc:foods/preserves').itemIds.toArray().map(String); - - const usable_in_jam_sandwich_2 = usable_in_jam_sandwich.filter(item => !preserves.includes(item)); - - usable_in_jam_sandwich_2.forEach(item => { - event.add('tfc:foods/usable_in_jam_sandwich_2', item); - }); - - event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_sniffer_beef') - event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_wraptor') - event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_springling_collar') - event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_walker_steak') - event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_glider_wings') - event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_whole_soarer') - event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_crusher_meat') - event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_goober_meat') - event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_cruncher_ribs') - event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_surfer_steak') - event.add('tfg:raw_dinosaur_meat', 'wan_ancient_beasts:raw_ancient_meat') - - /** - * List of items that can make light stock. - * @type {string[]} - */ - const makesLightStock = [ - 'tfc:food/chicken', - 'tfc:food/cooked_chicken', - 'tfc:food/quail', - 'tfc:food/cooked_quail', - 'tfc:food/pheasant', - 'tfc:food/cooked_pheasant', - 'tfc:food/grouse', - 'tfc:food/cooked_grouse', - 'tfc:food/turkey', - 'tfc:food/cooked_turkey', - 'tfc:food/peafowl', - 'tfc:food/cooked_peafowl', - 'tfc:food/rabbit', - 'tfc:food/cooked_rabbit', - 'tfc:food/duck', - 'tfc:food/cooked_duck', - 'tfg:food/raw_birt', - 'tfg:food/cooked_birt', - 'tfg:food/raw_moon_rabbit', - 'tfg:food/cooked_moon_rabbit', - 'tfg:food/raw_wraptor', - 'tfg:food/cooked_wraptor', - 'tfg:food/raw_glider_wings', - 'tfg:food/cooked_glider_wings', - 'tfg:food/raw_whole_soarer', - 'tfg:food/cooked_whole_soarer' - ]; - makesLightStock.forEach(item => { - event.add('tfg:foods/makes_light_stock', item); - }); - - /** - * List of items that can make rich stock. - * @type {string[]} - */ - const makesRichStock = [ - 'tfc:food/beef', - 'tfc:food/cooked_beef', - 'tfc:food/mutton', - 'tfc:food/cooked_mutton', - 'tfc:food/bear', - 'tfc:food/cooked_bear', - 'tfc:food/horse_meat', - 'tfc:food/cooked_horse_meat', - 'tfc:food/venison', - 'tfc:food/cooked_venison', - 'tfc:food/chevon', - 'tfc:food/cooked_chevon', - 'tfc:food/gran_feline', - 'tfc:food/cooked_gran_feline', - 'tfc:food/turtle', - 'tfc:food/cooked_turtle', - 'tfc:food/camelidae', - 'tfc:food/cooked_camelidae', - 'tfg:food/raw_glacian_mutton', - 'tfg:food/cooked_glacian_mutton', - 'tfg:food/raw_sniffer_beef', - 'tfg:food/cooked_sniffer_beef', - 'tfg:food/raw_walker_steak', - 'tfg:food/cooked_walker_steak', - 'tfg:food/raw_crusher_meat', - 'tfg:food/cooked_crusher_meat', - 'wan_ancient_beasts:raw_ancient_meat', - 'wan_ancient_beasts:cooked_ancient_meat' - ]; - makesRichStock.forEach(item => { - event.add('tfg:foods/makes_rich_stock', item); - }); - - /** - * @type {string[]} - List of cheese curd item IDs. - */ - const cheeseCurds = [ - 'firmalife:food/yak_curd', - 'firmalife:food/goat_curd', - 'firmalife:food/milk_curd', - 'tfc_gurman:ox_curd', - 'tfc_gurman:sheep_curd', - 'tfc_gurman:alpaca_curd' - ]; - cheeseCurds.forEach(item => { - event.add('tfg:foods/cheese_curds', item); - }); - - /** - * @type {string[]} - List of item tags and item IDs that can be used on burgers. - */ - const usable_in_burgers = [ - '#tfc:foods/vegetables', - 'firmalife:food/cooked_bacon', - 'tfc:food/cooked_egg', - 'firmalife:food/tofu' - ]; - usable_in_burgers.forEach(item => { - event.add('tfg:foods/usable_in_burgers', item); - }); - - /** - * @type {string[]} - List of cheese tags and item IDs that can be used on a cheeseburger. - */ - const cheeses = [ - '#firmalife:foods/cheeses', - 'tfg:food/slice_of_cheese', - 'firmalife:food/shredded_cheese' - ]; - cheeses.forEach(item => { - event.add('tfg:foods/cheeses', item); - }); - - /** - * @type {string[]} - List of item IDs that can be used as burger meats. - */ - const burgerMeats = [ - 'tfc:food/beef', - 'tfc:food/turkey', - 'tfc:food/venison', - 'tfg:food/raw_sniffer_beef', - 'tfg:food/raw_crusher_meat', - 'wan_ancient_beasts:raw_ancient_meat' - ]; - burgerMeats.forEach(item => { - event.add('tfg:foods/burger_meats', item); - }); - - // Spice tags - global.SPICES.forEach(spice => { - event.add('tfg:foods/spices', spice.product); - event.add('tfg:foods/spice_plants', spice.plant); - }); - - /** - * @type {string[]} - List of item tags and item IDs that are allowed to be used in oatmeal. - */ - const usable_in_oatmeal = [ - '#tfc:foods/fruits', - 'tfc:food/oat_grain', - '#firmalife:foods/chocolate' - ]; - usable_in_oatmeal.forEach(item => { - event.add('tfg:foods/usable_in_oatmeal', item); - }); - - /** - * @type {string[]} - List of citrus fruit item IDs. - */ - const citrus_fruits = [ - 'tfc:food/orange', - 'tfc:jar/orange_unsealed', - 'tfg:food/freeze_dried/orange', - 'tfc:food/lemon', - 'tfc:jar/lemon_unsealed', - 'tfg:food/freeze_dried/lemon', - 'minecraft:glow_berries', - 'tfg:food/freeze_dried/glow_berries' - ]; - citrus_fruits.forEach(item => { - event.add('tfg:foods/citrus_fruits', item); - }); - - /** - * List of item tags and item IDs that are allowed to be used in a meal bag. - * @type {string[]} - */ - const usable_in_meal_bag = [ - '#tfc:foods/meats', - '#tfc:foods/grains', - '#tfc:foods/vegetables', - '#tfc:foods/fruits', - '#tfc:foods/dairy', - '#tfc:foods/preserves', - '#firmalife:foods/chocolate', - '#tfcchannelcasting:foods/chocolate_sweet', - 'firmalife:food/sugar_cookie', - 'firmalife:food/chocolate_chip_cookie', - 'firmalife:food/vanilla_ice_cream', - 'firmalife:food/strawberry_ice_cream', - 'firmalife:food/chocolate_ice_cream', - 'tfc:food/cooked_egg', - 'tfc:food/boiled_egg', - 'firmalife:food/pickled_egg', - 'tfc:food/cooked_rice', - 'firmalife:food/cooked_pasta', - 'firmalife:food/pasta_with_tomato_sauce', - 'firmalife:food/cooked_rice_noodles', - 'firmalife:food/tortilla_chips', - 'firmalife:food/shredded_cheese', - 'firmalife:food/salsa', - 'firmalife:food/tomato_sauce', - 'tfg:roasted_sunflower_seeds', - 'tfg:food/cooked_dino_nugget', - 'firmalife:food/toast', - 'firmalife:food/toast_with_butter', - 'firmalife:food/toast_with_jam', - 'firmalife:food/butter', - 'tfc_gurman:adjika', - 'tfc_gurman:tzatziki', - 'tfc_gurman:falafel', - 'tfc_gurman:hummus', - 'tfc_gurman:sauerkraut', - 'tfc_gurman:bratwurst' - ]; - usable_in_meal_bag.forEach(item => { - event.add('tfg:foods/usable_in_meal_bag', item); - }); - event.add('tfg:foil_packs', 'tfg:foil_pack'); - event.add('tfg:foil_packs', 'tfg:clean_foil_pack') - - event.add('tfg:solid_fats', 'firmalife:food/butter') - event.add('tfg:solid_fats', 'tfc:blubber') - //#endregion - - //#region Blacklisted from the railgun - event.add('tfg:cannot_launch_in_railgun', '#tfc:vessels') - event.add('tfg:cannot_launch_in_railgun', '#tfc:large_vessels') - event.add('tfg:cannot_launch_in_railgun', 'ae2:item_storage_cell_1k') - event.add('tfg:cannot_launch_in_railgun', 'ae2:item_storage_cell_4k') - event.add('tfg:cannot_launch_in_railgun', 'ae2:item_storage_cell_16k') - event.add('tfg:cannot_launch_in_railgun', 'ae2:item_storage_cell_64k') - event.add('tfg:cannot_launch_in_railgun', 'ae2:item_storage_cell_256k') - event.add('tfg:cannot_launch_in_railgun', 'ae2:fluid_storage_cell_1k') - event.add('tfg:cannot_launch_in_railgun', 'ae2:fluid_storage_cell_4k') - event.add('tfg:cannot_launch_in_railgun', 'ae2:fluid_storage_cell_16k') - event.add('tfg:cannot_launch_in_railgun', 'ae2:fluid_storage_cell_64k') - event.add('tfg:cannot_launch_in_railgun', 'ae2:fluid_storage_cell_256k') - event.add('tfg:cannot_launch_in_railgun', 'ae2:spatial_storage_cell_2') - event.add('tfg:cannot_launch_in_railgun', 'ae2:spatial_storage_cell_16') - event.add('tfg:cannot_launch_in_railgun', 'ae2:spatial_storage_cell_128') - event.add('tfg:cannot_launch_in_railgun', 'megacells:item_storage_cell_1m') - event.add('tfg:cannot_launch_in_railgun', 'megacells:item_storage_cell_4m') - event.add('tfg:cannot_launch_in_railgun', 'megacells:item_storage_cell_16m') - event.add('tfg:cannot_launch_in_railgun', 'megacells:item_storage_cell_64m') - event.add('tfg:cannot_launch_in_railgun', 'megacells:fluid_storage_cell_1m') - event.add('tfg:cannot_launch_in_railgun', 'megacells:fluid_storage_cell_4m') - event.add('tfg:cannot_launch_in_railgun', 'megacells:fluid_storage_cell_16m') - event.add('tfg:cannot_launch_in_railgun', 'megacells:fluid_storage_cell_64m') - event.add('tfg:cannot_launch_in_railgun', 'create:minecart_contraption') - event.add('tfg:cannot_launch_in_railgun', 'tfg:railgun_ammo_shell') - event.add('tfg:cannot_launch_in_railgun', 'create:cardboard_package_12x10') - event.add('tfg:cannot_launch_in_railgun', 'create:cardboard_package_10x8') - event.add('tfg:cannot_launch_in_railgun', 'create:cardboard_package_10x12') - event.add('tfg:cannot_launch_in_railgun', 'create:cardboard_package_12x12') - event.add('tfg:cannot_launch_in_railgun', 'create_factory_logistics:composite_package') - event.add('tfg:cannot_launch_in_railgun', 'create_factory_logistics:copper_jar_package_8x8') - event.add('tfg:cannot_launch_in_railgun', 'sns:ore_sack') - event.add('tfg:cannot_launch_in_railgun', 'sns:leather_sack') - event.add('tfg:cannot_launch_in_railgun', 'sns:burlap_sack') - event.add('tfg:cannot_launch_in_railgun', 'sns:seed_pouch') - event.add('tfg:cannot_launch_in_railgun', 'sns:straw_basket') - event.add('tfg:cannot_launch_in_railgun', 'sns:frame_pack') - event.add('tfg:cannot_launch_in_railgun', 'tfclunchbox:lunchbox') - event.add('tfg:cannot_launch_in_railgun', 'tfclunchbox:cooling_lunchbox') - event.add('tfg:cannot_launch_in_railgun', 'tfclunchbox:electric_lunchbox') - event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:backpack') - event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:copper_backpack') - event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:iron_backpack') - event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:gold_backpack') - event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:diamond_backpack') - event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:netherite_backpack') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:wood_crate') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:bronze_crate') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:black_bronze_crate') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:bismuth_bronze_crate') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:steel_crate') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:aluminium_crate') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:stainless_steel_crate') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:titanium_crate') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:tungsten_steel_crate') - event.add('tfg:cannot_launch_in_railgun', '#create:toolboxes') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:ulv_super_chest') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:lv_super_chest') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:mv_super_chest') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:hv_super_chest') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:ev_super_chest') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:iv_quantum_chest') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:luv_quantum_chest') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:zpm_quantum_chest') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:uv_quantum_chest') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:uhv_quantum_chest') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:ulv_super_tank') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:lv_super_tank') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:mv_super_tank') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:hv_super_tank') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:ev_super_tank') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:iv_quantum_tank') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:luv_quantum_tank') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:zpm_quantum_tank') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:uv_quantum_tank') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:uhv_quantum_tank') - //#endregion - - // #region Dirt - event.add('tfg:moon_plants', 'tfg:lunar_roots') - event.add('tfg:moon_plants', 'tfg:lunar_sprouts') - - event.add('minecraft:dirt', 'tfg:grass/mars_dirt') - event.add('minecraft:dirt', 'tfg:grass/mars_clay_dirt') - event.add('tfc:dirt', 'tfg:grass/mars_dirt') - event.add('tfc:dirt', 'tfg:grass/mars_clay_dirt') - event.add('tfc:grass', 'tfg:grass/amber_mycelium') - event.add('tfc:grass', 'tfg:grass/amber_clay_mycelium') - event.add('tfc:grass', 'tfg:grass/rusticus_mycelium') - event.add('tfc:grass', 'tfg:grass/rusticus_clay_mycelium') - event.add('tfc:grass', 'tfg:grass/sangnum_mycelium') - event.add('tfc:grass', 'tfg:grass/sangnum_clay_mycelium') - event.add('tfc:farmland', 'tfg:grass/mars_farmland') - event.add('tfc:paths', 'tfg:grass/mars_path') - event.add('tfc:kaolin_clay', 'tfg:grass/amber_kaolin_mycelium') - event.add('tfc:kaolin_clay', 'tfg:grass/rusticus_kaolin_mycelium') - event.add('tfc:kaolin_clay', 'tfg:grass/sangnum_kaolin_mycelium') - // #endregion - - //Mars animal region - event.add('tfg:martian_eggs', 'tfg:sniffer_egg') - event.add('tfg:martian_eggs', 'tfg:wraptor_egg') - event.add('forge:eggs', '#tfg:martian_eggs') - event.add('firmalife:foods/raw_eggs', '#tfg:martian_eggs') - - event.add('tfg:martian_animal_foods', 'betterend:amber_root_product') - event.add('tfg:martian_animal_foods', 'betterend:blossom_berry_product') - event.add('tfg:martian_animal_foods', 'betterend:chorus_mushroom_product') - event.add('tfg:martian_animal_foods', 'betterend:shadow_berry_product') - event.add('tfg:martian_animal_foods', 'betterend:bolux_mushroom_product') - event.add('tfg:martian_animal_foods', 'betterend:cave_pumpkin_chunks') - - event.add('tfg:glacian_ram_food', '#tfg:martian_animal_foods') - event.add('tfg:sniffer_food', '#tfg:martian_animal_foods') - event.add('tfg:wraptor_food', '#tfg:martian_animal_foods') - - event.add('tfg:mineral_rich_wool', 'tfg:wraptor_wool') - event.add('tfg:mineral_rich_wool', 'tfg:sniffer_wool') - //#endregion + // Steam Bloomery + event.add("tfg:steam_bloomery_basic_fuels", "minecraft:coal"); + event.add("tfg:steam_bloomery_basic_fuels", "minecraft:charcoal"); + event.add("tfg:steam_bloomery_basic_fuels", "gtceu:rich_raw_coal"); + event.add("tfg:steam_bloomery_basic_fuels", "gtceu:raw_coal"); + event.add("tfg:steam_bloomery_basic_fuels", "gtceu:poor_raw_coal"); + event.add("tfg:steam_bloomery_basic_fuels", "gtceu:coal_dust"); + event.add("tfg:steam_bloomery_basic_fuels", "gtceu:charcoal_dust"); + //#region holder materials event.remove('forge:dusts', 'tfg:nitrocellulose') event.remove('forge:dusts/nitrocellulose', 'tfg:nitrocellulose') @@ -627,159 +85,25 @@ const registerTFGItemTags = (event) => { event.remove('forge:dusts', 'tfg:cellulose_matrix') event.remove('forge:dusts/cellulose_matrix', 'tfg:cellulose_matrix') - event.remove('balm:ingots', 'tfg:polycaprolactam_fabric') event.remove('tfc:pileable_ingots', 'tfg:polycaprolactam_fabric') event.remove('forge:ingots', 'tfg:polycaprolactam_fabric') event.remove('forge:ingots/tfg_polycaprolactam', 'tfg:polycaprolactam_fabric') - event.remove('balm:nuggets', 'tfg:polycaprolactam_string') event.remove('forge:nuggets', 'tfg:polycaprolactam_string') event.remove('forge:nuggets/tfg_polycaprolactam', 'tfg:polycaprolactam_string') - + //#endregion } //#region Blocks const registerTFGBlockTags = (event) => { - event.add('minecraft:mineable/shovel', 'tfg:ash_pile') - //crop stuff - event.add('tfc:crops', 'tfg:rapeseed') - event.add('tfc:mineable_with_sharp_tool', 'tfg:rapeseed') - - event.add('tfc:crops', 'tfg:sunflower') - event.add('tfc:mineable_with_sharp_tool', 'tfg:sunflower') - - event.add('tfc:crops', 'tfg:flax') - event.add('tfc:mineable_with_sharp_tool', 'tfg:flax') - - // Spice unmovable - - event.add('buildinggadgets2:deny', 'tfg:spice') - event.add('ae2:blacklisted/spatial', 'tfg:spice') - - event.add('buildinggadgets2:deny', 'tfg:geyser_source') - event.add('ae2:blacklisted/spatial', 'tfg:geyser_source') - - event.add('buildinggadgets2:deny', 'tfg:geyser_source_small') - event.add('ae2:blacklisted/spatial', 'tfg:geyser_source_small') - - // Spice unmovable - - event.add('buildinggadgets2:deny', 'tfg:spice') - event.add('ae2:blacklisted/spatial', 'tfg:spice') - - event.add('buildinggadgets2:deny', 'tfg:geyser_source') - event.add('ae2:blacklisted/spatial', 'tfg:geyser_source') - - event.add('buildinggadgets2:deny', 'tfg:geyser_source_small') - event.add('ae2:blacklisted/spatial', 'tfg:geyser_source_small') - - //#endregion - - // #region Nether blocks - event.add('minecraft:nether_carver_replaceables', 'tfg:rock/hardened_deepslate') - event.add('minecraft:moss_replaceable', 'tfg:rock/hardened_deepslate') - event.add('minecraft:base_stone_nether', 'tfg:rock/hardened_deepslate') - event.add('beneath:nether_bush_plantable_on', 'tfg:rock/hardened_deepslate') - event.add('tfc:grass_plantable_on', 'tfg:rock/hardened_deepslate') - event.add('tfc:creeping_plantable_on', 'tfg:rock/hardened_deepslate') - event.add('tfc:rock/hardened', 'tfg:rock/hardened_deepslate') - - event.add('minecraft:nether_carver_replaceables', 'tfg:rock/hardened_blackstone') - event.add('minecraft:moss_replaceable', 'tfg:rock/hardened_blackstone') - event.add('minecraft:base_stone_nether', 'tfg:rock/hardened_blackstone') - event.add('beneath:nether_bush_plantable_on', 'tfg:rock/hardened_blackstone') - event.add('tfc:creeping_plantable_on', 'tfg:rock/hardened_blackstone') - event.add('tfc:rock/hardened', 'tfg:rock/hardened_blackstone') - - event.add('minecraft:nether_carver_replaceables', 'tfg:rock/hardened_dripstone') - event.add('minecraft:base_stone_nether', 'tfg:rock/hardened_dripstone') - event.add('tfc:rock/hardened', 'tfg:rock/hardened_dripstone') - // #endregion - - // #region Mars blocks - event.add('minecraft:dirt', 'tfg:grass/mars_dirt') - event.add('minecraft:dirt', 'tfg:grass/mars_clay_dirt') - event.add('minecraft:dirt', 'tfg:grass/amber_mycelium') - event.add('minecraft:dirt', 'tfg:grass/rusticus_mycelium') - event.add('minecraft:dirt', 'tfg:grass/sangnum_mycelium') - event.add('minecraft:dirt', 'tfg:grass/amber_clay_mycelium') - event.add('minecraft:dirt', 'tfg:grass/rusticus_clay_mycelium') - event.add('minecraft:dirt', 'tfg:grass/sangnum_clay_mycelium') - event.add('minecraft:dirt', 'tfg:grass/amber_kaolin_mycelium') - event.add('minecraft:dirt', 'tfg:grass/rusticus_kaolin_mycelium') - event.add('minecraft:dirt', 'tfg:grass/sangnum_kaolin_mycelium') - event.add('tfc:dirt', 'tfg:grass/mars_dirt') - event.add('tfc:dirt', 'tfg:grass/mars_clay_dirt') - event.add('tfc:farmland', 'tfg:grass/mars_farmland') - event.add('tfc:paths', 'tfg:grass/mars_path') - event.add('tfc:grass', 'tfg:grass/amber_mycelium') - event.add('tfc:grass', 'tfg:grass/rusticus_mycelium') - event.add('tfc:grass', 'tfg:grass/sangnum_mycelium') - event.add('tfc:grass', 'tfg:grass/amber_clay_mycelium') - event.add('tfc:grass', 'tfg:grass/rusticus_clay_mycelium') - event.add('tfc:grass', 'tfg:grass/sangnum_clay_mycelium') - event.add('tfc:grass', 'tfg:grass/amber_kaolin_mycelium') - event.add('tfc:grass', 'tfg:grass/rusticus_kaolin_mycelium') - event.add('tfc:grass', 'tfg:grass/sangnum_kaolin_mycelium') - event.add('tfc:kaolin_clay', 'tfg:grass/amber_kaolin_mycelium') - event.add('tfc:kaolin_clay', 'tfg:grass/rusticus_kaolin_mycelium') - event.add('tfc:kaolin_clay', 'tfg:grass/sangnum_kaolin_mycelium') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/amber_mycelium') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/rusticus_mycelium') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/sangnum_mycelium') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/amber_clay_mycelium') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/rusticus_clay_mycelium') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/sangnum_clay_mycelium') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/amber_kaolin_mycelium') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/rusticus_kaolin_mycelium') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/sangnum_kaolin_mycelium') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/mars_farmland') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/mars_path') - event.add('tfc:can_landslide', 'tfg:grass/mars_dirt') - event.add('tfc:can_landslide', 'tfg:grass/mars_clay_dirt') - event.add('tfc:can_landslide', 'tfg:grass/mars_farmland') - event.add('tfc:can_landslide', 'tfg:grass/mars_path') - event.add('tfc:can_landslide', 'tfg:grass/amber_mycelium') - event.add('tfc:can_landslide', 'tfg:grass/rusticus_mycelium') - event.add('tfc:can_landslide', 'tfg:grass/sangnum_mycelium') - event.add('tfc:can_landslide', 'tfg:grass/amber_clay_mycelium') - event.add('tfc:can_landslide', 'tfg:grass/rusticus_clay_mycelium') - event.add('tfc:can_landslide', 'tfg:grass/sangnum_clay_mycelium') - event.add('tfc:can_landslide', 'tfg:grass/amber_kaolin_mycelium') - event.add('tfc:can_landslide', 'tfg:grass/rusticus_kaolin_mycelium') - event.add('tfc:can_landslide', 'tfg:grass/sangnum_kaolin_mycelium') - event.add('minecraft:mineable/shovel', 'tfg:grass/mars_dirt') - event.add('minecraft:mineable/shovel', 'tfg:grass/mars_clay_dirt') - event.add('minecraft:mineable/shovel', 'tfg:grass/mars_path') - event.add('minecraft:mineable/shovel', 'tfg:grass/mars_farmland') - event.add('minecraft:mineable/shovel', 'tfg:grass/amber_mycelium') - event.add('minecraft:mineable/shovel', 'tfg:grass/amber_clay_mycelium') - event.add('minecraft:mineable/shovel', 'tfg:grass/amber_kaolin_mycelium') - event.add('minecraft:mineable/shovel', 'tfg:grass/rusticus_mycelium') - event.add('minecraft:mineable/shovel', 'tfg:grass/rusticus_clay_mycelium') - event.add('minecraft:mineable/shovel', 'tfg:grass/rusticus_kaolin_mycelium') - event.add('minecraft:mineable/shovel', 'tfg:grass/sangnum_mycelium') - event.add('minecraft:mineable/shovel', 'tfg:grass/sangnum_clay_mycelium') - event.add('minecraft:mineable/shovel', 'tfg:grass/sangnum_kaolin_mycelium') - event.add('tfc:bush_plantable_on', 'tfg:grass/mars_farmland') - event.add('tfc:grass_plantable_on', 'tfg:grass/mars_farmland') - event.add('tfc:creeping_plantable_on', 'tfg:grass/mars_farmland') - - event.add('minecraft:mushroom_grow_block', '#tfc:dirt') - event.add('minecraft:mushroom_grow_block', '#tfc:grass') - event.add('minecraft:mushroom_grow_block', '#forge:sand') - event.add('minecraft:mushroom_grow_block', '#forge:gravel') - // #endregion - - event.add('tfg:harvester_harvestable', '#tfc:fruit_tree_leaves') - event.add('tfg:harvester_harvestable', '#tfc:berry_bushes') - event.add('tfg:harvester_harvestable', '#tfc:any_spreading_bush') - event.add('tfg:harvester_harvestable', '#firmalife:grape_strings') - event.add('tfg:harvester_harvestable', '#firmalife:grape_trellis_posts_plant') - //added for QOL but doesnt harvest anything - event.add('tfg:harvester_harvestable', 'firmalife:grape_fluff_red') - event.add('tfg:harvester_harvestable', 'firmalife:grape_fluff_white') + registerTFGPrimitiveBlockTags(event) + registerTFGFoodBlockTags(event) + registerTFGGeneralWorldgenBlockTags(event) + registerTFGBeneathBlockTags(event) + registerTFGMoonBlockTags(event) + registerTFGMarsBlockTags(event) + registerTFGVenusBlockTags(event) event.add('minecraft:mineable/pickaxe', 'tfg:superconductor_coil_large') event.add('minecraft:mineable/pickaxe', 'tfg:superconductor_coil_small') @@ -792,47 +116,12 @@ const registerTFGBlockTags = (event) => { event.add('forge:mineable/wrench', 'tfg:reflector') event.add('forge:mineable/wrench', 'tfg:machine_casing_aluminium_plated_steel') - event.add('tfg:decorative_plant_attachable', '#minecraft:logs') - event.add('tfg:decorative_plant_attachable', 'minecraft:mushroom_stem') - event.add('tfg:decorative_plant_attachable', 'species:alphacene_mushroom_block') - event.add('tfg:decorative_plant_attachable', 'species:alphacene_moss_block') - event.add('tfg:decorative_plant_attachable', 'ad_astra:aeronos_cap') - event.add('tfg:decorative_plant_attachable', 'ad_astra:strophar_cap') - event.add('tfg:decorative_plant_attachable', 'tfg:glacian_leaves') - event.add('tfg:decorative_plant_attachable', 'minecraft:nether_wart_block') - event.add('tfg:decorative_plant_attachable', 'minecraft:warped_wart_block') - event.add('tfg:decorative_plant_attachable', 'betterend:cave_bush') - event.add('tfg:decorative_plant_attachable', 'betterend:lucernia_leaves') - event.add('minecraft:mineable/pickaxe', 'tfg:mars_ice') event.add('minecraft:mineable/pickaxe', 'tfg:dry_ice') event.add('tfcambiental:cold_stuff', 'tfg:mars_ice') event.add('tfcambiental:cold_stuff', 'tfg:dry_ice') event.add('minecraft:ice', 'tfg:mars_ice') event.add('minecraft:ice', 'tfg:dry_ice') - - event.add('minecraft:mineable/shovel', 'tfg:ash_pile') - event.add('minecraft:mineable/shovel', 'tfg:pile/black_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/white_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/brown_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/red_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/yellow_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/pink_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/green_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/moon_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/mars_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/venus_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/hematitic_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/mars_sand_covering') - event.add('minecraft:mineable/shovel', 'tfg:pile/venus_sand_covering') - event.add('minecraft:mineable/shovel', 'tfg:pile/hematitic_sand_covering') - - event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/blue') - event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/green') - event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/brown') - event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/orange') - event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/white') - event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/yellow') } //#endregion @@ -876,91 +165,37 @@ const registerTFGFluidTags = (event) => { const registerTFGBiomeTags = (event) => { - - // #region TFG Structure Biomes - - event.add('tfg:has_structure/plains_temperate_0', 'tfc:plains') - event.add('tfg:has_structure/plains_temperate_0', 'tfc:plateau') - event.add('tfg:has_structure/plains_temperate_0', 'tfc:highlands') - - event.add('tfg:has_structure/aqueduct', 'tfc:plains') - event.add('tfg:has_structure/aqueduct', 'tfc:highlands') - event.add('tfg:has_structure/aqueduct', 'tfc:lowlands') - event.add('tfg:has_structure/aqueduct', 'tfc:badlands') - - event.add('tfg:has_structure/ocean_moai_0', 'tfc:volcanic_oceanic_mountains') - event.add('tfg:has_structure/ocean_moai_0', 'tfc:volcanic_mountains') - - event.add('tfg:has_structure/illages', 'tfc:plains') - event.add('tfg:has_structure/illages', 'tfc:hills') - event.add('tfg:has_structure/illages', 'tfc:rolling_hills') - event.add('tfg:has_structure/illages', 'tfc:badlands') - event.add('tfg:has_structure/illages', 'tfc:plateau') - event.add('tfg:has_structure/illages', 'tfc:old_mountains') - - event.add('tfg:never_has_structure/illages', '#tfc:is_lake') - event.add('tfg:never_has_structure/illages', '#tfc:is_ocean') - event.add('tfg:never_has_structure/illages', '#tfc:is_river') - - // #endregion - - // #region Nether biomes - event.add('tfg:nether_biomes', 'tfg:nether/lush_hollow') - event.add('minecraft:allows_surface_slime_spawns', 'tfg:nether/lush_hollow') - event.add('minecraft:spawns_cold_variant_frogs', 'tfg:nether/lush_hollow') - - event.add('tfg:nether_biomes', 'tfg:nether/decaying_caverns') - event.add('minecraft:allows_surface_slime_spawns', 'tfg:nether/decaying_caverns') - event.add('minecraft:spawns_warm_variant_frogs', 'tfg:nether/decaying_caverns') - event.add('minecraft:has_closer_water_fog', 'tfg:nether/decaying_caverns') - - event.add('tfg:nether_biomes', 'tfg:nether/basalt_deltas') - event.add('tfg:nether_biomes', 'tfg:nether/ash_forest') - event.add('tfg:nether_biomes', 'tfg:nether/lava_floes') - event.add('tfg:nether_biomes', 'tfg:nether/webbed_lair') - event.add('tfg:nether_biomes', 'tfg:nether/gneiss_caves') - event.add('tfg:nether_biomes', 'tfg:nether/diorite_caves') - event.add('tfg:nether_biomes', 'tfg:nether/gabbro_caves') - event.add('tfg:nether_biomes', 'tfg:nether/granite_caves') - event.add('tfg:nether_biomes', 'tfg:nether/schist_caves') - - event.add('minecraft:has_structure/nether_fossil', '#tfg:nether_biomes') - event.add('minecraft:has_structure/bastion_remnant', '#tfg:nether_biomes') - // #endregion + registerTFGOverworldBiomeTags(event) + registerTFGBeneathBiomeTags(event) + registerTFGMoonBiomeTags(event) + registerTFGMarsBiomeTags(event) + registerTFGVenusBiomeTags(event) } function registerTFGConfiguredFeatures(event) { registerTFGForestConfiguredFeatures(event) } -// Other space decoration is in ad_astra/tags.js const registerTFGPlacedFeatures = (event) => { - - // #region Earth biomes - - event.add('tfc:in_biome/surface_decoration/ocean', 'tfg:earth/rose_quartz/rose_quartz') - event.add('tfc:in_biome/surface_decoration/ocean_reef', 'tfg:earth/rose_quartz/rose_quartz') - event.add('tfc:in_biome/surface_decoration/deep_ocean', 'tfg:earth/rose_quartz/rose_quartz') - event.add('tfc:in_biome/surface_decoration/deep_ocean_trench', 'tfg:earth/rose_quartz/rose_quartz') - event.add('tfc:in_biome/surface_decoration/shore', 'tfg:earth/rose_quartz/rose_quartz') - event.add('tfc:in_biome/surface_decoration/tidal_flats', 'tfg:earth/rose_quartz/rose_quartz') - event.add('tfc:in_biome/surface_decoration/lowlands', 'tfg:earth/rose_quartz/rose_quartz') - event.add('tfc:in_biome/surface_decoration/salt_marsh', 'tfg:earth/rose_quartz/rose_quartz') - event.add('tfc:in_biome/surface_decoration/plains', 'tfg:earth/rose_quartz/rose_quartz') - event.add('tfc:in_biome/surface_decoration/lake', 'tfg:earth/rose_quartz/rose_quartz') - - // #endregion - registerTFGOreVeinFeatures(event); - // #region Nether - - event.add('tfg:nether_veins', 'beneath:vein/crackrack_pipe') - - event.add('tfg:nether_underground_decoration', 'minecraft:spring_open') - event.add('tfg:nether_underground_decoration', 'minecraft:spring_closed') - event.add('tfg:nether_underground_decoration', 'tfg:nether/terrain/magma_blob') - - // #endregion - + registerTFGOverworldPlacedFeatures(event); + registerTFGBeneathPlacedFeatures(event); + registerTFGMoonPlacedFeatures(event); + registerTFGMarsPlacedFeatures(event); + registerTFGVenusPlacedFeatures(event); + registerTFGEuropaPlacedFeatures(event); } + +const registerTFGEntityTypeTags = (event) => { + + registerTFGMoonEntityTypeTags(event) + registerTFGMarsEntityTypeTags(event) + registerTFGVenusEntityTypeTags(event) + registerTFGEuropaEntityTypeTags(event) + + event.add('ad_astra:can_survive_in_space', 'railways:conductor') + event.add('ad_astra:can_survive_in_space', 'endermanoverhaul:pet_enderman') + event.add('ad_astra:can_survive_in_space', 'endermanoverhaul:axolotl_pet_enderman') + event.add('ad_astra:can_survive_in_space', 'endermanoverhaul:hammerhead_pet_enderman') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/venus/data.venus.js b/kubejs/server_scripts/tfg/venus/data.venus.js new file mode 100644 index 000000000..7dc7d555d --- /dev/null +++ b/kubejs/server_scripts/tfg/venus/data.venus.js @@ -0,0 +1,26 @@ +"use strict"; + +function registerTFGVenusBedrockFluidVeins(event) { + + event.add('tfg:venus_sulfuric_acid', vein => { + vein.dimensions('ad_astra:venus') + vein.fluid(() => Fluid.of('gtceu:sulfuric_acid').fluid) + vein.weight(50) + vein.minimumYield(100) + vein.maximumYield(200) + vein.depletionAmount(1) + vein.depletionChance(50) + vein.depletedYield(20) + }) + + event.add('tfg:venus_lava', vein => { + vein.dimensions('ad_astra:venus') + vein.fluid(() => Fluid.of('minecraft:lava').fluid) + vein.weight(50) + vein.minimumYield(200) + vein.maximumYield(400) + vein.depletionAmount(1) + vein.depletionChance(1) + vein.depletedYield(50) + }) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.biochem.js b/kubejs/server_scripts/tfg/venus/recipes.biochem.js similarity index 100% rename from kubejs/server_scripts/tfg/recipes.biochem.js rename to kubejs/server_scripts/tfg/venus/recipes.biochem.js diff --git a/kubejs/server_scripts/tfg/venus/tags.venus.js b/kubejs/server_scripts/tfg/venus/tags.venus.js new file mode 100644 index 000000000..493030147 --- /dev/null +++ b/kubejs/server_scripts/tfg/venus/tags.venus.js @@ -0,0 +1,117 @@ +"use strict"; + +function registerTFGVenusItemTags(event) { + +} + + +function registerTFGVenusBlockTags(event) { + + event.add('buildinggadgets2:deny', 'tfg:geyser_source') + event.add('ae2:blacklisted/spatial', 'tfg:geyser_source') + + event.add('buildinggadgets2:deny', 'tfg:geyser_source_small') + event.add('ae2:blacklisted/spatial', 'tfg:geyser_source_small') + + event.add('ad_astra:venus_stone_replaceables', 'ad_astra:venus_stone') + event.add('ad_astra:venus_stone_replaceables', 'tfg:rock/hardened_venus_stone') + event.add('ad_astra:venus_stone_replaceables', 'gtceu:red_granite') + event.add('ad_astra:venus_stone_replaceables', 'tfg:rock/hardened_red_granite') + event.add('ad_astra:venus_stone_replaceables', 'ad_astra:moon_deepslate') + event.add('ad_astra:venus_stone_replaceables', 'tfg:rock/hardened_moon_deepslate') + event.add('ad_astra:venus_stone_replaceables', 'minecraft:deepslate') + event.add('ad_astra:venus_stone_replaceables', 'tfg:rock/hardened_deepslate') + event.add('ad_astra:venus_stone_replaceables', 'minecraft:dripstone_block') + event.add('ad_astra:venus_stone_replaceables', 'tfg:rock/hardened_dripstone') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/granite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/granite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/diorite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/diorite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/gabbro') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/gabbro') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/basalt') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/basalt') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/rhyolite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/andesite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/dacite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/dacite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/slate') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/slate') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/schist') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/schist') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/gneiss') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/gneiss') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/phyllite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/phyllite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/quartzite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/quartzite') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/blue') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/blue') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/green') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/green') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/brown') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/brown') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/orange') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/orange') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/white') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/white') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/yellow') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/yellow') + event.add('ad_astra:venus_stone_replaceables', 'tfg:geyser_slurry') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sulfur_fumes') + event.add('ad_astra:venus_stone_replaceables', 'minecraft:lava') + event.add('ad_astra:venus_stone_replaceables', 'create:scoria') + event.add('ad_astra:venus_stone_replaceables', 'create:scorchia') + event.add('ad_astra:venus_stone_replaceables', 'minecraft:tuff') + + event.add('tfc:can_carve', '#ad_astra:venus_stone_replaceables') + + event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/blue') + event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/green') + event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/brown') + event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/orange') + event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/white') + event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/yellow') +} + +function registerTFGVenusBiomeTags(event) { + global.VENUS_BIOMES.forEach(biome => { + event.add('tfg:venus_biomes', biome); + event.add('ad_astra:has_acid_rain', biome); + }) +} + +function registerTFGVenusEntityTypeTags(event) { + const ENTITIES = [ + 'minecraft:enderman', + "endermanoverhaul:desert_enderman", + "endermanoverhaul:savanna_enderman", + "endermanoverhaul:nether_wastes_enderman", + "ad_astra:sulfur_creeper", + 'species:cliff_hanger', + ] + + ENTITIES.forEach(entity => { + event.add('ad_astra:can_survive_extreme_heat', entity) + event.add('ad_astra:lives_without_oxygen', entity) + }) + + event.add('tfc:deals_slashing_damage', 'endermanoverhaul:desert_enderman') + event.add('tfc:deals_slashing_damage', 'endermanoverhaul:savanna_enderman') + event.add('tfc:deals_slashing_damage', 'endermanoverhaul:nether_wastes_enderman') + event.add('tfc:deals_slashing_damage', 'species:cliff_hanger') +} + +function registerTFGVenusPlacedFeatures(event) { + + // Underground decoration + event.add("tfg:venus_underground_decoration", "tfg:glow_lichen") + event.add('tfg:venus_underground_decoration', 'tfg:venus/underground/loose_rocks') + event.add('tfg:venus_underground_decoration', 'tfc:cave_spike') + event.add('tfg:venus_underground_decoration', 'tfc:cave_column') + event.add('tfg:venus_underground_decoration', 'tfc:large_cave_spike') + event.add('tfg:venus_underground_decoration', 'tfg:venus/underground/noise_cave_stalagmite') + event.add('tfg:venus_underground_decoration', 'tfg:venus/underground/noise_cave_stalagtite') + + event.add("tfg:venus_top_layer_modification", "tfc:surface_loose_rocks") +} diff --git a/kubejs/server_scripts/tfg/worldgen/data.fauna.js b/kubejs/server_scripts/tfg/worldgen/data.fauna.js new file mode 100644 index 000000000..6a54f27b4 --- /dev/null +++ b/kubejs/server_scripts/tfg/worldgen/data.fauna.js @@ -0,0 +1,108 @@ +"use strict"; + + +/** @param {Internal.TFCDataEventJS} event */ +function registerTFGFauna(event) { + + // -108 is the average at z=-4k to z=-6k, which feels like a big enough band + event.fauna( + climate => { + climate.maxTemp(-108) + climate.fuzzy(false) + }, + faunaData => { + faunaData.solidGround(true) + }, + "tfg:glacian_ram") + + event.fauna( + climate => { + climate.minTemp(-102) + climate.maxTemp(-30) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "tfg:sniffer") + + event.fauna( + climate => { + climate.minTemp(-100) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "tfg:wraptor") + + event.fauna( + climate => { + climate.minTemp(-108) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "species:springling") + + event.fauna( + climate => { + climate.minTemp(-109) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "species:goober") + + event.fauna( + climate => { + climate.minTemp(-97) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "wan_ancient_beasts:walker") + + event.fauna( + climate => { + climate.minTemp(-109) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "wan_ancient_beasts:eater") + + event.fauna( + climate => { + climate.minTemp(-100) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "wan_ancient_beasts:crusher") + + event.fauna( + climate => { + climate.minTemp(-105) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "wan_ancient_beasts:soarer") + + event.fauna( + climate => { + climate.minTemp(-106) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "wan_ancient_beasts:glider") +} diff --git a/kubejs/server_scripts/tfg/entities.js b/kubejs/server_scripts/tfg/worldgen/entities.js similarity index 100% rename from kubejs/server_scripts/tfg/entities.js rename to kubejs/server_scripts/tfg/worldgen/entities.js diff --git a/kubejs/server_scripts/tfg/events.chunks.js b/kubejs/server_scripts/tfg/worldgen/events.chunks.js similarity index 100% rename from kubejs/server_scripts/tfg/events.chunks.js rename to kubejs/server_scripts/tfg/worldgen/events.chunks.js diff --git a/kubejs/server_scripts/tfg/events.forests.js b/kubejs/server_scripts/tfg/worldgen/events.forests.js similarity index 100% rename from kubejs/server_scripts/tfg/events.forests.js rename to kubejs/server_scripts/tfg/worldgen/events.forests.js diff --git a/kubejs/server_scripts/tfc/select_climates.js b/kubejs/server_scripts/tfg/worldgen/select_climates.js similarity index 100% rename from kubejs/server_scripts/tfc/select_climates.js rename to kubejs/server_scripts/tfg/worldgen/select_climates.js diff --git a/kubejs/server_scripts/tfg/worldgen/tags.general_worldgen.js b/kubejs/server_scripts/tfg/worldgen/tags.general_worldgen.js new file mode 100644 index 000000000..55ba87c95 --- /dev/null +++ b/kubejs/server_scripts/tfg/worldgen/tags.general_worldgen.js @@ -0,0 +1,212 @@ +"use strict"; + +function registerTFGGeneralWorldgenItemTags(event) { + + // Actually "layers", can't rename them without screwing with peoples' worlds + event.add('c:hidden_from_recipe_viewers', 'tfg:ash_pile') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/black_sand') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/brown_sand') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/green_sand') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/pink_sand') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/red_sand') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/white_sand') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/yellow_sand') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/mars_sand') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/moon_sand') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/venus_sand') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/hematitic_sand') + + // Actually "piles", the kind that can hide plants inside them + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/mars_sand_covering') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/venus_sand_covering') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/hematitic_sand_covering') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/mars_snow_covering') + + event.add('forge:cobblestone', 'ad_astra:moon_cobblestone') + event.add('forge:cobblestone', 'ad_astra:mars_cobblestone') + event.add('forge:cobblestone', 'ad_astra:venus_cobblestone') + event.add('forge:cobblestone', 'ad_astra:mercury_cobblestone') + event.add('forge:cobblestone', 'ad_astra:glacio_cobblestone') + + event.add('forge:smooth_stone_slab', 'ad_astra:polished_moon_stone_slab') + event.add('forge:smooth_stone_slab', 'ad_astra:polished_mars_stone_slab') + event.add('forge:smooth_stone_slab', 'ad_astra:polished_venus_stone_slab') + event.add('forge:smooth_stone_slab', 'ad_astra:polished_mercury_stone_slab') + event.add('forge:smooth_stone_slab', 'ad_astra:polished_glacio_stone_slab') + event.add('forge:smooth_stone_slab', 'ad_astra:polished_permafrost_slab') + event.add('forge:smooth_stone_slab', 'minecraft:polished_deepslate_slab') + event.add('forge:smooth_stone_slab', 'minecraft:polished_blackstone_slab') + event.add('forge:smooth_stone_slab', 'minecraft:polished_blackstone_brick_slab') + + event.add('tfc:rock/smooth', 'minecraft:smooth_stone') + + event.add('tfc:rock/raw', 'minecraft:deepslate') + event.add('tfc:rock/raw', 'minecraft:blackstone') + event.add('tfc:rock/raw', 'minecraft:dripstone_block') + + event.add('minecraft:wart_blocks', 'ad_astra:aeronos_cap') + event.add('minecraft:wart_blocks', 'ad_astra:strophar_cap') + event.add('minecraft:wart_blocks', 'minecraft:mushroom_stem') + event.add('tfc:compost_greens', 'minecraft:nether_wart_block') + event.add('tfc:compost_greens', 'minecraft:warped_wart_block') +} + +function registerTFGGeneralWorldgenBlockTags(event) { + + // All new stones + global.EXTRATERRESTRIAL_RAW_ROCKS.forEach(rock => { + event.add('forge:stone', rock) + event.add('tfc:breaks_when_isolated', rock) + event.add('tfc:rock/raw', rock) + event.add('minecraft:mineable/pickaxe', rock) + event.add('tfc:can_carve', rock) + // Collapse tags also require a collapse recipe to work. + // Don't add the recipe if you don't want them to actually collapse! + event.add('tfc:can_collapse', rock) + event.add('tfc:can_trigger_collapse', rock) + event.add('tfc:can_start_collapse', rock) + event.add('tfc:powderkeg_breaking_blocks', rock) + event.add('tfc:bloomery_insulation', rock) + event.add('firmalife:oven_insulation', rock) + event.add('tfc:forge_insulation', rock) + }) + + global.EXTRATERRESTRIAL_HARDENED_ROCKS.forEach(rock => { + event.add('minecraft:mineable/pickaxe', rock) + event.add('tfc:can_collapse', rock) + event.add('tfc:can_trigger_collapse', rock) + event.add('tfc:powderkeg_breaking_blocks', rock) + event.add('tfc:bloomery_insulation', rock) + event.add('firmalife:oven_insulation', rock) + event.add('tfc:forge_insulation', rock) + event.add('tfc:can_carve', rock) + }) + + event.add('tfc:can_landslide', 'minecraft:cobbled_deepslate') + event.add('forge:cobblestone/normal', 'minecraft:cobbled_deepslate') + + event.add('tfc:breaks_when_isolated', 'minecraft:deepslate') + event.add('tfc:breaks_when_isolated', 'minecraft:blackstone') + event.add('tfc:breaks_when_isolated', 'minecraft:gilded_blackstone') + event.add('tfc:breaks_when_isolated', 'minecraft:dripstone_block') + + event.add('forge:stone', 'minecraft:blackstone') + + event.add('tfg:rock_stairs', 'minecraft:cobbled_deepslate_stairs') + event.add('tfg:rock_slabs', 'minecraft:cobbled_deepslate_slab') + event.add('tfg:rock_walls', 'minecraft:cobbled_deepslate_wall') + event.add('tfg:brick_stairs', 'minecraft:deepslate_brick_stairs') + event.add('tfg:brick_slabs', 'minecraft:deepslate_brick_slab') + event.add('tfg:brick_walls', 'minecraft:deepslate_brick_wall') + event.add('tfg:brick_stairs', 'minecraft:deepslate_tile_stairs') + event.add('tfg:brick_slabs', 'minecraft:deepslate_tile_slab') + event.add('tfg:brick_walls', 'minecraft:deepslate_tile_wall') + event.add('tfg:rock_stairs', 'minecraft:blackstone_stairs') + event.add('tfg:rock_slabs', 'minecraft:blackstone_slab') + event.add('tfg:rock_walls', 'minecraft:blackstone_wall') + event.add('tfg:brick_stairs', 'minecraft:blackstone_stairs') + event.add('tfg:brick_slabs', 'minecraft:blackstone_slab') + event.add('tfg:brick_walls', 'minecraft:blackstone_wall') + + event.add('tfc:bloomery_insulation', 'minecraft:polished_deepslate'); + event.add('tfc:forge_insulation', 'minecraft:polished_deepslate'); + event.add('tfc:bloomery_insulation', 'minecraft:polished_blackstone'); + event.add('tfc:forge_insulation', 'minecraft:polished_blackstone'); + event.add('tfc:bloomery_insulation', 'minecraft:deepslate_tiles'); + event.add('tfc:forge_insulation', 'minecraft:deepslate_tiles'); + event.add('tfc:bloomery_insulation', 'minecraft:cracked_deepslate_tiles'); + event.add('tfc:forge_insulation', 'minecraft:cracked_deepslate_tiles'); + event.add('tfc:bloomery_insulation', 'minecraft:chiseled_deepslate'); + event.add('tfc:forge_insulation', 'minecraft:chiseled_deepslate'); + event.add('tfc:bloomery_insulation', 'minecraft:chiseled_polished_blackstone'); + event.add('tfc:forge_insulation', 'minecraft:chiseled_polished_blackstone'); + event.add('tfc:bloomery_insulation', 'minecraft:gilded_blackstone'); + event.add('tfc:forge_insulation', 'minecraft:gilded_blackstone'); + event.add('tfc:bloomery_insulation', 'minecraft:basalt'); + event.add('tfc:forge_insulation', 'minecraft:basalt'); + event.add('tfc:bloomery_insulation', 'minecraft:smooth_basalt'); + event.add('tfc:forge_insulation', 'minecraft:smooth_basalt'); + + // Ores + event.add("minecraft:mineable/pickaxe", "#forge:ores"); + event.add("minecraft:needs_iron_tool", "#forge:ores"); + + event.add("tfc:can_collapse", "#forge:ores"); + event.add("tfc:can_start_collapse", "#forge:ores"); + event.add("tfc:can_trigger_collapse", "#forge:ores"); + event.add("c:hidden_from_recipe_viewers", "#forge:ores"); + + event.add("tfc:can_collapse", "#forge:raw_ore_blocks"); + event.add("tfc:can_start_collapse", "#forge:raw_ore_blocks"); + event.add("tfc:can_trigger_collapse", "#forge:raw_ore_blocks"); + event.add("c:hidden_from_recipe_viewers", "#forge:raw_ore_blocks"); + + // Let GT indicators be covered by snow + forEachMaterial((material) => { + if (material.hasProperty(PropertyKey.ORE)) { + const indicator = `gtceu:${material.getName()}_indicator`; + + event.add("tfg:dust_ore_indicators", indicator); + event.add("tfc:can_be_snow_piled", indicator); + event.add("tfc:can_be_ice_piled", indicator); + + if (material.hasProperty(PropertyKey.GEM)) { + const bud = `gtceu:${material.getName()}_bud_indicator`; + + event.add("tfg:bud_ore_indicators", bud); + event.add("tfc:can_be_snow_piled", bud); + event.add("tfc:can_be_ice_piled", bud); + + event.add("minecraft:mineable/pickaxe", bud); + } + } + }); + + // More rock tags + event.add('tfc:can_landslide', 'ad_astra:moon_sand') + event.add('tfc:can_landslide', 'ad_astra:mars_sand') + event.add('tfc:can_landslide', 'ad_astra:venus_sand') + event.add('tfc:can_landslide', 'minecraft:red_sand') + + event.add('tfc:can_landslide', 'ad_astra:moon_cobblestone') + event.add('tfc:can_landslide', 'ad_astra:mars_cobblestone') + event.add('tfc:can_landslide', 'ad_astra:venus_cobblestone') + event.add('tfc:can_landslide', 'ad_astra:mercury_cobblestone') + event.add('tfc:can_landslide', 'ad_astra:glacio_cobblestone') + event.add('tfc:can_landslide', 'gtceu:red_granite_cobblestone') + + event.add('forge:cobblestone', 'ad_astra:moon_cobblestone') + event.add('forge:cobblestone', 'ad_astra:mars_cobblestone') + event.add('forge:cobblestone', 'ad_astra:venus_cobblestone') + event.add('forge:cobblestone', 'ad_astra:mercury_cobblestone') + event.add('forge:cobblestone', 'ad_astra:glacio_cobblestone') + + event.add('tfc:can_landslide', 'ad_astra:moon_cobblestone_slab') + event.add('tfc:can_landslide', 'ad_astra:mars_cobblestone_slab') + event.add('tfc:can_landslide', 'ad_astra:venus_cobblestone_slab') + event.add('tfc:can_landslide', 'ad_astra:mercury_cobblestone_slab') + event.add('tfc:can_landslide', 'ad_astra:glacio_cobblestone_slab') + + event.add('tfc:can_landslide', 'ad_astra:moon_cobblestone_stairs') + event.add('tfc:can_landslide', 'ad_astra:mars_cobblestone_stairs') + event.add('tfc:can_landslide', 'ad_astra:venus_cobblestone_stairs') + event.add('tfc:can_landslide', 'ad_astra:mercury_cobblestone_stairs') + event.add('tfc:can_landslide', 'ad_astra:glacio_cobblestone_stairs') + + event.add('tfg:rock_stairs', 'ad_astra:moon_stone_stairs') + event.add('tfg:rock_stairs', 'ad_astra:mars_stone_stairs') + event.add('tfg:rock_stairs', 'ad_astra:venus_stone_stairs') + event.add('tfg:rock_stairs', 'ad_astra:mercury_stone_stairs') + event.add('tfg:rock_stairs', 'ad_astra:glacio_stone_stairs') + + event.add('tfg:rock_slabs', 'ad_astra:moon_stone_slab') + event.add('tfg:rock_slabs', 'ad_astra:mars_stone_slab') + event.add('tfg:rock_slabs', 'ad_astra:venus_stone_slab') + event.add('tfg:rock_slabs', 'ad_astra:mercury_stone_slab') + event.add('tfg:rock_slabs', 'ad_astra:glacio_stone_slab') + + event.add('minecraft:mushroom_grow_block', '#tfc:dirt') + event.add('minecraft:mushroom_grow_block', '#tfc:grass') + event.add('minecraft:mushroom_grow_block', '#forge:sand') + event.add('minecraft:mushroom_grow_block', '#forge:gravel') +} diff --git a/kubejs/server_scripts/tfg/worldgen/tags.overworld.js b/kubejs/server_scripts/tfg/worldgen/tags.overworld.js new file mode 100644 index 000000000..7bd81d8d9 --- /dev/null +++ b/kubejs/server_scripts/tfg/worldgen/tags.overworld.js @@ -0,0 +1,76 @@ +"use strict"; + +function registerTFGOverworldBiomeTags(event) { + + // Structures + event.add('tfg:has_structure/plains_temperate_0', 'tfc:plains') + event.add('tfg:has_structure/plains_temperate_0', 'tfc:plateau') + event.add('tfg:has_structure/plains_temperate_0', 'tfc:highlands') + + event.add('tfg:has_structure/aqueduct', 'tfc:plains') + event.add('tfg:has_structure/aqueduct', 'tfc:highlands') + event.add('tfg:has_structure/aqueduct', 'tfc:lowlands') + event.add('tfg:has_structure/aqueduct', 'tfc:badlands') + + event.add('tfg:has_structure/ocean_moai_0', 'tfc:volcanic_oceanic_mountains') + event.add('tfg:has_structure/ocean_moai_0', 'tfc:volcanic_mountains') + + event.add('tfg:has_structure/illages', 'tfc:plains') + event.add('tfg:has_structure/illages', 'tfc:hills') + event.add('tfg:has_structure/illages', 'tfc:rolling_hills') + event.add('tfg:has_structure/illages', 'tfc:badlands') + event.add('tfg:has_structure/illages', 'tfc:plateau') + event.add('tfg:has_structure/illages', 'tfc:old_mountains') + + event.add('tfg:never_has_structure/illages', '#tfc:is_lake') + event.add('tfg:never_has_structure/illages', '#tfc:is_ocean') + event.add('tfg:never_has_structure/illages', '#tfc:is_river') + + // Kaolin + event.add("tfc:kaolin_clay_spawns_in", "tfc:rolling_hills"); + + global.TFC_BIOMES.forEach(biome => { + event.add('tfg:overworld_biomes', biome); + }) +} + +function registerTFGOverworldPlacedFeatures(event) { + + // Rose quartz + event.add('tfc:in_biome/surface_decoration/ocean', 'tfg:earth/rose_quartz/rose_quartz') + event.add('tfc:in_biome/surface_decoration/ocean_reef', 'tfg:earth/rose_quartz/rose_quartz') + event.add('tfc:in_biome/surface_decoration/deep_ocean', 'tfg:earth/rose_quartz/rose_quartz') + event.add('tfc:in_biome/surface_decoration/deep_ocean_trench', 'tfg:earth/rose_quartz/rose_quartz') + event.add('tfc:in_biome/surface_decoration/shore', 'tfg:earth/rose_quartz/rose_quartz') + event.add('tfc:in_biome/surface_decoration/tidal_flats', 'tfg:earth/rose_quartz/rose_quartz') + event.add('tfc:in_biome/surface_decoration/lowlands', 'tfg:earth/rose_quartz/rose_quartz') + event.add('tfc:in_biome/surface_decoration/salt_marsh', 'tfg:earth/rose_quartz/rose_quartz') + event.add('tfc:in_biome/surface_decoration/plains', 'tfg:earth/rose_quartz/rose_quartz') + event.add('tfc:in_biome/surface_decoration/lake', 'tfg:earth/rose_quartz/rose_quartz') + + // Add back the non-ore ones + event.add("tfc:in_biome/veins", "tfc:vein/gravel"); + event.add("tfc:in_biome/veins", "tfc:vein/kaolin_disc"); + event.add("tfc:in_biome/veins", "tfc:vein/granite_dike"); + event.add("tfc:in_biome/veins", "tfc:vein/diorite_dike"); + event.add("tfc:in_biome/veins", "tfc:vein/gabbro_dike"); + + // Geodes + event.add("tfc:in_biome/veins", "tfg:earth/geode/amethyst"); + event.add("tfc:in_biome/veins", "tfg:earth/geode/barite"); + event.add("tfc:in_biome/veins", "tfg:earth/geode/calcite"); + event.add("tfc:in_biome/veins", "tfg:earth/geode/gypsum"); + event.add("tfc:in_biome/veins", "tfg:earth/geode/opal"); + event.add("tfc:in_biome/veins", "tfg:earth/geode/pyrite"); + event.add("tfc:in_biome/veins", "tfg:earth/geode/quartzite"); + + // Crops + event.add("tfc:feature/crops", "tfg:earth/sunflower_patch"); + event.add("tfc:feature/crops", "tfg:earth/rapeseed_patch"); + event.add("tfc:feature/crops", "tfg:earth/flax_patch"); + + // Other decoration + event.add("tfc:in_biome/underground_decoration", "tfg:glow_lichen"); + event.add("tfc:in_biome/underground_decoration", "tfg:earth/sulfur_patch"); + event.add("tfc:in_biome/underground_decoration", "tfg:earth/oil_spout"); +} \ No newline at end of file diff --git a/kubejs/server_scripts/wan_ancient_beasts/recipes.js b/kubejs/server_scripts/wan_ancient_beasts/recipes.js index 2b65d3851..9f083ead7 100644 --- a/kubejs/server_scripts/wan_ancient_beasts/recipes.js +++ b/kubejs/server_scripts/wan_ancient_beasts/recipes.js @@ -38,19 +38,6 @@ const registerWABRecipes = (event) => { .duration(400) .EUt(30) - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless('4x tfg:fletching', [ - 'wan_ancient_beasts:glider_feather', - '#forge:tools/knives' - ]).id('tfg:shapeless/glider_feather_fletching')) - - event.recipes.gtceu.assembler('tfg:assembler/glider_feather_fletching') - .itemInputs('1x wan_ancient_beasts:glider_feather') - .itemOutputs('4x tfg:fletching') - .duration(20) - .circuit(4) - .EUt(GTValues.VA[GTValues.ULV]) - event.shaped('wan_ancient_beasts:reinforced_shield', [ 'BAB', 'DCD', diff --git a/kubejs/startup_scripts/ad_astra/materials.js b/kubejs/startup_scripts/ad_astra/materials.js deleted file mode 100644 index 98d9d69f3..000000000 --- a/kubejs/startup_scripts/ad_astra/materials.js +++ /dev/null @@ -1,92 +0,0 @@ -// priority: 0 -"use strict"; - -const registerAdAstraMaterials = (event) => { - - event.create('armalcolite') - .gem(2) - .components('1x magnesium', '1x rutile', '1x ilmenite') - .color(0x443333) - .secondaryColor(0x5e2c21) - .iconSet(GTMaterialIconSet.getByName('tfc_emerald')) - .ore() - .addOreByproducts('rutile', 'rutile', 'ilmenite') - - // #region ad astra ores - - // moon - event.create('desh') - .components('2x olivine', '1x rutile', '4x nitrogen') - .color(0xF39A4C) - .secondaryColor(0xF35A6C) - .iconSet(GTMaterialIconSet.getByName('tfc_hematite')) - .ore() - .addOreByproducts('olivine', 'rutile', 'rutile') - .ingot() - .liquid() - .blastTemp(2800, 'mid', GTValues.VA[GTValues.HV]) - .flags( - GTMaterialFlags.FORCE_GENERATE_BLOCK, - GTMaterialFlags.GENERATE_PLATE, - GTMaterialFlags.GENERATE_ROD, - GTMaterialFlags.GENERATE_DENSE, - GTMaterialFlags.GENERATE_GEAR, - GTMaterialFlags.GENERATE_FRAME, - GTMaterialFlags.DISABLE_ALLOY_BLAST - ) - - // mars - event.create('ostrum') - .components('2x pitchblende', '1x tricalcium_phosphate', '1x bauxite', '1x silver', '1x beryllium') - .color(0xbd7980) - .secondaryColor(0xA66C8D) - .iconSet(GTMaterialIconSet.getByName('tfc_cassiterite')) - .ingot() - .liquid() - .blastTemp(3700, 'mid', GTValues.VA[GTValues.EV]) - .flags( - GTMaterialFlags.DISABLE_DECOMPOSITION, - GTMaterialFlags.FORCE_GENERATE_BLOCK, - GTMaterialFlags.GENERATE_PLATE, - GTMaterialFlags.GENERATE_ROD, - GTMaterialFlags.GENERATE_FRAME, - GTMaterialFlags.DISABLE_ALLOY_BLAST - ) - - // venus? - event.create('calorite') - //.components('2x mercury', '1x tungsten', '1x rhodium', '2x sulfur') - .color(0xC94D4E) - .secondaryColor(0x9A296A) - .iconSet(GTMaterialIconSet.getByName('tfc_copper')) - .ore() - .ingot() - .flags( - GTMaterialFlags.FORCE_GENERATE_BLOCK, - GTMaterialFlags.GENERATE_PLATE - ) - - // ??? - event.create('etrium') - //.components('1x niobium', '1x molybdenum', '1x ruthenium', '3x carbon', '1x monochloramine') - .color(0x7BFCD7) - .secondaryColor(0x3582D2) - .iconSet(GTMaterialIconSet.getByName('tfc_silver')) - .ore() - .ingot() - .flags( - GTMaterialFlags.FORCE_GENERATE_BLOCK, - GTMaterialFlags.GENERATE_PLATE, - GTMaterialFlags.GENERATE_ROD - ) - - // #endregion -} - -const registerAdAstraMaterialModification = (event) => { - - const $FLUID_PIPE_PROPERTY = Java.loadClass('com.gregtechceu.gtceu.api.data.chemical.material.properties.FluidPipeProperties') - - // Ostrum fluid pipe - same flow rate as titanium, higher temp range - GTMaterials.get('ostrum').setProperty(PropertyKey.FLUID_PIPE, new $FLUID_PIPE_PROPERTY(3700, 150, true, false, true, false)); -} \ No newline at end of file diff --git a/kubejs/startup_scripts/ae2/fluids.js b/kubejs/startup_scripts/ae2/fluids.js deleted file mode 100644 index 60038bb0b..000000000 --- a/kubejs/startup_scripts/ae2/fluids.js +++ /dev/null @@ -1,13 +0,0 @@ -// priority: 0 -"use strict"; - -const registerAE2Fluids = (event) => { - -// AE2 Moon Fluix - - event.create('tfg:cryogenized_fluix') - .thickTexture(0xde8cfb) - .bucketColor(0xde8cfb) - .luminosity(14) - .temperature(10) -} \ No newline at end of file diff --git a/kubejs/startup_scripts/chisel_and_bits/constants.js b/kubejs/startup_scripts/chisel_and_bits/constants.js deleted file mode 100644 index 5c8a9ee0f..000000000 --- a/kubejs/startup_scripts/chisel_and_bits/constants.js +++ /dev/null @@ -1,17 +0,0 @@ -// priority: 0 -"use strict"; - -global.CHISEL_AND_BITS_DISABLED_ITEMS = [ - 'chiselsandbits:block_bit', - 'chiselsandbits:chiseled_block', - - 'chiselsandbits:chisel_stone', - 'chiselsandbits:chisel_iron', - 'chiselsandbits:chisel_gold', - 'chiselsandbits:chisel_netherite', - - 'chiselsandbits:bit_bag_dyed', - 'chiselsandbits:pattern_single_use', - 'chiselsandbits:pattern_multi_use', - 'chiselsandbits:monocle' -]; \ No newline at end of file diff --git a/kubejs/startup_scripts/gtceu/items.js b/kubejs/startup_scripts/gtceu/items.js deleted file mode 100644 index 6b29ca59f..000000000 --- a/kubejs/startup_scripts/gtceu/items.js +++ /dev/null @@ -1,45 +0,0 @@ -// priority: 0 -"use strict"; - -const registerGTCEuItems = (event) => { - - event.create('tfg:ulv_universal_circuit') - .translationKey('item.ulv_universal_circuit') - - event.create('tfg:lv_universal_circuit') - .translationKey('item.lv_universal_circuit') - - event.create('tfg:mv_universal_circuit') - .translationKey('item.mv_universal_circuit') - - event.create('tfg:hv_universal_circuit') - .translationKey('item.hv_universal_circuit') - - event.create('tfg:ev_universal_circuit') - .translationKey('item.ev_universal_circuit') - - event.create('tfg:iv_universal_circuit') - .translationKey('item.iv_universal_circuit') - - event.create('tfg:luv_universal_circuit') - .translationKey('item.luv_universal_circuit') - - event.create('tfg:zpm_universal_circuit') - .translationKey('item.zpm_universal_circuit') - - event.create('tfg:uv_universal_circuit') - .translationKey('item.uv_universal_circuit') - - event.create('tfg:uhv_universal_circuit') - .translationKey('item.uhv_universal_circuit') - - event.create('tfg:chipboard_composite') - .translationKey('item.chipboard_composite') - - event.create('tfg:treated_chipboard_composite') - .translationKey('item.treated_chipboard_composite') - - event.create('tfg:high_density_treated_fiberboard') - .translationKey('item.high_density_treated_fiberboard') - -} diff --git a/kubejs/startup_scripts/gtceu/materials.js b/kubejs/startup_scripts/gtceu/material_modification.js similarity index 99% rename from kubejs/startup_scripts/gtceu/materials.js rename to kubejs/startup_scripts/gtceu/material_modification.js index 3bdcf75d5..aba518db4 100644 --- a/kubejs/startup_scripts/gtceu/materials.js +++ b/kubejs/startup_scripts/gtceu/material_modification.js @@ -1,10 +1,6 @@ ๏ปฟ// priority: 0 "use strict"; -const registerGTCEuMaterials = (event) => { - -} - const registerGTCEuMaterialModification = (event) => { //const TFGPropertyKey = Java.loadClass('su.terrafirmagreg.core.compat.gtceu.TFGPropertyKeys') @@ -343,6 +339,8 @@ const registerGTCEuMaterialModification = (event) => { GTMaterials.RedSteel.setProperty(PropertyKey.FLUID_PIPE, new $FLUID_PIPE_PROPERTY(370, 75, true, false, true, false)); // Blue steel fluid pipe - same flow rate as aluminium, same temp tolerance as tungsten GTMaterials.BlueSteel.setProperty(PropertyKey.FLUID_PIPE, new $FLUID_PIPE_PROPERTY(4618, 75, true, false, false, false)); + // Ostrum fluid pipe - same flow rate as titanium, higher temp range + TFGHelpers.getMaterial('ostrum').setProperty(PropertyKey.FLUID_PIPE, new $FLUID_PIPE_PROPERTY(3700, 150, true, false, true, false)); // Add some hazards back GTMaterials.Realgar.setProperty(PropertyKey.HAZARD, new $HAZARD_PROPERTY($HAZARD_PROPERTY.HazardTrigger.INHALATION, GTMedicalConditions.ARSENICOSIS, 1, false)); diff --git a/kubejs/startup_scripts/main_startup_script.js b/kubejs/startup_scripts/main_startup_script.js index 27c4287d5..79399185f 100644 --- a/kubejs/startup_scripts/main_startup_script.js +++ b/kubejs/startup_scripts/main_startup_script.js @@ -2,18 +2,11 @@ "use strict"; StartupEvents.registry('item', event => { - registerBetterEndItems(event) - registerGTCEuItems(event) registerTFGItems(event) }) StartupEvents.registry('block', event => { registerTFGBlocks(event) - registerBetterEndBlocks(event) -}) - -StartupEvents.registry('entity_type', event => { - registerTFGEntityTypes(event) }) BlockEvents.modification(event => { @@ -32,7 +25,6 @@ ItemEvents.modification(event => { StartupEvents.registry('fluid', event => { registerTFGFluids(event) - registerAE2Fluids(event) }) GTCEuStartupEvents.registry('gtceu:recipe_type', event => { @@ -51,26 +43,19 @@ GTCEuStartupEvents.registry('gtceu:tag_prefix', event => { }) GTCEuStartupEvents.registry('gtceu:material', event => { - registerAdAstraMaterials(event) registerAE2Materials(event) registerCreateMaterials(event) - registerTFCMaterials(event) - registerGTCEuMaterials(event) registerGreateMaterials(event) registerTFGMaterials(event) - registerTFGNuclearMaterials(event) - registerTFGBiolineMaterials(event) - registerTFGPowerReworkMaterials(event) }) GTCEuStartupEvents.registry('gtceu:material_icon_set', event => { - registerTFCIconSets(event) + registerTFGIconSets(event) }) GTCEuStartupEvents.materialModification(event => { registerGTCEuMaterialModification(event) registerGreateMaterialModification(event) - registerAdAstraMaterialModification(event) }) GTCEuStartupEvents.registry('gtceu:dimension_marker', event => { diff --git a/kubejs/startup_scripts/tfc/icon_sets.js b/kubejs/startup_scripts/tfc/icon_sets.js deleted file mode 100644 index 7a90f7027..000000000 --- a/kubejs/startup_scripts/tfc/icon_sets.js +++ /dev/null @@ -1,39 +0,0 @@ -// priority: 0 -"use strict"; - -function registerTFCIconSets(event) { - - event.create('tfc_borax').parent('rough') - event.create('tfc_gypsum').parent('rough') - event.create('tfc_graphite').parent('rough') - event.create('tfc_saltpeter').parent('fine') - event.create('tfc_sulfur').parent('fine') - - event.create('tfc_amethyst').parent('ruby') - event.create('tfc_redstone').parent('fine') - event.create('tfc_diamond').parent('diamond') - event.create('tfc_emerald').parent('emerald') - event.create('tfc_lapis').parent('lapis') - event.create('tfc_opal').parent('opal') - event.create('tfc_pyrite').parent('bright') - event.create('tfc_ruby').parent('ruby') - event.create('tfc_sapphire').parent('gem_horizontal') - event.create('tfc_topaz').parent('gem_vertical') - event.create('tfc_realgar').parent('emerald') - - event.create('tfc_bismuth').parent('bright') - event.create('tfc_cassiterite').parent('bright') - event.create('tfc_garnierite').parent('bright') - event.create('tfc_hematite').parent('metallic') - event.create('tfc_limonite').parent('metallic') - event.create('tfc_magnetite').parent('dull') - event.create('tfc_malachite').parent('shiny') - event.create('tfc_copper').parent('bright') - event.create('tfc_gold').parent('shiny') - event.create('tfc_silver').parent('shiny') - event.create('tfc_sphalerite').parent('dull') - event.create('tfc_tetrahedrite').parent('dull') - event.create('tfc_chromite').parent('dull') - - event.create('nether_quartz').parent('quartz') -} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/biotech/items.biotech.js b/kubejs/startup_scripts/tfg/biotech/items.biotech.js new file mode 100644 index 000000000..681f12e91 --- /dev/null +++ b/kubejs/startup_scripts/tfg/biotech/items.biotech.js @@ -0,0 +1,39 @@ +"use strict"; + +function registerTFGBiotechItems(event) { + + event.create('tfg:stainless_steel_needle') + .unstackable() + .maxDamage(9999) + + //#region Lab Equipment + + global.LAB_EQUIPMENT_CONTAINERS.forEach((item) => { + event.create(`tfg:${item.type}`, 'tfc:glass_bottle') + .fluidTagAccept('tfg:not_solid') + .capacity(item.capacity) + .translationKey(`item.tfg.lab_equipment.${item.type}`) + .tag('tfg:lab_equipment_containers') + .tag('tfc:fluid_item_ingredient_empty_containers') + .tag('tfc:glass_bottles') + }) + + event.create('tfg:lab_equipment') + .translationKey('item.tfg.lab_equipment.lab_equipment') + .tooltip(Text.translatable('tfg.tooltip.lab_equipment.set')) + + event.create('tfg:dirty_lab_equipment') + .translationKey('item.tfg.lab_equipment.dirty_lab_equipment') + .tooltip(Text.translatable('tfg.tooltip.lab_equipment.set_dirty')) + //#endregion + + + //#region Bioline + + event.create('tfg:cellulose_matrix') + event.create('tfg:smooth_endoplasmic_reticula') + event.create('tfg:rough_endoplasmic_reticula') + event.create('tfg:alpha_keratin') + + //#endregion +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/biotech/items.medicine.js b/kubejs/startup_scripts/tfg/biotech/items.medicine.js new file mode 100644 index 000000000..a3584c88f --- /dev/null +++ b/kubejs/startup_scripts/tfg/biotech/items.medicine.js @@ -0,0 +1,69 @@ +// priority: 0 +"use strict"; + +function registerTFGMedicineItems(event) { + const pill = [ + 'haste', + 'night_vision', + 'poison', + 'regeneration', + 'slowness', + 'speed', + 'water_breathing', + 'weakness' + ] + + const pill_names = [ + 'Haste', + 'Night Vision', + 'Poison', + 'Regeneration', + 'Slowness', + 'Speed', + 'Water Breathing', + 'Weakness' + ] + + pill.forEach((pill_array, index) => { + const pill_names_array = pill_names[index]; + + event.create(`tfg:${pill_array}_pill`) + .tooltip(`ยง9${pill_names_array} (08:00)`) + + event.create(`tfg:${pill_array}_tablet`) + .tooltip(`ยง9${pill_names_array} (30:00)`) + }) + + event.create(`tfg:antipoison_pill`) + .tooltip(`ยง9Cures Poison`) + + event.create(`tfg:antipoison_tablet`) + .tooltip(`ยง9Cures All Harmful Effects`) + + //salvos + + const salvo = [ + 'absorption', + 'fire_resistance', + 'invisibility', + 'luck', + 'resistance' + ] + const salvo_names = [ + 'Absorption', + 'Fire Resistance', + 'Invisibility', + 'Luck', + 'Resistance' + ] + + salvo.forEach((salvo_array, index) => { + const salvo_names_array = salvo_names[index]; + + event.create(`tfg:${salvo_array}_salvo`) + .tooltip(`ยง9${salvo_names_array} (08:00)`) + }) + + event.create(`tfg:instant_health_salvo`) + .tooltip(`ยง9Instant Health II`) +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/materials.bioline.js b/kubejs/startup_scripts/tfg/biotech/materials.bioline.js similarity index 100% rename from kubejs/startup_scripts/tfg/materials.bioline.js rename to kubejs/startup_scripts/tfg/biotech/materials.bioline.js diff --git a/kubejs/startup_scripts/tfg/blocks.casings.js b/kubejs/startup_scripts/tfg/blocks.casings.js new file mode 100644 index 000000000..b11f03bdd --- /dev/null +++ b/kubejs/startup_scripts/tfg/blocks.casings.js @@ -0,0 +1,121 @@ +"use strict"; + +function registerTFGCasingBlocks(event) { + + global.TFG_MACHINE_CASINGS.forEach(type => { + event.create(`tfg:casings/${type}`) + .translationKey(`block.tfg.casings.${type}`) + .model(`tfg:block/casings/${type}`) + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_light_gray') + }) + + event.create(`tfg:casings/machine_casing_stainless_evaporation`) + .translationKey(`block.tfg.casings.machine_casing_stainless_evaporation`) + .model(`tfg:block/casings/machine_casing_stainless_evaporation`) + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_light_gray') + + event.create('tfg:casings/machine_casing_vacuum_engine_intake', 'gtceu:active') + .simple('tfg:block/casings/machine_casing_vacuum_engine_intake') + .translationKey('block.tfg.casings.machine_casing_vacuum_engine_intake') + .soundType('metal') + .resistance(6).hardness(5) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .requiresTool(true) + .mapColor('color_light_gray') + + event.create('tfg:casings/machine_casing_bioculture') + .translationKey('block.tfg.casings.machine_casing_bioculture') + .model('tfg:block/casings/machine_casing_bioculture') + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_red') + + event.create('tfg:casings/machine_casing_bioculture_glass') + .translationKey('block.tfg.casings.machine_casing_bioculture_glass') + .model('tfg:block/casings/machine_casing_bioculture_glass') + .soundType('glass') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_orange') + .defaultTranslucent() + + event.create('tfg:casings/bioculture_rotor_primary', 'tfg:active_particle_emitter') + .translationKey('block.tfg.casings.bioculture_rotor_primary') + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_light_gray') + .activeOffset(1.6, 2, 1.6) + .activeVelocity(0, 0, 0) + .activeParticle('minecraft:landing_lava') + .activeCount(10) + .activeForced(false) + + event.create('tfg:casings/bioculture_rotor_secondary', 'gtceu:active') + .translationKey('block.tfg.casings.bioculture_rotor_secondary') + .model('tfg:block/casings/bioculture_rotor_secondary') + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_light_gray') + + event.create('tfg:casings/machine_casing_ultraviolet', 'gtceu:active') + .translationKey('block.tfg.casings.machine_casing_ultraviolet') + .soundType('glass') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_light_gray') + + event.create('tfg:casings/heat_pipe_casing') + .translationKey('block.tfg.casings.heat_pipe_casing') + .model('tfg:block/casings/heat_pipe_casing') + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_black') + + event.create('tfg:sample_rack', 'tfg:active_cardinal') + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_light_gray') + .notSolid() + .renderType('cutout') + .opaque(false) + + event.create('tfg:growth_monitor', 'tfg:active_cardinal') + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_light_gray') + .notSolid() + .renderType('cutout') + .opaque(false) + + event.create('tfg:casings/machine_casing_sterilizing_pipes', 'tfg:active_cardinal') + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_brown') + + + +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/blocks.plants.js b/kubejs/startup_scripts/tfg/blocks.crops.js similarity index 71% rename from kubejs/startup_scripts/tfg/blocks.plants.js rename to kubejs/startup_scripts/tfg/blocks.crops.js index 47208d86b..289eee7d1 100644 --- a/kubejs/startup_scripts/tfg/blocks.plants.js +++ b/kubejs/startup_scripts/tfg/blocks.crops.js @@ -310,115 +310,4 @@ const registerTFGCrops = (event) => { .tagBlock('minecraft:mineable/hoe') .tagBlock('tfc:can_be_snow_piled') .tagItem('c:hidden_from_recipe_viewers') - - // Mars Saplings - - event.create('tfg:saplings/crimson', 'tfc:sapling') - .features('tfg:mars/tree/crimson') - .tagBoth('minecraft:saplings') - .tagBlock('tfg:do_not_destroy_in_space') - .tagBlock('tfc:can_be_snow_piled') - .growthDays(6) - .soundType('nether_wart') - .defaultCutout() - .noCollision() - - event.create('tfg:saplings/warped', 'tfc:sapling') - .features('tfg:mars/tree/warped') - .tagBoth('minecraft:saplings') - .tagBlock('tfg:do_not_destroy_in_space') - .tagBlock('tfc:can_be_snow_piled') - .growthDays(6) - .soundType('nether_wart') - .defaultCutout() - .noCollision() - - event.create('tfg:saplings/alphacene', 'tfc:sapling') - .features('species:alphacene_mushroom') - .tagBoth('minecraft:saplings') - .tagBlock('tfg:do_not_destroy_in_space') - .tagBlock('tfc:can_be_snow_piled') - .growthDays(3) - .soundType('nether_wart') - .defaultCutout() - .noCollision() - - event.create('tfg:saplings/strophar', 'tfc:sapling') - .features('tfg:mars/tree/strophar_mini') - .tagBoth('minecraft:saplings') - .tagBlock('tfg:do_not_destroy_in_space') - .tagBlock('tfc:can_be_snow_piled') - .growthDays(7) - .soundType('nether_wart') - .defaultCutout() - .noCollision() - - event.create('tfg:saplings/aeronos', 'tfc:sapling') - .features('tfg:mars/tree/aeronos_mini') - .tagBoth('minecraft:saplings') - .tagBlock('tfg:do_not_destroy_in_space') - .tagBlock('tfc:can_be_snow_piled') - .growthDays(9) - .soundType('nether_wart') - .defaultCutout() - .noCollision() - - event.create('tfg:saplings/glacian', 'tfc:sapling') - .features('tfg:mars/tree/glacian_mini') - .tagBoth('minecraft:saplings') - .tagBlock('tfg:do_not_destroy_in_space') - .tagBlock('tfc:can_be_snow_piled') - .growthDays(9) - .soundType('nether_wart') - .defaultCutout() - .noCollision() - - // Glacian tree stuff - event.create('tfg:glacian_leaves', 'tfc:leaves') - .soundType('azalea_leaves') - .tagBlock('minecraft:mineable/hoe') - .tagBlock('tfg:do_not_destroy_in_space') - .mapColor('snow') - .seasonalColors(false) - .fallenLeaves(leaves => { - leaves.noCollision() - leaves.notSolid() - leaves.defaultCutout() - leaves.soundType('azalea_leaves') - leaves.tagBlock('minecraft:mineable/hoe') - leaves.tagBlock('minecraft:replaceable') - leaves.noDynamicTinting() - leaves.models((modelType, generator) => { - if (modelType.layers != 8) { - generator.parent("tfc:block/groundcover/fallen_leaves_height" + modelType.height); - generator.texture("all", "ad_astra:block/glacian_leaves"); - } else { - generator.parent("ad_astra:block/glacian_leaves"); - } - }) - }) - - event.create('tfg:glacian_wood', 'tfc:log') - .tagBoth('minecraft:logs') - .tagItem('minecraft:logs_that_burn') - .tagItem('ad_astra:glacian_logs') - .tagBlock('minecraft:mineable/axe') - .soundType('wood') - .stripped(stripped => { - stripped.tagBoth('minecraft:logs') - stripped.tagItem('minecraft:logs_that_burn') - stripped.tagItem('ad_astra:glacian_logs') - stripped.tagBlock('minecraft:mineable/axe') - stripped.soundType('wood') - }) - - event.create('tfg:glacian_log', 'tfc:log') - .tagBoth('minecraft:logs') - .tagBoth('c:hidden_from_recipe_viewers') - .soundType('wood') - .stripped(stripped => { - stripped.tagBoth('minecraft:logs') - stripped.tagBoth('c:hidden_from_recipe_viewers') - stripped.soundType('wood') - }) } \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/blocks.js b/kubejs/startup_scripts/tfg/blocks.js index 013f7fac1..85b9d9286 100644 --- a/kubejs/startup_scripts/tfg/blocks.js +++ b/kubejs/startup_scripts/tfg/blocks.js @@ -2,375 +2,30 @@ const registerTFGBlocks = (event) => { - registerTFGNetherBlocks(event) - registerTFGSpaceBlocks(event) + registerTFGDimensionMarkerBlocks(event) + registerTFGCrops(event) + registerTFGVaseBlocks(event) + registerTFGSupportBlocks(event) registerTFGAqueductBlocks(event) - registerTFGCrops(event) + registerTFGRockBlocks(event) + registerTFGVanillaStoneBlocks(event) + + registerTFGWorldGenTrees(event) + registerTFGWorldGenBeneathDecoBlocks(event) + registerTFGWorldGenMoonDecoBlocks(event) + registerTFGWorldGenMarsDecoBlocks(event) + registerTFGWorldGenVenusDecoBlocks(event) + registerTFGWorldGenEuropaDecoBlocks(event) + + registerTFGCasingBlocks(event) + registerTFGNuclearBlocks(event) + // Temporary, remove in 0.12 event.create('gtceu:ostrum_linear_accelerator') .tagBlock('gtceu:mineable/pickaxe_or_wrench') .requiresTool(false) .textureAll('tfg:item/deprecated') - - event.create('tfg:titanium_exhaust_vent', 'tfg:active_particle_emitter') - .textureAll('tfg:block/titanium_exhaust_vent') - .soundType('metal') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_black') - .speedFactor(1.1) - .activeOffset(3.5, 2, 3.5) - .activeVelocity(0.0, 0.0, 0.0) - .activeParticle('tfg:cooling_steam') - .activeBase(0.0, 12.5, 0.0) - .activeCount(8) - .activeForced(false) - .hasTicker(true) - - // #region Machine Casings - - global.TFG_MACHINE_CASINGS.forEach(type => { - event.create(`tfg:casings/${type}`) - .translationKey(`block.tfg.casings.${type}`) - .model(`tfg:block/casings/${type}`) - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_light_gray') - }) - - event.create(`tfg:casings/machine_casing_stainless_evaporation`) - .translationKey(`block.tfg.casings.machine_casing_stainless_evaporation`) - .model(`tfg:block/casings/machine_casing_stainless_evaporation`) - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_light_gray') - - event.create('tfg:casings/machine_casing_vacuum_engine_intake', 'gtceu:active') - .simple('tfg:block/casings/machine_casing_vacuum_engine_intake') - .translationKey('block.tfg.casings.machine_casing_vacuum_engine_intake') - .soundType('metal') - .resistance(6).hardness(5) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .requiresTool(true) - .mapColor('color_light_gray') - - event.create('tfg:casings/machine_casing_bioculture') - .translationKey('block.tfg.casings.machine_casing_bioculture') - .model('tfg:block/casings/machine_casing_bioculture') - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_red') - - event.create('tfg:casings/machine_casing_bioculture_glass') - .translationKey('block.tfg.casings.machine_casing_bioculture_glass') - .model('tfg:block/casings/machine_casing_bioculture_glass') - .soundType('glass') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_orange') - .defaultTranslucent() - - event.create('tfg:casings/bioculture_rotor_primary', 'tfg:active_particle_emitter') - .translationKey('block.tfg.casings.bioculture_rotor_primary') - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_light_gray') - .activeOffset(1.6, 2, 1.6) - .activeVelocity(0, 0, 0) - .activeParticle('minecraft:landing_lava') - .activeCount(10) - .activeForced(false) - - event.create('tfg:casings/bioculture_rotor_secondary', 'gtceu:active') - .translationKey('block.tfg.casings.bioculture_rotor_secondary') - .model('tfg:block/casings/bioculture_rotor_secondary') - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_light_gray') - - event.create('tfg:casings/machine_casing_ultraviolet', 'gtceu:active') - .translationKey('block.tfg.casings.machine_casing_ultraviolet') - .soundType('glass') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_light_gray') - event.create('tfg:casings/heat_pipe_casing') - .translationKey('block.tfg.casings.heat_pipe_casing') - .model('tfg:block/casings/heat_pipe_casing') - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_black') - - event.create('tfg:sample_rack', 'tfg:active_cardinal') - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_light_gray') - .notSolid() - .renderType('cutout') - .opaque(false) - - event.create('tfg:growth_monitor', 'tfg:active_cardinal') - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_light_gray') - .notSolid() - .renderType('cutout') - .opaque(false) - - event.create('tfg:casings/machine_casing_sterilizing_pipes', 'tfg:active_cardinal') - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_brown') - - //#endregion - - event.create('tfg:titanium_concrete') - .translationKey('block.tfg.titanium_concrete') - .model('tfg:block/concrete/titanium_concrete') - .soundType('stone') - .mapColor('stone') - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .tagBoth('tfg:titanium_concrete') - - event.create('tfg:polished_titanium_concrete') - .translationKey('block.tfg.polished_titanium_concrete') - .model('tfg:block/concrete/polished_titanium_concrete') - .soundType('stone') - .mapColor('stone') - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .tagBoth('tfg:titanium_concrete') - - event.create('tfg:titanium_concrete_tile') - .translationKey('block.tfg.titanium_concrete_tile') - .model('tfg:block/concrete/titanium_concrete_tile') - .soundType('stone') - .mapColor('stone') - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .tagBoth('tfg:titanium_concrete') - - event.create('tfg:titanium_concrete_tile_small') - .translationKey('block.tfg.titanium_concrete_tile_small') - .model('tfg:block/concrete/titanium_concrete_tile_small') - .soundType('stone') - .mapColor('stone') - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .tagBoth('tfg:titanium_concrete') - - event.create('tfg:titanium_concrete_bricks') - .translationKey('block.tfg.titanium_concrete_bricks') - .model('tfg:block/concrete/titanium_concrete_bricks') - .soundType('stone') - .mapColor('stone') - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .tagBoth('tfg:titanium_concrete') - - event.create('tfg:titanium_concrete_bricks_small') - .translationKey('block.tfg.titanium_concrete_bricks_small') - .model('tfg:block/concrete/titanium_concrete_bricks_small') - .soundType('stone') - .mapColor('stone') - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .tagBoth('tfg:titanium_concrete') - - event.create('tfg:titanium_concrete_bricks_square') - .translationKey('block.tfg.titanium_concrete_bricks_square') - .model('tfg:block/concrete/titanium_concrete_bricks_square') - .soundType('stone') - .mapColor('stone') - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .tagBoth('tfg:titanium_concrete') - - // #region insulation - event.create('tfg:glacian_wool_frame') - .soundType('copper') - .hardness(4) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - - event.create('tfg:aes_insulation_frame') - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - - event.create('tfg:moderate_core_frame') - .soundType('copper') - .hardness(4) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - - event.create('tfg:impure_moderate_core_frame') - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - - // Unfinished Insulation - event.create('tfg:moderate_core') - .soundType('ancient_debris') - .hardness(7) - .resistance(8) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .model('tfg:block/fission/moderate_core') - - event.create('tfg:impure_moderate_core') - .soundType('ancient_debris') - .hardness(7) - .resistance(8) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .model('tfg:block/fission/impure_moderate_core') - - // #region Decorative vases - global.MINECRAFT_DYE_NAMES.forEach(color => { - event.create(`tfg:decorative_vase/generated/${color}`, 'cardinal') - .model(`tfg:block/decorative_vase/loot_vase_${color}`) - .soundType('decorated_pot') - .hardness(0.7) - .tagBlock('minecraft:mineable/pickaxe') - .mapColor(`color_${color}`) - .box(2, 0, 2, 14, 20, 14) - .fullBlock(false) - .opaque(false) - .renderType('cutout') - - event.create(`tfg:decorative_vase/${color}`, 'cardinal') - .model(`tfg:block/decorative_vase/vase_${color}`) - .soundType('decorated_pot') - .hardness(0.7) - .tagBlock('minecraft:mineable/pickaxe') - .mapColor(`color_${color}`) - .box(2, 0, 2, 14, 20, 14) - .fullBlock(false) - .opaque(false) - .renderType('cutout') - .blockEntity(be => { - be.attach('tfc:inventory', { - width: 9, - height: 1, - size: size => size.isSmallerThan('large') - }) - be.rightClickOpensInventory() - }) - - event.create(`tfg:decorative_vase/unfired/${color}`, 'cardinal') - .model(`tfg:block/decorative_vase/vase_unfired_${color}`) - .soundType('decorated_pot') - .hardness(0.7) - .tagBlock('minecraft:mineable/pickaxe') - .mapColor(`color_${color}`) - .box(2, 0, 2, 14, 20, 14) - .fullBlock(false) - .opaque(false) - .renderType('cutout') - }) - event.create('tfg:decorative_vase', 'cardinal') - .model('tfg:block/decorative_vase/vase') - .soundType('decorated_pot') - .hardness(0.7) - .tagBlock('minecraft:mineable/pickaxe') - .mapColor(`color_gray`) - .box(2, 0, 2, 14, 20, 14) - .fullBlock(false) - .opaque(false) - .renderType('cutout') - .blockEntity(be => { - be.attach('tfc:inventory', { - width: 9, - height: 1, - size: size => size.isSmallerThan('large') - }) - be.rightClickOpensInventory() - }) - - event.create('tfg:decorative_vase/unfired', 'cardinal') - .model('tfg:block/decorative_vase/vase_unfired') - .soundType('decorated_pot') - .hardness(0.7) - .tagBlock('minecraft:mineable/pickaxe') - .mapColor(`color_gray`) - .box(2, 0, 2, 14, 20, 14) - .fullBlock(false) - .opaque(false) - .renderType('cutout') - - // #endregion - - // #region Reconstituted Stone - - event.create(`tfg:rock/stone_wall`, 'wall') - .soundType(global.STONE_CHARACS.reconstituted.sound) - .textureAll('minecraft:block/stone') - .tagBoth('tfg:rock_wall') - .mapColor(global.STONE_CHARACS.reconstituted.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - let SHAPES = ['stairs', 'wall'] - SHAPES.forEach(shape => { - event.create(`tfg:rock/smooth_stone_${shape}`, shape) - .soundType(global.STONE_CHARACS.reconstituted.sound) - .textureAll('minecraft:block/smooth_stone') - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .mapColor(global.STONE_CHARACS.reconstituted.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - SHAPES = ['stairs', 'slab', 'wall'] - SHAPES.forEach(shape => { - event.create(`tfg:rock/cracked_bricks_stone_${shape}`, shape) - .soundType(global.STONE_CHARACS.reconstituted.sound) - .textureAll('minecraft:block/cracked_stone_bricks') - .tagBoth(`tfg:brick_${shape}s`.replace(/ss/g, 's')) - .mapColor(global.STONE_CHARACS.reconstituted.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - event.create('tfg:rock/quartz_wall', 'wall') - .soundType('stone') - .textureAll('minecraft:block/quartz_block_side') - .tagBoth('tfg:rock_wall') - .mapColor('snow') - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - event.create('tfg:rock/smooth_quartz_wall', 'wall') - .soundType('stone') - .textureAll('minecraft:block/quartz_block_bottom') - .tagBoth('tfg:rock_wall') - .mapColor('snow') - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - // #endregion Reconstituted Stone } diff --git a/kubejs/startup_scripts/tfg/blocks.nether.js b/kubejs/startup_scripts/tfg/blocks.nether.js deleted file mode 100644 index 765b3b6e2..000000000 --- a/kubejs/startup_scripts/tfg/blocks.nether.js +++ /dev/null @@ -1,592 +0,0 @@ -"use strict"; - -function registerTFGNetherBlocks(event) { - const SHAPES = ['stairs', 'slab', 'wall'] - - // #region Raw Stones - SHAPES.forEach(shape => { - event.create(`tfg:rock/deepslate_${shape}`, shape) - .soundType(global.STONE_CHARACS.deepslate.sound) - .textureAll('minecraft:block/deepslate') - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/dripstone_${shape}`, shape) - .soundType(global.STONE_CHARACS.dripstone.sound) - .textureAll('minecraft:block/dripstone_block') - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/crackrack_${shape}`, shape) - .soundType(global.STONE_CHARACS.crackrack.sound) - .textureAll('beneath:block/crackrack') - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) - .mapColor(global.STONE_CHARACS.crackrack.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - // #endregion Raw Stones - - // #region Hardened Stones - event.create('tfg:rock/hardened_deepslate') - .soundType(global.STONE_CHARACS.deepslate.sound) - .property(BlockProperties.AXIS) - .requiresTool(true) - .item(item => { - item.modelJson({ parent: 'minecraft:item/deepslate' }) - }) - .tagBlock('tfc:can_carve') - .tagBoth('forge:stone') - .tagBoth('tfc:rock/hardened') - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - event.create('tfg:rock/hardened_blackstone') - .soundType(global.STONE_CHARACS.blackstone.sound) - .requiresTool(true) - .item(item => { - item.modelJson({ parent: 'minecraft:item/blackstone' }) - }) - .tagBlock('tfc:can_carve') - .tagBoth('forge:stone') - .tagBoth('tfc:rock/hardened') - .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - event.create('tfg:rock/hardened_dripstone') - .soundType(global.STONE_CHARACS.dripstone.sound) - .stoneSoundType() - .requiresTool(true) - .item(item => { - item.modelJson({ parent: 'minecraft:item/dripstone_block' }) - }) - .tagBlock('tfc:can_carve') - .tagBoth('forge:stone') - .tagBoth('tfc:rock/hardened') - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - // #endregion Hardened stones - - // #region Spikes - event.create('tfg:spike/deepslate_spike', 'tfc:rock_spike') - .textureAll('minecraft:block/deepslate') - .soundType(global.STONE_CHARACS.deepslate.sound) - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .hardness(0.8) - .resistance(0.8) - .requiresTool(true) - - event.create('tfg:spike/blackstone_spike', 'tfc:rock_spike') - .textureAll('minecraft:block/blackstone') - .soundType(global.STONE_CHARACS.blackstone.sound) - .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .hardness(0.8) - .resistance(0.8) - .requiresTool(true) - - event.create('tfg:spike/dripstone_spike', 'tfc:rock_spike') - .textureAll('minecraft:block/dripstone_block') - .soundType(global.STONE_CHARACS.dripstone.sound) - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .hardness(0.8) - .resistance(0.8) - .requiresTool(true) - - // #endregion Spikes - - // #region Loose Stones - event.create('tfg:loose/deepslate', 'tfc:loose_rock') - .soundType(global.STONE_CHARACS.deepslate.sound) - .itemTexture('tfg:item/loose/deepslate') - .rockTypeModel(global.STONE_CHARACS.deepslate.type) - .translationKey("block.tfg.loose.deepslate") - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('tfc:loose_rocks') - .tagItem('tfc:any_knapping') - .tagItem('tfc:rock_knapping') - .tagItem(`tfc:${global.STONE_CHARACS.deepslate.type}_rock`) - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .tagItem("rnr:loose_rock_items") - - event.create('tfg:loose/dripstone', 'tfc:loose_rock') - .soundType(global.STONE_CHARACS.dripstone.sound) - .itemTexture('tfg:item/loose/dripstone') - .rockTypeModel(global.STONE_CHARACS.dripstone.type) - .translationKey("block.tfg.loose.dripstone") - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('tfc:loose_rocks') - .tagItem('tfc:any_knapping') - .tagItem('tfc:rock_knapping') - .tagItem(`tfc:${global.STONE_CHARACS.dripstone.type}_rock`) - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .tagItem("rnr:loose_rock_items") - - event.create('tfg:loose/crackrack', 'tfc:loose_rock') - .soundType(global.STONE_CHARACS.crackrack.sound) - .itemTexture('tfg:item/loose/crackrack') - .rockTypeModel(global.STONE_CHARACS.crackrack.type) - .translationKey("block.tfg.loose.crackrack") - .mapColor(global.STONE_CHARACS.crackrack.mapColor) - .tagBlock('tfc:loose_rocks') - .tagItem('tfc:any_knapping') - .tagItem('tfc:rock_knapping') - .tagItem(`tfc:${global.STONE_CHARACS.crackrack.type}_rock`) - .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) - .tagItem("rnr:loose_rock_items") - - // #endregion Loose rocks - - // #region Cobblestones - - // Deepslate - event.create('tfg:rock/mossy_cobble_deepslate') - .soundType(global.STONE_CHARACS.deepslate.sound) - .tagBoth('forge:cobblestone') - .tagBoth('forge:cobblestone/normal') - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/mossy_cobble_deepslate_${shape}`, shape) - .soundType(global.STONE_CHARACS.deepslate.sound) - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - // Blackstone - event.create('tfg:rock/cobble_blackstone') - .soundType(global.STONE_CHARACS.blackstone.sound) - .tagBoth('forge:cobblestone') - .tagBoth('forge:cobblestone/normal') - .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/cobble_blackstone_${shape}`, shape) - .soundType(global.STONE_CHARACS.blackstone.sound) - .textureAll('minecraft:block/blackstone_top') - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - event.create('tfg:rock/mossy_cobble_blackstone') - .soundType(global.STONE_CHARACS.blackstone.sound) - .tagBoth('forge:cobblestone') - .tagBoth('forge:cobblestone/normal') - .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/mossy_cobble_blackstone_${shape}`, shape) - .soundType(global.STONE_CHARACS.blackstone.sound) - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - // Dripstone - event.create('tfg:rock/cobble_dripstone') - .soundType(global.STONE_CHARACS.dripstone.sound) - .tagBoth('forge:cobblestone') - .tagBoth('forge:cobblestone/normal') - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/cobble_dripstone_${shape}`, shape) - .soundType(global.STONE_CHARACS.dripstone.sound) - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - event.create('tfg:rock/mossy_cobble_dripstone') - .soundType(global.STONE_CHARACS.dripstone.sound) - .tagBoth('forge:cobblestone') - .tagBoth('forge:cobblestone/normal') - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/mossy_cobble_dripstone_${shape}`, shape) - .soundType(global.STONE_CHARACS.dripstone.sound) - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - // Crackrack - event.create('tfg:rock/cobble_crackrack') - .soundType(global.STONE_CHARACS.crackrack.sound) - .tagBoth('forge:cobblestone') - .tagBoth('forge:cobblestone/normal') - .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) - .mapColor(global.STONE_CHARACS.crackrack.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/cobble_crackrack_${shape}`, shape) - .soundType(global.STONE_CHARACS.crackrack.sound) - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) - .mapColor(global.STONE_CHARACS.crackrack.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - event.create('tfg:rock/mossy_cobble_crackrack') - .soundType(global.STONE_CHARACS.crackrack.sound) - .tagBoth('forge:cobblestone') - .tagBoth('forge:cobblestone/normal') - .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) - .mapColor(global.STONE_CHARACS.crackrack.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/mossy_cobble_crackrack_${shape}`, shape) - .soundType(global.STONE_CHARACS.crackrack.sound) - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) - .mapColor(global.STONE_CHARACS.crackrack.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - // #region Smooth (Polished/Cut) Stones - - event.create('tfg:rock/polished_crackrack') - .soundType(global.STONE_CHARACS.crackrack.sound) - .tagBoth('forge:smooth_stone') - .tagBoth('tfc:igneous_intrusive_items') - .tagBoth('tfc:rock/smooth') - .mapColor('crimson_stem') - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/polished_crackrack_${shape}`, shape) - .soundType(global.STONE_CHARACS.crackrack.sound) - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) - .mapColor(global.STONE_CHARACS.crackrack.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - // #endregion Smooth (Polished/Cut) Stones - - // #region Gravels - event.create('tfg:rock/gravel_deepslate') - .soundType('gravel') - .tagBoth('forge:gravel') - .tagBoth('tfc:rock/gravel') - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('minecraft:mineable/shovel') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - event.create('tfg:rock/gravel_blackstone') - .soundType('gravel') - .tagBoth('forge:gravel') - .tagBoth('tfc:rock/gravel') - .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('minecraft:mineable/shovel') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - event.create('tfg:rock/gravel_dripstone') - .soundType('gravel') - .tagBoth('forge:gravel') - .tagBoth('tfc:rock/gravel') - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/shovel') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - event.create('tfg:rock/gravel_crackrack') - .soundType('gravel') - .tagBoth('forge:gravel') - .tagBoth('tfc:rock/gravel') - .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) - .mapColor(global.STONE_CHARACS.crackrack.mapColor) - .tagBlock('minecraft:mineable/shovel') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - // #endregion Gravels - - // #region Bricks / Decorative - - // Deepslate - SHAPES.forEach(shape => { - event.create(`tfg:rock/cracked_bricks_deepslate_${shape}`, shape) - .soundType(global.STONE_CHARACS.deepslate.sound) - .textureAll('minecraft:block/cracked_deepslate_bricks') - .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/cracked_tiles_deepslate_${shape}`, shape) - .soundType(global.STONE_CHARACS.deepslate.sound) - .textureAll('minecraft:block/cracked_deepslate_tiles') - .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - event.create('tfg:rock/mossy_bricks_deepslate') - .soundType(global.STONE_CHARACS.deepslate.sound) - .tagBoth('minecraft:stone_bricks') - .tagBoth('forge:stone_bricks') - .tagBoth('tfc:rock/bricks') - .tagBoth('tfc:rock/mossy_bricks') - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/mossy_bricks_deepslate_${shape}`, shape) - .soundType(global.STONE_CHARACS.deepslate.sound) - .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - // Blackstone - SHAPES.forEach(shape => { - event.create(`tfg:rock/cracked_bricks_blackstone_${shape}`, shape) - .soundType(global.STONE_CHARACS.blackstone.sound) - .textureAll('minecraft:block/cracked_polished_blackstone_bricks') - .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - event.create('tfg:rock/mossy_bricks_blackstone') - .soundType(global.STONE_CHARACS.blackstone.sound) - .tagBoth('minecraft:stone_bricks') - .tagBoth('forge:stone_bricks') - .tagBoth('tfc:rock/bricks') - .tagBoth('tfc:rock/mossy_bricks') - .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/mossy_bricks_blackstone_${shape}`, shape) - .soundType(global.STONE_CHARACS.blackstone.sound) - .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - // Dripstone - event.create('tfg:rock/cracked_bricks_dripstone') - .soundType(global.STONE_CHARACS.dripstone.sound) - .tagBoth('minecraft:stone_bricks') - .tagBoth('forge:stone_bricks') - .tagBoth('tfc:rock/bricks') - .tagBoth('tfc:rock/mossy_bricks') - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/cracked_bricks_dripstone_${shape}`, shape) - .soundType(global.STONE_CHARACS.dripstone.sound) - .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - event.create('tfg:rock/mossy_bricks_dripstone') - .soundType(global.STONE_CHARACS.dripstone.sound) - .tagBoth('minecraft:stone_bricks') - .tagBoth('forge:stone_bricks') - .tagBoth('tfc:rock/bricks') - .tagBoth('tfc:rock/mossy_bricks') - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/mossy_bricks_dripstone_${shape}`, shape) - .soundType(global.STONE_CHARACS.dripstone.sound) - .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - // Crackrack - SHAPES.forEach(shape => { - event.create(`tfg:rock/cracked_bricks_nether_${shape}`, shape) - .soundType(global.STONE_CHARACS.nether.sound) - .textureAll('minecraft:block/cracked_nether_bricks') - .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.nether.type}_items`) - .mapColor(global.STONE_CHARACS.nether.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - event.create('tfg:rock/mossy_bricks_nether') - .soundType(global.STONE_CHARACS.nether.sound) - .tagBoth('minecraft:stone_bricks') - .tagBoth('forge:stone_bricks') - .tagBoth('tfc:rock/bricks') - .tagBoth('tfc:rock/mossy_bricks') - .tagBoth(`tfc:${global.STONE_CHARACS.nether.type}_items`) - .mapColor(global.STONE_CHARACS.nether.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/mossy_bricks_nether_${shape}`, shape) - .soundType(global.STONE_CHARACS.nether.sound) - .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.nether.type}_items`) - .mapColor(global.STONE_CHARACS.nether.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - // #endregion Bricks / Decorative - - // #region Plants - event.create('tfg:mushroom_roots', 'tfg:decorative_plant') - .soundType('nether_wart') - .tagItem('tfc:plants') - - event.create('tfg:mushroom_sprouts', 'tfg:decorative_plant') - .soundType('nether_wart') - .tagItem('tfc:plants') - - event.create('tfg:charred_log') - .fullBlock(true) - .woodSoundType() - .property(BlockProperties.AXIS) - .tagBoth('minecraft:mineable/axe') - .tagBoth('tfc:logs_that_log') - .tagBoth('afc:logs_that_log') - .tagBoth('minecraft:logs') - .mapColor('black') -} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/constants.js b/kubejs/startup_scripts/tfg/constants.js index 3695376f9..01e7e1586 100644 --- a/kubejs/startup_scripts/tfg/constants.js +++ b/kubejs/startup_scripts/tfg/constants.js @@ -28,13 +28,17 @@ global.AIRCRAFT_UPGRADES = [ * @type {string[]} - Item IDs */ global.EXTRATERRESTRIAL_RAW_ROCKS = [ + 'minecraft:deepslate', + 'minecraft:blackstone', + 'minecraft:dripstone_block', 'ad_astra:moon_stone', 'ad_astra:moon_deepslate', 'ad_astra:mars_stone', 'ad_astra:venus_stone', 'ad_astra:mercury_stone', 'ad_astra:glacio_stone', - 'gtceu:red_granite' + 'gtceu:red_granite', + 'beneath:crackrack' ] /** @@ -47,7 +51,11 @@ global.EXTRATERRESTRIAL_HARDENED_ROCKS = [ 'tfg:rock/hardened_venus_stone', 'tfg:rock/hardened_mercury_stone', 'tfg:rock/hardened_glacio_stone', - 'tfg:rock/hardened_red_granite' + 'tfg:rock/hardened_red_granite', + 'tfg:rock/hardened_deepslate', + 'tfg:rock/hardened_blackstone', + 'tfg:rock/hardened_dripstone', + 'tfg:rock/hardened_crackrack' ] /** diff --git a/kubejs/startup_scripts/tfg/dimension_markers.js b/kubejs/startup_scripts/tfg/dimension_markers.js index 053035b80..51301a50b 100644 --- a/kubejs/startup_scripts/tfg/dimension_markers.js +++ b/kubejs/startup_scripts/tfg/dimension_markers.js @@ -1,6 +1,64 @@ // priority: 0 "use strict"; + +function registerTFGDimensionMarkerItems(event) { + event.create('tfg:marker/earth_orbit').tag('c:hidden_from_recipe_viewers') + event.create('tfg:marker/moon_orbit').tag('c:hidden_from_recipe_viewers') + event.create('tfg:marker/mars_orbit').tag('c:hidden_from_recipe_viewers') + event.create('tfg:marker/venus_orbit').tag('c:hidden_from_recipe_viewers') + event.create('tfg:marker/mercury_orbit').tag('c:hidden_from_recipe_viewers') + event.create('tfg:marker/glacio_orbit').tag('c:hidden_from_recipe_viewers') +} + +function registerTFGDimensionMarkerBlocks(event) { + + event.create('tfg:marker/moon') + .stoneSoundType() + .item(item => { + item.modelJson({ parent: 'tfg:block/marker/moon' }) + }) + .tagBlock('c:hidden_from_recipe_viewers') + .fullBlock(true) + .opaque(true) + + event.create('tfg:marker/mars') + .stoneSoundType() + .item(item => { + item.modelJson({ parent: 'tfg:block/marker/mars' }) + }) + .tagBlock('c:hidden_from_recipe_viewers') + .fullBlock(true) + .opaque(true) + + event.create('tfg:marker/venus') + .stoneSoundType() + .item(item => { + item.modelJson({ parent: 'tfg:block/marker/venus' }) + }) + .tagBlock('c:hidden_from_recipe_viewers') + .fullBlock(true) + .opaque(true) + + event.create('tfg:marker/mercury') + .stoneSoundType() + .item(item => { + item.modelJson({ parent: 'tfg:block/marker/mercury' }) + }) + .tagBlock('c:hidden_from_recipe_viewers') + .fullBlock(true) + .opaque(true) + + event.create('tfg:marker/glacio') + .stoneSoundType() + .item(item => { + item.modelJson({ parent: 'tfg:block/marker/glacio' }) + }) + .tagBlock('c:hidden_from_recipe_viewers') + .fullBlock(true) + .opaque(true) +} + function registerTFGDimensionMarkers(event) { event.create('ad_astra:earth_orbit') diff --git a/kubejs/startup_scripts/tfg/entity_types.js b/kubejs/startup_scripts/tfg/entity_types.js deleted file mode 100644 index f39471767..000000000 --- a/kubejs/startup_scripts/tfg/entity_types.js +++ /dev/null @@ -1,26 +0,0 @@ -// priority: 0 -"use strict"; - -function registerTFGEntityTypes(event) { - - //event.create('tfg:moon_rabbit', 'tfc:mammal') - // .withFaunaDefinition('on_ground', 'world_surface_wg') - // .foodTag('tfc:rabbit_food') - // .sized(1, 1) - // .modelSize(1, 1) - // .updateInterval(3) - // .setDeathSound("minecraft:entity.rabbit.death") - // .setAmbientSound("minecraft:entity.rabbit.ambient") - // .setHurtSound(context => "minecraft:entity.rabbit.hurt") - // .canJump(true) - // .setBlockJumpFactor(entity => 0.42) - // // these are the same as tfc rabbits - // .configs(config => { - // config.gestationDays(19) - // config.daysToAdult(80) - // config.childCount(6) - // config.uses(40) - // config.maxFamiliarity(0.35) - // config.eatsRottenFood(true) - // }) -} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/equipment/items.weapons.js b/kubejs/startup_scripts/tfg/equipment/items.weapons.js new file mode 100644 index 000000000..8ad88500c --- /dev/null +++ b/kubejs/startup_scripts/tfg/equipment/items.weapons.js @@ -0,0 +1,15 @@ +"use strict"; + +function registerTFGWeaponItems(event) { + + //Tacz Helper Region + event.create('tfg:flintlock_mechanism') + event.create('tfg:advanced_clockwork_mechanism') + event.create('tfg:certus_mechanism') + + event.create('tfg:small_bullet_casing') + event.create('tfg:shell_bullet_casing') + event.create('tfg:large_bullet_casing') + event.create('tfg:nitrocellulose') + +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/europa/blocks.europa_deco.js b/kubejs/startup_scripts/tfg/europa/blocks.europa_deco.js new file mode 100644 index 000000000..e71f03cab --- /dev/null +++ b/kubejs/startup_scripts/tfg/europa/blocks.europa_deco.js @@ -0,0 +1,39 @@ +"use strict"; + +function registerTFGWorldGenEuropaDecoBlocks(event) { + + + event.create('tfg:corallium_arenicolus_0', 'tfg:tall_decorative_plant') + .height(2) + .soundType('nether_wart') + .tagItem('tfg:venus_plants') + .lightLevel(0.4) + .renderType('translucent') + + event.create('tfg:corallium_arenicolus_1', 'tfg:decorative_plant') + .soundType('nether_wart') + .tagItem('tfg:venus_plants') + .box(3, 0, 3, 13, 14, 13) + + event.create('tfg:corallium_arenicolus_2', 'tfg:decorative_plant') + .soundType('nether_wart') + .tagItem('tfg:venus_plants') + .renderType('translucent') + .box(0, 0, 0, 16, 4, 16) + + event.create('tfg:corallium_arenicolus_3', 'tfg:decorative_plant') + .soundType('nether_wart') + .tagItem('tfg:venus_plants') + .box(3, 0, 3, 13, 14, 13) + + event.create('tfg:corallium_arenicolus_4', 'tfg:decorative_plant') + .soundType('nether_wart') + .tagItem('tfg:venus_plants') + .box(3, 0, 3, 13, 14, 13) + + event.create('tfg:corallium_arenicolus_5', 'tfg:decorative_plant') + .soundType('nether_wart') + .tagItem('tfg:venus_plants') + .box(3, 0, 3, 13, 14, 13) + +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/europa/materials.europa.js b/kubejs/startup_scripts/tfg/europa/materials.europa.js new file mode 100644 index 000000000..a4fb06ddd --- /dev/null +++ b/kubejs/startup_scripts/tfg/europa/materials.europa.js @@ -0,0 +1,18 @@ +"use strict"; + +function registerTFGEuropaMaterials(event) { + + event.create('tfg:etrium') + //.components('1x niobium', '1x molybdenum', '1x ruthenium', '3x carbon', '1x monochloramine') + .color(0x7BFCD7) + .secondaryColor(0x3582D2) + .iconSet(GTMaterialIconSet.getByName('tfc_silver')) + .ore() + .ingot() + .flags( + GTMaterialFlags.FORCE_GENERATE_BLOCK, + GTMaterialFlags.GENERATE_PLATE, + GTMaterialFlags.GENERATE_ROD + ) + +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/fluids.js b/kubejs/startup_scripts/tfg/fluids.js index 0133e5b7d..287f1dd0d 100644 --- a/kubejs/startup_scripts/tfg/fluids.js +++ b/kubejs/startup_scripts/tfg/fluids.js @@ -3,17 +3,21 @@ const registerTFGFluids = (event) => { - //#region Mars + // Moon + event.create('tfg:cryogenized_fluix') + .thickTexture(0xde8cfb) + .bucketColor(0xde8cfb) + .luminosity(14) + .temperature(10) + // Mars event.create('tfg:heavy_ammoniacal_water') .thinTexture(0x08733f) .bucketColor(0x08733f) .temperature(236) .noBlock() - //#endregion - - //#region Venus + // Venus event.create('tfg:sulfur_fumes') .stillTexture('tfg:block/planets/venus/sulfur_fumes_still') .flowingTexture('tfg:block/planets/venus/sulfur_fumes_flow') @@ -29,6 +33,5 @@ const registerTFGFluids = (event) => { .bucketColor(0xc4d984) .temperature(1000) .renderType('translucent') - //#endregion } \ No newline at end of file diff --git a/kubejs/startup_scripts/tfc/materials.js b/kubejs/startup_scripts/tfg/icon_sets.js similarity index 76% rename from kubejs/startup_scripts/tfc/materials.js rename to kubejs/startup_scripts/tfg/icon_sets.js index 16e9dc540..39e0c7b21 100644 --- a/kubejs/startup_scripts/tfc/materials.js +++ b/kubejs/startup_scripts/tfg/icon_sets.js @@ -1,45 +1,48 @@ // priority: 0 "use strict"; -const registerTFCMaterials = (event) => { - const registerStoneMaterial = (rockType, color) => - event.create(`tfg:${rockType}`) - .dust() - .color(color) - .iconSet(GTMaterialIconSet.ROUGH) - .flags( - GTMaterialFlags.MORTAR_GRINDABLE, - GTMaterialFlags.NO_SMASHING, - GTMaterialFlags.NO_SMELTING - ) +function registerTFGIconSets(event) { - /* TFC Stone Types Materials */ - registerStoneMaterial('gabbro', 0x7F8081) - registerStoneMaterial('shale', 0x686567) - registerStoneMaterial('claystone', 0xAF9377) - registerStoneMaterial('limestone', 0xA09885) - registerStoneMaterial('conglomerate', 0xA3977F) - registerStoneMaterial('dolomite', 0x515155) - registerStoneMaterial('chert', 0x7A6756) - registerStoneMaterial('chalk', 0xA4A39F) - registerStoneMaterial('rhyolite', 0x726D69) - registerStoneMaterial('dacite', 0x979797) - registerStoneMaterial('slate', 0x989287) - registerStoneMaterial('phyllite', 0x706B61) - registerStoneMaterial('schist', 0x6E735C) - registerStoneMaterial('gneiss', 0x6A6D60) + event.create('tfc_borax').parent('rough') + event.create('tfc_gypsum').parent('rough') + event.create('tfc_graphite').parent('rough') + event.create('tfc_saltpeter').parent('fine') + event.create('tfc_sulfur').parent('fine') - registerStoneMaterial('dripstone', 0x927965) + event.create('tfc_amethyst').parent('ruby') + event.create('tfc_redstone').parent('fine') + event.create('tfc_diamond').parent('diamond') + event.create('tfc_emerald').parent('emerald') + event.create('tfc_lapis').parent('lapis') + event.create('tfc_opal').parent('opal') + event.create('tfc_pyrite').parent('bright') + event.create('tfc_ruby').parent('ruby') + event.create('tfc_sapphire').parent('gem_horizontal') + event.create('tfc_topaz').parent('gem_vertical') + event.create('tfc_realgar').parent('emerald') + + event.create('tfc_bismuth').parent('bright') + event.create('tfc_cassiterite').parent('bright') + event.create('tfc_garnierite').parent('bright') + event.create('tfc_hematite').parent('metallic') + event.create('tfc_limonite').parent('metallic') + event.create('tfc_magnetite').parent('dull') + event.create('tfc_malachite').parent('shiny') + event.create('tfc_copper').parent('bright') + event.create('tfc_gold').parent('shiny') + event.create('tfc_silver').parent('shiny') + event.create('tfc_sphalerite').parent('dull') + event.create('tfc_tetrahedrite').parent('dull') + event.create('tfc_chromite').parent('dull') + + event.create('nether_quartz').parent('quartz') - registerStoneMaterial('moon_stone', 0x506869) - registerStoneMaterial('moon_deepslate', 0x45474D) - registerStoneMaterial('mars_stone', 0xD08957) - registerStoneMaterial('venus_stone', 0xD5A664) - registerStoneMaterial('mercury_stone', 0x723E49) - registerStoneMaterial('glacio_stone', 0x9897BF) - - // Specialized icon sets for TFC's own + // Credits to Flare from the Cosmic Frontiers team + event.create('chonky').parent('shiny') +} +function modifyTFGIconSets(event) { + GTMaterials.Coal.setMaterialIconSet(GTMaterialIconSet.LIGNITE) GTMaterials.Borax.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_borax')) GTMaterials.Gypsum.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_gypsum')) @@ -88,7 +91,6 @@ const registerTFCMaterials = (event) => { GTMaterials.BlackBronze.setMaterialIconSet(GTMaterialIconSet.SHINY) GTMaterials.Potin.setMaterialIconSet(GTMaterialIconSet.SHINY) GTMaterials.Cupronickel.setMaterialIconSet(GTMaterialIconSet.SHINY) - GTMaterials.Zirconium.setMaterialIconSet(GTMaterialIconSet.SHINY) GTMaterials.Aluminium.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_silver')) GTMaterials.Asbestos.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_gold')) @@ -103,10 +105,9 @@ const registerTFCMaterials = (event) => { GTMaterials.Galena.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_copper')) GTMaterials.Grossular.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_sapphire')) GTMaterials.Neodymium.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_limonite')) - GTMaterials.Palladium.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_pyrite')) + GTMaterials.Palladium.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_gold')) GTMaterials.Platinum.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_gold')) GTMaterials.Thorium.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_hematite')) - GTMaterials.Naquadah.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_malachite')) GTMaterials.Goethite.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_silver')) GTMaterials.Calcite.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_borax')) GTMaterials.Cooperite.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_gold')) @@ -136,4 +137,15 @@ const registerTFCMaterials = (event) => { GTMaterials.Zeolite.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_copper')) GTMaterials.Electrotine.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_garnierite')) GTMaterials.Bauxite.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_borax')) + + GTMaterials.Naquadah.setMaterialIconSet(GTMaterialIconSet.getByName('chonky')) + GTMaterials.NaquadahEnriched.setMaterialIconSet(GTMaterialIconSet.getByName('chonky')) + GTMaterials.Naquadria.setMaterialIconSet(GTMaterialIconSet.getByName('chonky')) + GTMaterials.UraniumRhodiumDinaquadide.setMaterialIconSet(GTMaterialIconSet.getByName('chonky')) + GTMaterials.EnrichedNaquadahTriniumEuropiumDuranide.setMaterialIconSet(GTMaterialIconSet.getByName('chonky')) + GTMaterials.NaquadahAlloy.setMaterialIconSet(GTMaterialIconSet.getByName('chonky')) + GTMaterials.Neutronium.setMaterialIconSet(GTMaterialIconSet.getByName('chonky')) + GTMaterials.RutheniumTriniumAmericiumNeutronate.setMaterialIconSet(GTMaterialIconSet.getByName('chonky')) + + GTMaterials.Zirconium.setMaterialIconSet(GTMaterialIconSet.getByName('chonky')) } \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/items.aircraft.js b/kubejs/startup_scripts/tfg/items.aircraft.js new file mode 100644 index 000000000..651171046 --- /dev/null +++ b/kubejs/startup_scripts/tfg/items.aircraft.js @@ -0,0 +1,41 @@ +"use strict"; + +function registerTFGAircraftItems(event) { + + event.create('tfg:scaffolding_frame') + + event.create('tfg:airship_hull') + + event.create('tfg:airship_balloon') + + event.create('tfg:lv_aircraft_engine') + + event.create('tfg:hv_aircraft_engine') + + event.create('tfg:ev_aircraft_engine') + + event.create('tfg:black_steel_plated_airplane_propeller') + + event.create('tfg:redblu_steel_plated_airplane_propeller') + + event.create('tfg:stainless_steel_plated_airplane_propeller') + + event.create('tfg:titanium_plated_airplane_propeller') + + event.create('tfg:redblu_steel_landing_gear') + + event.create('tfg:aluminium_landing_gear') + + event.create('tfg:stainless_steel_landing_gear') + + event.create('tfg:titanium_landing_gear') + + event.create('tfg:redblu_steel_hull_reinforcement') + + event.create('tfg:aluminium_hull_reinforcement') + + event.create('tfg:stainless_steel_hull_reinforcement') + + event.create('tfg:titanium_hull_reinforcement') + +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/items.food.js b/kubejs/startup_scripts/tfg/items.food.js index 5a6b9888d..2ff882c35 100644 --- a/kubejs/startup_scripts/tfg/items.food.js +++ b/kubejs/startup_scripts/tfg/items.food.js @@ -2,55 +2,10 @@ "use strict"; function registerTFGFoodItems(event) { - - event.create('tfg:food/raw_birt') - .translationKey('item.tfg.food.raw_birt') - .food(food => food.hunger(2).saturation(1) - .effect('species:birtd', 50, 0, 1) - .eaten(ctx => { - ctx.player.level.runCommandSilent(`playsound species:effect.birtd.applied player ${ctx.player.username} ${ctx.player.x} ${ctx.player.y} ${ctx.player.z} 1 1`) - })) - - event.create('tfg:food/cooked_birt') - .translationKey('item.tfg.food.cooked_birt') - .food(food => food.hunger(4).saturation(2)) - - event.create('tfg:food/raw_limpet') - .translationKey('item.tfg.food.raw_limpet') - .food(food => food.hunger(2).saturation(1) - .effect('minecraft:hunger', 100, 0, 1)) - - event.create('tfg:food/cooked_limpet') - .translationKey('item.tfg.food.cooked_limpet') - .food(food => food.hunger(4).saturation(2)) - - event.create('tfg:food/raw_crawlermari') - .translationKey('item.tfg.food.raw_crawlermari') - .food(food => food.hunger(2).saturation(1)) - - event.create('tfg:food/cooked_crawlermari') - .translationKey('item.tfg.food.cooked_crawlermari') - .food(food => food.hunger(4).saturation(2)) - - global.FOOD_FRUIT.forEach(fruit => { - event.create(`tfg:food/freeze_dried/${fruit.name}`) - .translationKey(`item.tfg.food.freeze_dried/${fruit.name}`) - .texture(`tfg:item/food/freeze_dried_${fruit.name}`) - .tag('tfg:space_food') - .food(food => food.hunger(4).saturation(1) - .eaten(ctx => { - ctx.player.give('tfg:used_foil_pack') - })) - }) - - event.create('tfg:food/calorie_paste') - .translationKey('item.tfg.food.calorie_paste') - .food(food => food.hunger(8).saturation(5) - .eaten(ctx => { - ctx.player.give('tfg:used_foil_pack') - })) - .texture('tfg:item/food/calorie_paste') - .tag('tfg:space_food') + + // Meal bags + event.create('tfg:foil_pack') + event.create('tfg:clean_foil_pack') event.create('tfg:used_foil_pack') .translationKey('item.tfg.food.used_foil_pack') @@ -68,6 +23,61 @@ function registerTFGFoodItems(event) { .texture('tfg:item/food/meal_bag') .tag('tfg:space_food') + // Birt + event.create('tfg:food/raw_birt') + .translationKey('item.tfg.food.raw_birt') + .food(food => food.hunger(2).saturation(1) + .effect('species:birtd', 50, 0, 1) + .eaten(ctx => { + ctx.player.level.runCommandSilent(`playsound species:effect.birtd.applied player ${ctx.player.username} ${ctx.player.x} ${ctx.player.y} ${ctx.player.z} 1 1`) + })) + + event.create('tfg:food/cooked_birt') + .translationKey('item.tfg.food.cooked_birt') + .food(food => food.hunger(4).saturation(2)) + + // Limpet + event.create('tfg:food/raw_limpet') + .translationKey('item.tfg.food.raw_limpet') + .food(food => food.hunger(2).saturation(1) + .effect('minecraft:hunger', 100, 0, 1)) + + event.create('tfg:food/cooked_limpet') + .translationKey('item.tfg.food.cooked_limpet') + .food(food => food.hunger(4).saturation(2)) + + // Crawlermari + event.create('tfg:food/raw_crawlermari') + .translationKey('item.tfg.food.raw_crawlermari') + .food(food => food.hunger(2).saturation(1)) + + event.create('tfg:food/cooked_crawlermari') + .translationKey('item.tfg.food.cooked_crawlermari') + .food(food => food.hunger(4).saturation(2)) + + // Freeze dried fruit + global.FOOD_FRUIT.forEach(fruit => { + event.create(`tfg:food/freeze_dried/${fruit.name}`) + .translationKey(`item.tfg.food.freeze_dried/${fruit.name}`) + .texture(`tfg:item/food/freeze_dried_${fruit.name}`) + .tag('tfg:space_food') + .food(food => food.hunger(4).saturation(1) + .eaten(ctx => { + ctx.player.give('tfg:used_foil_pack') + })) + }) + + // Calorie paste + event.create('tfg:food/calorie_paste') + .translationKey('item.tfg.food.calorie_paste') + .food(food => food.hunger(8).saturation(5) + .eaten(ctx => { + ctx.player.give('tfg:used_foil_pack') + })) + .texture('tfg:item/food/calorie_paste') + .tag('tfg:space_food') + + // Sunflower seeds event.create('tfg:roasted_sunflower_seeds') .translationKey('item.tfg.roasted_sunflower_seeds') .texture('tfg:item/roasted_sunflower_seeds') @@ -486,4 +496,10 @@ function registerTFGFoodItems(event) { .texture('tfg:item/food/allspice'); //#endregion + + // Animal products + event.create('tfg:wraptor_sugar') + .tag('tfg:sugars') + .tag('tfg:haste_ingredients') + .tag('tfc:sweetener') } diff --git a/kubejs/startup_scripts/tfg/items.js b/kubejs/startup_scripts/tfg/items.js index 3c18ddc84..4183c56a8 100644 --- a/kubejs/startup_scripts/tfg/items.js +++ b/kubejs/startup_scripts/tfg/items.js @@ -8,8 +8,22 @@ const registerTFGItems = (event) => { registerTFGFoodItems(event) + registerTFGPrimitiveItems(event); + registerTFGNuclearItems(event); + registerTFGWoodItems(event); + registerTFGMedicineItems(event); + registerTFGAircraftItems(event); + registerTFGSpaceItems(event); + registerTFGMarsItems(event); + registerTFGDimensionMarkerItems(event); + registerTFGBiotechItems(event); + registerTFGWeaponItems(event); + registerTFGRockItems(event); + + event.create('tfg:terra_firma_greg') + .tag('c:hidden_from_recipe_viewers') - // #region Electronics + // Electronics event.create('tfg:unfinished_electron_tube', 'create:sequenced_assembly') event.create('tfg:unfinished_vacuum_tube', 'create:sequenced_assembly') event.create('tfg:unfinished_basic_electronic_circuit', 'create:sequenced_assembly') @@ -17,540 +31,22 @@ const registerTFGItems = (event) => { event.create('tfg:unfinished_inscriber_accumulation_press') event.create('tfg:vitrified_pearl') event.create('tfg:cryo_fluix_pearl') - .translationKey('tfg:cryo_fluix_pearl') - // #endregion - - // #region Space - - // Orbit dimension markers - event.create('tfg:marker/earth_orbit').tag('c:hidden_from_recipe_viewers') - event.create('tfg:marker/moon_orbit').tag('c:hidden_from_recipe_viewers') - event.create('tfg:marker/mars_orbit').tag('c:hidden_from_recipe_viewers') - event.create('tfg:marker/venus_orbit').tag('c:hidden_from_recipe_viewers') - event.create('tfg:marker/mercury_orbit').tag('c:hidden_from_recipe_viewers') - event.create('tfg:marker/glacio_orbit').tag('c:hidden_from_recipe_viewers') - - global.AD_ASTRA_WOOD.forEach(wood => { - event.create(`tfg:wood/lumber/${wood.name}`) - .translationKey(`item.tfg.${wood.name}_lumber`) - .tag('tfc:lumber') - }) - // #endregion - - // #region Paper making - event.create('tfg:hardwood_strip') - .translationKey('item.tfg.hardwood_strip') - - event.create('tfg:soaked_hardwood_strip') - .translationKey('item.tfg.soaked_hardwood_strip') - - event.create('tfg:soaked_unrefined_paper') - .translationKey('item.tfg.soaked_unrefined_paper') - - event.create('tfg:terra_firma_greg') - .translationKey('item.tfg.terra_firma_greg') - .tag('c:hidden_from_recipe_viewers') - - //#region chalk creation - event.create('tfg:unfired_chalk') - .translationKey('item.tfg.unfired_chalk') - - Color.DYE.forEach((dyeName, dye) => { - event.create(`tfg:wet_${dyeName}_chalk`) - .translationKey(`item.tfg.wet_${dyeName}_chalk`) - .textureJson({ - layer0: 'tfg:item/unfired_chalk' - }) - .color(0, dye.getHexJS()); - }); - //#endregion - - - // #region Molds - global.TFG_EXTRUDER_MOLDS.forEach(id => event.create(id)) - - global.TFG_CASTING_MOLDS.forEach(id => event.create(id)) - // #endregion - - // #region Stone bricks and dusts - event.create('tfg:brick/deepslate') - .tag(`tfc:metamorphic_items`) - .translationKey('item.tfg.brick.deepslate') - - event.create('tfg:brick/dripstone') - .tag(`tfc:sedimentary_items`) - .translationKey('item.tfg.brick.dripstone') - - event.create('tfg:brick/moon_stone') - .tag(`tfc:igneous_intrusive_items`) - .translationKey('item.tfg.brick.moon_stone') - - event.create('tfg:brick/moon_deepslate') - .tag(`tfc:igneous_intrusive_items`) - .translationKey('item.tfg.moon_deepslate') - - event.create('tfg:brick/mars_stone') - .tag(`tfc:sedimentary_items`) - .translationKey('item.tfg.brick.mars_stone') - - event.create('tfg:brick/venus_stone') - .tag(`tfc:igneous_extrusive_items`) - .translationKey('item.tfg.brick.venus_stone') - - event.create('tfg:brick/mercury_stone') - .tag(`tfc:igneous_intrusive_items`) - .translationKey('item.tfg.brick.mercury_stone') - - event.create('tfg:brick/glacio_stone') - .tag(`tfc:igneous_extrusive_items`) - .translationKey('item.tfg.brick.glacio_stone') - - event.create('tfg:brick/permafrost') - .translationKey('item.tfg.brick.permafrost') - - event.create('tfg:brick/red_granite') - .tag(`tfc:igneous_intrusive_items`) - .translationKey('item.tfg.red_granite') - - // #endregion - - // #region Primitive rubber gloves - event.create('tfg:prepared_leather_gloves') - .translationKey('item.tfg.prepared_leather_gloves') - - event.create('tfg:latex_soaked_gloves') - .translationKey('item.tfg.latex_soaked_gloves') - // #endregion - - //#region Medicine - - const pill = [ - 'haste', - 'night_vision', - 'poison', - 'regeneration', - 'slowness', - 'speed', - 'water_breathing', - 'weakness' - ] - const pill_names = [ - 'Haste', - 'Night Vision', - 'Poison', - 'Regeneration', - 'Slowness', - 'Speed', - 'Water Breathing', - 'Weakness' - ] - - pill.forEach((pill_array, index) => { - const pill_names_array = pill_names[index]; - - event.create(`tfg:${pill_array}_pill`) - .translationKey(`item.tfg.${pill_array}_pill`) - .tooltip(`ยง9${pill_names_array} (08:00)`) - - event.create(`tfg:${pill_array}_tablet`) - .translationKey(`item.tfg.${pill_array}_tablet`) - .tooltip(`ยง9${pill_names_array} (30:00)`) - }) - - event.create(`tfg:antipoison_pill`) - .translationKey(`item.tfg.antipoison_pill`) - .tooltip(`ยง9Cures Poison`) - - event.create(`tfg:antipoison_tablet`) - .translationKey(`item.tfg.antipoison_tablet`) - .tooltip(`ยง9Cures All Harmful Effects`) - - //salvos - - const salvo = [ - 'absorption', - 'fire_resistance', - 'invisibility', - 'luck', - 'resistance' - ] - const salvo_names = [ - 'Absorption', - 'Fire Resistance', - 'Invisibility', - 'Luck', - 'Resistance' - ] - - salvo.forEach((salvo_array, index) => { - const salvo_names_array = salvo_names[index]; - - event.create(`tfg:${salvo_array}_salvo`) - .translationKey(`item.tfg.${salvo_array}_salvo`) - .tooltip(`ยง9${salvo_names_array} (08:00)`) - }) - - event.create(`tfg:instant_health_salvo`) - .translationKey(`item.tfg.instant_health_salvo`) - .tooltip(`ยง9Instant Health II`) - //#endregion - - //#region Misc - event.create('tfg:paraffin_wax') - event.create('tfg:conifer_rosin') - event.create('tfg:foil_pack') - event.create('tfg:clean_foil_pack') - event.create('tfg:flint_club_head') event.create('tfg:uv_led') event.create('tfg:smd_uv_led') - event.create('tfg:twigs/strophar') - .tag('tfc:twigs') - .texture('tfg:item/wood/twig/strophar') - event.create('tfg:twigs/aeronos') - .tag('tfc:twigs') - .texture('tfg:item/wood/twig/aeronos') - event.create('tfg:twigs/glacian') - .tag('tfc:twigs') - .texture('tfg:item/wood/twig/glacian') - event.create('tfg:twigs/alphacene') - .tag('tfc:twigs') - .texture('tfg:item/wood/twig/alphacene') - - event.create('tfg:cobalt_brass_wheel') - .translationKey('item.tfg.cobalt_brass_wheel') - //#endregion - - //#region Cloth & String - event.create('tfg:polycaprolactam_fabric') - .translationKey('item.tfg.polycaprolactam_fabric') - - event.create('tfg:polycaprolactam_string') - .translationKey('item.tfg.polycaprolactam_string') - - event.create('tfg:phantom_silk') - .translationKey('item.tfg.phantom_silk') - - event.create('tfg:phantom_thread') - .translationKey('item.tfg.phantom_thread') - - event.create('tfg:space_suit_fabric') - .translationKey('item.tfg.space_suit_fabric') - //#endregion - - //#region Tools - event.create('tfg:flint_arrow_head') - .translationKey('item.tfg.flint_arrow_head') - - event.create('tfg:fletching') - .translationKey('item.tfg.fletching') - - event.create('tfg:armor_stand_arms') - .translationKey('item.tfg.armor_stand_arms') - - event.create('tfg:harvest_basket') - .translationKey('item.tfg.harvest_basket') - .parentModel('tfg:item/harvest_basket') - .maxDamage(128) - - event.create('tfg:aluminium_harvest_basket') - .translationKey('item.tfg.aluminium_harvest_basket') - .parentModel('tfg:item/aluminium_harvest_basket') - .unstackable() - - event.create('tfg:stainless_steel_needle') - .translationKey('item.tfg.stainless_steel_needle') - .unstackable() - .maxDamage(9999) - - //Fishing Nets - event.create('tfg:fishing_net/wood') - .translationKey('item.tfg.fishing_net.wood') - .parentModel('tfg:item/fishing_nets/wood_fishing_net') - .texture('tfg:item/fishing_nets/wood_fishing_net') - .maxDamage(112) - - event.create('tfg:fishing_net/brass') - .translationKey('item.tfg.fishing_net.brass') - .parentModel('tfg:item/fishing_nets/brass_fishing_net') - .texture('tfg:item/fishing_nets/brass_fishing_net') - .maxDamage(326) - - event.create('tfg:fishing_net/rose_gold') - .translationKey('item.tfg.fishing_net.rose_gold') - .parentModel('tfg:item/fishing_nets/rose_gold_fishing_net') - .texture('tfg:item/fishing_nets/rose_gold_fishing_net') - .maxDamage(380) - - event.create('tfg:fishing_net/sterling_silver') - .translationKey('item.tfg.fishing_net.sterling_silver') - .parentModel('tfg:item/fishing_nets/sterling_silver_fishing_net') - .texture('tfg:item/fishing_nets/sterling_silver_fishing_net') - .maxDamage(380) - - event.create('tfg:fishing_net/invar') - .translationKey('item.tfg.fishing_net.invar') - .parentModel('tfg:item/fishing_nets/invar_fishing_net') - .texture('tfg:item/fishing_nets/invar_fishing_net') - .maxDamage(740) - - event.create('tfg:fishing_net/tin_alloy') - .translationKey('item.tfg.fishing_net.tin_alloy') - .parentModel('tfg:item/fishing_nets/tin_alloy_fishing_net') - .texture('tfg:item/fishing_nets/tin_alloy_fishing_net') - .maxDamage(710) - - event.create('tfg:fishing_net/cupronickel') - .translationKey('item.tfg.fishing_net.cupronickel') - .parentModel('tfg:item/fishing_nets/cupronickel_fishing_net') - .texture('tfg:item/fishing_nets/cupronickel_fishing_net') - .maxDamage(560) - - event.create('tfg:fishing_net/magnalium') - .translationKey('item.tfg.fishing_net.magnalium') - .parentModel('tfg:item/fishing_nets/magnalium_fishing_net') - .texture('tfg:item/fishing_nets/magnalium_fishing_net') - .maxDamage(1830) - - //#endregion - - //#region Immersive Aircraft Impl - event.create('tfg:scaffolding_frame') - .translationKey('item.tfg.scaffolding_frame') - - event.create('tfg:airship_hull') - .translationKey('item.tfg.airship_hull') - - event.create('tfg:airship_balloon') - .translationKey('item.tfg.airship_balloon') - - event.create('tfg:lv_aircraft_engine') - .translationKey('item.tfg.lv_aircraft_engine') - - event.create('tfg:hv_aircraft_engine') - .translationKey('item.tfg.hv_aircraft_engine') - - event.create('tfg:ev_aircraft_engine') - .translationKey('item.tfg.ev_aircraft_engine') - - event.create('tfg:black_steel_plated_airplane_propeller') - .translationKey('item.tfg.black_steel_plated_airplane_propeller') - - event.create('tfg:redblu_steel_plated_airplane_propeller') - .translationKey('item.tfg.redblu_steel_plated_airplane_propeller') - - event.create('tfg:stainless_steel_plated_airplane_propeller') - .translationKey('item.tfg.stainless_steel_plated_airplane_propeller') - - event.create('tfg:titanium_plated_airplane_propeller') - .translationKey('item.tfg.titanium_plated_airplane_propeller') - - event.create('tfg:redblu_steel_landing_gear') - .translationKey('item.tfg.redblu_steel_landing_gear') - - event.create('tfg:aluminium_landing_gear') - .translationKey('item.tfg.aluminium_landing_gear') - - event.create('tfg:stainless_steel_landing_gear') - .translationKey('item.tfg.stainless_steel_landing_gear') - - event.create('tfg:titanium_landing_gear') - .translationKey('item.tfg.titanium_landing_gear') - - event.create('tfg:redblu_steel_hull_reinforcement') - .translationKey('item.tfg.redblu_steel_hull_reinforcement') - - event.create('tfg:aluminium_hull_reinforcement') - .translationKey('item.tfg.aluminium_hull_reinforcement') - - event.create('tfg:stainless_steel_hull_reinforcement') - .translationKey('item.tfg.stainless_steel_hull_reinforcement') - - event.create('tfg:titanium_hull_reinforcement') - .translationKey('item.tfg.titanium_hull_reinforcement') - //#endregion - - //Tacz Helper Region - event.create('tfg:flintlock_mechanism') - .translationKey('item.tfg.flintlock_mechanism') - event.create('tfg:advanced_clockwork_mechanism') - .translationKey('item.tfg.advanced_clockwork_mechanism') - event.create('tfg:certus_mechanism') - .translationKey('item.tfg.certus_mechanism') - - event.create('tfg:small_bullet_casing') - .translationKey('tfg:small_bullet_casing') - event.create('tfg:shell_bullet_casing') - .translationKey('tfg:shell_bullet_casing') - event.create('tfg:large_bullet_casing') - .translationKey('tfg:large_bullet_casing') - event.create('tfg:nitrocellulose') - .translationKey('tfg:nitrocellulose') - //endregion - - //Tier2 Insulation - event.create('tfg:aes_wool') - .translationKey('tfg:aes_wool') - event.create('tfg:aes_compressed_wool') - .translationKey('tfg:aes_compressed_wool') - event.create('tfg:aes_insulation_sheet') - .translationKey('tfg:aes_insulation_sheet') - event.create('tfg:aes_insulation_roll') - .translationKey('tfg:aes_insulation_roll') - //endregion - - //Tier 2 Rocket Parts - event.create('tfg:rocket_fin_t2') - event.create('tfg:rocket_cone_t2') - //endregion - - //Tier 3 Insulation - event.create('tfg:aes_polyurethane') - event.create('tfg:mli_shielding') - event.create('tfg:silica_aerogel') - //endregion - - //Tier 3 Rocket Parts - event.create('tfg:rocket_fin_t3') - event.create('tfg:rocket_cone_t3') - event.create('tfg:elite_power_thruster') - - event.create('tfg:better_space_suit_fabric') - //endregion - - //#region Universal compost items - event.create('tfg:universal_compost_browns') - .tag('tfc:compost_browns_low') - - event.create('tfg:universal_compost_greens') - .tag('tfc:compost_greens_low') - //#endregion - - //#region Etched Diamond Etching Tip - event.create('tfg:etching_diamond_tip') - .translationKey("item.tfg.etching_diamond_tip") - //#endregion - - //#region Solar Panel - - event.create('tfg:photo_cell_t1') - .translationKey("item.tfg.basic.photovoltaic.cell") - .texture('tfg:item/photo_cell_t1') - //#endregion - - //#region Mars Animals - event.create('tfg:wraptor_sugar') - .tag('tfg:sugars') - .tag('tfg:haste_ingredients') - .tag('tfc:sweetener') - //#endregion - - //#region Flax Stuff - event.create('tfg:flax_waste') - .tag('tfc:scrapable') - event.create('tfg:flax_tow') - .tag('tfg:burlap_fiber') - .tag('tfc:compost_browns') - event.create('tfg:flax_line') - .tag('tfc:compost_browns_low') - event.create('tfg:linen_thread') - .tag('forge:string') - event.create('tfg:linen_cloth') - .tag('forge:cloth') - .tag('tfc:sewing_light_cloth') - - event.create('tfg:flax_bundle') - .tag('tfc:scrapable') - .translationKey('item.tfg.flax_bundle') - .texture('tfg:item/flax_bundle') - - event.create('tfg:bundled_scraped_flax') - .tag('tfc:scrapable') - .translationKey('item.tfg.bundled_scraped_flax') - .texture('tfg:item/bundled_scraped_flax') - - //#region Lab Equipment - - global.LAB_EQUIPMENT_CONTAINERS.forEach((item) => { - event.create(`tfg:${item.type}`, 'tfc:glass_bottle') - .fluidTagAccept('tfg:not_solid') - .capacity(item.capacity) - .translationKey(`item.tfg.lab_equipment.${item.type}`) - .tag('tfg:lab_equipment_containers') - .tag('tfc:fluid_item_ingredient_empty_containers') - .tag('tfc:glass_bottles') - }) - - event.create('tfg:lab_equipment') - .translationKey('item.tfg.lab_equipment.lab_equipment') - .tooltip(Text.translatable('tfg.tooltip.lab_equipment.set')) - - event.create('tfg:dirty_lab_equipment') - .translationKey('item.tfg.lab_equipment.dirty_lab_equipment') - .tooltip(Text.translatable('tfg.tooltip.lab_equipment.set_dirty')) - //#endregion - - // Empty Fission Rod - - event.create('tfg:empty_rod') - .translationKey('item.tfg.empty_road') - .texture('tfg:item/fuel_rod_empty') - .tag('tfg:fission_rods') - - event.create('tfg:refrigerant_pellet') - .translationKey('item.tfg.refrigerant_pellet') - .texture('tfg:item/refrigerant_pellet') - .tag('tfg:fission_coolant') - - // Moderator Line - - event.create('tfg:graphite_compound') - .translationKey('item.tfg.graphite_compound') - .texture('tfg:item/graphite_line/graphite_compound') - - event.create('tfg:raw_graphite_briquette') - .translationKey('item.tfg.raw_graphite_briquette') - .texture('tfg:item/graphite_line/raw_graphite_briquette') - - event.create('tfg:faulty_graphite_briquette') - .translationKey('item.tfg.faulty_graphite_briquette') - .texture('tfg:item/graphite_line/faulty_graphite_briquette') - - event.create('tfg:washed_graphite_briquette') - .translationKey('item.tfg.washed_graphite_briquette') - - event.create('tfg:pure_graphite_rod') - .translationKey('item.tfg.pure_graphite_rod') - .texture('tfg:item/graphite_line/pure_graphite_rod') - - event.create('tfg:impure_graphite_rod') - .translationKey('item.tfg.impure_graphite_rod') - .texture('tfg:item/graphite_line/impure_graphite_rod') - - event.create('tfg:annealed_graphite_rod') - .translationKey('item.tfg.annealed_graphite_rod') - - event.create('tfg:impure_annealed_graphite_rod') - .translationKey('item.tfg.impure_annealed_graphite_rod') - - event.create('tfg:graphite_moderator') - .translationKey('item.tfg.graphite_moderator') - .texture('tfg:item/graphite_line/graphite_moderator') - - event.create('tfg:impure_graphite_moderator') - .translationKey('item.tfg.impure_graphite_moderator') - .texture('tfg:item/graphite_line/impure_graphite_moderator') - - event.create('tfg:advanced_polymer_binder') - .translationKey('item.tfg.advanced_polymer_binder') - .texture('tfg:item/graphite_line/advanced_polymer_binder') - - //#region Bioline - - event.create('tfg:cellulose_matrix') - event.create('tfg:smooth_endoplasmic_reticula') - event.create('tfg:rough_endoplasmic_reticula') - event.create('tfg:alpha_keratin') - - //#endregion + // Molds + global.TFG_EXTRUDER_MOLDS.forEach(id => event.create(id)) + global.TFG_CASTING_MOLDS.forEach(id => event.create(id)) + + // Universal Circuits + event.create('tfg:ulv_universal_circuit') + event.create('tfg:lv_universal_circuit') + event.create('tfg:mv_universal_circuit') + event.create('tfg:hv_universal_circuit') + event.create('tfg:ev_universal_circuit') + event.create('tfg:iv_universal_circuit') + event.create('tfg:luv_universal_circuit') + event.create('tfg:zpm_universal_circuit') + event.create('tfg:uv_universal_circuit') + event.create('tfg:uhv_universal_circuit') } diff --git a/kubejs/startup_scripts/betterend/blocks.js b/kubejs/startup_scripts/tfg/mars/blocks.mars_deco.js similarity index 69% rename from kubejs/startup_scripts/betterend/blocks.js rename to kubejs/startup_scripts/tfg/mars/blocks.mars_deco.js index 49d5cf1fe..3043fc2ef 100644 --- a/kubejs/startup_scripts/betterend/blocks.js +++ b/kubejs/startup_scripts/tfg/mars/blocks.mars_deco.js @@ -1,31 +1,6 @@ -// priority: 0 "use strict"; -function registerBetterEndBlocks(event) { - - // Moon - - event.create('betterend:chorus_lily', 'tfc:ground_cover') - .soundType('cherry_wood') - .hardness(0.5) - .tagItem('tfg:moon_plants') - .tagBlock('minecraft:mineable/hoe') - .tagBlock('tfg:do_not_destroy_in_space') - .mapColor('terracotta_white') - .box(0, 0, 0, 16, 6, 16) - .fullBlock(false) - .opaque(false) - .notSolid() - .renderType('cutout') - - // 1 block tall - createPlant(event, 'inflexia', 'moon') - createPlant(event, 'chorus_grass', 'moon') - createPlant(event, 'salteago', 'moon') - createPlant(event, 'vaiolush_fern', 'moon') - - - // Mars +function registerTFGWorldGenMarsDecoBlocks(event) { // 1 block tall createPlant(event, 'aeridium', 'mars') @@ -202,40 +177,74 @@ function registerBetterEndBlocks(event) { .tagBlock('tfg:do_not_destroy_in_space') .mapColor('color_orange') - // europa...? + // Ground cover - createPlant(event, 'crystal_grass', 'unused') - .box(3, 0, 3, 13, 12, 13) - createPlant(event, 'blooming_cooksonia', 'unused') - .box(3, 0, 3, 13, 12, 13) - createPlant(event, 'fracturn', 'unused') - .box(3, 0, 3, 13, 12, 13) - createPlant(event, 'jungle_grass', 'unused') - .box(3, 0, 3, 13, 12, 13) -} - -/** - * @param {any} event - * @param {string} id - * @param {string} planet - */ -function createPlant(event, id, planet) { - return event.create(`betterend:${id}`, 'tfg:decorative_plant') - .tagItem(`tfg:${planet}_plants`) - .tagBlock('minecraft:replaceable') - .tagBlock('tfg:do_not_destroy_in_space') + event.create('tfg:groundcover/glider_feather', 'tfc:ground_cover') + .box(4, 0, 4, 12, 2, 12) + .soundType('wool') + .groundCoverModelShape('feather') + .withPreexistingItem('wan_ancient_beasts:glider_feather') + .textureAll('wan_ancient_beasts:item/glider_feather') .tagBlock('tfc:can_be_snow_piled') -} -/** - * @param {any} event - * @param {string} id - * @param {string} planet - */ -function createWaterPlant(event, id, planet) { - return event.create(`betterend:${id}`, 'tfg:decorative_plant') - .tagItem(`tfg:${planet}_plants`) - .tagBlock('minecraft:replaceable') - .tagBlock('tfg:do_not_destroy_in_space') - .tagBlock('tfc:can_be_ice_piled') + event.create('tfg:groundcover/wraptor_feather', 'tfc:ground_cover') + .box(4, 0, 4, 12, 2, 12) + .soundType('wool') + .groundCoverModelShape('feather') + .withPreexistingItem('minecraft:feather') + .textureAll('tfg:item/wraptor_wool') + .tagBlock('tfc:can_be_snow_piled') + + event.create('tfg:groundcover/aeronos_stick', 'tfc:ground_cover') + .box(3, 0, 3, 13, 3, 13) + .groundCoverModelShape('twig') + .withPreexistingItem('tfg:twigs/aeronos') + .tagBlock('tfc:can_be_snow_piled') + .texture('particle', 'ad_astra:block/aeronos_stem') + .texture('all', 'ad_astra:block/aeronos_stem') + .texture('top', 'ad_astra:block/aeronos_stem_inside') + + event.create('tfg:groundcover/strophar_stick', 'tfc:ground_cover') + .box(3, 0, 3, 13, 3, 13) + .groundCoverModelShape('twig') + .withPreexistingItem('tfg:twigs/strophar') + .tagBlock('tfc:can_be_snow_piled') + .texture('particle', 'ad_astra:block/strophar_stem') + .texture('all', 'ad_astra:block/strophar_stem') + .texture('top', 'ad_astra:block/strophar_stem_inside') + + event.create('tfg:groundcover/glacian_stick', 'tfc:ground_cover') + .box(3, 0, 3, 13, 3, 13) + .groundCoverModelShape('twig') + .withPreexistingItem('tfg:twigs/glacian') + .tagBlock('tfc:can_be_snow_piled') + .texture('particle', 'ad_astra:block/glacian_log') + .texture('all', 'ad_astra:block/glacian_log') + .texture('top', 'ad_astra:block/glacian_log_top') + + event.create('tfg:groundcover/alphacene_stick', 'tfc:ground_cover') + .box(3, 0, 3, 13, 3, 13) + .groundCoverModelShape('twig') + .withPreexistingItem('tfg:twigs/alphacene') + .tagBlock('tfc:can_be_snow_piled') + .texture('particle', 'species:block/alphacene_mushroom_block') + .texture('all', 'species:block/alphacene_mushroom_block') + .texture('top', 'minecraft:block/mushroom_stem') + + // Misc + + event.create('tfg:spice', 'tfg:particle_emitter') + .textureAll('tfg:block/sand_spice') + .soundType('sand') + .hardness(2) + .resistance(6) + // makes it invisible on xaeros, so people can't use it to find the deposits :) + .mapColor('none') + .particleOffset(0.3, 1.5, 0.3) + .particleVelocity(0, 0.05, 0) + .particle('electric_spark') + .particleCount(2) + .particleForced(false) + .fullBlock(true) + .opaque(true) } \ No newline at end of file diff --git a/kubejs/startup_scripts/betterend/items.js b/kubejs/startup_scripts/tfg/mars/items.mars.js similarity index 88% rename from kubejs/startup_scripts/betterend/items.js rename to kubejs/startup_scripts/tfg/mars/items.mars.js index 3c23730ef..5460fe4f6 100644 --- a/kubejs/startup_scripts/betterend/items.js +++ b/kubejs/startup_scripts/tfg/mars/items.mars.js @@ -1,11 +1,7 @@ -// priority: 0 "use strict"; -/** - * - * @param {Registry.Item} event - */ -function registerBetterEndItems(event) { +function registerTFGMarsItems(event) { + event.create('betterend:bolux_mushroom_cooked') .food(food => { food.hunger(2) @@ -35,4 +31,5 @@ function registerBetterEndItems(event) { food.hunger(5) food.saturation(2) }) + } \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/mars/materials.mars.js b/kubejs/startup_scripts/tfg/mars/materials.mars.js new file mode 100644 index 000000000..e03e5dc76 --- /dev/null +++ b/kubejs/startup_scripts/tfg/mars/materials.mars.js @@ -0,0 +1,105 @@ +"use strict"; + +function registerTFGMarsMaterials(event) { + + event.create('liquid_carbon_dioxide') + .liquid(100) //Not realistic but I want it to be cryogenic + .components('1x carbon', '2x oxygen') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0xDBFBFF) + + // Mars Ore Line + + event.create('lightweight_ostrum_vapor') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(760)) + + event.create('ostrum_vapor') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(815)) + + event.create('dense_ostrum_vapor') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(930)) + + event.create('residual_radioactive_concoction') + .liquid(new GTFluidBuilder().customStill().temperature(450)) + + // Atmosphere + + event.create('tfg:mars_air') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(208)) + .color('0xD08957') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .components('94x carbon_dioxide', '3x nitrogen', '2x argon', '1x oxygen') + + // TODO: move neon and xenon somewhere else + event.create('tfg:liquid_mars_air') + .liquid(new GTFluidBuilder().state(GTFluidState.LIQUID).temperature(58)) + .color('0xD08957') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .components('80x carbon_dioxide', '7x nitrogen', '5x argon', '3x oxygen', '1x neon', '1x krypton', '1x xenon') + + // Mars sap + + event.create('tfg:crimsene') + .liquid(new GTFluidBuilder().state(GTFluidState.LIQUID).temperature(220)) + .gem() + .iconSet('lapis') + .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) + .color(0xB12727) + .secondaryColor(0x562C3E) + + event.create('tfg:warpane') + .liquid(new GTFluidBuilder().state(GTFluidState.LIQUID).temperature(220)) + .gem() + .iconSet('quartz') + .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) + .color(0x45ABA9) + .secondaryColor(0x562C3E) + + event.create('tfg:mycelienzene') + .dust() + .color(0x9E7385) + + event.create('tfg:cooked_mycelienzane') + .liquid(new GTFluidBuilder().state(GTFluidState.LIQUID).temperature(1830)) + .color(0x9E7385) + + event.create('tfg:iodomethane') + .liquid() + .components('1x carbon', '3x hydrogen', '1x iodine') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0xAC45C6) + + event.create('tfg:trideuteroiodomethane') + .liquid() + .components('1x carbon', '3x deuterium', '1x iodine') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0xDD9DED) + + // Ores + + event.create('ostrum') + .components('2x pitchblende', '1x tricalcium_phosphate', '1x bauxite', '1x silver', '1x beryllium') + .color(0xbd7980) + .secondaryColor(0xA66C8D) + .iconSet(GTMaterialIconSet.getByName('tfc_cassiterite')) + .ingot() + .liquid() + .blastTemp(3700, 'mid', GTValues.VA[GTValues.EV]) + .flags( + GTMaterialFlags.DISABLE_DECOMPOSITION, + GTMaterialFlags.FORCE_GENERATE_BLOCK, + GTMaterialFlags.GENERATE_PLATE, + GTMaterialFlags.GENERATE_ROD, + GTMaterialFlags.GENERATE_FRAME, + GTMaterialFlags.DISABLE_ALLOY_BLAST + ) + + event.create("ostrum_iodide") + .ingot() + .components('2x ostrum', 'iodine') + .blastTemp(3700, 'mid', GTValues.VA[GTValues.IV], (20*120)) + .iconSet(GTMaterialIconSet.BRIGHT) + .flags(GTMaterialFlags.GENERATE_GEAR) + .color(0xc696f2) + .secondaryColor(0x9b99ff) +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/materials.js b/kubejs/startup_scripts/tfg/materials.js index b3cf42ebb..b25ca13df 100644 --- a/kubejs/startup_scripts/tfg/materials.js +++ b/kubejs/startup_scripts/tfg/materials.js @@ -7,128 +7,19 @@ const registerTFGMaterials = (event) => { .color('0xFFFFFF') .formula('?') .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + + registerTFGPowerReworkMaterials(event); + registerTFGNuclearMaterials(event); + registerTFGBiolineMaterials(event); + registerTFGPrimitiveMaterials(event); + registerTFGRockMaterials(event); - event.create('hardwood') - .dust() - .flags(GTMaterialFlags.FLAMMABLE) - .iconSet(GTMaterialIconSet.WOOD) - .color('0x7a5225') - .secondaryColor('0x7a5225') + registerTFGRocketMaterials(event); + registerTFGMoonMaterials(event); + registerTFGMarsMaterials(event); + registerTFGVenusMaterials(event); + registerTFGEuropaMaterials(event); - event.create('thermochemically_treated_hardwood') - .dust() - .flags(GTMaterialFlags.FLAMMABLE) - .iconSet(GTMaterialIconSet.WOOD) - .color('0x52482c') - .secondaryColor('0x52482c') - - // Important tags to add to fluids: - // tfc:usable_in_pot, tfc:usable_in_barrel, tfc:usable_in_wooden_bucket - - event.create('tfg:latex') - .liquid() - .color(0xFBB982) - - event.create('tfg:vulcanized_latex') - .liquid() - .color(0xc79973) - - event.create('tfg:conifer_pitch') - .liquid() - .color(0xfbdf82) - .secondaryColor(0xff9d2e) - - // Ores - - event.create('tarkianite') - .ore() - .components('1x copper', '1x iron', '4x rhenium', '4x molybdenum', '8x sulfur') - .color(0x8bb054) - .secondaryColor(0x3d8021) - .iconSet(GTMaterialIconSet.getByName('tfc_emerald')) - .addOreByproducts('sulfur', 'rhenium', 'molybdenum') - - // Cooking - - event.create('lactose') - .dust() - .iconSet(GTMaterialIconSet.FINE) - .color('0xede8da') - .secondaryColor('0xeddcad') - .components('12x carbon', '22x hydrogen', '11x oxygen') - - // Used as a TFC aluminium substitute so you can't make actual aluminium ingots early - event.create('aluminium_silicate') - .dust() - .ingot() - .liquid(new GTFluidBuilder().state(GTFluidState.LIQUID).temperature(1520)) - .components('2x aluminium', '1x silicon', '5x oxygen') - .iconSet('metallic') - .color(0xB6D3FF) - .secondaryColor(0x6F4AB3) - - // Space Rocket Materials - - event.create('rocket_alloy_t1') - .ingot() - .components('6x aluminium', '2x stainless_steel', '1x red_steel') - .color(0x333e47) - .iconSet('metallic') - .flags(GTMaterialFlags.GENERATE_PLATE, GTMaterialFlags.GENERATE_ROD, GTMaterialFlags.GENERATE_DENSE, GTMaterialFlags.GENERATE_GEAR) - .blastTemp(1760, 'low', 256, 900) - - event.create('rocket_alloy_t2') - .ingot() - .components('19x titanium', '4x vanadium', '3x aluminium', '3x chromium', '3x tin') - .color(0x3c253d) - .iconSet('metallic') - .flags(GTMaterialFlags.GENERATE_PLATE, GTMaterialFlags.GENERATE_ROD, GTMaterialFlags.GENERATE_DENSE, GTMaterialFlags.GENERATE_GEAR, GTMaterialFlags.DISABLE_ALLOY_BLAST) - .blastTemp(3200, 'mid', 1024, 1100) - .liquid() - -/* event.create('rocket_alloy_t3') - .ingot() - .components('8x titanium', '9x tungsten_steel', '2x tantalum', '2x radon') - .color(0x6c678b) - //.secondaryColor(0xa59fc6) - .liquid() - .removeHazard() - .iconSet('metallic') - .flags(GTMaterialFlags.GENERATE_PLATE, GTMaterialFlags.GENERATE_ROD, GTMaterialFlags.GENERATE_DENSE, GTMaterialFlags.GENERATE_GEAR) - .blastTemp(4200, 'high', 4096, 1300) - */ - event.create('vitrified_asbestos') - .dust() - .fluid() - .iconSet('glass') - .color(0xcccccc) - - // Space suit gases (these all add up to 10B of components = 1B of space suit gas) - - event.create('tfg:compressed_nitrox') - .gas() - .components('8x nitrogen', '2x oxygen') - .color(0xaef5ef) - - event.create('tfg:compressed_heliox') - .gas() - .components('8x helium', '2x oxygen') - .color(0xf5eeb3) - - event.create('tfg:compressed_heliox_3') - .gas() - .components('8x helium_3', '2x oxygen') - .color(0xf5ea90) - - event.create('tfg:compressed_trimix') - .gas() - .components('5x nitrogen', '3x oxygen', '2x helium') - .color(0xc3fab9) - - event.create('tfg:compressed_trimix_3') - .gas() - .components('5x nitrogen', '3x oxygen', '2x helium_3') - .color(0xa3ed95) // Refrigerants @@ -152,25 +43,8 @@ const registerTFGMaterials = (event) => { .components('2x carbon', '2x hydrogen', '4x fluorine') .color(0x46702e) - // Fission Component - - event.create('tfg:tetrafluoroethane') - .fluid() - .gem() - .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES, GTMaterialFlags.DISABLE_DECOMPOSITION) - .iconSet(GTMaterialIconSet.QUARTZ) - .components('2x carbon', '2x hydrogen', '4x fluorine') - .color(0x46702e) - // Crafting components - event.create('tfg:kaolinite') - .dust() - .components('2x aluminium', '2x silicon', '9x oxygen', '4x hydrogen') - .color(0xEEB9AD) - .secondaryColor(0xF6A797) - .formula("Al2Si2O5(OH)4") - event.create('tfg:vitrified_pearl') .dust() .flags(GTMaterialFlags.DECOMPOSITION_BY_CENTRIFUGING) @@ -179,250 +53,6 @@ const registerTFGMaterials = (event) => { .secondaryColor(0x67FFE6) .formula("(Al2Si2O5(OH)4)(BeK4N5)") - //#region Solar Panel Chemicals - - event.create('tfg:chloryl_fluoride') - .gas() - .components('1x fluorine', '1x chlorine', '2x oxygen') - .color(0x8AFAF4) - - event.create('tfg:chlorine_pentafluoride') - .gas() - .components('5x fluorine', '1x chlorine') - .color(0x51F7C0) - - event.create('tfg:solar_coolant') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(163)) - .components('8x helium_3', '11x oxygen', '11x hydrogen') - .color(0xEDFFB3) - - event.create('tfg:solar_coolant_tier2') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(73)) - .components('8x tfg:solar_coolant', '1x argon') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0xfeff5d) - - - event.create('liquid_carbon_dioxide') - .liquid(100) //Not realistic but I want it to be cryogenic - .components('1x carbon', '2x oxygen') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0xDBFBFF) - - //#region Rockwool - event.create('tfg:aes_mix') - .dust() - .flags(GTMaterialFlags.DECOMPOSITION_BY_CENTRIFUGING) - .components('5x silicon_dioxide', '4x quicklime', '1x magnesia') - .hazard(HazardProperty.HazardTrigger.SKIN_CONTACT, GTMedicalConditions.CHEMICAL_BURNS) - .color(0xE0E9E4) - //.secondaryColor(0x54483d) - event.create('tfg:molten_aes') - .liquid(2900) - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .components('5x silicon_dioxide', '4x quicklime', '1x magnesia') - .color(0xe65609) - .secondaryColor(0xe65609) - //#endregion - - //#region Ammonia Borane - event.create('tfg:sodium_hydride') - .dust() - .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) - .components('1x sodium', '1x hydrogen') - .color(0xEDF5F3) - event.create('tfg:boric_acid') - .dust() - .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) - .components('3x hydrogen', '1x boron', '3x oxygen') - .color(0xDFEDDF) - .secondaryColor(0xDFEDDF) - event.create('tfg:trimethyl_borate') - .liquid() - .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) - .components('3x carbon', '9x hydrogen', '1x boron', '3x oxygen') - .color(0xF7F7F7) - event.create('tfg:sodium_borohydride') - .dust() - .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) - .components('1x sodium', '1x boron', '4x hydrogen') - .color(0xE8F1FF) - .secondaryColor(0xE8F1FF) - event.create('tfg:sodium_methoxide') - .dust() - .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) - .components('1x sodium', '1x oxygen', '1x carbon', '3x hydrogen') - .color(0xE8E5DF) - .secondaryColor(0xE8E5DF) - event.create('tfg:ammonia_borane') - .dust() - .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING, GTMaterialFlags.GENERATE_PLATE) - .components('1x ammonia', '1x boron', '3x hydrogen') - .color(0xCCE3E3) - .secondaryColor(0xCCE3E3) - //#endregion - - //#region polyurethane - event.create('tfg:aniline') - .liquid() - .components('6x carbon', '5x hydrogen', '1x nitrogen', '2x hydrogen') - .color(0xBAB999) - event.create('tfg:dimethyl_carbonate') - .liquid() - .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) - .components('3x formaldehyde') // CH2O - .color(0xFFFFF2) - event.create('tfg:methyl_phenylcarbamate') - .liquid() - .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) - .components('8x carbon','9x hydrogen','1x nitrogen', '2x oxygen') - .color(0xB4EDB4) - event.create('tfg:methylene_diphenyl_dicarbamate') - .liquid() - .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) - .components('17x carbon','18x hydrogen','2x nitrogen', '4x oxygen') - .color(0x69C2C1) - event.create('tfg:methylene_diphenyl_diisocyanate') - .dust() - .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) - .components('13x carbon','10x hydrogen','2x nitrogen', '2x oxygen') - .color(0xFFFFBA) - //#endregion - - //#region aerogel - event.create('tfg:tmos') - .liquid() - .formula("Si(OCH3)4") - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0xC2C6CC) - event.create('tfg:silica_gel') - .liquid() - .color(0x60BABF) - .secondaryColor(0xFFD38C) - event.create('tfg:soaked_silica_gel') - .liquid() - .color(0x9ED5D9) - //#endregion - - //#region Bromine Line - - event.create('raw_brine') - .fluid() - .color(0x947a11) - //.secondaryColor(0x81FFF9) - - event.create('hot_brine') - .liquid(320) - .color(0x944611) - - event.create('hot_chlorinated_brominated_brine') - .liquid(320) - .color(0xbf8d5a) - .components('1x unknown', '1x chlorine') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - - event.create('brominated_chlorine_vapor') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(320)) - .color(0xbf8d5a) - .components('1x chlorine', '1x bromine', '1x water') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - - event.create('acidic_bromine_solution') - .liquid(new GTFluidBuilder().attribute(GTFluidAttributes.ACID)) - .color(0xe7b989) - .components('1x chlorine', '1x bromine') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - - event.create('concentrated_bromine_solution') - .liquid() - .color(0x905d29) - .components('1x bromine', '1x chlorine') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - - event.create('debrominated_brine') - .liquid() - .color(0xc3874a) - - event.create('acidic_bromine_exhaust') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).attribute(GTFluidAttributes.ACID).temperature(293)) - .color(0xec9c4a) - .components('3x water', '1x chlorine') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - - event.create('hot_alkaline_debrominated_brine') - .liquid() - .color(0xcc6a06) - .components('2x unknown', '1x chlorine') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - - event.create('hot_debrominated_brine') - .liquid(320) - .color(0xb08e6b) - - event.create('hydrogen_iodide') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(293)) - .color(0x82a6ce) - .components('1x hydrogen', '1x iodine') - - //#endregion - - //#region Mars Ore Line - - event.create('lightweight_ostrum_vapor') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(760)) - - event.create('ostrum_vapor') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(815)) - - event.create('dense_ostrum_vapor') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(930)) - - event.create('residual_radioactive_concoction') - .liquid(new GTFluidBuilder().customStill().temperature(450)) - - //#endregion - - //#region Moon Ore Line - - event.create('regolith_vapor') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(727)) - - event.create('tfg:certus_regolith') - .dust() - .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) - .iconSet(GTMaterialIconSet.CERTUS) - .color('0xc1e6e4') - .secondaryColor('0x7a5225') - - event.create('tfg:goethe_regolith') - .dust() - .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) - .iconSet(GTMaterialIconSet.METALLIC) - .color('0xb0af5b') - .secondaryColor('0x7a5225') - - event.create('tfg:bright_regolith') - .dust() - .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) - .iconSet(GTMaterialIconSet.SHINY) - .color('0xf0efe9') - .secondaryColor('0xffffff') - - event.create('tfg:cassiterite_regolith') - .dust() - .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) - .iconSet(GTMaterialIconSet.METALLIC) - .color('0xbab6b7') - .secondaryColor('0x7a5225') - - event.create('tfg:regolith_mush') - .dust() - .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) - .iconSet(GTMaterialIconSet.WOOD) - .color('0xa2cde0') - .secondaryColor('0x7a5225') - - //#endregion //#region Tungsten Line @@ -456,23 +86,6 @@ const registerTFGMaterials = (event) => { // #endregion - // #region Atmospheres - - event.create('tfg:mars_air') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(208)) - .color('0xD08957') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .components('94x carbon_dioxide', '3x nitrogen', '2x argon', '1x oxygen') - - // TODO: move neon and xenon somewhere else - event.create('tfg:liquid_mars_air') - .liquid(new GTFluidBuilder().state(GTFluidState.LIQUID).temperature(58)) - .color('0xD08957') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .components('80x carbon_dioxide', '7x nitrogen', '5x argon', '3x oxygen', '1x neon', '1x krypton', '1x xenon') - - // #endregion - //#region New Alloy for Turbines event.create('tfg:tungsten_bismuth_oxide_composite') @@ -495,46 +108,6 @@ const registerTFGMaterials = (event) => { // #endregion - // #region Mars sap - - event.create('tfg:crimsene') - .liquid(new GTFluidBuilder().state(GTFluidState.LIQUID).temperature(220)) - .gem() - .iconSet('lapis') - .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) - .color(0xB12727) - .secondaryColor(0x562C3E) - - event.create('tfg:warpane') - .liquid(new GTFluidBuilder().state(GTFluidState.LIQUID).temperature(220)) - .gem() - .iconSet('quartz') - .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) - .color(0x45ABA9) - .secondaryColor(0x562C3E) - - event.create('tfg:mycelienzene') - .dust() - .color(0x9E7385) - - event.create('tfg:cooked_mycelienzane') - .liquid(new GTFluidBuilder().state(GTFluidState.LIQUID).temperature(1830)) - .color(0x9E7385) - - event.create('tfg:iodomethane') - .liquid() - .components('1x carbon', '3x hydrogen', '1x iodine') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0xAC45C6) - - event.create('tfg:trideuteroiodomethane') - .liquid() - .components('1x carbon', '3x deuterium', '1x iodine') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0xDD9DED) - - // #endregion - // #region conductor event.create('tfg:thermally_conductive_fluid') .liquid() @@ -599,7 +172,7 @@ const registerTFGMaterials = (event) => { .ingot() .color(0xFADED2) .secondaryColor(0x4FA883) - .iconSet('shiny') + .iconSet('chonky') .components('1x zirconium', '2x boron') .flags(GTMaterialFlags.GENERATE_PLATE, GTMaterialFlags.GENERATE_FOIL) @@ -612,33 +185,4 @@ const registerTFGMaterials = (event) => { .flags(GTMaterialFlags.GENERATE_PLATE) // #endregion - - //#region Food Materials(?) - - event.create('tfg:sodium_dihydrogen_citrate') - .dust() - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .iconSet(GTMaterialIconSet.BRIGHT) - .components('6x carbon', '7x hydrogen', '1x sodium', '7x oxygen') - .color('0xE38818') - - event.create('tfg:citric_acid') - .dust() - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .iconSet(GTMaterialIconSet.SHINY) - .components('6x carbon', '8x hydrogen', '7x oxygen') - .color('0xE3AD18') - - // I decided to make these materials because why not? - event.create('tfg:rich_stock') - .liquid(new GTFluidBuilder().customStill().state(GTFluidState.LIQUID).temperature(360)); - - event.create('tfg:light_stock') - .liquid(new GTFluidBuilder().customStill().state(GTFluidState.LIQUID).temperature(360)); - - event.create('tfg:brown_gravy') - .liquid(new GTFluidBuilder().customStill().state(GTFluidState.LIQUID).temperature(360)); - - //#endregion - } diff --git a/kubejs/startup_scripts/tfg/materials.power_rework.js b/kubejs/startup_scripts/tfg/materials.power_rework.js index bace22a6d..254efef25 100644 --- a/kubejs/startup_scripts/tfg/materials.power_rework.js +++ b/kubejs/startup_scripts/tfg/materials.power_rework.js @@ -1,54 +1,54 @@ - // priority: 0 +// priority: 0 "use strict"; const registerTFGPowerReworkMaterials = (event) => { -// Syngas -event.create('tfg:syngas') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(650)) - .components('11x carbon', '20x hydrogen', '12x oxygen') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0x7da6c2) - .secondaryColor(0xcfe3ee) + // Syngas + event.create('tfg:syngas') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(650)) + .components('11x carbon', '20x hydrogen', '12x oxygen') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0x7da6c2) + .secondaryColor(0xcfe3ee) -// Raw Aromatic Mix -event.create('tfg:raw_aromatic_mix') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(420)) - .components('137x carbon', '154x hydrogen') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0x8a4b3d) - .secondaryColor(0xd8b6ac) + // Raw Aromatic Mix + event.create('tfg:raw_aromatic_mix') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(420)) + .components('137x carbon', '154x hydrogen') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0x8a4b3d) + .secondaryColor(0xd8b6ac) -// Aromatic Feedstock -event.create('tfg:aromatic_feedstock') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(450)) - .components('67x carbon', '74x hydrogen') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0x915c2f) - .secondaryColor(0xe2c49b) + // Aromatic Feedstock + event.create('tfg:aromatic_feedstock') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(450)) + .components('67x carbon', '74x hydrogen') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0x915c2f) + .secondaryColor(0xe2c49b) -// Reformed Aromatic Feedstock -event.create('tfg:reformed_aromatic_feedstock') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(500)) - .components('133x carbon', '146x hydrogen') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0x4e6b83) - .secondaryColor(0xbacdde) + // Reformed Aromatic Feedstock + event.create('tfg:reformed_aromatic_feedstock') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(500)) + .components('133x carbon', '146x hydrogen') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0x4e6b83) + .secondaryColor(0xbacdde) -// Reformate Gas -event.create('tfg:reformate_gas') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(540)) - .components('13x carbon', '63x hydrogen') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0x6c7f4e) - .secondaryColor(0xc7d8b1) + // Reformate Gas + event.create('tfg:reformate_gas') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(540)) + .components('13x carbon', '63x hydrogen') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0x6c7f4e) + .secondaryColor(0xc7d8b1) -// Cracker Off-Gas -event.create('tfg:cracker_off_gas') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(480)) - .components('31x carbon', '128x hydrogen', '2x oxygen') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0xa36f2a) - .secondaryColor(0xecd8ae) + // Cracker Off-Gas + event.create('tfg:cracker_off_gas') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(480)) + .components('31x carbon', '128x hydrogen', '2x oxygen') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0xa36f2a) + .secondaryColor(0xecd8ae) } diff --git a/kubejs/startup_scripts/tfg/moon/blocks.moon_deco.js b/kubejs/startup_scripts/tfg/moon/blocks.moon_deco.js new file mode 100644 index 000000000..0cd4d8935 --- /dev/null +++ b/kubejs/startup_scripts/tfg/moon/blocks.moon_deco.js @@ -0,0 +1,53 @@ +"use strict"; + +function registerTFGWorldGenMoonDecoBlocks(event) { + + // Moon + + event.create('tfg:lunar_roots', 'tfg:decorative_plant') + .soundType('nether_wart') + .lightLevel(0.4) + .tagItem('tfg:moon_plants') + .tagBlock('minecraft:replaceable') + + event.create('tfg:lunar_sprouts', 'tfg:decorative_plant') + .soundType('nether_wart') + .tagItem('tfg:moon_plants') + .tagBlock('minecraft:replaceable') + + event.create('betterend:chorus_lily', 'tfc:ground_cover') + .soundType('cherry_wood') + .hardness(0.5) + .tagItem('tfg:moon_plants') + .tagBlock('minecraft:mineable/hoe') + .tagBlock('tfg:do_not_destroy_in_space') + .mapColor('terracotta_white') + .box(0, 0, 0, 16, 6, 16) + .fullBlock(false) + .opaque(false) + .notSolid() + .renderType('cutout') + + // 1 block tall + createPlant(event, 'inflexia', 'moon') + createPlant(event, 'chorus_grass', 'moon') + createPlant(event, 'salteago', 'moon') + createPlant(event, 'vaiolush_fern', 'moon') + + + // Mars + + + + // europa...? + + createPlant(event, 'crystal_grass', 'unused') + .box(3, 0, 3, 13, 12, 13) + createPlant(event, 'blooming_cooksonia', 'unused') + .box(3, 0, 3, 13, 12, 13) + createPlant(event, 'fracturn', 'unused') + .box(3, 0, 3, 13, 12, 13) + createPlant(event, 'jungle_grass', 'unused') + .box(3, 0, 3, 13, 12, 13) +} + diff --git a/kubejs/startup_scripts/tfg/moon/materials.moon.js b/kubejs/startup_scripts/tfg/moon/materials.moon.js new file mode 100644 index 000000000..24722152d --- /dev/null +++ b/kubejs/startup_scripts/tfg/moon/materials.moon.js @@ -0,0 +1,98 @@ +"use strict"; + +function registerTFGMoonMaterials(event) { + + // Solar Panel Chemicals + + event.create('tfg:chloryl_fluoride') + .gas() + .components('1x fluorine', '1x chlorine', '2x oxygen') + .color(0x8AFAF4) + + event.create('tfg:chlorine_pentafluoride') + .gas() + .components('5x fluorine', '1x chlorine') + .color(0x51F7C0) + + event.create('tfg:solar_coolant') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(163)) + .components('8x helium_3', '11x oxygen', '11x hydrogen') + .color(0xEDFFB3) + + event.create('tfg:solar_coolant_tier2') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(73)) + .components('8x tfg:solar_coolant', '1x argon') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0xfeff5d) + + // Moon Ore Line + + event.create('regolith_vapor') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(727)) + + event.create('tfg:certus_regolith') + .dust() + .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) + .iconSet(GTMaterialIconSet.CERTUS) + .color('0xc1e6e4') + .secondaryColor('0x7a5225') + + event.create('tfg:goethe_regolith') + .dust() + .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) + .iconSet(GTMaterialIconSet.METALLIC) + .color('0xb0af5b') + .secondaryColor('0x7a5225') + + event.create('tfg:bright_regolith') + .dust() + .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) + .iconSet(GTMaterialIconSet.SHINY) + .color('0xf0efe9') + .secondaryColor('0xffffff') + + event.create('tfg:cassiterite_regolith') + .dust() + .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) + .iconSet(GTMaterialIconSet.METALLIC) + .color('0xbab6b7') + .secondaryColor('0x7a5225') + + event.create('tfg:regolith_mush') + .dust() + .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) + .iconSet(GTMaterialIconSet.WOOD) + .color('0xa2cde0') + .secondaryColor('0x7a5225') + + // Ores + + event.create('armalcolite') + .gem(2) + .components('1x magnesium', '1x rutile', '1x ilmenite') + .color(0x443333) + .secondaryColor(0x5e2c21) + .iconSet(GTMaterialIconSet.getByName('tfc_emerald')) + .ore() + .addOreByproducts('rutile', 'rutile', 'ilmenite') + + event.create('desh') + .components('2x olivine', '1x rutile', '4x nitrogen') + .color(0xF39A4C) + .secondaryColor(0xF35A6C) + .iconSet(GTMaterialIconSet.getByName('tfc_hematite')) + .ore() + .addOreByproducts('olivine', 'rutile', 'rutile') + .ingot() + .liquid() + .blastTemp(2800, 'mid', GTValues.VA[GTValues.HV]) + .flags( + GTMaterialFlags.FORCE_GENERATE_BLOCK, + GTMaterialFlags.GENERATE_PLATE, + GTMaterialFlags.GENERATE_ROD, + GTMaterialFlags.GENERATE_DENSE, + GTMaterialFlags.GENERATE_GEAR, + GTMaterialFlags.GENERATE_FRAME, + GTMaterialFlags.DISABLE_ALLOY_BLAST + ) +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/nuclear/blocks.nuclear.js b/kubejs/startup_scripts/tfg/nuclear/blocks.nuclear.js new file mode 100644 index 000000000..e1a5954ae --- /dev/null +++ b/kubejs/startup_scripts/tfg/nuclear/blocks.nuclear.js @@ -0,0 +1,118 @@ +"use strict"; + +function registerTFGNuclearBlocks(event) { + + // Insulation + event.create('tfg:glacian_wool_frame') + .soundType('copper') + .hardness(4) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + + event.create('tfg:aes_insulation_frame') + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + + event.create('tfg:moderate_core_frame') + .soundType('copper') + .hardness(4) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + + event.create('tfg:impure_moderate_core_frame') + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + + // Unfinished Insulation + event.create('tfg:moderate_core') + .soundType('ancient_debris') + .hardness(7) + .resistance(8) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .model('tfg:block/fission/moderate_core') + + event.create('tfg:impure_moderate_core') + .soundType('ancient_debris') + .hardness(7) + .resistance(8) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .model('tfg:block/fission/impure_moderate_core') + + // Nuclear cooling tower + event.create('tfg:titanium_exhaust_vent', 'tfg:active_particle_emitter') + .textureAll('tfg:block/titanium_exhaust_vent') + .soundType('metal') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_black') + .speedFactor(1.1) + .activeOffset(3.5, 2, 3.5) + .activeVelocity(0.0, 0.0, 0.0) + .activeParticle('tfg:cooling_steam') + .activeBase(0.0, 12.5, 0.0) + .activeCount(8) + .activeForced(false) + .hasTicker(true) + + event.create('tfg:titanium_concrete') + .translationKey('block.tfg.titanium_concrete') + .model('tfg:block/concrete/titanium_concrete') + .soundType('stone') + .mapColor('stone') + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .tagBoth('tfg:titanium_concrete') + + event.create('tfg:polished_titanium_concrete') + .translationKey('block.tfg.polished_titanium_concrete') + .model('tfg:block/concrete/polished_titanium_concrete') + .soundType('stone') + .mapColor('stone') + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .tagBoth('tfg:titanium_concrete') + + event.create('tfg:titanium_concrete_tile') + .translationKey('block.tfg.titanium_concrete_tile') + .model('tfg:block/concrete/titanium_concrete_tile') + .soundType('stone') + .mapColor('stone') + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .tagBoth('tfg:titanium_concrete') + + event.create('tfg:titanium_concrete_tile_small') + .translationKey('block.tfg.titanium_concrete_tile_small') + .model('tfg:block/concrete/titanium_concrete_tile_small') + .soundType('stone') + .mapColor('stone') + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .tagBoth('tfg:titanium_concrete') + + event.create('tfg:titanium_concrete_bricks') + .translationKey('block.tfg.titanium_concrete_bricks') + .model('tfg:block/concrete/titanium_concrete_bricks') + .soundType('stone') + .mapColor('stone') + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .tagBoth('tfg:titanium_concrete') + + event.create('tfg:titanium_concrete_bricks_small') + .translationKey('block.tfg.titanium_concrete_bricks_small') + .model('tfg:block/concrete/titanium_concrete_bricks_small') + .soundType('stone') + .mapColor('stone') + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .tagBoth('tfg:titanium_concrete') + + event.create('tfg:titanium_concrete_bricks_square') + .translationKey('block.tfg.titanium_concrete_bricks_square') + .model('tfg:block/concrete/titanium_concrete_bricks_square') + .soundType('stone') + .mapColor('stone') + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .tagBoth('tfg:titanium_concrete') + +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/nuclear/items.nuclear.js b/kubejs/startup_scripts/tfg/nuclear/items.nuclear.js new file mode 100644 index 000000000..33d19dcb9 --- /dev/null +++ b/kubejs/startup_scripts/tfg/nuclear/items.nuclear.js @@ -0,0 +1,59 @@ +"use strict"; + +function registerTFGNuclearItems(event) { + + // Empty Fission Rod + + event.create('tfg:empty_rod') + .translationKey('item.tfg.empty_road') + .texture('tfg:item/fuel_rod_empty') + .tag('tfg:fission_rods') + + event.create('tfg:refrigerant_pellet') + .translationKey('item.tfg.refrigerant_pellet') + .texture('tfg:item/refrigerant_pellet') + .tag('tfg:fission_coolant') + + // Moderator Line + + event.create('tfg:graphite_compound') + .translationKey('item.tfg.graphite_compound') + .texture('tfg:item/graphite_line/graphite_compound') + + event.create('tfg:raw_graphite_briquette') + .translationKey('item.tfg.raw_graphite_briquette') + .texture('tfg:item/graphite_line/raw_graphite_briquette') + + event.create('tfg:faulty_graphite_briquette') + .translationKey('item.tfg.faulty_graphite_briquette') + .texture('tfg:item/graphite_line/faulty_graphite_briquette') + + event.create('tfg:washed_graphite_briquette') + .translationKey('item.tfg.washed_graphite_briquette') + + event.create('tfg:pure_graphite_rod') + .translationKey('item.tfg.pure_graphite_rod') + .texture('tfg:item/graphite_line/pure_graphite_rod') + + event.create('tfg:impure_graphite_rod') + .translationKey('item.tfg.impure_graphite_rod') + .texture('tfg:item/graphite_line/impure_graphite_rod') + + event.create('tfg:annealed_graphite_rod') + .translationKey('item.tfg.annealed_graphite_rod') + + event.create('tfg:impure_annealed_graphite_rod') + .translationKey('item.tfg.impure_annealed_graphite_rod') + + event.create('tfg:graphite_moderator') + .translationKey('item.tfg.graphite_moderator') + .texture('tfg:item/graphite_line/graphite_moderator') + + event.create('tfg:impure_graphite_moderator') + .translationKey('item.tfg.impure_graphite_moderator') + .texture('tfg:item/graphite_line/impure_graphite_moderator') + + event.create('tfg:advanced_polymer_binder') + .translationKey('item.tfg.advanced_polymer_binder') + .texture('tfg:item/graphite_line/advanced_polymer_binder') +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/nuclear/materials.nuclear.js b/kubejs/startup_scripts/tfg/nuclear/materials.nuclear.js index ac65b1ab0..b2eb4b3df 100644 --- a/kubejs/startup_scripts/tfg/nuclear/materials.nuclear.js +++ b/kubejs/startup_scripts/tfg/nuclear/materials.nuclear.js @@ -3,6 +3,16 @@ const registerTFGNuclearMaterials = (event) => { + // Fission Component + + event.create('tfg:tetrafluoroethane') + .fluid() + .gem() + .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES, GTMaterialFlags.DISABLE_DECOMPOSITION) + .iconSet(GTMaterialIconSet.QUARTZ) + .components('2x carbon', '2x hydrogen', '4x fluorine') + .color(0x46702e) + /* event.create('mysterious_ooze') .fluid() .color(0x500bbf) @@ -143,7 +153,7 @@ const registerTFGNuclearMaterials = (event) => { event.create('tfg:oxidized_nuclear_residue') .dust() - .components('1x uranium', '1x oxygen', '2x unknown') + .components('1x plutonium', '2x fluorine', '1x oxygen', '2x unknown') .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) .iconSet(GTMaterialIconSet.SHINY) .color(0x286529) @@ -152,7 +162,7 @@ const registerTFGNuclearMaterials = (event) => { event.create('tfg:refined_nuclear_residue') .dust() - .components('1x uranium', '2x unknown') + .components('1x plutonium', '2x unknown') .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) .color(0x82c383) .secondaryColor('0xffffff') @@ -205,15 +215,6 @@ const registerTFGNuclearMaterials = (event) => { .color(0x694c66) .radioactiveHazard(1000) - event.create("ostrum_iodide") - .ingot() - .components('2x ostrum', 'iodine') - .blastTemp(3700, 'mid', GTValues.VA[GTValues.IV], (20*120)) - .iconSet(GTMaterialIconSet.BRIGHT) - .flags(GTMaterialFlags.GENERATE_GEAR) - .color(0xc696f2) - .secondaryColor(0x9b99ff) - //#endregion }; diff --git a/kubejs/startup_scripts/tfg/blocks.supports.js b/kubejs/startup_scripts/tfg/primitive/blocks.supports.js similarity index 100% rename from kubejs/startup_scripts/tfg/blocks.supports.js rename to kubejs/startup_scripts/tfg/primitive/blocks.supports.js diff --git a/kubejs/startup_scripts/tfg/primitive/blocks.vases.js b/kubejs/startup_scripts/tfg/primitive/blocks.vases.js new file mode 100644 index 000000000..9cd41569e --- /dev/null +++ b/kubejs/startup_scripts/tfg/primitive/blocks.vases.js @@ -0,0 +1,77 @@ +"use strict"; + +function registerTFGVaseBlocks(event) { + + global.MINECRAFT_DYE_NAMES.forEach(color => { + event.create(`tfg:decorative_vase/generated/${color}`, 'cardinal') + .model(`tfg:block/decorative_vase/loot_vase_${color}`) + .soundType('decorated_pot') + .hardness(0.7) + .tagBlock('minecraft:mineable/pickaxe') + .mapColor(`color_${color}`) + .box(2, 0, 2, 14, 20, 14) + .fullBlock(false) + .opaque(false) + .renderType('cutout') + + event.create(`tfg:decorative_vase/${color}`, 'cardinal') + .model(`tfg:block/decorative_vase/vase_${color}`) + .soundType('decorated_pot') + .hardness(0.7) + .tagBlock('minecraft:mineable/pickaxe') + .mapColor(`color_${color}`) + .box(2, 0, 2, 14, 20, 14) + .fullBlock(false) + .opaque(false) + .renderType('cutout') + .blockEntity(be => { + be.attach('tfc:inventory', { + width: 9, + height: 1, + size: size => size.isSmallerThan('large') + }) + be.rightClickOpensInventory() + }) + + event.create(`tfg:decorative_vase/unfired/${color}`, 'cardinal') + .model(`tfg:block/decorative_vase/vase_unfired_${color}`) + .soundType('decorated_pot') + .hardness(0.7) + .tagBlock('minecraft:mineable/pickaxe') + .mapColor(`color_${color}`) + .box(2, 0, 2, 14, 20, 14) + .fullBlock(false) + .opaque(false) + .renderType('cutout') + }) + event.create('tfg:decorative_vase', 'cardinal') + .model('tfg:block/decorative_vase/vase') + .soundType('decorated_pot') + .hardness(0.7) + .tagBlock('minecraft:mineable/pickaxe') + .mapColor(`color_gray`) + .box(2, 0, 2, 14, 20, 14) + .fullBlock(false) + .opaque(false) + .renderType('cutout') + .blockEntity(be => { + be.attach('tfc:inventory', { + width: 9, + height: 1, + size: size => size.isSmallerThan('large') + }) + be.rightClickOpensInventory() + }) + + event.create('tfg:decorative_vase/unfired', 'cardinal') + .model('tfg:block/decorative_vase/vase_unfired') + .soundType('decorated_pot') + .hardness(0.7) + .tagBlock('minecraft:mineable/pickaxe') + .mapColor(`color_gray`) + .box(2, 0, 2, 14, 20, 14) + .fullBlock(false) + .opaque(false) + .renderType('cutout') + +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/primitive/items.primitive.js b/kubejs/startup_scripts/tfg/primitive/items.primitive.js new file mode 100644 index 000000000..35b0a78d1 --- /dev/null +++ b/kubejs/startup_scripts/tfg/primitive/items.primitive.js @@ -0,0 +1,139 @@ +"use strict"; + +function registerTFGPrimitiveItems(event) { + + // Paper making + event.create('tfg:hardwood_strip') + event.create('tfg:soaked_hardwood_strip') + event.create('tfg:soaked_unrefined_paper') + + // Chalk + event.create('tfg:unfired_chalk') + + Color.DYE.forEach((dyeName, dye) => { + event.create(`tfg:wet_${dyeName}_chalk`) + .textureJson({ + layer0: 'tfg:item/unfired_chalk' + }) + .color(0, dye.getHexJS()); + }); + + // Primitive rubber gloves + event.create('tfg:prepared_leather_gloves') + event.create('tfg:latex_soaked_gloves') + + // Chipboard + event.create('tfg:chipboard_composite') + event.create('tfg:treated_chipboard_composite') + event.create('tfg:high_density_treated_fiberboard') + + // Wax + event.create('tfg:paraffin_wax') + event.create('tfg:conifer_rosin') + + // Tools + event.create('tfg:flint_club_head') + + event.create('tfg:flint_arrow_head') + event.create('tfg:fletching') + + event.create('tfg:armor_stand_arms') + + event.create('tfg:harvest_basket') + .parentModel('tfg:item/harvest_basket') + .maxDamage(128) + + event.create('tfg:aluminium_harvest_basket') + .parentModel('tfg:item/aluminium_harvest_basket') + .unstackable() + + // Carts + event.create('tfg:cobalt_brass_wheel') + + // Fishing Nets + event.create('tfg:fishing_net/wood') + .translationKey('item.tfg.fishing_net.wood') + .parentModel('tfg:item/fishing_nets/wood_fishing_net') + .texture('tfg:item/fishing_nets/wood_fishing_net') + .maxDamage(112) + + event.create('tfg:fishing_net/brass') + .translationKey('item.tfg.fishing_net.brass') + .parentModel('tfg:item/fishing_nets/brass_fishing_net') + .texture('tfg:item/fishing_nets/brass_fishing_net') + .maxDamage(326) + + event.create('tfg:fishing_net/rose_gold') + .translationKey('item.tfg.fishing_net.rose_gold') + .parentModel('tfg:item/fishing_nets/rose_gold_fishing_net') + .texture('tfg:item/fishing_nets/rose_gold_fishing_net') + .maxDamage(380) + + event.create('tfg:fishing_net/sterling_silver') + .translationKey('item.tfg.fishing_net.sterling_silver') + .parentModel('tfg:item/fishing_nets/sterling_silver_fishing_net') + .texture('tfg:item/fishing_nets/sterling_silver_fishing_net') + .maxDamage(380) + + event.create('tfg:fishing_net/invar') + .translationKey('item.tfg.fishing_net.invar') + .parentModel('tfg:item/fishing_nets/invar_fishing_net') + .texture('tfg:item/fishing_nets/invar_fishing_net') + .maxDamage(740) + + event.create('tfg:fishing_net/tin_alloy') + .translationKey('item.tfg.fishing_net.tin_alloy') + .parentModel('tfg:item/fishing_nets/tin_alloy_fishing_net') + .texture('tfg:item/fishing_nets/tin_alloy_fishing_net') + .maxDamage(710) + + event.create('tfg:fishing_net/cupronickel') + .translationKey('item.tfg.fishing_net.cupronickel') + .parentModel('tfg:item/fishing_nets/cupronickel_fishing_net') + .texture('tfg:item/fishing_nets/cupronickel_fishing_net') + .maxDamage(560) + + event.create('tfg:fishing_net/magnalium') + .translationKey('item.tfg.fishing_net.magnalium') + .parentModel('tfg:item/fishing_nets/magnalium_fishing_net') + .texture('tfg:item/fishing_nets/magnalium_fishing_net') + .maxDamage(1830) + + // Universal compost items + event.create('tfg:universal_compost_browns') + .tag('tfc:compost_browns_low') + + event.create('tfg:universal_compost_greens') + .tag('tfc:compost_greens_low') + + // Etched Diamond Etching Tip + event.create('tfg:etching_diamond_tip') + + // Cloth & String + event.create('tfg:polycaprolactam_fabric') + event.create('tfg:polycaprolactam_string') + event.create('tfg:phantom_silk') + event.create('tfg:phantom_thread') + + // Flax Stuff + event.create('tfg:flax_waste') + .tag('tfc:scrapable') + event.create('tfg:flax_tow') + .tag('tfg:burlap_fiber') + .tag('tfc:compost_browns') + event.create('tfg:flax_line') + .tag('tfc:compost_browns_low') + event.create('tfg:linen_thread') + .tag('forge:string') + event.create('tfg:linen_cloth') + .tag('forge:cloth') + .tag('tfc:sewing_light_cloth') + + event.create('tfg:flax_bundle') + .tag('tfc:scrapable') + .texture('tfg:item/flax_bundle') + + event.create('tfg:bundled_scraped_flax') + .tag('tfc:scrapable') + .texture('tfg:item/bundled_scraped_flax') +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/primitive/materials.primitive.js b/kubejs/startup_scripts/tfg/primitive/materials.primitive.js new file mode 100644 index 000000000..c5230e941 --- /dev/null +++ b/kubejs/startup_scripts/tfg/primitive/materials.primitive.js @@ -0,0 +1,91 @@ +"use strict"; + +function registerTFGPrimitiveMaterials(event) { + + // Paper + event.create('hardwood') + .dust() + .flags(GTMaterialFlags.FLAMMABLE) + .iconSet(GTMaterialIconSet.WOOD) + .color('0x7a5225') + .secondaryColor('0x7a5225') + + event.create('thermochemically_treated_hardwood') + .dust() + .flags(GTMaterialFlags.FLAMMABLE) + .iconSet(GTMaterialIconSet.WOOD) + .color('0x52482c') + .secondaryColor('0x52482c') + + // Tree tapping + event.create('tfg:latex') + .liquid() + .color(0xFBB982) + + event.create('tfg:vulcanized_latex') + .liquid() + .color(0xc79973) + + event.create('tfg:conifer_pitch') + .liquid() + .color(0xfbdf82) + .secondaryColor(0xff9d2e) + + // Food/Cooking + event.create('lactose') + .dust() + .iconSet(GTMaterialIconSet.FINE) + .color('0xede8da') + .secondaryColor('0xeddcad') + .components('12x carbon', '22x hydrogen', '11x oxygen') + + event.create('tfg:sodium_dihydrogen_citrate') + .dust() + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .iconSet(GTMaterialIconSet.BRIGHT) + .components('6x carbon', '7x hydrogen', '1x sodium', '7x oxygen') + .color('0xE38818') + + event.create('tfg:citric_acid') + .dust() + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .iconSet(GTMaterialIconSet.SHINY) + .components('6x carbon', '8x hydrogen', '7x oxygen') + .color('0xE3AD18') + + // I decided to make these materials because why not? + event.create('tfg:rich_stock') + .liquid(new GTFluidBuilder().customStill().state(GTFluidState.LIQUID).temperature(360)); + + event.create('tfg:light_stock') + .liquid(new GTFluidBuilder().customStill().state(GTFluidState.LIQUID).temperature(360)); + + event.create('tfg:brown_gravy') + .liquid(new GTFluidBuilder().customStill().state(GTFluidState.LIQUID).temperature(360)); + + // Ores -- these need to be in the gtceu namespace for the ore tool to work + event.create('tarkianite') + .ore() + .components('1x copper', '1x iron', '4x rhenium', '4x molybdenum', '8x sulfur') + .color(0x8bb054) + .secondaryColor(0x3d8021) + .iconSet(GTMaterialIconSet.getByName('tfc_emerald')) + .addOreByproducts('sulfur', 'rhenium', 'molybdenum') + + // Metals/minerals + event.create('aluminium_silicate') + .dust() + .ingot() + .liquid(new GTFluidBuilder().state(GTFluidState.LIQUID).temperature(1520)) + .components('2x aluminium', '1x silicon', '5x oxygen') + .iconSet('metallic') + .color(0xB6D3FF) + .secondaryColor(0x6F4AB3) + + event.create('tfg:kaolinite') + .dust() + .components('2x aluminium', '2x silicon', '9x oxygen', '4x hydrogen') + .color(0xEEB9AD) + .secondaryColor(0xF6A797) + .formula("Al2Si2O5(OH)4") +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/space_general/items.space.js b/kubejs/startup_scripts/tfg/space_general/items.space.js new file mode 100644 index 000000000..a13727058 --- /dev/null +++ b/kubejs/startup_scripts/tfg/space_general/items.space.js @@ -0,0 +1,33 @@ +"use strict"; + +function registerTFGSpaceItems(event) { + + // Space suits + event.create('tfg:space_suit_fabric') + event.create('tfg:better_space_suit_fabric') + + // Tier2 Insulation + event.create('tfg:aes_wool') + event.create('tfg:aes_compressed_wool') + event.create('tfg:aes_insulation_sheet') + event.create('tfg:aes_insulation_roll') + + //Tier 2 Rocket Parts + event.create('tfg:rocket_fin_t2') + event.create('tfg:rocket_cone_t2') + + //Tier 3 Insulation + event.create('tfg:aes_polyurethane') + event.create('tfg:mli_shielding') + event.create('tfg:silica_aerogel') + + //Tier 3 Rocket Parts + event.create('tfg:rocket_fin_t3') + event.create('tfg:rocket_cone_t3') + event.create('tfg:elite_power_thruster') + + // Solar Panel + event.create('tfg:photo_cell_t1') + .translationKey("item.tfg.basic.photovoltaic.cell") + .texture('tfg:item/photo_cell_t1') +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/space_general/materials.rockets.js b/kubejs/startup_scripts/tfg/space_general/materials.rockets.js new file mode 100644 index 000000000..49ffd7665 --- /dev/null +++ b/kubejs/startup_scripts/tfg/space_general/materials.rockets.js @@ -0,0 +1,162 @@ +"use strict"; + +function registerTFGRocketMaterials(event) { + + // Space Rocket Materials + + event.create('rocket_alloy_t1') + .ingot() + .components('6x aluminium', '2x stainless_steel', '1x red_steel') + .color(0x333e47) + .iconSet('metallic') + .flags(GTMaterialFlags.GENERATE_PLATE, GTMaterialFlags.GENERATE_ROD, GTMaterialFlags.GENERATE_DENSE, GTMaterialFlags.GENERATE_GEAR) + .blastTemp(1760, 'low', 256, 900) + + event.create('rocket_alloy_t2') + .ingot() + .components('19x titanium', '4x vanadium', '3x aluminium', '3x chromium', '3x tin') + .color(0x3c253d) + .iconSet('metallic') + .flags(GTMaterialFlags.GENERATE_PLATE, GTMaterialFlags.GENERATE_ROD, GTMaterialFlags.GENERATE_DENSE, GTMaterialFlags.GENERATE_GEAR, GTMaterialFlags.DISABLE_ALLOY_BLAST) + .blastTemp(3200, 'mid', 1024, 1100) + .liquid() + +/* event.create('rocket_alloy_t3') + .ingot() + .components('8x titanium', '9x tungsten_steel', '2x tantalum', '2x radon') + .color(0x6c678b) + //.secondaryColor(0xa59fc6) + .liquid() + .removeHazard() + .iconSet('metallic') + .flags(GTMaterialFlags.GENERATE_PLATE, GTMaterialFlags.GENERATE_ROD, GTMaterialFlags.GENERATE_DENSE, GTMaterialFlags.GENERATE_GEAR) + .blastTemp(4200, 'high', 4096, 1300) + */ + + // Insulation + event.create('vitrified_asbestos') + .dust() + .fluid() + .iconSet('glass') + .color(0xcccccc) + + event.create('tfg:aes_mix') + .dust() + .flags(GTMaterialFlags.DECOMPOSITION_BY_CENTRIFUGING) + .components('5x silicon_dioxide', '4x quicklime', '1x magnesia') + .hazard(HazardProperty.HazardTrigger.SKIN_CONTACT, GTMedicalConditions.CHEMICAL_BURNS) + .color(0xE0E9E4) + event.create('tfg:molten_aes') + .liquid(2900) + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .components('5x silicon_dioxide', '4x quicklime', '1x magnesia') + .color(0xe65609) + .secondaryColor(0xe65609) + + //#region Ammonia Borane + event.create('tfg:sodium_hydride') + .dust() + .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) + .components('1x sodium', '1x hydrogen') + .color(0xEDF5F3) + event.create('tfg:boric_acid') + .dust() + .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) + .components('3x hydrogen', '1x boron', '3x oxygen') + .color(0xDFEDDF) + .secondaryColor(0xDFEDDF) + event.create('tfg:trimethyl_borate') + .liquid() + .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) + .components('3x carbon', '9x hydrogen', '1x boron', '3x oxygen') + .color(0xF7F7F7) + event.create('tfg:sodium_borohydride') + .dust() + .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) + .components('1x sodium', '1x boron', '4x hydrogen') + .color(0xE8F1FF) + .secondaryColor(0xE8F1FF) + event.create('tfg:sodium_methoxide') + .dust() + .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) + .components('1x sodium', '1x oxygen', '1x carbon', '3x hydrogen') + .color(0xE8E5DF) + .secondaryColor(0xE8E5DF) + event.create('tfg:ammonia_borane') + .dust() + .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING, GTMaterialFlags.GENERATE_PLATE) + .components('1x ammonia', '1x boron', '3x hydrogen') + .color(0xCCE3E3) + .secondaryColor(0xCCE3E3) + //#endregion + + //#region polyurethane + event.create('tfg:aniline') + .liquid() + .components('6x carbon', '5x hydrogen', '1x nitrogen', '2x hydrogen') + .color(0xBAB999) + event.create('tfg:dimethyl_carbonate') + .liquid() + .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) + .components('3x formaldehyde') // CH2O + .color(0xFFFFF2) + event.create('tfg:methyl_phenylcarbamate') + .liquid() + .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) + .components('8x carbon','9x hydrogen','1x nitrogen', '2x oxygen') + .color(0xB4EDB4) + event.create('tfg:methylene_diphenyl_dicarbamate') + .liquid() + .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) + .components('17x carbon','18x hydrogen','2x nitrogen', '4x oxygen') + .color(0x69C2C1) + event.create('tfg:methylene_diphenyl_diisocyanate') + .dust() + .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) + .components('13x carbon','10x hydrogen','2x nitrogen', '2x oxygen') + .color(0xFFFFBA) + //#endregion + + //#region aerogel + event.create('tfg:tmos') + .liquid() + .formula("Si(OCH3)4") + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0xC2C6CC) + event.create('tfg:silica_gel') + .liquid() + .color(0x60BABF) + .secondaryColor(0xFFD38C) + event.create('tfg:soaked_silica_gel') + .liquid() + .color(0x9ED5D9) + //#endregion + + + // Space suit gases (these all add up to 10B of components = 1B of space suit gas) + + event.create('tfg:compressed_nitrox') + .gas() + .components('8x nitrogen', '2x oxygen') + .color(0xaef5ef) + + event.create('tfg:compressed_heliox') + .gas() + .components('8x helium', '2x oxygen') + .color(0xf5eeb3) + + event.create('tfg:compressed_heliox_3') + .gas() + .components('8x helium_3', '2x oxygen') + .color(0xf5ea90) + + event.create('tfg:compressed_trimix') + .gas() + .components('5x nitrogen', '3x oxygen', '2x helium') + .color(0xc3fab9) + + event.create('tfg:compressed_trimix_3') + .gas() + .components('5x nitrogen', '3x oxygen', '2x helium_3') + .color(0xa3ed95) +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/blocks.aqueducts.js b/kubejs/startup_scripts/tfg/stone_types/blocks.aqueducts.js similarity index 100% rename from kubejs/startup_scripts/tfg/blocks.aqueducts.js rename to kubejs/startup_scripts/tfg/stone_types/blocks.aqueducts.js diff --git a/kubejs/startup_scripts/tfg/blocks.space.js b/kubejs/startup_scripts/tfg/stone_types/blocks.rocks.js similarity index 71% rename from kubejs/startup_scripts/tfg/blocks.space.js rename to kubejs/startup_scripts/tfg/stone_types/blocks.rocks.js index d9ce73696..be5727415 100644 --- a/kubejs/startup_scripts/tfg/blocks.space.js +++ b/kubejs/startup_scripts/tfg/stone_types/blocks.rocks.js @@ -1,60 +1,49 @@ "use strict"; -function registerTFGSpaceBlocks(event) { - - // #region Dimension markers - event.create('tfg:marker/moon') - .stoneSoundType() - .item(item => { - item.modelJson({ parent: 'tfg:block/marker/moon' }) - }) - .tagBlock('c:hidden_from_recipe_viewers') - .fullBlock(true) - .opaque(true) - - event.create('tfg:marker/mars') - .stoneSoundType() - .item(item => { - item.modelJson({ parent: 'tfg:block/marker/mars' }) - }) - .tagBlock('c:hidden_from_recipe_viewers') - .fullBlock(true) - .opaque(true) - - event.create('tfg:marker/venus') - .stoneSoundType() - .item(item => { - item.modelJson({ parent: 'tfg:block/marker/venus' }) - }) - .tagBlock('c:hidden_from_recipe_viewers') - .fullBlock(true) - .opaque(true) - - event.create('tfg:marker/mercury') - .stoneSoundType() - .item(item => { - item.modelJson({ parent: 'tfg:block/marker/mercury' }) - }) - .tagBlock('c:hidden_from_recipe_viewers') - .fullBlock(true) - .opaque(true) - - event.create('tfg:marker/glacio') - .stoneSoundType() - .item(item => { - item.modelJson({ parent: 'tfg:block/marker/glacio' }) - }) - .tagBlock('c:hidden_from_recipe_viewers') - .fullBlock(true) - .opaque(true) - - // #endregion Dimension markers +function registerTFGRockBlocks(event) { const SHAPES = ['stairs', 'slab', 'wall'] const AA_REGULAR_STONES = ['moon', 'mars', 'venus', 'mercury', 'glacio'] // #region Raw Stones + + SHAPES.forEach(shape => { + event.create(`tfg:rock/deepslate_${shape}`, shape) + .soundType(global.STONE_CHARACS.deepslate.sound) + .textureAll('minecraft:block/deepslate') + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/dripstone_${shape}`, shape) + .soundType(global.STONE_CHARACS.dripstone.sound) + .textureAll('minecraft:block/dripstone_block') + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/crackrack_${shape}`, shape) + .soundType(global.STONE_CHARACS.crackrack.sound) + .textureAll('beneath:block/crackrack') + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) + .mapColor(global.STONE_CHARACS.crackrack.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + event.create('tfg:rock/moon_stone_wall', 'wall') .soundType(global.STONE_CHARACS.moon.sound) .textureAll('ad_astra:block/moon_stone') @@ -139,10 +128,57 @@ function registerTFGSpaceBlocks(event) { .fullBlock(true) .opaque(true) }) - + // #endregion Raw Stones // #region Hardened Stones + event.create('tfg:rock/hardened_deepslate') + .soundType(global.STONE_CHARACS.deepslate.sound) + .property(BlockProperties.AXIS) + .requiresTool(true) + .item(item => { + item.modelJson({ parent: 'minecraft:item/deepslate' }) + }) + .tagBlock('tfc:can_carve') + .tagBoth('forge:stone') + .tagBoth('tfc:rock/hardened') + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + event.create('tfg:rock/hardened_blackstone') + .soundType(global.STONE_CHARACS.blackstone.sound) + .requiresTool(true) + .item(item => { + item.modelJson({ parent: 'minecraft:item/blackstone' }) + }) + .tagBlock('tfc:can_carve') + .tagBoth('forge:stone') + .tagBoth('tfc:rock/hardened') + .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + event.create('tfg:rock/hardened_dripstone') + .soundType(global.STONE_CHARACS.dripstone.sound) + .stoneSoundType() + .requiresTool(true) + .item(item => { + item.modelJson({ parent: 'minecraft:item/dripstone_block' }) + }) + .tagBlock('tfc:can_carve') + .tagBoth('forge:stone') + .tagBoth('tfc:rock/hardened') + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + event.create('tfg:rock/hardened_moon_stone') .soundType(global.STONE_CHARACS.moon.sound) .requiresTool(true) @@ -251,6 +287,45 @@ function registerTFGSpaceBlocks(event) { // #endregion Hardened Stones // #region Loose Stones + event.create('tfg:loose/deepslate', 'tfc:loose_rock') + .soundType(global.STONE_CHARACS.deepslate.sound) + .itemTexture('tfg:item/loose/deepslate') + .rockTypeModel(global.STONE_CHARACS.deepslate.type) + .translationKey("block.tfg.loose.deepslate") + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('tfc:loose_rocks') + .tagItem('tfc:any_knapping') + .tagItem('tfc:rock_knapping') + .tagItem(`tfc:${global.STONE_CHARACS.deepslate.type}_rock`) + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .tagItem("rnr:loose_rock_items") + + event.create('tfg:loose/dripstone', 'tfc:loose_rock') + .soundType(global.STONE_CHARACS.dripstone.sound) + .itemTexture('tfg:item/loose/dripstone') + .rockTypeModel(global.STONE_CHARACS.dripstone.type) + .translationKey("block.tfg.loose.dripstone") + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('tfc:loose_rocks') + .tagItem('tfc:any_knapping') + .tagItem('tfc:rock_knapping') + .tagItem(`tfc:${global.STONE_CHARACS.dripstone.type}_rock`) + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .tagItem("rnr:loose_rock_items") + + event.create('tfg:loose/crackrack', 'tfc:loose_rock') + .soundType(global.STONE_CHARACS.crackrack.sound) + .itemTexture('tfg:item/loose/crackrack') + .rockTypeModel(global.STONE_CHARACS.crackrack.type) + .translationKey("block.tfg.loose.crackrack") + .mapColor(global.STONE_CHARACS.crackrack.mapColor) + .tagBlock('tfc:loose_rocks') + .tagItem('tfc:any_knapping') + .tagItem('tfc:rock_knapping') + .tagItem(`tfc:${global.STONE_CHARACS.crackrack.type}_rock`) + .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) + .tagItem("rnr:loose_rock_items") + event.create('tfg:loose/moon_stone', 'tfc:loose_rock') .soundType(global.STONE_CHARACS.moon.sound) .itemTexture('tfg:item/loose/moon_stone') @@ -340,6 +415,37 @@ function registerTFGSpaceBlocks(event) { // #endregion Loose stones // #region Spikes + + event.create('tfg:spike/deepslate_spike', 'tfc:rock_spike') + .textureAll('minecraft:block/deepslate') + .soundType(global.STONE_CHARACS.deepslate.sound) + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .hardness(0.8) + .resistance(0.8) + .requiresTool(true) + + event.create('tfg:spike/blackstone_spike', 'tfc:rock_spike') + .textureAll('minecraft:block/blackstone') + .soundType(global.STONE_CHARACS.blackstone.sound) + .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .hardness(0.8) + .resistance(0.8) + .requiresTool(true) + + event.create('tfg:spike/dripstone_spike', 'tfc:rock_spike') + .textureAll('minecraft:block/dripstone_block') + .soundType(global.STONE_CHARACS.dripstone.sound) + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .hardness(0.8) + .resistance(0.8) + .requiresTool(true) + event.create('tfg:spike/moon_stone_spike', 'tfc:rock_spike') .textureAll('ad_astra:block/moon_stone') .soundType(global.STONE_CHARACS.moon.sound) @@ -407,6 +513,166 @@ function registerTFGSpaceBlocks(event) { // #endregion Spikes // #region Cobblestones + + // Deepslate + event.create('tfg:rock/mossy_cobble_deepslate') + .soundType(global.STONE_CHARACS.deepslate.sound) + .tagBoth('forge:cobblestone') + .tagBoth('forge:cobblestone/normal') + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/mossy_cobble_deepslate_${shape}`, shape) + .soundType(global.STONE_CHARACS.deepslate.sound) + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + // Blackstone + event.create('tfg:rock/cobble_blackstone') + .soundType(global.STONE_CHARACS.blackstone.sound) + .tagBoth('forge:cobblestone') + .tagBoth('forge:cobblestone/normal') + .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/cobble_blackstone_${shape}`, shape) + .soundType(global.STONE_CHARACS.blackstone.sound) + .textureAll('minecraft:block/blackstone_top') + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + event.create('tfg:rock/mossy_cobble_blackstone') + .soundType(global.STONE_CHARACS.blackstone.sound) + .tagBoth('forge:cobblestone') + .tagBoth('forge:cobblestone/normal') + .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/mossy_cobble_blackstone_${shape}`, shape) + .soundType(global.STONE_CHARACS.blackstone.sound) + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + // Dripstone + event.create('tfg:rock/cobble_dripstone') + .soundType(global.STONE_CHARACS.dripstone.sound) + .tagBoth('forge:cobblestone') + .tagBoth('forge:cobblestone/normal') + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/cobble_dripstone_${shape}`, shape) + .soundType(global.STONE_CHARACS.dripstone.sound) + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + event.create('tfg:rock/mossy_cobble_dripstone') + .soundType(global.STONE_CHARACS.dripstone.sound) + .tagBoth('forge:cobblestone') + .tagBoth('forge:cobblestone/normal') + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/mossy_cobble_dripstone_${shape}`, shape) + .soundType(global.STONE_CHARACS.dripstone.sound) + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + // Crackrack + event.create('tfg:rock/cobble_crackrack') + .soundType(global.STONE_CHARACS.crackrack.sound) + .tagBoth('forge:cobblestone') + .tagBoth('forge:cobblestone/normal') + .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) + .mapColor(global.STONE_CHARACS.crackrack.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/cobble_crackrack_${shape}`, shape) + .soundType(global.STONE_CHARACS.crackrack.sound) + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) + .mapColor(global.STONE_CHARACS.crackrack.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + event.create('tfg:rock/mossy_cobble_crackrack') + .soundType(global.STONE_CHARACS.crackrack.sound) + .tagBoth('forge:cobblestone') + .tagBoth('forge:cobblestone/normal') + .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) + .mapColor(global.STONE_CHARACS.crackrack.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/mossy_cobble_crackrack_${shape}`, shape) + .soundType(global.STONE_CHARACS.crackrack.sound) + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) + .mapColor(global.STONE_CHARACS.crackrack.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + // Moon event.create('tfg:rock/cobble_moon_wall', 'wall') .soundType(global.STONE_CHARACS.moon.sound) @@ -685,6 +951,50 @@ function registerTFGSpaceBlocks(event) { // #endregion Cobblestones // #region Gravels + event.create('tfg:rock/gravel_deepslate') + .soundType('gravel') + .tagBoth('forge:gravel') + .tagBoth('tfc:rock/gravel') + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('minecraft:mineable/shovel') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + + event.create('tfg:rock/gravel_blackstone') + .soundType('gravel') + .tagBoth('forge:gravel') + .tagBoth('tfc:rock/gravel') + .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('minecraft:mineable/shovel') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + + event.create('tfg:rock/gravel_dripstone') + .soundType('gravel') + .tagBoth('forge:gravel') + .tagBoth('tfc:rock/gravel') + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/shovel') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + + event.create('tfg:rock/gravel_crackrack') + .soundType('gravel') + .tagBoth('forge:gravel') + .tagBoth('tfc:rock/gravel') + .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) + .mapColor(global.STONE_CHARACS.crackrack.mapColor) + .tagBlock('minecraft:mineable/shovel') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + event.create('tfg:rock/gravel_moon') .soundType('gravel') .tagBoth('forge:gravel') @@ -775,6 +1085,28 @@ function registerTFGSpaceBlocks(event) { // #endregion Gravels // #region Smooth (Polished/Cut) Stones + + event.create('tfg:rock/polished_crackrack') + .soundType(global.STONE_CHARACS.crackrack.sound) + .tagBoth('forge:smooth_stone') + .tagBoth('tfc:igneous_intrusive_items') + .tagBoth('tfc:rock/smooth') + .mapColor('crimson_stem') + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/polished_crackrack_${shape}`, shape) + .soundType(global.STONE_CHARACS.crackrack.sound) + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) + .mapColor(global.STONE_CHARACS.crackrack.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + event.create('tfg:rock/polished_moon_wall', 'wall') .soundType(global.STONE_CHARACS.moon.sound) .textureAll('ad_astra:block/polished_moon_stone') @@ -871,6 +1203,174 @@ function registerTFGSpaceBlocks(event) { // #endregion Smooth (Polished/Cut) Stones // #region Bricks / Decorative + + // Deepslate + SHAPES.forEach(shape => { + event.create(`tfg:rock/cracked_bricks_deepslate_${shape}`, shape) + .soundType(global.STONE_CHARACS.deepslate.sound) + .textureAll('minecraft:block/cracked_deepslate_bricks') + .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/cracked_tiles_deepslate_${shape}`, shape) + .soundType(global.STONE_CHARACS.deepslate.sound) + .textureAll('minecraft:block/cracked_deepslate_tiles') + .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + event.create('tfg:rock/mossy_bricks_deepslate') + .soundType(global.STONE_CHARACS.deepslate.sound) + .tagBoth('minecraft:stone_bricks') + .tagBoth('forge:stone_bricks') + .tagBoth('tfc:rock/bricks') + .tagBoth('tfc:rock/mossy_bricks') + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/mossy_bricks_deepslate_${shape}`, shape) + .soundType(global.STONE_CHARACS.deepslate.sound) + .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + // Blackstone + SHAPES.forEach(shape => { + event.create(`tfg:rock/cracked_bricks_blackstone_${shape}`, shape) + .soundType(global.STONE_CHARACS.blackstone.sound) + .textureAll('minecraft:block/cracked_polished_blackstone_bricks') + .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + event.create('tfg:rock/mossy_bricks_blackstone') + .soundType(global.STONE_CHARACS.blackstone.sound) + .tagBoth('minecraft:stone_bricks') + .tagBoth('forge:stone_bricks') + .tagBoth('tfc:rock/bricks') + .tagBoth('tfc:rock/mossy_bricks') + .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/mossy_bricks_blackstone_${shape}`, shape) + .soundType(global.STONE_CHARACS.blackstone.sound) + .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + // Dripstone + event.create('tfg:rock/cracked_bricks_dripstone') + .soundType(global.STONE_CHARACS.dripstone.sound) + .tagBoth('minecraft:stone_bricks') + .tagBoth('forge:stone_bricks') + .tagBoth('tfc:rock/bricks') + .tagBoth('tfc:rock/mossy_bricks') + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/cracked_bricks_dripstone_${shape}`, shape) + .soundType(global.STONE_CHARACS.dripstone.sound) + .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + event.create('tfg:rock/mossy_bricks_dripstone') + .soundType(global.STONE_CHARACS.dripstone.sound) + .tagBoth('minecraft:stone_bricks') + .tagBoth('forge:stone_bricks') + .tagBoth('tfc:rock/bricks') + .tagBoth('tfc:rock/mossy_bricks') + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/mossy_bricks_dripstone_${shape}`, shape) + .soundType(global.STONE_CHARACS.dripstone.sound) + .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + // Crackrack + SHAPES.forEach(shape => { + event.create(`tfg:rock/cracked_bricks_nether_${shape}`, shape) + .soundType(global.STONE_CHARACS.nether.sound) + .textureAll('minecraft:block/cracked_nether_bricks') + .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.nether.type}_items`) + .mapColor(global.STONE_CHARACS.nether.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + event.create('tfg:rock/mossy_bricks_nether') + .soundType(global.STONE_CHARACS.nether.sound) + .tagBoth('minecraft:stone_bricks') + .tagBoth('forge:stone_bricks') + .tagBoth('tfc:rock/bricks') + .tagBoth('tfc:rock/mossy_bricks') + .tagBoth(`tfc:${global.STONE_CHARACS.nether.type}_items`) + .mapColor(global.STONE_CHARACS.nether.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/mossy_bricks_nether_${shape}`, shape) + .soundType(global.STONE_CHARACS.nether.sound) + .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.nether.type}_items`) + .mapColor(global.STONE_CHARACS.nether.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + // Moon Stone SHAPES.forEach(shape => { event.create(`tfg:rock/cracked_bricks_moon_${shape}`, shape) @@ -1332,300 +1832,4 @@ function registerTFGSpaceBlocks(event) { // #endregion Sandstone - // #region Plants - - /* - Custom TFG Builder information https://github.com/TerraFirmaGreg-Team/Modpack-Modern/wiki/%5BEN%5D-TFG-Custom-Kubejs-Scripts - */ - - event.create('tfg:lunar_roots', 'tfg:decorative_plant') - .soundType('nether_wart') - .lightLevel(0.4) - .tagItem('tfg:moon_plants') - .tagBlock('minecraft:replaceable') - - event.create('tfg:lunar_sprouts', 'tfg:decorative_plant') - .soundType('nether_wart') - .tagItem('tfg:moon_plants') - .tagBlock('minecraft:replaceable') - - event.create('tfg:corallium_arenicolus_0', 'tfg:tall_decorative_plant') - .height(2) - .soundType('nether_wart') - .tagItem('tfg:venus_plants') - .lightLevel(0.4) - .renderType('translucent') - - event.create('tfg:corallium_arenicolus_1', 'tfg:decorative_plant') - .soundType('nether_wart') - .tagItem('tfg:venus_plants') - .box(3, 0, 3, 13, 14, 13) - - event.create('tfg:corallium_arenicolus_2', 'tfg:decorative_plant') - .soundType('nether_wart') - .tagItem('tfg:venus_plants') - .renderType('translucent') - .box(0, 0, 0, 16, 4, 16) - - event.create('tfg:corallium_arenicolus_3', 'tfg:decorative_plant') - .soundType('nether_wart') - .tagItem('tfg:venus_plants') - .box(3, 0, 3, 13, 14, 13) - - event.create('tfg:corallium_arenicolus_4', 'tfg:decorative_plant') - .soundType('nether_wart') - .tagItem('tfg:venus_plants') - .box(3, 0, 3, 13, 14, 13) - - event.create('tfg:corallium_arenicolus_5', 'tfg:decorative_plant') - .soundType('nether_wart') - .tagItem('tfg:venus_plants') - .box(3, 0, 3, 13, 14, 13) - - event.create('tfg:geyser_source', 'tfg:particle_emitter_decoration') - .soundType('dripstone_block') - .mapColor('color_white') - .resistance(6) - .hardness(1.5) - .particleOffset(0.3, 1, 0.3) - .particleVelocity(0, 0.1, 0) - .particle('minecraft:campfire_signal_smoke') - .particleCount(5) - .particleForced(true) - - event.create('tfg:geyser_source_small', 'tfg:particle_emitter_decoration') - .soundType('dripstone_block') - .mapColor('color_white') - .resistance(6) - .hardness(1.5) - .particleOffset(0.3, 1, 0.3) - .particleVelocity(0, 0.05, 0) - .particle('minecraft:campfire_cosy_smoke') - .particleCount(2) - .particleForced(false) - - event.create('tfg:stromatolite_cluster_small', 'tfg:decorative_plant') - .soundType('dripstone_block') - .mapColor('color_brown') - .box(3, 0, 3, 13, 6, 13) - - event.create('tfg:stromatolite_cluster_medium', 'tfg:decorative_plant') - .soundType('dripstone_block') - .mapColor('color_brown') - .box(3, 0, 3, 13, 14, 13) - - // #endregion - - // #region Mars Blocks - - event.create('tfg:spice', 'tfg:particle_emitter') - .textureAll('tfg:block/sand_spice') - .soundType('sand') - .hardness(2) - .resistance(6) - // makes it invisible on xaeros, so people can't use it to find the deposits :) - .mapColor('none') - .particleOffset(0.3, 1.5, 0.3) - .particleVelocity(0, 0.05, 0) - .particle('electric_spark') - .particleCount(2) - .particleForced(false) - .fullBlock(true) - .opaque(true) - - event.create('tfg:groundcover/glider_feather', 'tfc:ground_cover') - .box(4, 0, 4, 12, 2, 12) - .soundType('wool') - .groundCoverModelShape('feather') - .withPreexistingItem('wan_ancient_beasts:glider_feather') - .textureAll('wan_ancient_beasts:item/glider_feather') - .tagBlock('tfc:can_be_snow_piled') - - event.create('tfg:groundcover/wraptor_feather', 'tfc:ground_cover') - .box(4, 0, 4, 12, 2, 12) - .soundType('wool') - .groundCoverModelShape('feather') - .withPreexistingItem('minecraft:feather') - .textureAll('tfg:item/wraptor_wool') - .tagBlock('tfc:can_be_snow_piled') - - event.create('tfg:groundcover/aeronos_stick', 'tfc:ground_cover') - .box(3, 0, 3, 13, 3, 13) - .groundCoverModelShape('twig') - .withPreexistingItem('tfg:twigs/aeronos') - .tagBlock('tfc:can_be_snow_piled') - .texture('particle', 'ad_astra:block/aeronos_stem') - .texture('all', 'ad_astra:block/aeronos_stem') - .texture('top', 'ad_astra:block/aeronos_stem_inside') - - event.create('tfg:groundcover/strophar_stick', 'tfc:ground_cover') - .box(3, 0, 3, 13, 3, 13) - .groundCoverModelShape('twig') - .withPreexistingItem('tfg:twigs/strophar') - .tagBlock('tfc:can_be_snow_piled') - .texture('particle', 'ad_astra:block/strophar_stem') - .texture('all', 'ad_astra:block/strophar_stem') - .texture('top', 'ad_astra:block/strophar_stem_inside') - - event.create('tfg:groundcover/glacian_stick', 'tfc:ground_cover') - .box(3, 0, 3, 13, 3, 13) - .groundCoverModelShape('twig') - .withPreexistingItem('tfg:twigs/glacian') - .tagBlock('tfc:can_be_snow_piled') - .texture('particle', 'ad_astra:block/glacian_log') - .texture('all', 'ad_astra:block/glacian_log') - .texture('top', 'ad_astra:block/glacian_log_top') - - event.create('tfg:groundcover/alphacene_stick', 'tfc:ground_cover') - .box(3, 0, 3, 13, 3, 13) - .groundCoverModelShape('twig') - .withPreexistingItem('tfg:twigs/alphacene') - .tagBlock('tfc:can_be_snow_piled') - .texture('particle', 'species:block/alphacene_mushroom_block') - .texture('all', 'species:block/alphacene_mushroom_block') - .texture('top', 'minecraft:block/mushroom_stem') - - // #endregion - - //#region Venus Blocks - //Fluorapatite - const fluorapatite_colors = ['blue', 'green', 'brown', 'orange', 'white', 'yellow']; - fluorapatite_colors.forEach(color => { - const mapColor = color === 'white' ? 'quartz' : `color_${color}`; - - //Sand - event.create(`tfg:sand/fluorapatite/${color}`, 'falling') - .textureAll(`tfg:block/planets/venus/sand_fluorapatite_${color}`) - .soundType('sand') - .requiresTool(false) - .tagBoth('forge:sand') - .tagItem('forge:sand/fluorapatite') - .tagBlock('minecraft:mineable/shovel') - .mapColor(mapColor) - .fullBlock(true) - .opaque(true) - //Raw Sandstone - event.create(`tfg:sandstone/raw/fluorapatite/${color}`) - .textureAll(`tfg:block/planets/venus/sandstone_bottom_fluorapatite_${color}`) - .texture('up', `tfg:block/planets/venus/sandstone_top_fluorapatite_${color}`) - .hardness(0.8) - .resistance(0.8) - .soundType('stone') - .requiresTool(true) - .tagBoth('forge:sandstone') - .tagItem('forge:sandstone/fluorapatite') - .tagBlock('minecraft:mineable/pickaxe') - .mapColor(mapColor) - .fullBlock(true) - .opaque(true) - //Smooth Sandstone - event.create(`tfg:sandstone/smooth/fluorapatite/${color}`) - .textureAll(`tfg:block/planets/venus/sandstone_top_fluorapatite_${color}`) - .hardness(0.8) - .resistance(0.8) - .soundType('stone') - .requiresTool(true) - .tagBoth('forge:sandstone') - .tagItem('forge:sandstone/fluorapatite') - .tagBlock('minecraft:mineable/pickaxe') - .mapColor(mapColor) - .fullBlock(true) - .opaque(true) - //Chiseled Sandstone - event.create(`tfg:sandstone/smooth/chiseled/fluorapatite/${color}`) - .textureAll(`tfg:block/planets/venus/sandstone_chiseled_fluorapatite_${color}`) - .texture('up', `tfg:block/planets/venus/sandstone_top_fluorapatite_${color}`) - .texture('down', `tfg:block/planets/venus/sandstone_bottom_fluorapatite_${color}`) - .hardness(0.8) - .resistance(0.8) - .soundType('stone') - .requiresTool(true) - .tagBoth('forge:sandstone') - .tagItem('forge:sandstone/fluorapatite') - .tagBlock('minecraft:mineable/pickaxe') - .mapColor(mapColor) - .fullBlock(true) - .opaque(true) - //Sandstone - event.create(`tfg:sandstone/fluorapatite/${color}`) - .textureAll(`tfg:block/planets/venus/sandstone_fluorapatite_${color}`) - .texture('down', `tfg:block/planets/venus/sandstone_bottom_fluorapatite_${color}`) - .texture('up', `tfg:block/planets/venus/sandstone_top_fluorapatite_${color}`) - .hardness(0.8) - .resistance(0.8) - .soundType('stone') - .requiresTool(true) - .tagBoth('forge:sandstone') - .tagItem('forge:sandstone/fluorapatite') - .tagBlock('minecraft:mineable/pickaxe') - .mapColor(mapColor) - .fullBlock(true) - .opaque(true) - }) - - //#region Venus Stone - - //Stromatolite - event.create('tfg:rock/raw/stromatolite', 'tfc:raw_rock') - .textureAll('tfg:block/planets/venus/stromatolite_spike') - .model('tfg:block/rock/stromatolite_block') - .rockTypeTooltip(Text.translatable('tooltip.tfg.sedimentary')) - .naturallySupported(true) - .sedimentary() - .renderType('cutout') - .soundType('dripstone_block') - .requiresTool(true) - .hardness(0.8) - .resistance(0.8) - .tagBlock('minecraft:mineable/pickaxe') - - event.create('tfg:rock/spike/stromatolite', 'tfc:rock_spike') - .textureAll('tfg:block/planets/venus/stromatolite_spike') - .soundType('dripstone_block') - .hardness(0.8) - .resistance(0.8) - .requiresTool(true) - .tagBlock('minecraft:mineable/pickaxe') - - //Geyserite - event.create('tfg:rock/raw/geyserite', 'tfc:raw_rock') - .textureAll('tfg:block/planets/venus/geyserite') - .rockTypeTooltip(Text.translatable('tooltip.tfg.sedimentary')) - .naturallySupported(true) - .mapColor('quartz') - .sedimentary() - .soundType('dripstone_block') - .requiresTool(true) - .hardness(0.8) - .resistance(0.8) - .tagBlock('minecraft:mineable/pickaxe') - - event.create('tfg:rock/spike/geyserite', 'tfc:rock_spike') - .textureAll('tfg:block/planets/venus/geyserite') - .soundType('dripstone_block') - .mapColor('quartz') - .hardness(0.8) - .resistance(0.8) - .requiresTool(true) - .tagBlock('minecraft:mineable/pickaxe') - - // Halite - event.create('tfg:rock/halite') - .mapColor('quartz') - .soundType('deepslate') - .hardness(0.8) - .resistance(0.8) - .requiresTool(true) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - event.create('tfg:rock/halite2') - .mapColor('snow') - .soundType('deepslate') - .hardness(0.8) - .resistance(0.8) - .requiresTool(true) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) } \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/stone_types/blocks.vanilla_stone.js b/kubejs/startup_scripts/tfg/stone_types/blocks.vanilla_stone.js new file mode 100644 index 000000000..98d0e933a --- /dev/null +++ b/kubejs/startup_scripts/tfg/stone_types/blocks.vanilla_stone.js @@ -0,0 +1,56 @@ +"use strict"; + +function registerTFGVanillaStoneBlocks(event) { + + event.create(`tfg:rock/stone_wall`, 'wall') + .soundType(global.STONE_CHARACS.reconstituted.sound) + .textureAll('minecraft:block/stone') + .tagBoth('tfg:rock_wall') + .mapColor(global.STONE_CHARACS.reconstituted.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + let SHAPES = ['stairs', 'wall'] + SHAPES.forEach(shape => { + event.create(`tfg:rock/smooth_stone_${shape}`, shape) + .soundType(global.STONE_CHARACS.reconstituted.sound) + .textureAll('minecraft:block/smooth_stone') + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .mapColor(global.STONE_CHARACS.reconstituted.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + SHAPES = ['stairs', 'slab', 'wall'] + SHAPES.forEach(shape => { + event.create(`tfg:rock/cracked_bricks_stone_${shape}`, shape) + .soundType(global.STONE_CHARACS.reconstituted.sound) + .textureAll('minecraft:block/cracked_stone_bricks') + .tagBoth(`tfg:brick_${shape}s`.replace(/ss/g, 's')) + .mapColor(global.STONE_CHARACS.reconstituted.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + event.create('tfg:rock/quartz_wall', 'wall') + .soundType('stone') + .textureAll('minecraft:block/quartz_block_side') + .tagBoth('tfg:rock_wall') + .mapColor('snow') + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + event.create('tfg:rock/smooth_quartz_wall', 'wall') + .soundType('stone') + .textureAll('minecraft:block/quartz_block_bottom') + .tagBoth('tfg:rock_wall') + .mapColor('snow') + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/stone_types/items.rocks.js b/kubejs/startup_scripts/tfg/stone_types/items.rocks.js new file mode 100644 index 000000000..8cf86dbb8 --- /dev/null +++ b/kubejs/startup_scripts/tfg/stone_types/items.rocks.js @@ -0,0 +1,43 @@ +"use strict"; + +function registerTFGRockItems(event) { + + event.create('tfg:brick/deepslate') + .tag(`tfc:metamorphic_items`) + .translationKey('item.tfg.brick.deepslate') + + event.create('tfg:brick/dripstone') + .tag(`tfc:sedimentary_items`) + .translationKey('item.tfg.brick.dripstone') + + event.create('tfg:brick/moon_stone') + .tag(`tfc:igneous_intrusive_items`) + .translationKey('item.tfg.brick.moon_stone') + + event.create('tfg:brick/moon_deepslate') + .tag(`tfc:igneous_intrusive_items`) + .translationKey('item.tfg.moon_deepslate') + + event.create('tfg:brick/mars_stone') + .tag(`tfc:sedimentary_items`) + .translationKey('item.tfg.brick.mars_stone') + + event.create('tfg:brick/venus_stone') + .tag(`tfc:igneous_extrusive_items`) + .translationKey('item.tfg.brick.venus_stone') + + event.create('tfg:brick/mercury_stone') + .tag(`tfc:igneous_intrusive_items`) + .translationKey('item.tfg.brick.mercury_stone') + + event.create('tfg:brick/glacio_stone') + .tag(`tfc:igneous_extrusive_items`) + .translationKey('item.tfg.brick.glacio_stone') + + event.create('tfg:brick/permafrost') + .translationKey('item.tfg.brick.permafrost') + + event.create('tfg:brick/red_granite') + .tag(`tfc:igneous_intrusive_items`) + .translationKey('item.tfg.red_granite') +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/stone_types/materials.rocks.js b/kubejs/startup_scripts/tfg/stone_types/materials.rocks.js new file mode 100644 index 000000000..ee90eda0a --- /dev/null +++ b/kubejs/startup_scripts/tfg/stone_types/materials.rocks.js @@ -0,0 +1,43 @@ +// priority: 0 +"use strict"; + +const registerTFGRockMaterials = (event) => { + const registerStoneMaterial = (rockType, color) => + event.create(`tfg:${rockType}`) + .dust() + .color(color) + .iconSet(GTMaterialIconSet.ROUGH) + .flags( + GTMaterialFlags.MORTAR_GRINDABLE, + GTMaterialFlags.NO_SMASHING, + GTMaterialFlags.NO_SMELTING + ) + + /* TFC Stone Types Materials */ + registerStoneMaterial('gabbro', 0x7F8081) + registerStoneMaterial('shale', 0x686567) + registerStoneMaterial('claystone', 0xAF9377) + registerStoneMaterial('limestone', 0xA09885) + registerStoneMaterial('conglomerate', 0xA3977F) + registerStoneMaterial('dolomite', 0x515155) + registerStoneMaterial('chert', 0x7A6756) + registerStoneMaterial('chalk', 0xA4A39F) + registerStoneMaterial('rhyolite', 0x726D69) + registerStoneMaterial('dacite', 0x979797) + registerStoneMaterial('slate', 0x989287) + registerStoneMaterial('phyllite', 0x706B61) + registerStoneMaterial('schist', 0x6E735C) + registerStoneMaterial('gneiss', 0x6A6D60) + + registerStoneMaterial('dripstone', 0x927965) + + registerStoneMaterial('moon_stone', 0x506869) + registerStoneMaterial('moon_deepslate', 0x45474D) + registerStoneMaterial('mars_stone', 0xD08957) + registerStoneMaterial('venus_stone', 0xD5A664) + registerStoneMaterial('mercury_stone', 0x723E49) + registerStoneMaterial('glacio_stone', 0x9897BF) + + // Specialized icon sets for TFC's own + modifyTFGIconSets(event) +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/venus/blocks.venus_deco.js b/kubejs/startup_scripts/tfg/venus/blocks.venus_deco.js new file mode 100644 index 000000000..4e6961652 --- /dev/null +++ b/kubejs/startup_scripts/tfg/venus/blocks.venus_deco.js @@ -0,0 +1,176 @@ +"use strict"; + +function registerTFGWorldGenVenusDecoBlocks(event) { + + event.create('tfg:geyser_source', 'tfg:particle_emitter_decoration') + .soundType('dripstone_block') + .mapColor('color_white') + .resistance(6) + .hardness(1.5) + .particleOffset(0.3, 1, 0.3) + .particleVelocity(0, 0.1, 0) + .particle('minecraft:campfire_signal_smoke') + .particleCount(5) + .particleForced(true) + + event.create('tfg:geyser_source_small', 'tfg:particle_emitter_decoration') + .soundType('dripstone_block') + .mapColor('color_white') + .resistance(6) + .hardness(1.5) + .particleOffset(0.3, 1, 0.3) + .particleVelocity(0, 0.05, 0) + .particle('minecraft:campfire_cosy_smoke') + .particleCount(2) + .particleForced(false) + + //Geyserite + event.create('tfg:rock/raw/geyserite', 'tfc:raw_rock') + .textureAll('tfg:block/planets/venus/geyserite') + .rockTypeTooltip(Text.translatable('tooltip.tfg.sedimentary')) + .naturallySupported(true) + .mapColor('quartz') + .sedimentary() + .soundType('dripstone_block') + .requiresTool(true) + .hardness(0.8) + .resistance(0.8) + .tagBlock('minecraft:mineable/pickaxe') + + event.create('tfg:rock/spike/geyserite', 'tfc:rock_spike') + .textureAll('tfg:block/planets/venus/geyserite') + .soundType('dripstone_block') + .mapColor('quartz') + .hardness(0.8) + .resistance(0.8) + .requiresTool(true) + .tagBlock('minecraft:mineable/pickaxe') + + // Halite + event.create('tfg:rock/halite') + .mapColor('quartz') + .soundType('deepslate') + .hardness(0.8) + .resistance(0.8) + .requiresTool(true) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + event.create('tfg:rock/halite2') + .mapColor('snow') + .soundType('deepslate') + .hardness(0.8) + .resistance(0.8) + .requiresTool(true) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + //Stromatolite + event.create('tfg:rock/raw/stromatolite', 'tfc:raw_rock') + .textureAll('tfg:block/planets/venus/stromatolite_spike') + .model('tfg:block/rock/stromatolite_block') + .rockTypeTooltip(Text.translatable('tooltip.tfg.sedimentary')) + .naturallySupported(true) + .sedimentary() + .renderType('cutout') + .soundType('dripstone_block') + .requiresTool(true) + .hardness(0.8) + .resistance(0.8) + .tagBlock('minecraft:mineable/pickaxe') + + event.create('tfg:rock/spike/stromatolite', 'tfc:rock_spike') + .textureAll('tfg:block/planets/venus/stromatolite_spike') + .soundType('dripstone_block') + .hardness(0.8) + .resistance(0.8) + .requiresTool(true) + .tagBlock('minecraft:mineable/pickaxe') + + event.create('tfg:stromatolite_cluster_small', 'tfg:decorative_plant') + .soundType('dripstone_block') + .mapColor('color_brown') + .box(3, 0, 3, 13, 6, 13) + + event.create('tfg:stromatolite_cluster_medium', 'tfg:decorative_plant') + .soundType('dripstone_block') + .mapColor('color_brown') + .box(3, 0, 3, 13, 14, 13) + + //#region Fluorapatite + const fluorapatite_colors = ['blue', 'green', 'brown', 'orange', 'white', 'yellow']; + fluorapatite_colors.forEach(color => { + const mapColor = color === 'white' ? 'quartz' : `color_${color}`; + + //Sand + event.create(`tfg:sand/fluorapatite/${color}`, 'falling') + .textureAll(`tfg:block/planets/venus/sand_fluorapatite_${color}`) + .soundType('sand') + .requiresTool(false) + .tagBoth('forge:sand') + .tagItem('forge:sand/fluorapatite') + .tagBlock('minecraft:mineable/shovel') + .mapColor(mapColor) + .fullBlock(true) + .opaque(true) + //Raw Sandstone + event.create(`tfg:sandstone/raw/fluorapatite/${color}`) + .textureAll(`tfg:block/planets/venus/sandstone_bottom_fluorapatite_${color}`) + .texture('up', `tfg:block/planets/venus/sandstone_top_fluorapatite_${color}`) + .hardness(0.8) + .resistance(0.8) + .soundType('stone') + .requiresTool(true) + .tagBoth('forge:sandstone') + .tagItem('forge:sandstone/fluorapatite') + .tagBlock('minecraft:mineable/pickaxe') + .mapColor(mapColor) + .fullBlock(true) + .opaque(true) + //Smooth Sandstone + event.create(`tfg:sandstone/smooth/fluorapatite/${color}`) + .textureAll(`tfg:block/planets/venus/sandstone_top_fluorapatite_${color}`) + .hardness(0.8) + .resistance(0.8) + .soundType('stone') + .requiresTool(true) + .tagBoth('forge:sandstone') + .tagItem('forge:sandstone/fluorapatite') + .tagBlock('minecraft:mineable/pickaxe') + .mapColor(mapColor) + .fullBlock(true) + .opaque(true) + //Chiseled Sandstone + event.create(`tfg:sandstone/smooth/chiseled/fluorapatite/${color}`) + .textureAll(`tfg:block/planets/venus/sandstone_chiseled_fluorapatite_${color}`) + .texture('up', `tfg:block/planets/venus/sandstone_top_fluorapatite_${color}`) + .texture('down', `tfg:block/planets/venus/sandstone_bottom_fluorapatite_${color}`) + .hardness(0.8) + .resistance(0.8) + .soundType('stone') + .requiresTool(true) + .tagBoth('forge:sandstone') + .tagItem('forge:sandstone/fluorapatite') + .tagBlock('minecraft:mineable/pickaxe') + .mapColor(mapColor) + .fullBlock(true) + .opaque(true) + //Sandstone + event.create(`tfg:sandstone/fluorapatite/${color}`) + .textureAll(`tfg:block/planets/venus/sandstone_fluorapatite_${color}`) + .texture('down', `tfg:block/planets/venus/sandstone_bottom_fluorapatite_${color}`) + .texture('up', `tfg:block/planets/venus/sandstone_top_fluorapatite_${color}`) + .hardness(0.8) + .resistance(0.8) + .soundType('stone') + .requiresTool(true) + .tagBoth('forge:sandstone') + .tagItem('forge:sandstone/fluorapatite') + .tagBlock('minecraft:mineable/pickaxe') + .mapColor(mapColor) + .fullBlock(true) + .opaque(true) + }) + //#endregion +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/venus/materials.venus.js b/kubejs/startup_scripts/tfg/venus/materials.venus.js new file mode 100644 index 000000000..124fa9c6e --- /dev/null +++ b/kubejs/startup_scripts/tfg/venus/materials.venus.js @@ -0,0 +1,80 @@ +"use strict"; + +function registerTFGVenusMaterials(event) { + + // Ores + + event.create('tfg:calorite') + //.components('2x mercury', '1x tungsten', '1x rhodium', '2x sulfur') + .color(0xC94D4E) + .secondaryColor(0x9A296A) + .iconSet(GTMaterialIconSet.getByName('tfc_copper')) + .ore() + .ingot() + .flags( + GTMaterialFlags.FORCE_GENERATE_BLOCK, + GTMaterialFlags.GENERATE_PLATE + ) + + //#region Bromine Line + + event.create('raw_brine') + .fluid() + .color(0x947a11) + //.secondaryColor(0x81FFF9) + + event.create('hot_brine') + .liquid(320) + .color(0x944611) + + event.create('hot_chlorinated_brominated_brine') + .liquid(320) + .color(0xbf8d5a) + .components('1x unknown', '1x chlorine') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + + event.create('brominated_chlorine_vapor') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(320)) + .color(0xbf8d5a) + .components('1x chlorine', '1x bromine', '1x water') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + + event.create('acidic_bromine_solution') + .liquid(new GTFluidBuilder().attribute(GTFluidAttributes.ACID)) + .color(0xe7b989) + .components('1x chlorine', '1x bromine') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + + event.create('concentrated_bromine_solution') + .liquid() + .color(0x905d29) + .components('1x bromine', '1x chlorine') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + + event.create('debrominated_brine') + .liquid() + .color(0xc3874a) + + event.create('acidic_bromine_exhaust') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).attribute(GTFluidAttributes.ACID).temperature(293)) + .color(0xec9c4a) + .components('3x water', '1x chlorine') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + + event.create('hot_alkaline_debrominated_brine') + .liquid() + .color(0xcc6a06) + .components('2x unknown', '1x chlorine') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + + event.create('hot_debrominated_brine') + .liquid(320) + .color(0xb08e6b) + + event.create('hydrogen_iodide') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(293)) + .color(0x82a6ce) + .components('1x hydrogen', '1x iodine') + + //#endregion +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/worldgen/blocks.beneath_deco.js b/kubejs/startup_scripts/tfg/worldgen/blocks.beneath_deco.js new file mode 100644 index 000000000..963c68a77 --- /dev/null +++ b/kubejs/startup_scripts/tfg/worldgen/blocks.beneath_deco.js @@ -0,0 +1,22 @@ +"use strict"; + +function registerTFGWorldGenBeneathDecoBlocks(event) { + + event.create('tfg:mushroom_roots', 'tfg:decorative_plant') + .soundType('nether_wart') + .tagItem('tfc:plants') + + event.create('tfg:mushroom_sprouts', 'tfg:decorative_plant') + .soundType('nether_wart') + .tagItem('tfc:plants') + + event.create('tfg:charred_log') + .fullBlock(true) + .woodSoundType() + .property(BlockProperties.AXIS) + .tagBoth('minecraft:mineable/axe') + .tagBoth('tfc:logs_that_log') + .tagBoth('afc:logs_that_log') + .tagBoth('minecraft:logs') + .mapColor('black') +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/worldgen/blocks.trees.js b/kubejs/startup_scripts/tfg/worldgen/blocks.trees.js new file mode 100644 index 000000000..b5142d066 --- /dev/null +++ b/kubejs/startup_scripts/tfg/worldgen/blocks.trees.js @@ -0,0 +1,115 @@ +"use strict"; + +function registerTFGWorldGenTrees(event) { + + // Mars Saplings + + event.create('tfg:saplings/crimson', 'tfc:sapling') + .features('tfg:mars/tree/crimson') + .tagBoth('minecraft:saplings') + .tagBlock('tfg:do_not_destroy_in_space') + .tagBlock('tfc:can_be_snow_piled') + .growthDays(6) + .soundType('nether_wart') + .defaultCutout() + .noCollision() + + event.create('tfg:saplings/warped', 'tfc:sapling') + .features('tfg:mars/tree/warped') + .tagBoth('minecraft:saplings') + .tagBlock('tfg:do_not_destroy_in_space') + .tagBlock('tfc:can_be_snow_piled') + .growthDays(6) + .soundType('nether_wart') + .defaultCutout() + .noCollision() + + event.create('tfg:saplings/alphacene', 'tfc:sapling') + .features('species:alphacene_mushroom') + .tagBoth('minecraft:saplings') + .tagBlock('tfg:do_not_destroy_in_space') + .tagBlock('tfc:can_be_snow_piled') + .growthDays(3) + .soundType('nether_wart') + .defaultCutout() + .noCollision() + + event.create('tfg:saplings/strophar', 'tfc:sapling') + .features('tfg:mars/tree/strophar_mini') + .tagBoth('minecraft:saplings') + .tagBlock('tfg:do_not_destroy_in_space') + .tagBlock('tfc:can_be_snow_piled') + .growthDays(7) + .soundType('nether_wart') + .defaultCutout() + .noCollision() + + event.create('tfg:saplings/aeronos', 'tfc:sapling') + .features('tfg:mars/tree/aeronos_mini') + .tagBoth('minecraft:saplings') + .tagBlock('tfg:do_not_destroy_in_space') + .tagBlock('tfc:can_be_snow_piled') + .growthDays(9) + .soundType('nether_wart') + .defaultCutout() + .noCollision() + + event.create('tfg:saplings/glacian', 'tfc:sapling') + .features('tfg:mars/tree/glacian_mini') + .tagBoth('minecraft:saplings') + .tagBlock('tfg:do_not_destroy_in_space') + .tagBlock('tfc:can_be_snow_piled') + .growthDays(9) + .soundType('nether_wart') + .defaultCutout() + .noCollision() + + // Glacian tree stuff + event.create('tfg:glacian_leaves', 'tfc:leaves') + .soundType('azalea_leaves') + .tagBlock('minecraft:mineable/hoe') + .tagBlock('tfg:do_not_destroy_in_space') + .mapColor('snow') + .seasonalColors(false) + .fallenLeaves(leaves => { + leaves.noCollision() + leaves.notSolid() + leaves.defaultCutout() + leaves.soundType('azalea_leaves') + leaves.tagBlock('minecraft:mineable/hoe') + leaves.tagBlock('minecraft:replaceable') + leaves.noDynamicTinting() + leaves.models((modelType, generator) => { + if (modelType.layers != 8) { + generator.parent("tfc:block/groundcover/fallen_leaves_height" + modelType.height); + generator.texture("all", "ad_astra:block/glacian_leaves"); + } else { + generator.parent("ad_astra:block/glacian_leaves"); + } + }) + }) + + event.create('tfg:glacian_wood', 'tfc:log') + .tagBoth('minecraft:logs') + .tagItem('minecraft:logs_that_burn') + .tagItem('ad_astra:glacian_logs') + .tagBlock('minecraft:mineable/axe') + .soundType('wood') + .stripped(stripped => { + stripped.tagBoth('minecraft:logs') + stripped.tagItem('minecraft:logs_that_burn') + stripped.tagItem('ad_astra:glacian_logs') + stripped.tagBlock('minecraft:mineable/axe') + stripped.soundType('wood') + }) + + event.create('tfg:glacian_log', 'tfc:log') + .tagBoth('minecraft:logs') + .tagBoth('c:hidden_from_recipe_viewers') + .soundType('wood') + .stripped(stripped => { + stripped.tagBoth('minecraft:logs') + stripped.tagBoth('c:hidden_from_recipe_viewers') + stripped.soundType('wood') + }) +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/fauna.js b/kubejs/startup_scripts/tfg/worldgen/fauna.js similarity index 100% rename from kubejs/startup_scripts/tfg/fauna.js rename to kubejs/startup_scripts/tfg/worldgen/fauna.js diff --git a/kubejs/startup_scripts/tfg/worldgen/items.wood.js b/kubejs/startup_scripts/tfg/worldgen/items.wood.js new file mode 100644 index 000000000..db87b70c9 --- /dev/null +++ b/kubejs/startup_scripts/tfg/worldgen/items.wood.js @@ -0,0 +1,24 @@ +"use strict"; + +function registerTFGWoodItems(event) { + + global.AD_ASTRA_WOOD.forEach(wood => { + event.create(`tfg:wood/lumber/${wood.name}`) + .translationKey(`item.tfg.${wood.name}_lumber`) + .tag('tfc:lumber') + }) + + + event.create('tfg:twigs/strophar') + .tag('tfc:twigs') + .texture('tfg:item/wood/twig/strophar') + event.create('tfg:twigs/aeronos') + .tag('tfc:twigs') + .texture('tfg:item/wood/twig/aeronos') + event.create('tfg:twigs/glacian') + .tag('tfc:twigs') + .texture('tfg:item/wood/twig/glacian') + event.create('tfg:twigs/alphacene') + .tag('tfc:twigs') + .texture('tfg:item/wood/twig/alphacene') +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/register_climates.js b/kubejs/startup_scripts/tfg/worldgen/register_climates.js similarity index 100% rename from kubejs/startup_scripts/tfg/register_climates.js rename to kubejs/startup_scripts/tfg/worldgen/register_climates.js diff --git a/kubejs/startup_scripts/tfg/worldgen/utility.js b/kubejs/startup_scripts/tfg/worldgen/utility.js new file mode 100644 index 000000000..83e19c2f5 --- /dev/null +++ b/kubejs/startup_scripts/tfg/worldgen/utility.js @@ -0,0 +1,29 @@ +// priority: 0 +"use strict"; + + +/** + * @param {any} event + * @param {string} id + * @param {string} planet + */ +function createPlant(event, id, planet) { + return event.create(`betterend:${id}`, 'tfg:decorative_plant') + .tagItem(`tfg:${planet}_plants`) + .tagBlock('minecraft:replaceable') + .tagBlock('tfg:do_not_destroy_in_space') + .tagBlock('tfc:can_be_snow_piled') +} + +/** + * @param {any} event + * @param {string} id + * @param {string} planet + */ +function createWaterPlant(event, id, planet) { + return event.create(`betterend:${id}`, 'tfg:decorative_plant') + .tagItem(`tfg:${planet}_plants`) + .tagBlock('minecraft:replaceable') + .tagBlock('tfg:do_not_destroy_in_space') + .tagBlock('tfc:can_be_ice_piled') +} \ No newline at end of file diff --git a/pakku-lock.json b/pakku-lock.json index 73f9d56c5..4c6114bb4 100644 --- a/pakku-lock.json +++ b/pakku-lock.json @@ -1459,7 +1459,7 @@ }, { "type": "curseforge", - "file_name": "baguettelib-1.20.1-Forge-1.1.1.jar", + "file_name": "baguettelib-1.20.1-Forge-1.1.5.jar", "mc_versions": [ "1.20.1" ], @@ -1467,16 +1467,16 @@ "forge" ], "release_type": "release", - "url": "https://edge.forgecdn.net/files/7031/573/baguettelib-1.20.1-Forge-1.1.1.jar", - "id": "7031573", + "url": "https://edge.forgecdn.net/files/7287/505/baguettelib-1.20.1-Forge-1.1.5.jar", + "id": "7287505", "parent_id": "1264423", "hashes": { - "sha1": "eb060d8ed625c2ed9182db62e60154bb94c69046", - "md5": "558b2a3c6ed2caa44883e551580c0845" + "sha1": "7aaab6216e7fc72e1606b1e35f1f56a18f01153f", + "md5": "21c32e7a3fcd7501915bf2b91d76df9b" }, "required_dependencies": [], - "size": 30312, - "date_published": "2025-09-25T09:12:10.740Z" + "size": 31868, + "date_published": "2025-12-02T22:51:20.803Z" } ] }, @@ -4636,7 +4636,7 @@ "files": [ { "type": "modrinth", - "file_name": "diggerhelmet-1.20.1-1.0.0.24.jar", + "file_name": "diggerhelmet-1.20.1-1.0.0.25.jar", "mc_versions": [ "1.20.1" ], @@ -4645,46 +4645,46 @@ "neoforge" ], "release_type": "beta", - "url": "https://cdn.modrinth.com/data/8Aatj9Zy/versions/LOYb1iLX/diggerhelmet-1.20.1-1.0.0.24.jar", - "id": "LOYb1iLX", + "url": "https://cdn.modrinth.com/data/8Aatj9Zy/versions/T1mIzBuf/diggerhelmet-1.20.1-1.0.0.25.jar", + "id": "T1mIzBuf", "parent_id": "8Aatj9Zy", "hashes": { - "sha512": "042d2aaf48c2af72d401d1aaf961162545def9217b38e0fb52ff2d6879efd54af9320d499caa0cc1175ecc0442099486c1504d59337c10359feaed0960eb66c0", - "sha1": "3faf8dcea2520a247d983dcb16ad43ab1e495bf4" + "sha512": "471e84a1fa896565e65619645d78945ebafff246661fbc851ec84a18f2bb575a75a31cea381544125ce36530fc486570e07b47f813fb063f71339238964bf8d6", + "sha1": "8c49656e74daa66fd8e1c9170fab72493aaa21dd" }, "required_dependencies": [ + "JaCEZUhg", "vvuO3ImH", - "8BmcQJ2H", - "JaCEZUhg" + "8BmcQJ2H" ], - "size": 211958, - "date_published": "2025-10-16T10:59:42.921213Z" + "size": 232711, + "date_published": "2025-10-26T03:39:53.401428Z" }, { "type": "curseforge", - "file_name": "diggerhelmet-1.20.1-1.0.0.25.jar", + "file_name": "diggerhelmet-1.20.1-1.0.0.26.jar", "mc_versions": [ "1.20.1" ], "loaders": [ - "neoforge", - "forge" + "forge", + "neoforge" ], "release_type": "beta", - "url": "https://edge.forgecdn.net/files/7132/920/diggerhelmet-1.20.1-1.0.0.25.jar", - "id": "7132920", + "url": "https://edge.forgecdn.net/files/7290/228/diggerhelmet-1.20.1-1.0.0.26.jar", + "id": "7290228", "parent_id": "1243596", "hashes": { - "sha1": "8c49656e74daa66fd8e1c9170fab72493aaa21dd", - "md5": "7209f67f6e71313209e12d76313efc22" + "sha1": "3fe3d9911069db3c0d816bdbbed01193ba880087", + "md5": "cd1ea215f760b776c3bf48e93188de04" }, "required_dependencies": [ - "302973", "309927", - "388172" + "388172", + "302973" ], - "size": 232711, - "date_published": "2025-10-21T12:56:28.140Z" + "size": 233928, + "date_published": "2025-12-03T15:49:31.887Z" } ] }, @@ -5758,7 +5758,7 @@ "files": [ { "type": "curseforge", - "file_name": "ftb-library-forge-2001.2.10.jar", + "file_name": "ftb-library-forge-2001.2.12.jar", "mc_versions": [ "1.20.1" ], @@ -5766,18 +5766,18 @@ "forge" ], "release_type": "release", - "url": "https://edge.forgecdn.net/files/6807/424/ftb-library-forge-2001.2.10.jar", - "id": "6807424", + "url": "https://edge.forgecdn.net/files/7296/748/ftb-library-forge-2001.2.12.jar", + "id": "7296748", "parent_id": "404465", "hashes": { - "sha1": "9472bb30d0e38cb774b9cc7852bdd8dbf845622b", - "md5": "ae5292127a5a0d85d793bbce8f1e24dd" + "sha1": "7f36ec4af42ad1d69872c58022e93a9d1b9c82b7", + "md5": "8bbd067159587d80f1c5286ea52e567b" }, "required_dependencies": [ "419699" ], - "size": 791875, - "date_published": "2025-07-24T16:54:08.133Z" + "size": 780523, + "date_published": "2025-12-05T12:02:22.023Z" } ] }, @@ -8167,35 +8167,9 @@ "modrinth": "ordsPcFz" }, "files": [ - { - "type": "curseforge", - "file_name": "kotlinforforge-4.11.0-all.jar", - "mc_versions": [ - "1.20.2", - "1.20.3", - "1.20.1", - "1.20", - "1.20.4" - ], - "loaders": [ - "neoforge", - "forge" - ], - "release_type": "release", - "url": "https://edge.forgecdn.net/files/5402/61/kotlinforforge-4.11.0-all.jar", - "id": "5402061", - "parent_id": "351264", - "hashes": { - "sha1": "1fd8acfd75a2be2dc3cdcc7e816482b2e427d6e5", - "md5": "417caa90d17dc86cf7d24b802c2a5c56" - }, - "required_dependencies": [], - "size": 7193768, - "date_published": "2024-06-05T23:45:43.380Z" - }, { "type": "modrinth", - "file_name": "kotlinforforge-4.11.0-all.jar", + "file_name": "kotlinforforge-4.12.0-all.jar", "mc_versions": [ "1.19.3", "1.19.4", @@ -8210,16 +8184,42 @@ "neoforge" ], "release_type": "release", - "url": "https://cdn.modrinth.com/data/ordsPcFz/versions/hmeyC41q/kotlinforforge-4.11.0-all.jar", - "id": "hmeyC41q", + "url": "https://cdn.modrinth.com/data/ordsPcFz/versions/Zsh14XeQ/kotlinforforge-4.12.0-all.jar", + "id": "Zsh14XeQ", "parent_id": "ordsPcFz", "hashes": { - "sha512": "d72707078f0c4fde78981c638ca976722f22a64ce74bdb489258790fe9886d763a7b1e0dfbc5429ddd3105d8a65d177f06242dfb1457e219e56c70dd3e8cbf2c", - "sha1": "1fd8acfd75a2be2dc3cdcc7e816482b2e427d6e5" + "sha512": "767f40030ed4b370a3838fa65ae1b79974f31979342fff7cc834a0d5f39eb28612642519352ff2a1dd5226ce1f745f8b3156ee3625ffde01219137d064c1ee40", + "sha1": "962fdb760409d6d71cbf079235f1ca94e3863a22" }, "required_dependencies": [], - "size": 7193768, - "date_published": "2024-06-06T01:10:20.253226Z" + "size": 7442998, + "date_published": "2025-12-03T19:48:01.561702Z" + }, + { + "type": "curseforge", + "file_name": "kotlinforforge-4.12.0-all.jar", + "mc_versions": [ + "1.20.2", + "1.20.1", + "1.20", + "1.20.4", + "1.20.3" + ], + "loaders": [ + "forge", + "neoforge" + ], + "release_type": "release", + "url": "https://edge.forgecdn.net/files/7291/67/kotlinforforge-4.12.0-all.jar", + "id": "7291067", + "parent_id": "351264", + "hashes": { + "sha1": "962fdb760409d6d71cbf079235f1ca94e3863a22", + "md5": "d6a40dede74edbe646b34a1bafd53b4d" + }, + "required_dependencies": [], + "size": 7442998, + "date_published": "2025-12-03T19:47:08.457Z" } ] }, @@ -10822,7 +10822,7 @@ "files": [ { "type": "modrinth", - "file_name": "Primitive creatures 2.6.jar", + "file_name": "primitive_creatures_2.7forge1.20.1.jar", "mc_versions": [ "1.20.1" ], @@ -10830,20 +10830,20 @@ "forge" ], "release_type": "release", - "url": "https://cdn.modrinth.com/data/GfUwaZEm/versions/eqfW2BOb/Primitive creatures 2.6.jar", - "id": "eqfW2BOb", + "url": "https://cdn.modrinth.com/data/GfUwaZEm/versions/y7oCH4pT/primitive_creatures_2.7forge1.20.1.jar", + "id": "y7oCH4pT", "parent_id": "GfUwaZEm", "hashes": { - "sha512": "9f72b7053820e30c2b932f1587417e5d023cc0f019f938e0870d6f4284925e58698e6c624cf999acf95757819294cb4398c6937bb373d7efbc355e7687a97dee", - "sha1": "9a6f9e9c75363c7b14ec8d71e5641bbfd377f137" + "sha512": "09ed9ac29baa8ccd0449d953747458254b2f17baa0a2526a9ed55f8199225d6ebd642813d53dc938c3b18b2cbb5dd112912cd02ea709d71c4da23ca83b5bbb59", + "sha1": "f2fb38516941ac4193282af35bc2182ca98b17f5" }, "required_dependencies": [], - "size": 529007, - "date_published": "2025-11-28T00:42:21.156775Z" + "size": 526919, + "date_published": "2025-12-02T21:13:23.239833Z" }, { "type": "curseforge", - "file_name": "Primitive creatures 2.6forge.jar", + "file_name": "primitive_creatures_2.7forge1.20.1.jar", "mc_versions": [ "1.20.1" ], @@ -10851,18 +10851,18 @@ "forge" ], "release_type": "release", - "url": "https://edge.forgecdn.net/files/7269/624/Primitive creatures 2.6forge.jar", - "id": "7269624", + "url": "https://edge.forgecdn.net/files/7287/434/primitive_creatures_2.7forge1.20.1.jar", + "id": "7287434", "parent_id": "1218288", "hashes": { - "sha1": "9a6f9e9c75363c7b14ec8d71e5641bbfd377f137", - "md5": "3db0bd5100d722b6d959b7b37b07c725" + "sha1": "f2fb38516941ac4193282af35bc2182ca98b17f5", + "md5": "5848f8db0bc1a95133c10ff6c7dc2513" }, "required_dependencies": [ "388172" ], - "size": 529007, - "date_published": "2025-11-28T00:43:45.163Z" + "size": 526919, + "date_published": "2025-12-02T22:23:27.723Z" } ] }, @@ -11475,7 +11475,7 @@ "files": [ { "type": "modrinth", - "file_name": "ShoulderSurfing-Forge-1.20.1-4.16.0.jar", + "file_name": "ShoulderSurfing-Forge-1.20.1-4.16.2.jar", "mc_versions": [ "1.20", "1.20.1" @@ -11484,20 +11484,20 @@ "forge" ], "release_type": "release", - "url": "https://cdn.modrinth.com/data/kepjj2sy/versions/F0YaeEhe/ShoulderSurfing-Forge-1.20.1-4.16.0.jar", - "id": "F0YaeEhe", + "url": "https://cdn.modrinth.com/data/kepjj2sy/versions/wnRqDILe/ShoulderSurfing-Forge-1.20.1-4.16.2.jar", + "id": "wnRqDILe", "parent_id": "kepjj2sy", "hashes": { - "sha512": "3d0a7b71d93d180b3f5431f1580b5c6270727ea2186b1881cb3ff0b9cbf0eeaa6393b94c2d4b47223d5529aca025d7840ad9f97586ea5deb6b744b8e7d70a2a7", - "sha1": "845ce7b7a62749d8fef35afa8b01fa9bab2ace67" + "sha512": "1c00c98ebdf45aed5946b45a5c94b46ad191376112ee9f98464df25eb1562415fa6a77e5fde7fca3431b8a43efb4bb847abdd1522dcdbc031fdc586723e71b4c", + "sha1": "6e17da80a59372ef96ffe75ed15f2a71ff6fc722" }, "required_dependencies": [], - "size": 253861, - "date_published": "2025-11-22T13:58:12.266150Z" + "size": 255775, + "date_published": "2025-11-30T22:40:18.587608Z" }, { "type": "curseforge", - "file_name": "ShoulderSurfing-Forge-1.20.1-4.16.0.jar", + "file_name": "ShoulderSurfing-Forge-1.20.1-4.16.2.jar", "mc_versions": [ "1.20.1", "1.20" @@ -11506,16 +11506,16 @@ "forge" ], "release_type": "release", - "url": "https://edge.forgecdn.net/files/7249/331/ShoulderSurfing-Forge-1.20.1-4.16.0.jar", - "id": "7249331", + "url": "https://edge.forgecdn.net/files/7279/952/ShoulderSurfing-Forge-1.20.1-4.16.2.jar", + "id": "7279952", "parent_id": "243190", "hashes": { - "sha1": "845ce7b7a62749d8fef35afa8b01fa9bab2ace67", - "md5": "e30a5b3ba918ccc723b3cecc6fcdb516" + "sha1": "6e17da80a59372ef96ffe75ed15f2a71ff6fc722", + "md5": "5f28f3ac688565db38d7b6bfe41e0ee9" }, "required_dependencies": [], - "size": 253861, - "date_published": "2025-11-22T13:58:10.293Z" + "size": 255775, + "date_published": "2025-11-30T22:40:16.337Z" } ] }, @@ -13664,33 +13664,9 @@ "modrinth": "pAcsgLW2" }, "files": [ - { - "type": "curseforge", - "file_name": "taczjs-forge-1.3.6-mc1.20.1.jar", - "mc_versions": [ - "1.20.1" - ], - "loaders": [ - "forge" - ], - "release_type": "release", - "url": "https://edge.forgecdn.net/files/6639/214/taczjs-forge-1.3.6-mc1.20.1.jar", - "id": "6639214", - "parent_id": "1130998", - "hashes": { - "sha1": "9a75526b23e2c851df20749ba1a5f3e11f90c603", - "md5": "203a8995aa6a69c6b6ec38136d8bd4b5" - }, - "required_dependencies": [ - "1028108", - "238086" - ], - "size": 90443, - "date_published": "2025-06-11T07:06:10.097Z" - }, { "type": "modrinth", - "file_name": "taczjs-forge-1.3.6-mc1.20.1.jar", + "file_name": "taczjs-forge-1.3.7-mc1.20.1.jar", "mc_versions": [ "1.20.1" ], @@ -13698,19 +13674,43 @@ "forge" ], "release_type": "release", - "url": "https://cdn.modrinth.com/data/pAcsgLW2/versions/u3boO1Li/taczjs-forge-1.3.6-mc1.20.1.jar", - "id": "u3boO1Li", + "url": "https://cdn.modrinth.com/data/pAcsgLW2/versions/vV5GSjdw/taczjs-forge-1.3.7-mc1.20.1.jar", + "id": "vV5GSjdw", "parent_id": "pAcsgLW2", "hashes": { - "sha512": "02427d1396fc7eae8ebcd030739e90ab0e31aaefbaee5a4642e6ce0b3f1c51084066f74d88d988768741bd76e8b5dbcf3960250ca0f5ab901d48752531e953c9", - "sha1": "9a75526b23e2c851df20749ba1a5f3e11f90c603" + "sha512": "ef11ded5705b8eeb9d8f38800615e0c3ca05236cba6462cbf5d52dcd8dc8c6b0e3250fc021bb3475479097c9d47faf1a7466974c64006984bbeaff75b52a6c65", + "sha1": "8a97de20e31f7e863a968f82fd90e196f4b3a3b3" }, "required_dependencies": [ "umyGl7zF", "SzzJttH8" ], - "size": 90443, - "date_published": "2025-06-11T07:07:34.035734Z" + "size": 90442, + "date_published": "2025-12-02T00:14:24.346621Z" + }, + { + "type": "curseforge", + "file_name": "taczjs-forge-1.3.7-mc1.20.1.jar", + "mc_versions": [ + "1.20.1" + ], + "loaders": [ + "forge" + ], + "release_type": "release", + "url": "https://edge.forgecdn.net/files/7284/184/taczjs-forge-1.3.7-mc1.20.1.jar", + "id": "7284184", + "parent_id": "1130998", + "hashes": { + "sha1": "8a97de20e31f7e863a968f82fd90e196f4b3a3b3", + "md5": "acdef4ed6293254878749b7c8294370d" + }, + "required_dependencies": [ + "1028108", + "238086" + ], + "size": 90442, + "date_published": "2025-12-02T01:43:33.197Z" } ] }, @@ -13738,7 +13738,7 @@ "files": [ { "type": "modrinth", - "file_name": "tacz-tweaks-2.10.0-all.jar", + "file_name": "tacz-tweaks-2.11.2-all.jar", "mc_versions": [ "1.20", "1.20.1" @@ -13747,24 +13747,24 @@ "forge" ], "release_type": "release", - "url": "https://cdn.modrinth.com/data/H8peNuJG/versions/6u8Qmehi/tacz-tweaks-2.10.0-all.jar", - "id": "6u8Qmehi", + "url": "https://cdn.modrinth.com/data/H8peNuJG/versions/qD990J7Z/tacz-tweaks-2.11.2-all.jar", + "id": "qD990J7Z", "parent_id": "H8peNuJG", "hashes": { - "sha512": "9c5c35e3aa7d544f21af76e665894a8412c5252c81c0cc23736d6ec58749388af3baf6aa7aac292cf434ff974c8da4be0f7ee6beb40d6448ea9281859404cc32", - "sha1": "204a636d7e84ba8631c15f11f84be8c635e7ab4f" + "sha512": "67ab623a60951ce1d6bb9b5a9e0b7a8770b399d19c8de739a7bc7a4f3536126a232cb1292be4f7599b921c2075344dc360e6a80fabbfe6c73c775bcb77fae739", + "sha1": "889c0885b6388fc7966b956a5df4efbb1c758965" }, "required_dependencies": [ "ordsPcFz", "SzzJttH8", "1eAoo2KR" ], - "size": 1737843, - "date_published": "2025-11-05T13:18:31.842515Z" + "size": 1748066, + "date_published": "2025-12-04T12:41:22.415350Z" }, { "type": "curseforge", - "file_name": "tacz-tweaks-2.10.0-all.jar", + "file_name": "tacz-tweaks-2.11.2-all.jar", "mc_versions": [ "1.20.1", "1.20" @@ -13773,20 +13773,20 @@ "forge" ], "release_type": "release", - "url": "https://edge.forgecdn.net/files/7188/921/tacz-tweaks-2.10.0-all.jar", - "id": "7188921", + "url": "https://edge.forgecdn.net/files/7293/523/tacz-tweaks-2.11.2-all.jar", + "id": "7293523", "parent_id": "1193263", "hashes": { - "sha1": "204a636d7e84ba8631c15f11f84be8c635e7ab4f", - "md5": "5e30e520314ac6855883f2b7b164bb8c" + "sha1": "889c0885b6388fc7966b956a5df4efbb1c758965", + "md5": "0b11bd77a8d1e56bd8673cc9946023e1" }, "required_dependencies": [ "667299", "351264", "1028108" ], - "size": 1737843, - "date_published": "2025-11-05T13:18:30.730Z" + "size": 1748066, + "date_published": "2025-12-04T12:41:22.310Z" } ] }, @@ -14817,47 +14817,48 @@ "modrinth": "SzzJttH8" }, "files": [ - { - "type": "curseforge", - "file_name": "tacz-1.20.1-1.1.6-hotfix.jar", - "mc_versions": [ - "1.20.1" - ], - "loaders": [ - "forge" - ], - "release_type": "release", - "url": "https://edge.forgecdn.net/files/6654/541/tacz-1.20.1-1.1.6-hotfix.jar", - "id": "6654541", - "parent_id": "1028108", - "hashes": { - "sha1": "e951d81b5f452bcad47c20d5b491fd26f8de8ce2", - "md5": "51636447584a75f8d2db2fb930d110b1" - }, - "required_dependencies": [], - "size": 47826468, - "date_published": "2025-06-15T15:09:58.720Z" - }, { "type": "modrinth", - "file_name": "tacz-1.20.1-1.1.6-hotfix.jar", + "file_name": "tacz-1.20.1-1.1.7-release.jar", "mc_versions": [ + "1.20", "1.20.1" ], "loaders": [ "forge" ], "release_type": "release", - "url": "https://cdn.modrinth.com/data/SzzJttH8/versions/quyywMZF/tacz-1.20.1-1.1.6-hotfix.jar", - "id": "quyywMZF", + "url": "https://cdn.modrinth.com/data/SzzJttH8/versions/fErpFI0g/tacz-1.20.1-1.1.7-release.jar", + "id": "fErpFI0g", "parent_id": "SzzJttH8", "hashes": { - "sha512": "2db28186cc436b2e163db822dc0632fc32d5080adea3b3a0f891255cefe007ec029acd1e477f01adf5db8de7f79d14d4afa67c31a53b8c5ceaf00ce72b5de501", - "sha1": "e951d81b5f452bcad47c20d5b491fd26f8de8ce2" + "sha512": "3f4aa30d50e75b1e4e5291c4eee59107da60355c5e4b59fc3be0bc84e611d1acf0320aa8a7b905ab42d0c464d19765e58bac16e9ad6770860c19695e887ccc94", + "sha1": "869decffc818e6ccd7d6d0d734aecfaa265e908b" }, "required_dependencies": [], - "size": 47826468, - "date_published": "2025-06-15T15:12:58.577730Z" + "size": 52403127, + "date_published": "2025-12-01T04:26:59.653447Z" + }, + { + "type": "curseforge", + "file_name": "tacz-1.20.1-1.1.7-release.jar", + "mc_versions": [ + "1.20.1" + ], + "loaders": [ + "forge" + ], + "release_type": "release", + "url": "https://edge.forgecdn.net/files/7278/3/tacz-1.20.1-1.1.7-release.jar", + "id": "7278003", + "parent_id": "1028108", + "hashes": { + "sha1": "869decffc818e6ccd7d6d0d734aecfaa265e908b", + "md5": "27696ec987eefbec8e7ba6596e418b35" + }, + "required_dependencies": [], + "size": 52403127, + "date_published": "2025-11-30T12:53:47.060Z" } ] },