From c358f66510e32d3840448bf422a21a1c9fe0e2bc Mon Sep 17 00:00:00 2001 From: Thomas Date: Sat, 13 Jul 2024 02:10:03 +0200 Subject: [PATCH] Initial commit --- .codetogether.ignore | 2 + .gitattributes | 9 + .github/workflows/build.yml | 37 ++ .gitignore | 40 ++ LICENSE | 121 ++++++ build.gradle | 121 ++++++ gradle.properties | 25 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43453 bytes gradle/wrapper/gradle-wrapper.properties | 7 + gradlew | 249 ++++++++++++ gradlew.bat | 92 +++++ settings.gradle | 10 + .../com/gamingframe/beamtech/BeamTech.java | 34 ++ .../gamingframe/beamtech/BeamTechClient.java | 42 ++ .../beamtech/BeamTechDataGenerator.java | 18 + .../beamtech/block/ModBlockEntities.java | 40 ++ .../gamingframe/beamtech/block/ModBlocks.java | 45 +++ .../beamtech/block/custom/LaserBlock.java | 145 +++++++ .../block/custom/LaserCombinerBlock.java | 86 +++++ .../block/custom/LaserFocuserBlock.java | 11 + .../beamtech/block/custom/LaserOvenBlock.java | 15 + .../beamtech/block/custom/LensBlock.java | 10 + .../beamtech/block/custom/MirrorBlock.java | 132 +++++++ .../block/custom/entity/LaserBlockEntity.java | 323 ++++++++++++++++ .../entity/LaserCombinerBlockEntity.java | 220 +++++++++++ .../custom/entity/LaserOvenBlockEntity.java | 25 ++ .../renderer/LaserBlockEntityRenderer.java | 74 ++++ .../LaserInput/LaserInputComponentBlock.java | 4 + .../LaserOvenControllerCoreBlock.java | 19 + .../LaserOvenCoreBlockEntity.java | 15 + .../TitaniumPlatedObsidianComponentBlock.java | 9 + .../compat/BeamTechREIClientPlugin.java | 4 + .../beamtech/datagen/ModBlockTagProvider.java | 19 + .../beamtech/datagen/ModItemTagProvider.java | 22 ++ .../datagen/ModLootTableProvider.java | 16 + .../beamtech/datagen/ModModelProvider.java | 34 ++ .../beamtech/datagen/ModRecipeProvider.java | 25 ++ .../beamtech/helpers/TooltipHelper.java | 28 ++ .../beamtech/interfaces/EmitterInventory.java | 132 +++++++ .../beamtech/interfaces/IEmitter.java | 13 + .../interfaces/ILaserInteractable.java | 9 + .../beamtech/item/ModItemGroups.java | 35 ++ .../gamingframe/beamtech/item/ModItems.java | 43 +++ .../beamtech/item/lenses/FocalLens.java | 35 ++ .../beamtech/item/lenses/RangeLens.java | 34 ++ .../beamtech/item/tools/LaserGun.java | 220 +++++++++++ .../beamtech/mixin/KeybindingAccessor.java | 19 + .../raycasting/LaserRayCastContext.java | 32 ++ .../beamtech/screens/EmitterBlockScreen.java | 11 + .../beamtech/screens/EmitterGUI.java | 30 ++ .../gamingframe/beamtech/screens/ModGUIs.java | 20 + .../shader/MirrorReflectionPostProcessor.java | 26 ++ .../beamtech/sounds/ModSounds.java | 21 + .../beamtech/blockstates/laser_combiner.json | 9 + .../beamtech/blockstates/laser_emitter.json | 10 + .../assets/beamtech/blockstates/mirror.json | 12 + src/main/resources/assets/beamtech/icon.png | Bin 0 -> 3102 bytes .../resources/assets/beamtech/lang/en_us.json | 26 ++ .../beamtech/models/block/laser_combiner.json | 364 ++++++++++++++++++ .../beamtech/models/block/laser_emitter.json | 211 ++++++++++ .../models/block/laser_emitter_downwards.json | 186 +++++++++ .../models/block/laser_emitter_upwards.json | 186 +++++++++ .../assets/beamtech/models/block/mirror.json | 128 ++++++ .../beamtech/models/block/mirror_112.json | 97 +++++ .../beamtech/models/block/mirror_135.json | 97 +++++ .../beamtech/models/block/mirror_157.json | 97 +++++ .../beamtech/models/block/mirror_22.json | 97 +++++ .../beamtech/models/block/mirror_45.json | 97 +++++ .../beamtech/models/block/mirror_67.json | 97 +++++ .../beamtech/models/block/mirror_90.json | 97 +++++ .../beamtech/models/item/alloy_iron.json | 6 + .../beamtech/models/item/focal_lens.json | 6 + .../beamtech/models/item/laser_combiner.json | 3 + .../beamtech/models/item/laser_emitter.json | 3 + .../assets/beamtech/models/item/lens.json | 6 + .../assets/beamtech/models/item/mirror.json | 3 + .../beamtech/models/item/range_lens.json | 6 + .../pinwheel/shaders/program/beamtech.fsh | 0 .../pinwheel/shaders/program/beamtech.json | 3 + .../beamtech/shaders/post/mirror_post.json | 31 ++ .../beamtech/shaders/program/mirror.fsh | 14 + .../beamtech/shaders/program/mirror.json | 18 + .../beamtech/shaders/program/mirror.vsh | 18 + .../resources/assets/beamtech/sounds.json | 8 + .../beamtech/sounds/laser_gun_firing.ogg | Bin 0 -> 316579 bytes .../textures/block/laser_combiner.png | Bin 0 -> 4299 bytes .../beamtech/textures/block/laser_emitter.png | Bin 0 -> 3784 bytes .../assets/beamtech/textures/block/mirror.png | Bin 0 -> 1302 bytes .../beamtech/textures/item/alloy_iron.png | Bin 0 -> 266 bytes .../beamtech/textures/item/focal_lens.png | Bin 0 -> 800 bytes .../assets/beamtech/textures/item/lens.png | Bin 0 -> 708 bytes .../beamtech/textures/item/range_lens.png | Bin 0 -> 696 bytes src/main/resources/beamtech.mixins.json | 11 + .../data/beamtech/recipes/capacitor.json | 23 ++ .../data/beamtech/recipes/emitter.json | 26 ++ .../data/beamtech/recipes/focal_lens.json | 15 + .../data/beamtech/recipes/laser_combiner.json | 29 ++ .../data/beamtech/recipes/laser_emitter.json | 23 ++ .../resources/data/beamtech/recipes/lens.json | 20 + .../data/beamtech/recipes/mirror.json | 23 ++ .../beamtech/recipes/mirror_ingredient.json | 20 + .../data/beamtech/recipes/range_lens.json | 15 + src/main/resources/fabric.mod.json | 40 ++ 103 files changed, 4989 insertions(+) create mode 100644 .codetogether.ignore create mode 100644 .gitattributes create mode 100644 .github/workflows/build.yml create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle create mode 100644 src/main/java/com/gamingframe/beamtech/BeamTech.java create mode 100644 src/main/java/com/gamingframe/beamtech/BeamTechClient.java create mode 100644 src/main/java/com/gamingframe/beamtech/BeamTechDataGenerator.java create mode 100644 src/main/java/com/gamingframe/beamtech/block/ModBlockEntities.java create mode 100644 src/main/java/com/gamingframe/beamtech/block/ModBlocks.java create mode 100644 src/main/java/com/gamingframe/beamtech/block/custom/LaserBlock.java create mode 100644 src/main/java/com/gamingframe/beamtech/block/custom/LaserCombinerBlock.java create mode 100644 src/main/java/com/gamingframe/beamtech/block/custom/LaserFocuserBlock.java create mode 100644 src/main/java/com/gamingframe/beamtech/block/custom/LaserOvenBlock.java create mode 100644 src/main/java/com/gamingframe/beamtech/block/custom/LensBlock.java create mode 100644 src/main/java/com/gamingframe/beamtech/block/custom/MirrorBlock.java create mode 100644 src/main/java/com/gamingframe/beamtech/block/custom/entity/LaserBlockEntity.java create mode 100644 src/main/java/com/gamingframe/beamtech/block/custom/entity/LaserCombinerBlockEntity.java create mode 100644 src/main/java/com/gamingframe/beamtech/block/custom/entity/LaserOvenBlockEntity.java create mode 100644 src/main/java/com/gamingframe/beamtech/block/custom/entity/renderer/LaserBlockEntityRenderer.java create mode 100644 src/main/java/com/gamingframe/beamtech/block/custom/multiblock/LaserInput/LaserInputComponentBlock.java create mode 100644 src/main/java/com/gamingframe/beamtech/block/custom/multiblock/LaserOven/LaserOvenController/LaserOvenControllerCoreBlock.java create mode 100644 src/main/java/com/gamingframe/beamtech/block/custom/multiblock/LaserOven/LaserOvenController/LaserOvenCoreBlockEntity.java create mode 100644 src/main/java/com/gamingframe/beamtech/block/custom/multiblock/LaserOven/TitaniumPlatedObsidian/TitaniumPlatedObsidianComponentBlock.java create mode 100644 src/main/java/com/gamingframe/beamtech/compat/BeamTechREIClientPlugin.java create mode 100644 src/main/java/com/gamingframe/beamtech/datagen/ModBlockTagProvider.java create mode 100644 src/main/java/com/gamingframe/beamtech/datagen/ModItemTagProvider.java create mode 100644 src/main/java/com/gamingframe/beamtech/datagen/ModLootTableProvider.java create mode 100644 src/main/java/com/gamingframe/beamtech/datagen/ModModelProvider.java create mode 100644 src/main/java/com/gamingframe/beamtech/datagen/ModRecipeProvider.java create mode 100644 src/main/java/com/gamingframe/beamtech/helpers/TooltipHelper.java create mode 100644 src/main/java/com/gamingframe/beamtech/interfaces/EmitterInventory.java create mode 100644 src/main/java/com/gamingframe/beamtech/interfaces/IEmitter.java create mode 100644 src/main/java/com/gamingframe/beamtech/interfaces/ILaserInteractable.java create mode 100644 src/main/java/com/gamingframe/beamtech/item/ModItemGroups.java create mode 100644 src/main/java/com/gamingframe/beamtech/item/ModItems.java create mode 100644 src/main/java/com/gamingframe/beamtech/item/lenses/FocalLens.java create mode 100644 src/main/java/com/gamingframe/beamtech/item/lenses/RangeLens.java create mode 100644 src/main/java/com/gamingframe/beamtech/item/tools/LaserGun.java create mode 100644 src/main/java/com/gamingframe/beamtech/mixin/KeybindingAccessor.java create mode 100644 src/main/java/com/gamingframe/beamtech/raycasting/LaserRayCastContext.java create mode 100644 src/main/java/com/gamingframe/beamtech/screens/EmitterBlockScreen.java create mode 100644 src/main/java/com/gamingframe/beamtech/screens/EmitterGUI.java create mode 100644 src/main/java/com/gamingframe/beamtech/screens/ModGUIs.java create mode 100644 src/main/java/com/gamingframe/beamtech/shader/MirrorReflectionPostProcessor.java create mode 100644 src/main/java/com/gamingframe/beamtech/sounds/ModSounds.java create mode 100644 src/main/resources/assets/beamtech/blockstates/laser_combiner.json create mode 100644 src/main/resources/assets/beamtech/blockstates/laser_emitter.json create mode 100644 src/main/resources/assets/beamtech/blockstates/mirror.json create mode 100644 src/main/resources/assets/beamtech/icon.png create mode 100644 src/main/resources/assets/beamtech/lang/en_us.json create mode 100644 src/main/resources/assets/beamtech/models/block/laser_combiner.json create mode 100644 src/main/resources/assets/beamtech/models/block/laser_emitter.json create mode 100644 src/main/resources/assets/beamtech/models/block/laser_emitter_downwards.json create mode 100644 src/main/resources/assets/beamtech/models/block/laser_emitter_upwards.json create mode 100644 src/main/resources/assets/beamtech/models/block/mirror.json create mode 100644 src/main/resources/assets/beamtech/models/block/mirror_112.json create mode 100644 src/main/resources/assets/beamtech/models/block/mirror_135.json create mode 100644 src/main/resources/assets/beamtech/models/block/mirror_157.json create mode 100644 src/main/resources/assets/beamtech/models/block/mirror_22.json create mode 100644 src/main/resources/assets/beamtech/models/block/mirror_45.json create mode 100644 src/main/resources/assets/beamtech/models/block/mirror_67.json create mode 100644 src/main/resources/assets/beamtech/models/block/mirror_90.json create mode 100644 src/main/resources/assets/beamtech/models/item/alloy_iron.json create mode 100644 src/main/resources/assets/beamtech/models/item/focal_lens.json create mode 100644 src/main/resources/assets/beamtech/models/item/laser_combiner.json create mode 100644 src/main/resources/assets/beamtech/models/item/laser_emitter.json create mode 100644 src/main/resources/assets/beamtech/models/item/lens.json create mode 100644 src/main/resources/assets/beamtech/models/item/mirror.json create mode 100644 src/main/resources/assets/beamtech/models/item/range_lens.json create mode 100644 src/main/resources/assets/beamtech/pinwheel/shaders/program/beamtech.fsh create mode 100644 src/main/resources/assets/beamtech/pinwheel/shaders/program/beamtech.json create mode 100644 src/main/resources/assets/beamtech/shaders/post/mirror_post.json create mode 100644 src/main/resources/assets/beamtech/shaders/program/mirror.fsh create mode 100644 src/main/resources/assets/beamtech/shaders/program/mirror.json create mode 100644 src/main/resources/assets/beamtech/shaders/program/mirror.vsh create mode 100644 src/main/resources/assets/beamtech/sounds.json create mode 100644 src/main/resources/assets/beamtech/sounds/laser_gun_firing.ogg create mode 100644 src/main/resources/assets/beamtech/textures/block/laser_combiner.png create mode 100644 src/main/resources/assets/beamtech/textures/block/laser_emitter.png create mode 100644 src/main/resources/assets/beamtech/textures/block/mirror.png create mode 100644 src/main/resources/assets/beamtech/textures/item/alloy_iron.png create mode 100644 src/main/resources/assets/beamtech/textures/item/focal_lens.png create mode 100644 src/main/resources/assets/beamtech/textures/item/lens.png create mode 100644 src/main/resources/assets/beamtech/textures/item/range_lens.png create mode 100644 src/main/resources/beamtech.mixins.json create mode 100644 src/main/resources/data/beamtech/recipes/capacitor.json create mode 100644 src/main/resources/data/beamtech/recipes/emitter.json create mode 100644 src/main/resources/data/beamtech/recipes/focal_lens.json create mode 100644 src/main/resources/data/beamtech/recipes/laser_combiner.json create mode 100644 src/main/resources/data/beamtech/recipes/laser_emitter.json create mode 100644 src/main/resources/data/beamtech/recipes/lens.json create mode 100644 src/main/resources/data/beamtech/recipes/mirror.json create mode 100644 src/main/resources/data/beamtech/recipes/mirror_ingredient.json create mode 100644 src/main/resources/data/beamtech/recipes/range_lens.json create mode 100644 src/main/resources/fabric.mod.json diff --git a/.codetogether.ignore b/.codetogether.ignore new file mode 100644 index 0000000..afbc95a --- /dev/null +++ b/.codetogether.ignore @@ -0,0 +1,2 @@ + +src\main\java\com\gamingframe\beamtech\block\custom\multiblock\LaserOven\LaserOvenControllerCoreBlock diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..097f9f9 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,9 @@ +# +# https://help.github.com/articles/dealing-with-line-endings/ +# +# Linux start script should use lf +/gradlew text eol=lf + +# These are Windows script files and should use crlf +*.bat text eol=crlf + diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..b01da52 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,37 @@ +# Automatically build the project and run any configured tests for every push +# and submitted pull request. This can help catch issues that only occur on +# certain platforms or Java versions, and provides a first line of defence +# against bad commits. + +name: build +on: [pull_request, push] + +jobs: + build: + strategy: + matrix: + # Use these Java versions + java: [ + 21, # Current Java LTS + ] + runs-on: ubuntu-22.04 + steps: + - name: checkout repository + uses: actions/checkout@v4 + - name: validate gradle wrapper + uses: gradle/wrapper-validation-action@v2 + - name: setup jdk ${{ matrix.java }} + uses: actions/setup-java@v4 + with: + java-version: ${{ matrix.java }} + distribution: 'microsoft' + - name: make gradle wrapper executable + run: chmod +x ./gradlew + - name: build + run: ./gradlew build + - name: capture build artifacts + if: ${{ matrix.java == '21' }} # Only upload artifacts built from latest java + uses: actions/upload-artifact@v4 + with: + name: Artifacts + path: build/libs/ \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c476faf --- /dev/null +++ b/.gitignore @@ -0,0 +1,40 @@ +# gradle + +.gradle/ +build/ +out/ +classes/ + +# eclipse + +*.launch + +# idea + +.idea/ +*.iml +*.ipr +*.iws + +# vscode + +.settings/ +.vscode/ +bin/ +.classpath +.project + +# macos + +*.DS_Store + +# fabric + +run/ + +# java + +hs_err_*.log +replay_*.log +*.hprof +*.jfr diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..1625c17 --- /dev/null +++ b/LICENSE @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..9b1030d --- /dev/null +++ b/build.gradle @@ -0,0 +1,121 @@ +plugins { + id 'fabric-loom' version '1.7-SNAPSHOT' + id 'maven-publish' +} + +version = project.mod_version +group = project.maven_group + +base { + archivesName = project.archives_base_name +} + +repositories { + // Add repositories to retrieve artifacts from in here. + // You should only use this when depending on other mods because + // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. + // See https://docs.gradle.org/current/userguide/declaring_repositories.html + // for more information about repositories. + maven {url = 'https://maven.blamejared.com/' } + maven {url = "https://mvn.devos.one/releases/" } + maven {url = "https://api.modrinth.com/maven" } + maven {url = "https://maven.theillusivec4.top/"} + maven {url = "https://maven.jamieswhiteshirt.com/libs-release"} + maven {url = 'https://maven.ladysnake.org/releases'} + maven {url = "https://maven.terraformersmc.com/"} + maven { + name = 'BlameJared Maven (CrT / Bookshelf)' + url = 'https://maven.blamejared.com' + } + maven { + name = "CottonMC" + url = "https://server.bbkr.space/artifactory/libs-release" + } + maven {url = "https://maven.shedaniel.me" } +} + +fabricApi { + configureDataGeneration() +} + +def portingLib = ["asm", "accessors", "attributes", "base", "blocks", "brewing", "client_events", "common", "core", "config", "chunk_loading", "data", "entity", "extensions", "fluids", "gametest", "gui_utils", "items", "lazy_registration", "level_events", "loot", "mixin_extensions", "model_builders", "model_generators", "model_loader", "model_materials", "models", "networking", "obj_loader", "recipe_book_categories", "registries", "tags", "tool_actions", "transfer", "utility", +] + +dependencies { + // To change the versions see the gradle.properties file + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" + modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + + // Fabric API. This is technically optional, but you probably want it anyway. + modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + + modImplementation("team.lodestar.lodestone:lodestone:${project.minecraft_version}-${project.lodestone_version}-fabric") + //For this you also need the following + modImplementation("dev.onyxstudios.cardinal-components-api:cardinal-components-base:${project.cca_version}") + modImplementation("dev.onyxstudios.cardinal-components-api:cardinal-components-entity:${project.cca_version}") + modImplementation("dev.onyxstudios.cardinal-components-api:cardinal-components-world:${project.cca_version}") + + modImplementation("dev.emi:trinkets:${project.trinkets_version}") + portingLib.forEach {module -> + include("io.github.fabricators_of_create.Porting-Lib:${module}:${project.porting_lib_version}+${project.minecraft_version}") + } + + modImplementation("com.jamieswhiteshirt:reach-entity-attributes:${project.rea_version}") + + include modApi('teamreborn:energy:3.0.0') + modCompileOnly "me.shedaniel:RoughlyEnoughItems-api-fabric:12.1.725" + modRuntimeOnly "me.shedaniel:RoughlyEnoughItems-fabric:12.1.725" + + modImplementation include("io.github.cottonmc:LibGui:8.1.1+1.20.1") + +// modImplementation("foundry.veil:Veil-fabric-${project.minecraft_version}:${project.veil_version}") { +// exclude group: "maven.modrinth" +// } +} + +processResources { + inputs.property "version", project.version + + filesMatching("fabric.mod.json") { + expand "version": project.version + } +} + +tasks.withType(JavaCompile).configureEach { + it.options.release = 17 +} + +java { + // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task + // if it is present. + // If you remove this line, sources will not be generated. + withSourcesJar() + + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} + +jar { + from("LICENSE") { + rename { "${it}_${project.base.archivesName.get()}"} + } +} + +// configure the maven publication +publishing { + publications { + create("mavenJava", MavenPublication) { + artifactId = project.archives_base_name + from components.java + } + } + + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. + repositories { + // Add repositories to publish to here. + // Notice: This block does NOT have the same function as the block in the top level. + // The repositories here will be used for publishing your artifact, not for + // retrieving dependencies. + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..3518c2a --- /dev/null +++ b/gradle.properties @@ -0,0 +1,25 @@ +# Done to increase the memory available to gradle. +org.gradle.jvmargs=-Xmx1G +org.gradle.parallel=true + +# Fabric Properties +# check these on https://fabricmc.net/develop +minecraft_version=1.20.1 +yarn_mappings=1.20.1+build.10 +loader_version=0.15.11 + +# Mod Properties +mod_version=1.0.0 +maven_group=com.gamingframe.beamtech +archives_base_name=beamtech + +# Dependencies +fabric_version=0.92.2+1.20.1 + +#Lodestone & Dependencies +lodestone_version=1.6.1.2h +cca_version=5.2.2 +rea_version=2.4.0 +porting_lib_version=2.3.4 +trinkets_version=3.7.2 +#veil_version=1.0.0.258 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e6441136f3d4ba8a0da8d277868979cfbc8ad796 GIT binary patch literal 43453 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 yu?e%!_ptzGB|8GrCfu%p?(_ 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
NnX)EH+Nua)3Y(c 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 '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..25da30d --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..75c4d72 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,10 @@ +pluginManagement { + repositories { + maven { + name = 'Fabric' + url = 'https://maven.fabricmc.net/' + } + mavenCentral() + gradlePluginPortal() + } +} \ No newline at end of file diff --git a/src/main/java/com/gamingframe/beamtech/BeamTech.java b/src/main/java/com/gamingframe/beamtech/BeamTech.java new file mode 100644 index 0000000..2932c6c --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/BeamTech.java @@ -0,0 +1,34 @@ +package com.gamingframe.beamtech; + +import com.gamingframe.beamtech.block.ModBlockEntities; +import com.gamingframe.beamtech.block.ModBlocks; +import com.gamingframe.beamtech.item.ModItemGroups; +import com.gamingframe.beamtech.item.ModItems; +import com.gamingframe.beamtech.sounds.ModSounds; +import net.fabricmc.api.ModInitializer; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class BeamTech implements ModInitializer { + // This logger is used to write text to the console and the log file. + // It is considered best practice to use your mod id as the logger's name. + // That way, it's clear which mod wrote info, warnings, and errors. + public static final String MOD_ID = "beamtech"; + public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); + + @Override + public void onInitialize() { + // This code runs as soon as Minecraft is in a mod-load-ready state. + // However, some things (like resources) may still be uninitialized. + // Proceed with mild caution. + ModItemGroups.registerItemGroups(); + + ModItems.registerModItems(); + ModBlocks.registerModBlocks(); + ModBlockEntities.registerBlockEntities(); + ModSounds.registerSounds(); + + LOGGER.info("Hello Fabric world!"); + } +} \ No newline at end of file diff --git a/src/main/java/com/gamingframe/beamtech/BeamTechClient.java b/src/main/java/com/gamingframe/beamtech/BeamTechClient.java new file mode 100644 index 0000000..8e95a27 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/BeamTechClient.java @@ -0,0 +1,42 @@ +package com.gamingframe.beamtech; + +import com.gamingframe.beamtech.block.ModBlockEntities; +import com.gamingframe.beamtech.block.custom.entity.LaserBlockEntity; +import com.gamingframe.beamtech.block.custom.entity.renderer.LaserBlockEntityRenderer; +import com.gamingframe.beamtech.screens.EmitterBlockScreen; +import com.gamingframe.beamtech.screens.EmitterGUI; +import com.gamingframe.beamtech.screens.ModGUIs; +import com.gamingframe.beamtech.shader.MirrorReflectionPostProcessor; +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.client.gui.screen.ingame.HandledScreens; +import net.minecraft.client.render.block.entity.BlockEntityRendererFactories; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.BlockPos; +import team.lodestar.lodestone.systems.postprocess.PostProcessHandler; + +@Environment(EnvType.CLIENT) +public class BeamTechClient implements ClientModInitializer { + + @Override + public void onInitializeClient() { + HandledScreens.register(ModGUIs.EMITTER_GUI, (gui, inventory, title) -> new EmitterBlockScreen(gui, inventory.player, title)); + ClientPlayNetworking.registerGlobalReceiver(new Identifier(BeamTech.MOD_ID, "update_laser_lens"), (client, handler, buf, responseSender) -> { + BlockPos pos = buf.readBlockPos(); + ItemStack itemStack = buf.readItemStack(); + + BlockEntity blockEntity = client.world.getBlockEntity(pos); + if (blockEntity instanceof LaserBlockEntity laserBlockEntity) { + laserBlockEntity.syncInventory(itemStack); + } + }); + + BlockEntityRendererFactories.register(ModBlockEntities.LASER_EMITTER_BLOCK_ENTITY, LaserBlockEntityRenderer::new); + + PostProcessHandler.addInstance(MirrorReflectionPostProcessor.INSTANCE); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/BeamTechDataGenerator.java b/src/main/java/com/gamingframe/beamtech/BeamTechDataGenerator.java new file mode 100644 index 0000000..cb7d38d --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/BeamTechDataGenerator.java @@ -0,0 +1,18 @@ +package com.gamingframe.beamtech; + +import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint; +import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; +import com.gamingframe.beamtech.datagen.*; + +public class BeamTechDataGenerator implements DataGeneratorEntrypoint { + @Override + public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) { + FabricDataGenerator.Pack pack = fabricDataGenerator.createPack(); + + pack.addProvider(ModBlockTagProvider::new); + pack.addProvider(ModItemTagProvider::new); + pack.addProvider(ModLootTableProvider::new); + pack.addProvider(ModModelProvider::new); + pack.addProvider(ModRecipeProvider::new); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/block/ModBlockEntities.java b/src/main/java/com/gamingframe/beamtech/block/ModBlockEntities.java new file mode 100644 index 0000000..b60b697 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/block/ModBlockEntities.java @@ -0,0 +1,40 @@ +package com.gamingframe.beamtech.block; + +import com.gamingframe.beamtech.BeamTech; +import com.gamingframe.beamtech.block.custom.entity.LaserBlockEntity; +import com.gamingframe.beamtech.block.custom.entity.LaserCombinerBlockEntity; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.util.Identifier; +import team.reborn.energy.api.EnergyStorage; + +public class ModBlockEntities { + + public static final BlockEntityType LASER_EMITTER_BLOCK_ENTITY = Registry.register( + Registries.BLOCK_ENTITY_TYPE, + Identifier.of(BeamTech.MOD_ID, "laser_emitter_block_entity"), + BlockEntityType.Builder.create(LaserBlockEntity::new, ModBlocks.LASER_EMITTER).build(null) + ); + + public static final BlockEntityType LASER_COMBINER_BLOCK_ENTITY = Registry.register( + Registries.BLOCK_ENTITY_TYPE, + Identifier.of(BeamTech.MOD_ID, "laser_combiner_block_entity"), + BlockEntityType.Builder.create(LaserCombinerBlockEntity::new, ModBlocks.LASER_COMBINER_BLOCK).build(null) + ); + +// public static final BlockEntityType MIRROR_BLOCK_ENTITY = Registry.register( +// Registries.BLOCK_ENTITY_TYPE, +// Identifier.of(BeamTech.MOD_ID, "mirror_block_entity"), +// BlockEntityType.Builder.create(MirrorBlockEntity::new, ModBlocks.MIRROR_BLOCK).build(null) +// ); + + + public static void registerBlockEntities() { + BeamTech.LOGGER.info("Registering Blocks Entities for " + BeamTech.MOD_ID); + EnergyStorage.SIDED.registerForBlockEntity((myBlockEntity, direction) -> myBlockEntity.energyStorage, LASER_EMITTER_BLOCK_ENTITY); + + } + + +} diff --git a/src/main/java/com/gamingframe/beamtech/block/ModBlocks.java b/src/main/java/com/gamingframe/beamtech/block/ModBlocks.java new file mode 100644 index 0000000..b878893 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/block/ModBlocks.java @@ -0,0 +1,45 @@ +package com.gamingframe.beamtech.block; + +import com.gamingframe.beamtech.BeamTech; +import com.gamingframe.beamtech.block.custom.LaserBlock; +import com.gamingframe.beamtech.block.custom.LaserCombinerBlock; +import com.gamingframe.beamtech.block.custom.MirrorBlock; +import com.gamingframe.beamtech.block.custom.multiblock.LaserOven.TitaniumPlatedObsidian.TitaniumPlatedObsidianComponentBlock; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.Block; +import net.minecraft.block.Blocks; +import net.minecraft.item.BlockItem; +import net.minecraft.item.Item; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.util.Identifier; + +public class ModBlocks { + + public static final Block LASER_EMITTER = registerBlock("laser_emitter", + new LaserBlock(FabricBlockSettings.copyOf(Blocks.IRON_BLOCK).nonOpaque())); + + public static final Block MIRROR_BLOCK = registerBlock("mirror", + new MirrorBlock(FabricBlockSettings.copyOf(Blocks.IRON_BLOCK).nonOpaque())); + + public static final Block LASER_COMBINER_BLOCK = registerBlock("laser_combiner", + new LaserCombinerBlock(FabricBlockSettings.copyOf(Blocks.IRON_BLOCK).nonOpaque())); + + public static final Block TITANIUM_PLATED_OBSIDIAN_BLOCK = registerBlock("titanium_plated_obsidian", + new TitaniumPlatedObsidianComponentBlock(FabricBlockSettings.copyOf(Blocks.IRON_BLOCK).nonOpaque())); + + public static Block registerBlock(String name, Block block) { + registerBlockItem(name, block); + return Registry.register(Registries.BLOCK, Identifier.of(BeamTech.MOD_ID, name), block); + } + + public static Item registerBlockItem(String name, Block block) { + return Registry.register(Registries.ITEM, Identifier.of(BeamTech.MOD_ID, name), new BlockItem(block, new Item.Settings())); + } + + + public static void registerModBlocks() { + BeamTech.LOGGER.info("Registering Blocks for " + BeamTech.MOD_ID); + } + +} diff --git a/src/main/java/com/gamingframe/beamtech/block/custom/LaserBlock.java b/src/main/java/com/gamingframe/beamtech/block/custom/LaserBlock.java new file mode 100644 index 0000000..252e0a9 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/block/custom/LaserBlock.java @@ -0,0 +1,145 @@ +package com.gamingframe.beamtech.block.custom; + +import com.gamingframe.beamtech.BeamTech; +import com.gamingframe.beamtech.block.ModBlockEntities; +import com.gamingframe.beamtech.block.custom.entity.LaserBlockEntity; +import com.gamingframe.beamtech.item.ModItems; +import com.gamingframe.beamtech.mixin.KeybindingAccessor; +import com.mojang.serialization.MapCodec; +import net.minecraft.block.*; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.entity.BlockEntityTicker; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.item.TooltipContext; +import net.minecraft.client.util.InputUtil; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.BooleanProperty; +import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.Properties; +import net.minecraft.text.Text; +import net.minecraft.util.*; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; +import org.jetbrains.annotations.Nullable; + +import java.text.Normalizer; +import java.util.List; + +public class LaserBlock extends BlockWithEntity { + public static final DirectionProperty FACING = Properties.FACING; + + public LaserBlock(Settings settings) { + super(settings); + BeamTech.LOGGER.info("Creating Block Laser Emitter for {} ", BeamTech.MOD_ID); + this.setDefaultState(this.stateManager.getDefaultState().with(FACING, Direction.NORTH)); + } + + @Override + public BlockState rotate(BlockState state, BlockRotation rotation) { + return state.with(FACING, rotation.rotate(state.get(FACING))); + } + + @Override + public BlockState mirror(BlockState state, BlockMirror mirror) { + return state.rotate(mirror.getRotation(state.get(FACING))); + } + + @Override + public BlockRenderType getRenderType(BlockState state) { + return BlockRenderType.MODEL; + } + + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext ctx) { + Direction dir = state.get(FACING); + return switch (dir) { + default -> VoxelShapes.fullCube(); + }; + } + + @Override + public BlockState getPlacementState(ItemPlacementContext ctx) { + return this.getDefaultState().with(FACING, ctx.getPlayerLookDirection().getOpposite()); + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(FACING); + } + + @Nullable + @Override + public BlockEntityTicker getTicker(World world, BlockState state, BlockEntityType type) { + if (type != ModBlockEntities.LASER_EMITTER_BLOCK_ENTITY) return null; + return (world1, pos, state1, be) -> LaserBlockEntity.tick(world1, pos, state1, (LaserBlockEntity) be); + } + + @Nullable + @Override + public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { + BeamTech.LOGGER.info("Creating Block Entity at {} for {} ", pos, BeamTech.MOD_ID); + return new LaserBlockEntity(pos, state); + } + + @Override + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { + ItemStack playerStack = player.getStackInHand(hand); + + BlockEntity entity = world.getBlockEntity(pos); + + if (entity instanceof LaserBlockEntity be) { + ItemStack beStack = be.getStack(0); + + Item playerItem = playerStack.getItem(); + if (beStack.getItem() != Items.AIR) { + if (playerItem == ModItems.FOCAL_LENS || playerItem == ModItems.RANGE_LENS) { + player.setStackInHand(hand, beStack); + be.setStack(0, playerStack); + } else { + if (playerItem == Items.AIR) { + player.setStackInHand(hand, beStack); + }else { + // TODO: This ignores if your inventory is full, if its full it disapears in the void! + player.giveItemStack(beStack); + } + be.setStack(0, Items.AIR.getDefaultStack()); + } + } else { + if (playerItem == ModItems.FOCAL_LENS || playerItem == ModItems.RANGE_LENS) { + player.setStackInHand(hand, Items.AIR.getDefaultStack()); + be.setStack(0, playerStack); + } + } + } + +// player.openHandledScreen(state.createScreenHandlerFactory(world, pos)); + return ActionResult.SUCCESS; + } + + @Override + public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { + + InputUtil.Key boundSneakKey = ((KeybindingAccessor)MinecraftClient.getInstance().options.sneakKey).getBoundKey(); + + if (InputUtil.isKeyPressed(MinecraftClient.getInstance().getWindow().getHandle(), boundSneakKey.getCode())) { + tooltip.add(Text.translatable("item.beamtech.laser_block.desc").formatted(Formatting.GRAY)); + }else { + tooltip.add(Text.translatable("tooltip.beamtech.hold_crouch_desc", + Text.translatable(MinecraftClient.getInstance().options.sneakKey.getBoundKeyTranslationKey()).formatted(Formatting.GOLD)) + .formatted(Formatting.GRAY)); + } + + super.appendTooltip(stack, world, tooltip, options); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/block/custom/LaserCombinerBlock.java b/src/main/java/com/gamingframe/beamtech/block/custom/LaserCombinerBlock.java new file mode 100644 index 0000000..b0d05a0 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/block/custom/LaserCombinerBlock.java @@ -0,0 +1,86 @@ +package com.gamingframe.beamtech.block.custom; + +import com.gamingframe.beamtech.BeamTech; +import com.gamingframe.beamtech.block.ModBlockEntities; +import com.gamingframe.beamtech.block.custom.entity.LaserBlockEntity; +import com.gamingframe.beamtech.block.custom.entity.LaserCombinerBlockEntity; +import com.gamingframe.beamtech.interfaces.IEmitter; +import com.gamingframe.beamtech.mixin.KeybindingAccessor; +import com.mojang.serialization.MapCodec; +import net.minecraft.block.*; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.entity.BlockEntityTicker; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.item.TooltipContext; +import net.minecraft.client.util.InputUtil; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.item.ItemStack; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.Properties; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +public class LaserCombinerBlock extends HorizontalFacingBlock implements BlockEntityProvider { + public LaserCombinerBlock(Settings settings) { + super(settings); + this.setDefaultState(this.stateManager.getDefaultState().with(FACING, Direction.NORTH)); + } + + public static final DirectionProperty FACING = Properties.FACING; + + @Override + public BlockRenderType getRenderType(BlockState state) { + // With inheriting from BlockWithEntity this defaults to INVISIBLE, so we need to change that! + return BlockRenderType.MODEL; + } + + @Override + public BlockState getPlacementState(ItemPlacementContext ctx) { + return this.getDefaultState().with(FACING, ctx.getHorizontalPlayerFacing().getOpposite()); + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(FACING); + } + + @Nullable + @Override + public BlockEntityTicker getTicker(World world, BlockState state, BlockEntityType type) { + if (type != ModBlockEntities.LASER_COMBINER_BLOCK_ENTITY) return null; + return (world1, pos, state1, be) -> LaserCombinerBlockEntity.tick(world1, pos, state1, (LaserCombinerBlockEntity) be); + } + + @Nullable + @Override + public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { + BeamTech.LOGGER.info("Creating Block Entity at {} for {} ", pos, BeamTech.MOD_ID); + return new LaserCombinerBlockEntity(pos, state); + } + + @Override + public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { + + InputUtil.Key boundSneakKey = ((KeybindingAccessor) MinecraftClient.getInstance().options.sneakKey).getBoundKey(); + + if (InputUtil.isKeyPressed(MinecraftClient.getInstance().getWindow().getHandle(), boundSneakKey.getCode())) { + tooltip.add(Text.translatable("item.beamtech.laser_combiner.desc").formatted(Formatting.GRAY)); + }else { + tooltip.add(Text.translatable("tooltip.beamtech.hold_crouch_desc", + Text.translatable(MinecraftClient.getInstance().options.sneakKey.getBoundKeyTranslationKey()).formatted(Formatting.GOLD)) + .formatted(Formatting.GRAY)); + } + + super.appendTooltip(stack, world, tooltip, options); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/block/custom/LaserFocuserBlock.java b/src/main/java/com/gamingframe/beamtech/block/custom/LaserFocuserBlock.java new file mode 100644 index 0000000..e3acf5e --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/block/custom/LaserFocuserBlock.java @@ -0,0 +1,11 @@ +package com.gamingframe.beamtech.block.custom; + +import net.minecraft.block.Block; + +// TODO: This block will focus a laser it receives onto itself to create cool items. Will an inventory +// (avoid UI interface, prefer using right click to give the items to the block) +public class LaserFocuserBlock extends Block { + public LaserFocuserBlock(Settings settings) { + super(settings); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/block/custom/LaserOvenBlock.java b/src/main/java/com/gamingframe/beamtech/block/custom/LaserOvenBlock.java new file mode 100644 index 0000000..b1c16af --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/block/custom/LaserOvenBlock.java @@ -0,0 +1,15 @@ +package com.gamingframe.beamtech.block.custom; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.util.math.BlockPos; + +// TODO: Make an oven that when powered by a laser cooks items. +public class LaserOvenBlock extends BlockEntity { + + public LaserOvenBlock(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/block/custom/LensBlock.java b/src/main/java/com/gamingframe/beamtech/block/custom/LensBlock.java new file mode 100644 index 0000000..debbc0d --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/block/custom/LensBlock.java @@ -0,0 +1,10 @@ +package com.gamingframe.beamtech.block.custom; + +import net.minecraft.block.Block; + +// TODO: This block when shot at by a laser, will output a new laser with the lens attached to this block. +public class LensBlock extends Block { + public LensBlock(Settings settings) { + super(settings); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/block/custom/MirrorBlock.java b/src/main/java/com/gamingframe/beamtech/block/custom/MirrorBlock.java new file mode 100644 index 0000000..6a4755a --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/block/custom/MirrorBlock.java @@ -0,0 +1,132 @@ +package com.gamingframe.beamtech.block.custom; + +import com.gamingframe.beamtech.BeamTech; +import com.gamingframe.beamtech.classes.MirrorRotation; +import com.gamingframe.beamtech.mixin.KeybindingAccessor; +import net.minecraft.block.*; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.item.TooltipContext; +import net.minecraft.client.util.InputUtil; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.item.ItemStack; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.BooleanProperty; +import net.minecraft.state.property.EnumProperty; +import net.minecraft.text.Text; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Formatting; +import net.minecraft.util.Hand; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.Vec3d; +import net.minecraft.util.math.random.Random; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; +import org.jetbrains.annotations.Nullable; +import com.gamingframe.beamtech.classes.Point; + +import java.util.List; +import java.util.concurrent.atomic.AtomicReference; + +public class MirrorBlock extends HorizontalFacingBlock { + public static final EnumProperty ROTATION = EnumProperty.of("rotation", MirrorRotation.class); + public static final BooleanProperty POWERED = BooleanProperty.of("powered"); + + public MirrorBlock(Settings settings) { + super(settings); + this.setDefaultState(this.stateManager.getDefaultState().with(ROTATION, MirrorRotation.ROTATE_NE).with(POWERED, false)); + } + + + @Override + public void neighborUpdate(BlockState state, World world, BlockPos pos, Block block, BlockPos fromPos, boolean notify) { + if (!world.isClient) { + boolean isPowered = world.isReceivingRedstonePower(pos); + boolean wasPowered = state.get(POWERED); + if (isPowered && !wasPowered) { + // Handle redstone input + System.out.println("Redstone power received!"); + world.setBlockState(pos, state.with(POWERED, true), 3); + } else if (!isPowered && wasPowered) { + world.setBlockState(pos, state.with(POWERED, false), 3); + } + } + super.neighborUpdate(state, world, pos, block, fromPos, notify); + } + + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(ROTATION, POWERED); + } + + @Override + public BlockState getPlacementState(ItemPlacementContext ctx) { + return this.getDefaultState().with(ROTATION, MirrorRotation.ROTATE_NE); + } + + @Override + public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState oldState, boolean notify) { + super.onBlockAdded(state, world, pos, oldState, notify); + world.scheduleBlockTick(pos, this, 1); + } + + @Override + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { + if (!world.isClient) { + MirrorRotation currentRotation = state.get(ROTATION); + MirrorRotation newRotation = currentRotation.next(); + BeamTech.LOGGER.info("Used mirror, new rotation {} with normal {}", newRotation, newRotation.normal); + world.setBlockState(pos, state.with(ROTATION, newRotation)); + } + return ActionResult.SUCCESS; + } + + public Vec3d reflectLaser(BlockState mirrorState, Vec3d incomingDirection) { + MirrorRotation rotation = mirrorState.get(ROTATION); + + return MirrorRotation.calculateReflection(incomingDirection, rotation); + } + + @Override + public void appendTooltip(ItemStack stack, @Nullable BlockView world, List tooltip, TooltipContext options) { + + InputUtil.Key boundSneakKey = ((KeybindingAccessor) MinecraftClient.getInstance().options.sneakKey).getBoundKey(); + + if (InputUtil.isKeyPressed(MinecraftClient.getInstance().getWindow().getHandle(), boundSneakKey.getCode())) { + tooltip.add(Text.translatable("item.beamtech.mirror.desc").formatted(Formatting.GRAY)); + }else { + tooltip.add(Text.translatable("tooltip.beamtech.hold_crouch_desc", + Text.translatable(MinecraftClient.getInstance().options.sneakKey.getBoundKeyTranslationKey()).formatted(Formatting.GOLD)) + .formatted(Formatting.GRAY)); + } + + super.appendTooltip(stack, world, tooltip, options); + } + + public int getNewStartPos(BlockState mirrorState, BlockPos mirrorPos, Vec3d hitPos, Vec3d direction, AtomicReference newPos) { + MirrorRotation rotation = mirrorState.get(ROTATION); + Vec3d mirrorCenterPos = mirrorPos.toCenterPos(); + + Vec3d offset = hitPos.subtract(mirrorCenterPos).multiply(16); + Point hitOnMirror = new Point((int) offset.x, (int) offset.z); + + BeamTech.LOGGER.info("Offset {} HitOnMirror {} with Direction {}", offset, hitOnMirror, direction); + + Point intersect = rotation.CalculateIntersect(new Point(direction.x * 16,direction.z * 16), hitOnMirror); + + if (intersect == null) { + return 0; + }else if (intersect.x == 9 && intersect.y == 9) { + return -1; + } + + newPos.set(new Vec3d(intersect.x / 16, 0, intersect.y / 16).add(mirrorCenterPos)); + return 1; + } +} + diff --git a/src/main/java/com/gamingframe/beamtech/block/custom/entity/LaserBlockEntity.java b/src/main/java/com/gamingframe/beamtech/block/custom/entity/LaserBlockEntity.java new file mode 100644 index 0000000..f2a3552 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/block/custom/entity/LaserBlockEntity.java @@ -0,0 +1,323 @@ +package com.gamingframe.beamtech.block.custom.entity; + +import com.gamingframe.beamtech.BeamTech; +import com.gamingframe.beamtech.block.ModBlockEntities; +import com.gamingframe.beamtech.block.custom.LaserBlock; +import com.gamingframe.beamtech.block.custom.LaserCombinerBlock; +import com.gamingframe.beamtech.block.custom.MirrorBlock; +import com.gamingframe.beamtech.classes.LaserPositions; +import com.gamingframe.beamtech.interfaces.EmitterInventory; +import com.gamingframe.beamtech.interfaces.IEmitter; +import com.gamingframe.beamtech.interfaces.ILaserInteractable; +import com.gamingframe.beamtech.item.ModItems; +import com.gamingframe.beamtech.raycasting.LaserRayCastContext; +import com.gamingframe.beamtech.screens.EmitterGUI; +import io.netty.buffer.Unpooled; +import net.fabricmc.fabric.api.networking.v1.PlayerLookup; +import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; +import net.fabricmc.fabric.api.transfer.v1.item.InventoryStorage; +import net.minecraft.block.BlockState; +import net.minecraft.block.InventoryProvider; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.client.MinecraftClient; +import net.minecraft.entity.Entity; +import net.minecraft.entity.ItemEntity; +import net.minecraft.entity.damage.DamageSource; +import net.minecraft.entity.damage.DamageSources; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.inventory.Inventories; +import net.minecraft.inventory.SidedInventory; +import net.minecraft.inventory.SimpleInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.nbt.NbtCompound; +import net.minecraft.network.PacketByteBuf; +import net.minecraft.network.listener.ClientPlayPacketListener; +import net.minecraft.network.packet.Packet; +import net.minecraft.network.packet.s2c.play.BlockEntityUpdateS2CPacket; +import net.minecraft.screen.NamedScreenHandlerFactory; +import net.minecraft.screen.ScreenHandler; +import net.minecraft.screen.ScreenHandlerContext; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; +import net.minecraft.util.collection.DefaultedList; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.hit.HitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Box; +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.RaycastContext; +import net.minecraft.world.World; +import net.minecraft.world.WorldAccess; +import org.jetbrains.annotations.Nullable; +import team.lodestar.lodestone.registry.common.particle.LodestoneParticleRegistry; +import team.lodestar.lodestone.systems.easing.Easing; +import team.lodestar.lodestone.systems.particle.builder.WorldParticleBuilder; +import team.lodestar.lodestone.systems.particle.data.GenericParticleData; +import team.lodestar.lodestone.systems.particle.data.color.ColorParticleData; +import team.lodestar.lodestone.systems.particle.data.spin.SpinParticleData; +import team.reborn.energy.api.base.SimpleEnergyStorage; + +import java.awt.*; +import java.util.Dictionary; +import java.util.Hashtable; +import java.util.List; +import java.util.concurrent.atomic.AtomicReference; + +public class LaserBlockEntity extends BlockEntity implements IEmitter, NamedScreenHandlerFactory, EmitterInventory { + private int max_range = 50; // Max range for the laser + private int power = 5; + private ILaserInteractable registeredLaserInteractable; + private static final int MAX_REFLECTIONS = 100; + private int currentReflections = 0; + private final DefaultedList items = DefaultedList.ofSize(1, ItemStack.EMPTY); + public final SimpleEnergyStorage energyStorage = new SimpleEnergyStorage(100000, 10, 0) { + @Override + protected void onFinalCommit() { + markDirty(); + } + }; + public List rayCastPositions; + Vec3d lastHitMirror; + + + public LaserBlockEntity(BlockPos pos, BlockState state) { + super(ModBlockEntities.LASER_EMITTER_BLOCK_ENTITY, pos, state); + BeamTech.LOGGER.info("Created Block Entity at {} for {} ", pos, BeamTech.MOD_ID); + energyStorage.amount = 100000; + } + + public static void tick(World world, BlockPos pos, BlockState state, LaserBlockEntity be) { + if (be.world != null && be.world.isReceivingRedstonePower(be.pos)) { + if (be.energyStorage.amount >= 100) { + be.energyStorage.amount -= 100; + be.markDirty(); + }else { + if (be.registeredLaserInteractable != null) { + be.registeredLaserInteractable.onNoLongerHit(be); + be.registeredLaserInteractable = null; + } + return; + } + Direction direction = state.get(LaserBlock.FACING); + Vec3d startPos = Vec3d.ofCenter(pos).add(Vec3d.of(direction.getVector()).multiply(0.20)); + ItemStack item = be.getStack(0); + if (item.isOf(ModItems.FOCAL_LENS)) { + //BeamTech.LOGGER.info("FOCAL BITCH"); + be.power = 10; + be.max_range = 25; + }else if (item.isOf(ModItems.RANGE_LENS)) { + // BeamTech.LOGGER.info("RANGE BITCH"); + be.power = 2; + be.max_range = 100; + }else { + be.power = 5; + be.max_range = 50; + } + be.shootLaser(be.world, startPos, Vec3d.of(direction.getVector()), be.max_range); + }else { + if (be.registeredLaserInteractable != null) { + be.registeredLaserInteractable.onNoLongerHit(be); + be.registeredLaserInteractable = null; + } + } + be.lastHitMirror = null; + be.currentReflections = 0; + } + + @Override + public void markRemoved() { + if (registeredLaserInteractable != null) { + registeredLaserInteractable.onNoLongerHit(this); + registeredLaserInteractable = null; + } + super.markRemoved(); + } + + + @Override + public void shootLaser(World world, Vec3d startPos, Vec3d direction, int remainingRange) { + if (remainingRange <= 0) return; + + Vec3d endPos = startPos.add(direction.multiply(remainingRange)); + + BlockHitResult hitResult = world.raycast(new LaserRayCastContext( + startPos, + endPos, + RaycastContext.ShapeType.OUTLINE, + RaycastContext.FluidHandling.NONE, + this, lastHitMirror)); + + BlockPos hitPos = hitResult.getBlockPos(); + BlockState hitState = world.getBlockState(hitPos); + + + if (world.getTime() % 10 == 0) { + Box box = new Box(startPos, hitResult.getPos()).expand(0.5); + + List entities = world.getOtherEntities(null, box); + + for (Entity entity : entities) { + Box entityBox = entity.getBoundingBox().expand(0.3); + + if (entityBox.raycast(startPos, endPos).isPresent()) { + if (entity instanceof ItemEntity item) { + ItemStack stack = item.getStack(); + if (stack.getItem() == Items.SAND) { + ItemStack superTreatedGlass = new ItemStack(ModItems.SUPERTREATED_GLASS, stack.getCount()); + item.setStack(superTreatedGlass); + } + } else { + entity.damage(entity.getDamageSources().generic(), (float) power / 2); + } + } + } + } + + // Calculate the distance to the hit position + double distance = startPos.distanceTo(hitResult.getPos()); + + // Render the laser up to the hit point + renderLaser(world, startPos, hitResult.getPos()); + + if (world.getBlockEntity(hitPos) instanceof ILaserInteractable be) { + registeredLaserInteractable = be; + registeredLaserInteractable.onHit(this, direction); + }else if (hitState.getBlock() instanceof MirrorBlock mirror) { + if (currentReflections >= MAX_REFLECTIONS) { + return; + } + + lastHitMirror = hitPos.toCenterPos(); + + Vec3d newDirection = mirror.reflectLaser(hitState, direction); + + AtomicReference newPos = new AtomicReference(); + + int result = mirror.getNewStartPos(hitState, hitPos, hitResult.getPos(), direction, newPos); + + if (result == 0) { + shootLaser(world, hitResult.getPos(), direction, remainingRange - (int)distance); + return; + }else if (result == -1) { + return; + } + + renderLaser(world, hitResult.getPos(), newPos.get()); + + if (newDirection.distanceTo(direction) <= 0.1) { + return; + } + + currentReflections++; + // Emit laser in the new direction, subtracting the distance already traveled + shootLaser(world, newPos.get(), newDirection, remainingRange - (int)distance); + }else if (registeredLaserInteractable != null) { + registeredLaserInteractable.onNoLongerHit(this); + registeredLaserInteractable = null; + } + } + + @Override + public void renderLaser(World world, Vec3d startPos, Vec3d endPos) { + double distance = startPos.distanceTo(endPos); + Vec3d direction = endPos.subtract(startPos).normalize(); +// if (world.isClient()) { +// BeamTech.LOGGER.info("Client: power: {} at location {} with end {}", power, startPos, endPos); +// }else { +// BeamTech.LOGGER.info("Server: power: {} at location {} with end {}", power, startPos, endPos); +// } + + Color startingColor = new Color(255, 0, 0); + Color centerColor = new Color(255, 142, 142); + + var builderOuter = WorldParticleBuilder.create(LodestoneParticleRegistry.WISP_PARTICLE).setScaleData(GenericParticleData.create(0.10f * (power / 4f) / 1.5f).build()) + .setTransparencyData(GenericParticleData.create(0.75f).build()) + .setColorData(ColorParticleData.create(startingColor).build()) + .setSpinData(SpinParticleData.create(0.2f, 0.4f).setSpinOffset((world.getTime() * 0.2f) % 6.28f).setEasing(Easing.QUARTIC_IN).build()) + .setLifetime(10) + .enableNoClip(); + + var builderCenter = WorldParticleBuilder.create(LodestoneParticleRegistry.WISP_PARTICLE).setScaleData(GenericParticleData.create(0.05f * (power / 4f) / 1.5f).build()) + .setTransparencyData(GenericParticleData.create(1f).build()) + .setColorData(ColorParticleData.create(centerColor).build()) + .setSpinData(SpinParticleData.create(0.2f, 0.4f).setSpinOffset((world.getTime() * 0.2f) % 6.28f).setEasing(Easing.QUARTIC_IN).build()) + .setLifetime(8) + .enableNoClip(); + + for (double i = 0; i < distance; i += 0.05) { + Vec3d currentPos = startPos.add(direction.multiply(i)); + builderOuter.spawn(world, currentPos.x, currentPos.y, currentPos.z); + builderCenter.spawn(world, currentPos.x, currentPos.y, currentPos.z); + } + } + + public void syncInventory(ItemStack itemStack) { + if (this.world.isClient) { + this.setStack(0, itemStack); + } + } + + + @Nullable + @Override + public Packet toUpdatePacket() { + return BlockEntityUpdateS2CPacket.create(this); + } + + @Override + public int getPower() { + return power; + } + + @Override + public Text getDisplayName() { + return Text.translatable(getCachedState().getBlock().getTranslationKey()); + } + + @Override + public ScreenHandler createMenu(int syncId, PlayerInventory inventory, PlayerEntity player) { + return new EmitterGUI(syncId, inventory, ScreenHandlerContext.create(world, pos)); + } + + @Override + public void readNbt(NbtCompound nbt) { + super.readNbt(nbt); + Inventories.readNbt(nbt, items); + energyStorage.amount = nbt.getLong("energy"); + } + + @Override + public void writeNbt(NbtCompound nbt) { + nbt.putLong("energy", energyStorage.amount); + Inventories.writeNbt(nbt, items); + super.writeNbt(nbt); + } + + @Override + public void markDirty() { + world.updateListeners(pos, getCachedState(), getCachedState(), 3); + if (!this.world.isClient) { + PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer()); + buf.writeBlockPos(this.pos); + buf.writeItemStack(this.getStack(0)); + + PlayerLookup.tracking(this).forEach((serverPlayerEntity) -> { + ServerPlayNetworking.send(serverPlayerEntity, new Identifier(BeamTech.MOD_ID, "update_laser_lens"), buf); + }); + } + } + + @Override + public DefaultedList getItems() { + return items; + } + + @Override + public NbtCompound toInitialChunkDataNbt() { + return createNbt(); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/block/custom/entity/LaserCombinerBlockEntity.java b/src/main/java/com/gamingframe/beamtech/block/custom/entity/LaserCombinerBlockEntity.java new file mode 100644 index 0000000..b252878 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/block/custom/entity/LaserCombinerBlockEntity.java @@ -0,0 +1,220 @@ +package com.gamingframe.beamtech.block.custom.entity; + +import com.gamingframe.beamtech.block.ModBlockEntities; +import com.gamingframe.beamtech.block.custom.LaserBlock; +import com.gamingframe.beamtech.block.custom.MirrorBlock; +import com.gamingframe.beamtech.interfaces.IEmitter; +import com.gamingframe.beamtech.interfaces.ILaserInteractable; +import com.gamingframe.beamtech.raycasting.LaserRayCastContext; +import net.minecraft.block.BlockState; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvents; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.RaycastContext; +import net.minecraft.world.World; +import team.lodestar.lodestone.registry.common.particle.*; +import team.lodestar.lodestone.systems.easing.*; +import team.lodestar.lodestone.systems.particle.builder.*; +import team.lodestar.lodestone.systems.particle.data.*; +import team.lodestar.lodestone.systems.particle.data.color.*; +import team.lodestar.lodestone.systems.particle.data.spin.*; + +import java.util.ArrayList; +import java.util.List; +import java.awt.Color; + +public class LaserCombinerBlockEntity extends BlockEntity implements IEmitter, ILaserInteractable { + private static final int MAX_RANGE = 50; // Max range for the laser + public List emitters = new ArrayList<>(); + public int power = 0; + public ILaserInteractable registeredLaserInteractable; + private static final int MAX_REFLECTIONS = 100; + private int currentReflections = 0; + + public LaserCombinerBlockEntity(BlockPos pos, BlockState state) { + super(ModBlockEntities.LASER_COMBINER_BLOCK_ENTITY, pos, state); + } + + public static void tick(World world1, BlockPos pos, BlockState state1, LaserCombinerBlockEntity be) { + be.power = 0; + + for (int i = 0; i < be.emitters.size(); i++) { + + be.power += be.emitters.get(i).getPower(); + } + + + if (be.emitters.size() >= 2) { + Direction direction = state1.get(LaserBlock.FACING); + Vec3d startPos = Vec3d.ofCenter(pos).add(Vec3d.of(direction.getVector()).multiply(0.5)); + be.shootLaser(be.world, startPos, Vec3d.of(direction.getVector()), MAX_RANGE); + }else if (be.registeredLaserInteractable != null){ + be.registeredLaserInteractable.onNoLongerHit(be); + be.registeredLaserInteractable = null; + } + be.currentReflections = 0; + } + + @Override + public void markRemoved() { + if (registeredLaserInteractable != null) { + registeredLaserInteractable.onNoLongerHit(this); + registeredLaserInteractable = null; + } + super.markRemoved(); + } + + @Override + public int getPower() { + return power; + } + + Vec3d lastHitMirror; + + @Override + public void shootLaser(World world, Vec3d startPos, Vec3d direction, int remainingRange) { + if (remainingRange <= 0) return; + + Vec3d endPos = startPos.add(direction.multiply(remainingRange)); + + BlockHitResult hitResult = world.raycast(new LaserRayCastContext( + startPos, + endPos, + RaycastContext.ShapeType.OUTLINE, + RaycastContext.FluidHandling.NONE, + this, lastHitMirror)); + + BlockPos hitPos = hitResult.getBlockPos(); + BlockState hitState = world.getBlockState(hitPos); + + // Calculate the distance to the hit position + double distance = startPos.distanceTo(hitResult.getPos()); + + // Render the laser up to the hit point + renderLaser(world, startPos, hitResult.getPos()); + + if (world.getBlockEntity(hitPos) instanceof ILaserInteractable laserCombinerBlock) { + registeredLaserInteractable = laserCombinerBlock; + laserCombinerBlock.onHit(this, direction); + }else if (hitState.getBlock() instanceof MirrorBlock mirror) { + if (currentReflections >= MAX_REFLECTIONS) { + return; + } + + lastHitMirror = hitPos.toCenterPos(); + + Vec3d newDirection = mirror.reflectLaser(hitState, direction); + + Vec3d newStartPos = hitPos.toCenterPos().add(newDirection.multiply(0.6)); + + currentReflections++; + // Emit laser in the new direction, subtracting the distance already traveled + shootLaser(world, newStartPos, newDirection, remainingRange - (int)distance); + }else if (power >= 10 && !hitState.isAir()) { + if (world.getTime() % 20 != 0) return; + vaporizeBlocks(world, hitPos, hitResult.getPos(), direction, power/10); + } + } + + @Override + public void renderLaser(World world, Vec3d startPos, Vec3d endPos) { + double distance = startPos.distanceTo(endPos); + Vec3d direction = endPos.subtract(startPos).normalize(); + + Color startingColor = new Color(255, 0, 0); + Color centerColor = new Color(255, 142, 142); + + var builderOuter = WorldParticleBuilder.create(LodestoneParticleRegistry.WISP_PARTICLE).setScaleData(GenericParticleData.create(0.10f * (power / 4f) / 1.5f).build()) + .setTransparencyData(GenericParticleData.create(0.75f).build()) + .setColorData(ColorParticleData.create(startingColor).build()) + .setSpinData(SpinParticleData.create(0.2f, 0.4f).setSpinOffset((world.getTime() * 0.2f) % 6.28f).setEasing(Easing.QUARTIC_IN).build()) + .setLifetime(10) + .enableNoClip(); + + var builderCenter = WorldParticleBuilder.create(LodestoneParticleRegistry.WISP_PARTICLE).setScaleData(GenericParticleData.create(0.05f * (power / 4f) / 1.5f).build()) + .setTransparencyData(GenericParticleData.create(1f).build()) + .setColorData(ColorParticleData.create(centerColor).build()) + .setSpinData(SpinParticleData.create(0.2f, 0.4f).setSpinOffset((world.getTime() * 0.2f) % 6.28f).setEasing(Easing.QUARTIC_IN).build()) + .setLifetime(10) + .enableNoClip(); + + for (double i = 0; i < distance; i += 0.05) { + Vec3d currentPos = startPos.add(direction.multiply(i)); + builderOuter.spawn(world, currentPos.x, currentPos.y, currentPos.z); + builderCenter.spawn(world, currentPos.x, currentPos.y, currentPos.z); + } + + } + + public void vaporizeBlocks(World world, BlockPos centerPos, Vec3d hitPos, Vec3d direction, int radius) { + // Normalize the direction vector +// Vec3d normalizedDirection = Vec3d.of(direction.getVector()).normalize(); + +// // Determine the plane normal vector based on the direction vector +// Vec3d planeNormal; +// if (Math.abs(normalizedDirection.x) > Math.abs(normalizedDirection.y) && Math.abs(normalizedDirection.x) > Math.abs(normalizedDirection.z)) { +// planeNormal = new Vec3d(1, 0, 0); +// } else if (Math.abs(normalizedDirection.y) > Math.abs(normalizedDirection.z)) { +// planeNormal = new Vec3d(0, 1, 0); +// } else { +// planeNormal = new Vec3d(0, 0, 1); +// } + // Loop through all blocks in a cube around the center position + for (int x = -radius; x <= radius; x++) { + for (int y = -radius; y <= radius; y++) { + for (int z = -radius; z <= radius; z++) { + BlockPos currentPos = centerPos.add(x, y, z); + if (world.getBlockState(currentPos).isAir()) continue; + + // Calculate the distance from the current block position to the plane + Vec3d currentVec = new Vec3d(currentPos.getX() - hitPos.x, currentPos.getY() - hitPos.y, currentPos.getZ() - hitPos.z); + double distanceToPlane = currentVec.dotProduct(direction); + + // Project the point onto the plane + Vec3d projectedVec = currentVec.subtract(direction.multiply(distanceToPlane)); + + // Calculate the distance from the projected point to the center + double distance = projectedVec.length(); + + // Check if the current block position is within the specified radius on the plane + if (Math.abs(distanceToPlane) < 1e-6 && distance <= radius) { + // Remove the block at the current position + + world.removeBlock(currentPos, false); + + Color startingColor = new Color(50, 50, 50); + var smoke = WorldParticleBuilder.create(LodestoneParticleRegistry.SMOKE_PARTICLE).setScaleData(GenericParticleData.create(0.10f * (power / 4f) / 1.5f).build()) + .setTransparencyData(GenericParticleData.create(0.8f).build()) + .setColorData(ColorParticleData.create(startingColor).build()) + .setSpinData(SpinParticleData.create(0.2f, 0.4f).setSpinOffset((world.getTime() * 0.2f) % 6.28f).setEasing(Easing.QUARTIC_IN).build()) + .setLifetime(40) + .addMotion(0,0.2,0) + .enableNoClip(); + + smoke.spawn(world,currentPos.getX(), currentPos.getY(), currentPos.getZ()); + } + } + } + } + + world.playSound(null, centerPos, SoundEvents.BLOCK_LAVA_EXTINGUISH, SoundCategory.BLOCKS, 1f, 1f); + + + } + + @Override + public void onHit(IEmitter emitter, Vec3d direction) { + if (!emitters.contains(emitter)) { + emitters.add(emitter); + } + } + + @Override + public void onNoLongerHit(IEmitter emitter) { + emitters.remove(emitter); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/block/custom/entity/LaserOvenBlockEntity.java b/src/main/java/com/gamingframe/beamtech/block/custom/entity/LaserOvenBlockEntity.java new file mode 100644 index 0000000..a52738a --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/block/custom/entity/LaserOvenBlockEntity.java @@ -0,0 +1,25 @@ +package com.gamingframe.beamtech.block.custom.entity; + +import com.gamingframe.beamtech.interfaces.IEmitter; +import com.gamingframe.beamtech.interfaces.ILaserInteractable; +import net.minecraft.block.BlockState; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; + +public class LaserOvenBlockEntity extends BlockEntity implements ILaserInteractable { + public LaserOvenBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); + } + + @Override + public void onHit(IEmitter emitter, Vec3d direction) { + + } + + @Override + public void onNoLongerHit(IEmitter emitter) { + + } +} diff --git a/src/main/java/com/gamingframe/beamtech/block/custom/entity/renderer/LaserBlockEntityRenderer.java b/src/main/java/com/gamingframe/beamtech/block/custom/entity/renderer/LaserBlockEntityRenderer.java new file mode 100644 index 0000000..8bd6144 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/block/custom/entity/renderer/LaserBlockEntityRenderer.java @@ -0,0 +1,74 @@ +package com.gamingframe.beamtech.block.custom.entity.renderer; + +import com.gamingframe.beamtech.block.custom.LaserBlock; +import com.gamingframe.beamtech.block.custom.entity.LaserBlockEntity; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.render.*; +import net.minecraft.client.render.block.entity.BlockEntityRenderer; +import net.minecraft.client.render.block.entity.BlockEntityRendererFactory; +import net.minecraft.client.render.item.ItemRenderer; +import net.minecraft.client.render.model.json.ModelTransformationMode; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.item.ItemStack; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.RotationAxis; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.LightType; +import net.minecraft.world.World; +import team.lodestar.lodestone.handlers.RenderHandler; +import team.lodestar.lodestone.systems.rendering.VFXBuilders; + +import java.awt.*; +import java.util.Map; + +public class LaserBlockEntityRenderer implements BlockEntityRenderer { + public LaserBlockEntityRenderer(BlockEntityRendererFactory.Context context) { + } + + @Override + public void render(LaserBlockEntity entity, float tickDelta, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay) { + +// VFXBuilders.WorldVFXBuilder builder = VFXBuilders.createWorld(); +// builder.replaceBufferSource(RenderHandler.LATE_DELAYED_RENDER.getTarget()) +// .setRenderType(RenderLayer.getDebugQuads()) +// .setColor(Color.red) +// .setAlpha(0.8f); +// +// for (var entry : entity.rayCastPositions) { +// +// builder.renderQuad(matrices); +// } + + ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer(); + ItemStack stack = entity.getStack(0); + + Direction facing = entity.getCachedState().get(LaserBlock.FACING); + Vec3d itemPos = new Vec3d(0.5, 0.5, 0.5).add(Vec3d.of(facing.getVector()).multiply(0.2)); + + matrices.push(); + matrices.translate(itemPos.x, itemPos.y, itemPos.z); + matrices.scale(0.9f, 0.9f, 0.9f); + + switch (facing) { + case EAST: + case WEST: + matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(90)); + break; + case UP: + case DOWN: + matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(90)); + break; + } + + itemRenderer.renderItem(stack, ModelTransformationMode.GUI, getLightLevel(entity.getWorld(), entity.getPos()), OverlayTexture.DEFAULT_UV, matrices, vertexConsumers, entity.getWorld(), 1); + matrices.pop(); + } + + private int getLightLevel(World world, BlockPos pos) { + int bLight = world.getLightLevel(LightType.BLOCK, pos); + int sLight = world.getLightLevel(LightType.SKY, pos); + return LightmapTextureManager.pack(bLight, sLight); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/block/custom/multiblock/LaserInput/LaserInputComponentBlock.java b/src/main/java/com/gamingframe/beamtech/block/custom/multiblock/LaserInput/LaserInputComponentBlock.java new file mode 100644 index 0000000..6674ffc --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/block/custom/multiblock/LaserInput/LaserInputComponentBlock.java @@ -0,0 +1,4 @@ +package com.gamingframe.beamtech.block.custom.multiblock.LaserInput; + +public class LaserInputComponentBlock { +} diff --git a/src/main/java/com/gamingframe/beamtech/block/custom/multiblock/LaserOven/LaserOvenController/LaserOvenControllerCoreBlock.java b/src/main/java/com/gamingframe/beamtech/block/custom/multiblock/LaserOven/LaserOvenController/LaserOvenControllerCoreBlock.java new file mode 100644 index 0000000..43ecdea --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/block/custom/multiblock/LaserOven/LaserOvenController/LaserOvenControllerCoreBlock.java @@ -0,0 +1,19 @@ +package com.gamingframe.beamtech.block.custom.multiblock.LaserOven.LaserOvenController; + +import com.gamingframe.beamtech.block.ModBlocks; +import net.minecraft.block.entity.BlockEntityType; +import team.lodestar.lodestone.systems.block.WaterLoggedEntityBlock; +import team.lodestar.lodestone.systems.multiblock.MultiBlockStructure; + +import java.util.function.Supplier; + +public class LaserOvenControllerCoreBlock extends WaterLoggedEntityBlock { + + public static final Supplier STRUCTURE = () -> (MultiBlockStructure.of( + new MultiBlockStructure.StructurePiece(0, 1, 0, ModBlocks.TITANIUM_PLATED_OBSIDIAN_BLOCK.getDefaultState()))); + + public LaserOvenControllerCoreBlock(Settings properties, Supplier> type) { + super(properties); + setBlockEntity(type); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/block/custom/multiblock/LaserOven/LaserOvenController/LaserOvenCoreBlockEntity.java b/src/main/java/com/gamingframe/beamtech/block/custom/multiblock/LaserOven/LaserOvenController/LaserOvenCoreBlockEntity.java new file mode 100644 index 0000000..c10bb3e --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/block/custom/multiblock/LaserOven/LaserOvenController/LaserOvenCoreBlockEntity.java @@ -0,0 +1,15 @@ +package com.gamingframe.beamtech.block.custom.multiblock.LaserOven.LaserOvenController; + + +import net.minecraft.block.BlockState; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.util.math.BlockPos; +import team.lodestar.lodestone.systems.multiblock.MultiBlockCoreEntity; +import team.lodestar.lodestone.systems.multiblock.MultiBlockStructure; + +public class LaserOvenCoreBlockEntity extends MultiBlockCoreEntity { + + public LaserOvenCoreBlockEntity(BlockEntityType type, MultiBlockStructure structure, BlockPos pos, BlockState state) { + super(type, structure, pos, state); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/block/custom/multiblock/LaserOven/TitaniumPlatedObsidian/TitaniumPlatedObsidianComponentBlock.java b/src/main/java/com/gamingframe/beamtech/block/custom/multiblock/LaserOven/TitaniumPlatedObsidian/TitaniumPlatedObsidianComponentBlock.java new file mode 100644 index 0000000..104e132 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/block/custom/multiblock/LaserOven/TitaniumPlatedObsidian/TitaniumPlatedObsidianComponentBlock.java @@ -0,0 +1,9 @@ +package com.gamingframe.beamtech.block.custom.multiblock.LaserOven.TitaniumPlatedObsidian; + +import team.lodestar.lodestone.systems.multiblock.MultiblockComponentBlock; + +public class TitaniumPlatedObsidianComponentBlock extends MultiblockComponentBlock { + public TitaniumPlatedObsidianComponentBlock(Settings properties) { + super(properties); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/compat/BeamTechREIClientPlugin.java b/src/main/java/com/gamingframe/beamtech/compat/BeamTechREIClientPlugin.java new file mode 100644 index 0000000..a60c9bc --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/compat/BeamTechREIClientPlugin.java @@ -0,0 +1,4 @@ +package com.gamingframe.beamtech.compat; + +public class BeamTechREIClientPlugin { +} diff --git a/src/main/java/com/gamingframe/beamtech/datagen/ModBlockTagProvider.java b/src/main/java/com/gamingframe/beamtech/datagen/ModBlockTagProvider.java new file mode 100644 index 0000000..c6d4218 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/datagen/ModBlockTagProvider.java @@ -0,0 +1,19 @@ +package com.gamingframe.beamtech.datagen; + +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; +import net.minecraft.registry.RegistryWrapper; + +import java.util.concurrent.CompletableFuture; + +public class ModBlockTagProvider extends FabricTagProvider.BlockTagProvider { + public ModBlockTagProvider(FabricDataOutput output, CompletableFuture registriesFuture) { + super(output, registriesFuture); + } + + @Override + protected void configure(RegistryWrapper.WrapperLookup arg) { + + } + +} diff --git a/src/main/java/com/gamingframe/beamtech/datagen/ModItemTagProvider.java b/src/main/java/com/gamingframe/beamtech/datagen/ModItemTagProvider.java new file mode 100644 index 0000000..5ae8d18 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/datagen/ModItemTagProvider.java @@ -0,0 +1,22 @@ +package com.gamingframe.beamtech.datagen; + +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; +import net.minecraft.registry.RegistryWrapper; +import net.minecraft.registry.tag.ItemTags; +import com.gamingframe.beamtech.item.ModItems; +import org.jetbrains.annotations.Nullable; + +import java.util.concurrent.CompletableFuture; + +public class ModItemTagProvider extends FabricTagProvider.ItemTagProvider { + public ModItemTagProvider(FabricDataOutput output, CompletableFuture completableFuture) { + super(output, completableFuture); + } + + @Override + protected void configure(RegistryWrapper.WrapperLookup arg) { +// getOrCreateTagBuilder(ItemTags.MUSIC_DISCS) +// .add(Moditems.CRAB_RAVE_MUSIC_DISC); + } +} \ No newline at end of file diff --git a/src/main/java/com/gamingframe/beamtech/datagen/ModLootTableProvider.java b/src/main/java/com/gamingframe/beamtech/datagen/ModLootTableProvider.java new file mode 100644 index 0000000..1e9d011 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/datagen/ModLootTableProvider.java @@ -0,0 +1,16 @@ +package com.gamingframe.beamtech.datagen; + +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricBlockLootTableProvider; +import net.minecraft.loot.LootTable; + +public class ModLootTableProvider extends FabricBlockLootTableProvider { + public ModLootTableProvider(FabricDataOutput dataOutput) { + super(dataOutput); + } + + @Override + public void generate() { + // + } +} diff --git a/src/main/java/com/gamingframe/beamtech/datagen/ModModelProvider.java b/src/main/java/com/gamingframe/beamtech/datagen/ModModelProvider.java new file mode 100644 index 0000000..107b5aa --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/datagen/ModModelProvider.java @@ -0,0 +1,34 @@ +package com.gamingframe.beamtech.datagen; + +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricModelProvider; +import net.minecraft.data.client.BlockStateModelGenerator; +import net.minecraft.data.client.ItemModelGenerator; +import net.minecraft.data.client.Models; +import com.gamingframe.beamtech.item.ModItems; + +public class ModModelProvider extends FabricModelProvider { + public ModModelProvider(FabricDataOutput output) { + super(output); + } + + @Override + public void generateBlockStateModels(BlockStateModelGenerator blockStateModelGenerator) { + + } + + @Override + public void generateItemModels(ItemModelGenerator itemModelGenerator) { +// itemModelGenerator.register(ModItems.FocalLens, Models.GENERATED); +// itemModelGenerator.register(ModItems.RangeLens, Models.GENERATED); +// itemModelGenerator.register(ModItems.IRON_ALLOY, Models.GENERATED); +// itemModelGenerator.register(Moditems.RUBY, Models.GENERATED); +// itemModelGenerator.register(Moditems.RAW_RUBY, Models.GENERATED); +// itemModelGenerator.register(Moditems.CRAB, Models.GENERATED); +// itemModelGenerator.register(Moditems.COOKED_CRAB, Models.GENERATED); +// itemModelGenerator.register(Moditems.CRAB_RAVE_MUSIC_DISC, Models.GENERATED); +// +// itemModelGenerator.register(Moditems.CRAB_SPAWN_EGG, +// new Model(Optional.of(new Identifier("item/template_spawn_egg")), Optional.empty())); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/datagen/ModRecipeProvider.java b/src/main/java/com/gamingframe/beamtech/datagen/ModRecipeProvider.java new file mode 100644 index 0000000..063d1a7 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/datagen/ModRecipeProvider.java @@ -0,0 +1,25 @@ +package com.gamingframe.beamtech.datagen; + +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider; +import net.minecraft.data.server.recipe.RecipeJsonProvider; +import net.minecraft.item.ItemConvertible; +import net.minecraft.recipe.book.RecipeCategory; +import com.gamingframe.beamtech.item.ModItems; + +import java.util.List; +import java.util.function.Consumer; + +public class ModRecipeProvider extends FabricRecipeProvider { +// private static final List CRAB_SMELTABLES = List.of(Moditems.CRAB); + + public ModRecipeProvider(FabricDataOutput output) { + super(output); + } + + @Override + public void generate(Consumer exporter) { +// offerSmelting(exporter, CRAB_SMELTABLES, RecipeCategory.FOOD, Moditems.COOKED_CRAB, +// 0.7f, 200, "crab"); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/helpers/TooltipHelper.java b/src/main/java/com/gamingframe/beamtech/helpers/TooltipHelper.java new file mode 100644 index 0000000..000e37b --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/helpers/TooltipHelper.java @@ -0,0 +1,28 @@ +package com.gamingframe.beamtech.helpers; + +import com.gamingframe.beamtech.mixin.KeybindingAccessor; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.item.TooltipContext; +import net.minecraft.client.util.InputUtil; +import net.minecraft.item.ItemStack; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; +import net.minecraft.world.World; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +public class TooltipHelper { + + public static void appendTooltip(ItemStack stack, List tooltip) { + InputUtil.Key boundSneakKey = ((KeybindingAccessor) MinecraftClient.getInstance().options.sneakKey).getBoundKey(); + + if (InputUtil.isKeyPressed(MinecraftClient.getInstance().getWindow().getHandle(), boundSneakKey.getCode())) { + tooltip.add(Text.translatable(stack.getItem().getTranslationKey() + ".desc").formatted(Formatting.GRAY)); + }else { + tooltip.add(Text.translatable("tooltip.beamtech.hold_crouch_desc", + Text.translatable(MinecraftClient.getInstance().options.sneakKey.getBoundKeyTranslationKey()).formatted(Formatting.GOLD)) + .formatted(Formatting.GRAY)); + } + } +} diff --git a/src/main/java/com/gamingframe/beamtech/interfaces/EmitterInventory.java b/src/main/java/com/gamingframe/beamtech/interfaces/EmitterInventory.java new file mode 100644 index 0000000..f8e275f --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/interfaces/EmitterInventory.java @@ -0,0 +1,132 @@ +package com.gamingframe.beamtech.interfaces; + +import com.gamingframe.beamtech.item.ModItems; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.inventory.Inventories; +import net.minecraft.inventory.Inventory; +import net.minecraft.inventory.SidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.util.collection.DefaultedList; + +public interface EmitterInventory extends Inventory { + /** + * Retrieves the item list of this inventory. + * Must return the same instance every time it's called. + */ + DefaultedList getItems(); + + /** + * Creates an inventory from the item list. + */ + static EmitterInventory of(DefaultedList items) { + return () -> items; + } + + /** + * Creates a new inventory with the specified size. + */ + static EmitterInventory ofSize(int size) { + return of(DefaultedList.ofSize(size, ItemStack.EMPTY)); + } + + /** + * Returns the inventory size. + */ + @Override + default int size() { + return getItems().size(); + } + + /** + * Checks if the inventory is empty. + * @return true if this inventory has only empty stacks, false otherwise. + */ + @Override + default boolean isEmpty() { + for (int i = 0; i < size(); i++) { + ItemStack stack = getStack(i); + if (!stack.isEmpty()) { + return false; + } + } + return true; + } + + @Override + default boolean isValid(int slot, ItemStack stack) { + return stack.isOf(ModItems.FOCAL_LENS) || stack.isOf(ModItems.RANGE_LENS); + } + + /** + * Retrieves the item in the slot. + */ + @Override + default ItemStack getStack(int slot) { + return getItems().get(slot); + } + + /** + * Removes items from an inventory slot. + * @param slot The slot to remove from. + * @param count How many items to remove. If there are less items in the slot than what are requested, + * takes all items in that slot. + */ + @Override + default ItemStack removeStack(int slot, int count) { + ItemStack result = Inventories.splitStack(getItems(), slot, count); + if (!result.isEmpty()) { + markDirty(); + } + return result; + } + + /** + * Removes all items from an inventory slot. + * @param slot The slot to remove from. + */ + @Override + default ItemStack removeStack(int slot) { + return Inventories.removeStack(getItems(), slot); + } + + /** + * Replaces the current stack in an inventory slot with the provided stack. + * @param slot The inventory slot of which to replace the itemstack. + * @param stack The replacing itemstack. If the stack is too big for + * this inventory ({@link Inventory#getMaxCountPerStack()}), + * it gets resized to this inventory's maximum amount. + */ + @Override + default void setStack(int slot, ItemStack stack) { + getItems().set(slot, stack); + if (stack.getCount() > stack.getMaxCount()) { + stack.setCount(stack.getMaxCount()); + } + } + + /** + * Clears the inventory. + */ + @Override + default void clear() { + getItems().clear(); + } + + /** + * Marks the state as dirty. + * Must be called after changes in the inventory, so that the game can properly save + * the inventory contents and notify neighboring blocks of inventory changes. + */ + @Override + default void markDirty() { + // Override if you want behavior. + } + + /** + * @return true if the player can use the inventory, false otherwise. + */ + @Override + default boolean canPlayerUse(PlayerEntity player) { + return true; + } +} diff --git a/src/main/java/com/gamingframe/beamtech/interfaces/IEmitter.java b/src/main/java/com/gamingframe/beamtech/interfaces/IEmitter.java new file mode 100644 index 0000000..095bf3c --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/interfaces/IEmitter.java @@ -0,0 +1,13 @@ +package com.gamingframe.beamtech.interfaces; + +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; + +public interface IEmitter { + public int getPower(); + + public void shootLaser(World world, Vec3d startPos, Vec3d direction, int remainingRange); + + public void renderLaser(World world, Vec3d startPos, Vec3d endPos); +} diff --git a/src/main/java/com/gamingframe/beamtech/interfaces/ILaserInteractable.java b/src/main/java/com/gamingframe/beamtech/interfaces/ILaserInteractable.java new file mode 100644 index 0000000..3051113 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/interfaces/ILaserInteractable.java @@ -0,0 +1,9 @@ +package com.gamingframe.beamtech.interfaces; + +import net.minecraft.util.math.Vec3d; + +public interface ILaserInteractable { + public void onHit(IEmitter emitter, Vec3d direction); + + public void onNoLongerHit(IEmitter emitter); +} diff --git a/src/main/java/com/gamingframe/beamtech/item/ModItemGroups.java b/src/main/java/com/gamingframe/beamtech/item/ModItemGroups.java new file mode 100644 index 0000000..9ad24da --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/item/ModItemGroups.java @@ -0,0 +1,35 @@ +package com.gamingframe.beamtech.item; + +import com.gamingframe.beamtech.BeamTech; +import com.gamingframe.beamtech.block.ModBlocks; +import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup; +import net.minecraft.item.ItemGroup; +import net.minecraft.item.ItemStack; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; + +public class ModItemGroups { + public static final ItemGroup BEAMTECH_GROUP = Registry.register(Registries.ITEM_GROUP, + Identifier.of(BeamTech.MOD_ID, "beamtech"), + FabricItemGroup.builder().displayName(Text.translatable("itemgroup.beamtech")) + .icon(() -> new ItemStack(ModBlocks.LASER_EMITTER)).entries((displayContext, entries) -> { + entries.add(ModItems.IRON_ALLOY); + entries.add(ModItems.FOCAL_LENS); + entries.add(ModItems.RANGE_LENS); + entries.add(ModItems.LENS); + entries.add(ModItems.CAPACITOR); + entries.add(ModItems.LASER_GUN); + entries.add(ModItems.EMITTER); + entries.add(ModItems.MIRROR_INGREDIENT); + entries.add(ModItems.SUPERTREATED_GLASS); + entries.add(ModBlocks.LASER_EMITTER); + entries.add(ModBlocks.LASER_COMBINER_BLOCK); + entries.add(ModBlocks.MIRROR_BLOCK); + }).build()); + + public static void registerItemGroups() { + BeamTech.LOGGER.info("Registering Item Groups for " + BeamTech.MOD_ID); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/item/ModItems.java b/src/main/java/com/gamingframe/beamtech/item/ModItems.java new file mode 100644 index 0000000..0a42328 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/item/ModItems.java @@ -0,0 +1,43 @@ +package com.gamingframe.beamtech.item; + +import com.gamingframe.beamtech.BeamTech; +import com.gamingframe.beamtech.item.lenses.FocalLens; +import com.gamingframe.beamtech.item.lenses.RangeLens; +import com.gamingframe.beamtech.item.tools.LaserGun; +import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroupEntries; +import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; +import net.fabricmc.fabric.api.transfer.v1.item.ItemVariant; +import net.minecraft.item.Item; +import net.minecraft.item.ItemGroups; +import net.minecraft.nbt.NbtCompound; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.util.Identifier; + +public class ModItems { + public static final Item IRON_ALLOY = registerItem("alloy_iron",new Item(new Item.Settings())); + public static final Item FOCAL_LENS = registerItem("focal_lens",new FocalLens(new Item.Settings().maxCount(1))); + public static final Item RANGE_LENS = registerItem("range_lens",new RangeLens(new Item.Settings().maxCount(1))); + public static final Item LENS = registerItem("lens",new Item(new Item.Settings().maxCount(64))); + public static final Item MIRROR_INGREDIENT = registerItem("mirror_ingredient",new Item(new Item.Settings().maxCount(64))); + public static final Item SUPERTREATED_GLASS = registerItem("super_treated_glass",new Item(new Item.Settings().maxCount(64))); + public static final Item EMITTER = registerItem("emitter",new Item(new Item.Settings().maxCount(64))); + public static final Item CAPACITOR = registerItem("capacitor",new Item(new Item.Settings().maxCount(64))); + public static final Item LASER_GUN = registerItem("laser_gun",new LaserGun(new Item.Settings().maxCount(1).maxDamage(101))); + + private static void addItemsToIngredientTabItemGroup(FabricItemGroupEntries entries) { + entries.add(IRON_ALLOY); + } + + public static Item registerItem(String name, Item item) { + return Registry.register(Registries.ITEM, Identifier.of(BeamTech.MOD_ID, name), item); + } + + public static void registerModItems() { + BeamTech.LOGGER.info("Registering Mod Items for " + BeamTech.MOD_ID); + + ItemGroupEvents.modifyEntriesEvent(ItemGroups.INGREDIENTS).register(ModItems::addItemsToIngredientTabItemGroup); + } + + +} diff --git a/src/main/java/com/gamingframe/beamtech/item/lenses/FocalLens.java b/src/main/java/com/gamingframe/beamtech/item/lenses/FocalLens.java new file mode 100644 index 0000000..b94bc17 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/item/lenses/FocalLens.java @@ -0,0 +1,35 @@ +package com.gamingframe.beamtech.item.lenses; + +import com.gamingframe.beamtech.mixin.KeybindingAccessor; +import net.fabricmc.fabric.api.transfer.v1.item.ItemVariant; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.item.TooltipContext; +import net.minecraft.client.util.InputUtil; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; +import net.minecraft.world.World; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +public class FocalLens extends Item { + public FocalLens(Settings settings) { + super(settings); + } + + @Override + public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { + InputUtil.Key boundSneakKey = ((KeybindingAccessor) MinecraftClient.getInstance().options.sneakKey).getBoundKey(); + + if (InputUtil.isKeyPressed(MinecraftClient.getInstance().getWindow().getHandle(), boundSneakKey.getCode())) { + tooltip.add(Text.translatable("item.beamtech.focal_lens.desc").formatted(Formatting.GRAY)); + }else { + tooltip.add(Text.translatable("tooltip.beamtech.hold_crouch_desc", + Text.translatable(MinecraftClient.getInstance().options.sneakKey.getBoundKeyTranslationKey()).formatted(Formatting.GOLD)) + .formatted(Formatting.GRAY)); + } + super.appendTooltip(stack, world, tooltip, context); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/item/lenses/RangeLens.java b/src/main/java/com/gamingframe/beamtech/item/lenses/RangeLens.java new file mode 100644 index 0000000..5e49dc2 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/item/lenses/RangeLens.java @@ -0,0 +1,34 @@ +package com.gamingframe.beamtech.item.lenses; + +import com.gamingframe.beamtech.mixin.KeybindingAccessor; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.item.TooltipContext; +import net.minecraft.client.util.InputUtil; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; +import net.minecraft.world.World; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +public class RangeLens extends Item { + public RangeLens(Settings settings) { + super(settings); + } + + @Override + public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { + InputUtil.Key boundSneakKey = ((KeybindingAccessor) MinecraftClient.getInstance().options.sneakKey).getBoundKey(); + + if (InputUtil.isKeyPressed(MinecraftClient.getInstance().getWindow().getHandle(), boundSneakKey.getCode())) { + tooltip.add(Text.translatable("item.beamtech.range_lens.desc").formatted(Formatting.GRAY)); + }else { + tooltip.add(Text.translatable("tooltip.beamtech.hold_crouch_desc", + Text.translatable(MinecraftClient.getInstance().options.sneakKey.getBoundKeyTranslationKey()).formatted(Formatting.GOLD)) + .formatted(Formatting.GRAY)); + } + super.appendTooltip(stack, world, tooltip, context); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/item/tools/LaserGun.java b/src/main/java/com/gamingframe/beamtech/item/tools/LaserGun.java new file mode 100644 index 0000000..648b446 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/item/tools/LaserGun.java @@ -0,0 +1,220 @@ +package com.gamingframe.beamtech.item.tools; + +import com.gamingframe.beamtech.BeamTech; +import com.gamingframe.beamtech.helpers.TooltipHelper; +import com.gamingframe.beamtech.item.ModItems; +import com.gamingframe.beamtech.mixin.KeybindingAccessor; +import com.gamingframe.beamtech.raycasting.LaserRayCastContext; +import com.gamingframe.beamtech.sounds.ModSounds; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.item.TooltipContext; +import net.minecraft.client.util.InputUtil; +import net.minecraft.entity.Entity; +import net.minecraft.entity.ItemEntity; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffect; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.inventory.StackReference; +import net.minecraft.item.*; +import net.minecraft.nbt.NbtCompound; +import net.minecraft.screen.slot.Slot; +import net.minecraft.sound.SoundCategory; +import net.minecraft.text.Text; +import net.minecraft.util.ClickType; +import net.minecraft.util.Formatting; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.Box; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.RaycastContext; +import net.minecraft.world.World; +import org.jetbrains.annotations.Nullable; +import team.lodestar.lodestone.handlers.ScreenshakeHandler; +import team.lodestar.lodestone.registry.common.particle.LodestoneParticleRegistry; +import team.lodestar.lodestone.systems.easing.Easing; +import team.lodestar.lodestone.systems.particle.builder.WorldParticleBuilder; +import team.lodestar.lodestone.systems.particle.data.GenericParticleData; +import team.lodestar.lodestone.systems.particle.data.color.ColorParticleData; +import team.lodestar.lodestone.systems.particle.data.spin.SpinParticleData; +import team.lodestar.lodestone.systems.screenshake.PositionedScreenshakeInstance; +import team.lodestar.lodestone.systems.screenshake.ScreenshakeInstance; +import team.reborn.energy.api.base.SimpleEnergyItem; + +import java.awt.*; +import java.util.List; + +// TODO: Make an item that shoots lasers, dare I say more? +public class LaserGun extends Item implements SimpleEnergyItem { + public LaserGun(Settings settings) { + super(settings); + } + + + @Override + public void setStoredEnergy(ItemStack stack, long newAmount) { + SimpleEnergyItem.super.setStoredEnergy(stack, newAmount); + stack.setDamage(Math.min(Math.max((int) (newAmount * 100 / getEnergyCapacity(stack)), 0), 100)); + } + + @Override + public TypedActionResult use(World world, PlayerEntity user, Hand hand) { +// if (world.isClient) { +// return TypedActionResult.pass(user.getStackInHand(hand)); +// } + ItemStack stack = user.getStackInHand(hand); + NbtCompound nbt = stack.getNbt(); + + if (nbt == null) nbt = new NbtCompound(); + + if (!nbt.getBoolean("inUse") && !nbt.getBoolean("firing")) { + nbt.putBoolean("inUse", true); // LETS FIRE DA LASERRRRRRRRRR + stack.setNbt(nbt); + user.getItemCooldownManager().set(this, 600); + user.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, + 120, + 10)); + } + + return TypedActionResult.pass(stack); + } + + @Override + public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { + super.inventoryTick(stack, world, entity, slot, selected); + + NbtCompound nbt = stack.getNbt(); + if (nbt == null) return; + + if (nbt.getBoolean("inUse") && !nbt.getBoolean("firing")) { + // LETS GO + nbt.putBoolean("firing", true); + nbt.putInt("timePassed", 0); + stack.setNbt(nbt); + } + + if (nbt.getBoolean("firing")) { + + int ticks = nbt.getInt("timePassed"); + + if (ticks == 0) { + // play sound, begin effect for gathering + world.playSound(null, entity.getBlockPos(), ModSounds.LASER_GUN_FIRING, SoundCategory.BLOCKS, 1,1); + }else { + if (ticks >= 60) { + Vec3d eyePos = entity.getEyePos(); + Vec3d lookVec = entity.getRotationVec(1.0F); // Get the direction the player is looking at + + BlockHitResult result = world.raycast( + new LaserRayCastContext(eyePos, eyePos.add(lookVec.multiply(100)), + RaycastContext.ShapeType.OUTLINE, RaycastContext.FluidHandling.NONE, null, null)); + + // Calculate the right vector by taking the cross product of the look vector and the up vector (0, 1, 0) + Vec3d rightVec = lookVec.crossProduct(new Vec3d(0, 1, 0)).normalize(); + + // Define an offset magnitude + double offsetMagnitude = 0.5; // Adjust this value as needed + + // Calculate the offset vector + Vec3d offset = rightVec.multiply(offsetMagnitude); + + // Apply the offset to the eye position + Vec3d offsetEyePos = eyePos.add(offset); + + renderLaser(world, offsetEyePos, result.getPos()); + + ScreenshakeInstance laserScreenShake = new PositionedScreenshakeInstance(35, entity.getPos(), 30f, 45f, Easing.CIRC_IN_OUT).setIntensity(0.3f, 0.5f, 0f); + ScreenshakeHandler.addScreenshake(laserScreenShake); + + Box box = new Box(entity.getEyePos(), result.getPos()); + + List entities = world.getOtherEntities(null, box); + + for (Entity entity2 : entities) { + Box entityBox = entity2.getBoundingBox().expand(0.3); + + if (entityBox.raycast(entity.getEyePos(), result.getPos()).isPresent()) { + entity2.damage(entity2.getDamageSources().generic(), (float) 10); + } + } + } + } + + if (ticks >= 120) { + nbt.putBoolean("firing", false); + nbt.putBoolean("inUse", false); + nbt.putInt("timePassed", 0); + long energy = getStoredEnergy(stack); + setStoredEnergy(stack, energy - 50000); + } + + ticks = ticks + 1; + nbt.putInt("timePassed", ticks); + stack.setNbt(nbt); + } + } + + @Override + public int getMaxUseTime(ItemStack stack) { + return 120; + } + + + @Override + public ItemStack finishUsing(ItemStack stack, World world, LivingEntity user) { + + return stack; + } + + public void renderLaser(World world, Vec3d startPos, Vec3d endPos) { + double distance = startPos.distanceTo(endPos); + Vec3d direction = endPos.subtract(startPos).normalize(); + + Color startingColor = new Color(255, 0, 0); + Color centerColor = new Color(255, 142, 142); + + var builderOuter = WorldParticleBuilder.create(LodestoneParticleRegistry.WISP_PARTICLE).setScaleData(GenericParticleData.create(0.25f, 0).build()) + .setTransparencyData(GenericParticleData.create(0.75f, 0).build()) + .setColorData(ColorParticleData.create(startingColor).build()) + .setSpinData(SpinParticleData.create(0.2f, 0.4f).setSpinOffset((world.getTime() * 0.2f) % 6.28f).setEasing(Easing.QUARTIC_IN).build()) + .setLifetime(3) + .enableNoClip(); + + var builderCenter = WorldParticleBuilder.create(LodestoneParticleRegistry.WISP_PARTICLE).setScaleData(GenericParticleData.create(0.20f, 0).build()) + .setTransparencyData(GenericParticleData.create(1f, 0).build()) + .setColorData(ColorParticleData.create(centerColor).build()) + .setSpinData(SpinParticleData.create(0.2f, 0.4f).setSpinOffset((world.getTime() * 0.2f) % 6.28f).setEasing(Easing.QUARTIC_IN).build()) + .setLifetime(3) + .enableNoClip(); + + for (double i = 0; i < distance; i += 0.05) { + Vec3d currentPos = startPos.add(direction.multiply(i)); + builderOuter.spawn(world, currentPos.x, currentPos.y, currentPos.z); + builderCenter.spawn(world, currentPos.x, currentPos.y, currentPos.z); + } + } + + + @Override + public long getEnergyCapacity(ItemStack stack) { + return 100000; + } + + @Override + public long getEnergyMaxInput(ItemStack stack) { + return 5000; + } + + @Override + public long getEnergyMaxOutput(ItemStack stack) { + return 5000; + } + + @Override + public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { + TooltipHelper.appendTooltip(stack, tooltip); + super.appendTooltip(stack, world, tooltip, context); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/mixin/KeybindingAccessor.java b/src/main/java/com/gamingframe/beamtech/mixin/KeybindingAccessor.java new file mode 100644 index 0000000..539e4dd --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/mixin/KeybindingAccessor.java @@ -0,0 +1,19 @@ +package com.gamingframe.beamtech.mixin; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.option.KeyBinding; +import net.minecraft.client.util.InputUtil; +import net.minecraft.server.MinecraftServer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Environment(EnvType.CLIENT) +@Mixin(KeyBinding.class) +public interface KeybindingAccessor { + @Accessor + InputUtil.Key getBoundKey(); +} \ No newline at end of file diff --git a/src/main/java/com/gamingframe/beamtech/raycasting/LaserRayCastContext.java b/src/main/java/com/gamingframe/beamtech/raycasting/LaserRayCastContext.java new file mode 100644 index 0000000..db25b8b --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/raycasting/LaserRayCastContext.java @@ -0,0 +1,32 @@ +package com.gamingframe.beamtech.raycasting; + +import com.gamingframe.beamtech.block.custom.MirrorBlock; +import net.minecraft.block.*; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; +import net.minecraft.world.BlockView; +import net.minecraft.world.RaycastContext; + +public class LaserRayCastContext extends RaycastContext { + private final BlockEntity source; + private final Vec3d lastHitMirror; + + public LaserRayCastContext(Vec3d start, Vec3d end, ShapeType shapeType, FluidHandling fluidHandling, BlockEntity source, Vec3d lastHitMirror) { + super(start, end, shapeType, fluidHandling, null); + this.source = source; + this.lastHitMirror = lastHitMirror; + } + + @Override + public VoxelShape getBlockShape(BlockState state, BlockView world, BlockPos pos) { + if (state.isAir() || state.isOf(Blocks.WATER) || state.getBlock() instanceof TransparentBlock + || (state.getBlock() instanceof PaneBlock && state.getSoundGroup() == BlockSoundGroup.GLASS) || (source != null && world.getBlockEntity(pos) == source) || (lastHitMirror != null && pos.toCenterPos().distanceTo(lastHitMirror) < 0.2)) { + return VoxelShapes.empty(); + } + return state.getCollisionShape(world, pos); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/screens/EmitterBlockScreen.java b/src/main/java/com/gamingframe/beamtech/screens/EmitterBlockScreen.java new file mode 100644 index 0000000..9f21575 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/screens/EmitterBlockScreen.java @@ -0,0 +1,11 @@ +package com.gamingframe.beamtech.screens; + +import io.github.cottonmc.cotton.gui.client.CottonInventoryScreen; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.text.Text; + +public class EmitterBlockScreen extends CottonInventoryScreen { + public EmitterBlockScreen(EmitterGUI description, PlayerEntity player, Text title) { + super(description, player, title); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/screens/EmitterGUI.java b/src/main/java/com/gamingframe/beamtech/screens/EmitterGUI.java new file mode 100644 index 0000000..bd44ea8 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/screens/EmitterGUI.java @@ -0,0 +1,30 @@ +package com.gamingframe.beamtech.screens; + +import com.gamingframe.beamtech.BeamTech; +import io.github.cottonmc.cotton.gui.SyncedGuiDescription; +import io.github.cottonmc.cotton.gui.widget.WItemSlot; +import io.github.cottonmc.cotton.gui.widget.data.Insets; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.screen.ScreenHandlerContext; +import net.minecraft.screen.ScreenHandlerType; +import io.github.cottonmc.cotton.gui.widget.WGridPanel; + +public class EmitterGUI extends SyncedGuiDescription { + private static final int INVENTORY_SIZE = 1; + + public EmitterGUI(int syncId, PlayerInventory playerInventory, ScreenHandlerContext context) { + super(ModGUIs.EMITTER_GUI, syncId, playerInventory, getBlockInventory(context, INVENTORY_SIZE), getBlockPropertyDelegate(context)); + + WGridPanel root = new WGridPanel(); + setRootPanel(root); + root.setSize(150, 150); + root.setInsets(Insets.ROOT_PANEL); + + WItemSlot itemSlot = WItemSlot.of(blockInventory, 0); + root.add(itemSlot, 4, 1); + + root.add(this.createPlayerInventoryPanel(), 0, 3); + + root.validate(this); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/screens/ModGUIs.java b/src/main/java/com/gamingframe/beamtech/screens/ModGUIs.java new file mode 100644 index 0000000..4771e3b --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/screens/ModGUIs.java @@ -0,0 +1,20 @@ +package com.gamingframe.beamtech.screens; + +import com.gamingframe.beamtech.BeamTech; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.resource.featuretoggle.FeatureFlags; +import net.minecraft.screen.ScreenHandlerContext; +import net.minecraft.screen.ScreenHandlerType; +import net.minecraft.util.Identifier; + +public class ModGUIs { + public static final ScreenHandlerType EMITTER_GUI = Registry.register(Registries.SCREEN_HANDLER, Identifier.of(BeamTech.MOD_ID, "emitter_screen"), + new ScreenHandlerType<>((syncId, inventory) -> new EmitterGUI(syncId, inventory, ScreenHandlerContext.EMPTY), + FeatureFlags.VANILLA_FEATURES)); + + + public static void InitializeGUIs() { + BeamTech.LOGGER.info("Initializing Screens for {}", BeamTech.MOD_ID); + } +} diff --git a/src/main/java/com/gamingframe/beamtech/shader/MirrorReflectionPostProcessor.java b/src/main/java/com/gamingframe/beamtech/shader/MirrorReflectionPostProcessor.java new file mode 100644 index 0000000..fc8df36 --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/shader/MirrorReflectionPostProcessor.java @@ -0,0 +1,26 @@ +package com.gamingframe.beamtech.shader; + +import com.gamingframe.beamtech.BeamTech; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.Identifier; +import team.lodestar.lodestone.systems.postprocess.PostProcessHandler; +import team.lodestar.lodestone.systems.postprocess.PostProcessor; + +public class MirrorReflectionPostProcessor extends PostProcessor { + public static final MirrorReflectionPostProcessor INSTANCE = new MirrorReflectionPostProcessor(); + + @Override + public Identifier getPostChainLocation() { + return new Identifier(BeamTech.MOD_ID, "mirror_post"); + } + + @Override + public void beforeProcess(MatrixStack viewModelStack) { + + } + + @Override + public void afterProcess() { + + } +} diff --git a/src/main/java/com/gamingframe/beamtech/sounds/ModSounds.java b/src/main/java/com/gamingframe/beamtech/sounds/ModSounds.java new file mode 100644 index 0000000..9fe179b --- /dev/null +++ b/src/main/java/com/gamingframe/beamtech/sounds/ModSounds.java @@ -0,0 +1,21 @@ +package com.gamingframe.beamtech.sounds; + +import com.gamingframe.beamtech.BeamTech; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.sound.SoundEvent; +import net.minecraft.util.Identifier; + +public class ModSounds { + + public static final SoundEvent LASER_GUN_FIRING = registerSoundEvent("laser_gun_firing"); + + private static SoundEvent registerSoundEvent(String name) { + Identifier id = new Identifier(BeamTech.MOD_ID, name); + return Registry.register(Registries.SOUND_EVENT, id, SoundEvent.of(id)); + } + + public static void registerSounds() { + BeamTech.LOGGER.info("registering sounds for {}", BeamTech.MOD_ID); + } +} diff --git a/src/main/resources/assets/beamtech/blockstates/laser_combiner.json b/src/main/resources/assets/beamtech/blockstates/laser_combiner.json new file mode 100644 index 0000000..ba27821 --- /dev/null +++ b/src/main/resources/assets/beamtech/blockstates/laser_combiner.json @@ -0,0 +1,9 @@ +{ + "variants": + { + "facing=north": { "model": "beamtech:block/laser_combiner" }, + "facing=east": { "model": "beamtech:block/laser_combiner", "y": 90 }, + "facing=south": { "model": "beamtech:block/laser_combiner", "y": 180 }, + "facing=west": { "model": "beamtech:block/laser_combiner", "y": 270 } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/blockstates/laser_emitter.json b/src/main/resources/assets/beamtech/blockstates/laser_emitter.json new file mode 100644 index 0000000..a3f2d8e --- /dev/null +++ b/src/main/resources/assets/beamtech/blockstates/laser_emitter.json @@ -0,0 +1,10 @@ +{ + "variants": { + "facing=north": { "model": "beamtech:block/laser_emitter" }, + "facing=east": { "model": "beamtech:block/laser_emitter", "y": 90 }, + "facing=south": { "model": "beamtech:block/laser_emitter", "y": 180 }, + "facing=west": { "model": "beamtech:block/laser_emitter", "y": 270 }, + "facing=up": { "model": "beamtech:block/laser_emitter_upwards" }, + "facing=down": { "model": "beamtech:block/laser_emitter_downwards" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/blockstates/mirror.json b/src/main/resources/assets/beamtech/blockstates/mirror.json new file mode 100644 index 0000000..0e5443f --- /dev/null +++ b/src/main/resources/assets/beamtech/blockstates/mirror.json @@ -0,0 +1,12 @@ +{ + "variants": { + "rotation=rotate_n": { "model": "beamtech:block/mirror"}, + "rotation=rotate_nne": { "model": "beamtech:block/mirror_22"}, + "rotation=rotate_ne": { "model": "beamtech:block/mirror_45"}, + "rotation=rotate_nee": { "model": "beamtech:block/mirror_67" }, + "rotation=rotate_e": { "model": "beamtech:block/mirror_90"}, + "rotation=rotate_see": { "model": "beamtech:block/mirror_112"}, + "rotation=rotate_se": { "model": "beamtech:block/mirror_135"}, + "rotation=rotate_sse": { "model": "beamtech:block/mirror_157" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/icon.png b/src/main/resources/assets/beamtech/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..118f24c79351fcd40665feb102052ff0a1d8d710 GIT binary patch literal 3102 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 Awg3PC literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/beamtech/lang/en_us.json b/src/main/resources/assets/beamtech/lang/en_us.json new file mode 100644 index 0000000..2af6272 --- /dev/null +++ b/src/main/resources/assets/beamtech/lang/en_us.json @@ -0,0 +1,26 @@ +{ + "item.beamtech.alloy_iron": "Iron Alloy", + "item.beamtech.focal_lens": "Focal Lens", + "item.beamtech.range_lens": "Range Lens", + "item.beamtech.lens": "Lens", + "item.beamtech.capacitor": "Capacitor", + "item.beamtech.mirror_ingredient": "Reflective Panel", + "item.beamtech.laser_gun": "Laser Weapon", + "item.beamtech.super_treated_glass": "Super Treated Glass", + + "item.beamtech.laser_block.desc": "A laser emitter, what else did you expect", + "item.beamtech.mirror.desc": "Reflects lasers to a different direction", + "item.beamtech.laser_combiner.desc": "Combines 2 lasers to make 1 bigger laser.", + "item.beamtech.laser_gun.desc": "A very powerful weapon, do not underestimate its power.", + "item.beamtech.focal_lens.desc": "Increases power but decreases range.", + "item.beamtech.range_lens.desc": "Increases range but decreases power.", + + "block.beamtech.laser_emitter": "Laser Emitter", + "block.beamtech.mirror": "Mirror", + "block.beamtech.laser_combiner": "Laser Combiner", + + "itemgroup.beamtech": "BeamTech Items", + + "tooltip.beamtech.hold_crouch_desc": "Hold [%s] to see Description", + "sounds.beamtech.laser_gun_firing": "Laser weapon firing" +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/models/block/laser_combiner.json b/src/main/resources/assets/beamtech/models/block/laser_combiner.json new file mode 100644 index 0000000..66fbaa8 --- /dev/null +++ b/src/main/resources/assets/beamtech/models/block/laser_combiner.json @@ -0,0 +1,364 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "beamtech:block/laser_combiner", + "particle": "beamtech:block/laser_combiner" + }, + "elements": [ + { + "name": "Center", + "from": [1, 1, 4], + "to": [15, 15, 15], + "faces": { + "north": {"uv": [0, 0, 3.5, 3.5], "texture": "#0"}, + "east": {"uv": [3.5, 0, 6.25, 3.5], "texture": "#0"}, + "south": {"uv": [0, 3.5, 3.5, 7], "texture": "#0"}, + "west": {"uv": [3.5, 3.5, 6.25, 7], "texture": "#0"}, + "up": {"uv": [9.75, 2.75, 6.25, 0], "texture": "#0"}, + "down": {"uv": [9.75, 2.75, 6.25, 5.5], "texture": "#0"} + } + }, + { + "from": [7, 7.0153, 2], + "to": [9, 9.0153, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [8.01356, 8, 5.7347]}, + "faces": { + "north": {"uv": [13.5, 8, 14, 8.5], "texture": "#0"}, + "east": {"uv": [10.25, 11, 10.5, 11.5], "texture": "#0"}, + "south": {"uv": [13.25, 13.5, 13.75, 14], "texture": "#0"}, + "west": {"uv": [7.25, 13.5, 7.5, 14], "texture": "#0"}, + "up": {"uv": [14.25, 3.5, 13.75, 3.25], "texture": "#0"}, + "down": {"uv": [14.25, 3.5, 13.75, 3.75], "texture": "#0"} + } + }, + { + "from": [6, 6.0153, 3], + "to": [10, 10.0153, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8.01356, 8, 5.7347]}, + "faces": { + "north": {"uv": [11.5, 10.5, 12.5, 11.5], "texture": "#0"}, + "east": {"uv": [7, 13.5, 7.25, 14.5], "texture": "#0"}, + "south": {"uv": [11.5, 11.5, 12.5, 12.5], "texture": "#0"}, + "west": {"uv": [13.5, 7, 13.75, 8], "texture": "#0"}, + "up": {"uv": [11.5, 12.5, 10.5, 12.25], "texture": "#0"}, + "down": {"uv": [14.25, 5.25, 13.25, 5.5], "texture": "#0"} + } + }, + { + "from": [0, 0, 5], + "to": [2, 2, 14], + "faces": { + "north": {"uv": [13.25, 3.75, 13.75, 4.25], "texture": "#0"}, + "east": {"uv": [10.5, 8.5, 12.75, 9], "texture": "#0"}, + "south": {"uv": [13.25, 4.25, 13.75, 4.75], "texture": "#0"}, + "west": {"uv": [10.5, 9, 12.75, 9.5], "texture": "#0"}, + "up": {"uv": [11, 11.75, 10.5, 9.5], "texture": "#0"}, + "down": {"uv": [8, 11, 7.5, 13.25], "texture": "#0"} + } + }, + { + "from": [14, 0, 5], + "to": [16, 2, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [14, 0, 0]}, + "faces": { + "north": {"uv": [13.25, 4.75, 13.75, 5.25], "texture": "#0"}, + "east": {"uv": [8, 11, 10.25, 11.5], "texture": "#0"}, + "south": {"uv": [7.5, 13.25, 8, 13.75], "texture": "#0"}, + "west": {"uv": [11, 9.5, 13.25, 10], "texture": "#0"}, + "up": {"uv": [11.5, 12.25, 11, 10], "texture": "#0"}, + "down": {"uv": [8.5, 11.5, 8, 13.75], "texture": "#0"} + } + }, + { + "from": [14, 14, 5], + "to": [16, 16, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [14, 14, 0]}, + "faces": { + "north": {"uv": [13.25, 9.5, 13.75, 10], "texture": "#0"}, + "east": {"uv": [11.25, 0, 13.5, 0.5], "texture": "#0"}, + "south": {"uv": [13.25, 11.25, 13.75, 11.75], "texture": "#0"}, + "west": {"uv": [11.25, 0.5, 13.5, 1], "texture": "#0"}, + "up": {"uv": [9, 13.75, 8.5, 11.5], "texture": "#0"}, + "down": {"uv": [9.5, 11.5, 9, 13.75], "texture": "#0"} + } + }, + { + "from": [0, 14, 5], + "to": [2, 16, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 14, 0]}, + "faces": { + "north": {"uv": [13.25, 11.75, 13.75, 12.25], "texture": "#0"}, + "east": {"uv": [11.25, 1, 13.5, 1.5], "texture": "#0"}, + "south": {"uv": [13.25, 12.25, 13.75, 12.75], "texture": "#0"}, + "west": {"uv": [11.5, 10, 13.75, 10.5], "texture": "#0"}, + "up": {"uv": [10, 13.75, 9.5, 11.5], "texture": "#0"}, + "down": {"uv": [10.5, 11.5, 10, 13.75], "texture": "#0"} + } + }, + { + "from": [0, 1, 3], + "to": [2, 15, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 17, 3]}, + "faces": { + "north": {"uv": [3.5, 10, 4, 13.5], "texture": "#0"}, + "east": {"uv": [4, 10, 4.5, 13.5], "texture": "#0"}, + "south": {"uv": [4.5, 10, 5, 13.5], "texture": "#0"}, + "west": {"uv": [5, 10, 5.5, 13.5], "texture": "#0"}, + "up": {"uv": [14, 3, 13.5, 2.5], "texture": "#0"}, + "down": {"uv": [4, 13.5, 3.5, 14], "texture": "#0"} + } + }, + { + "from": [0, 0, 14], + "to": [2, 16, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 17, 14]}, + "faces": { + "north": {"uv": [9.75, 1.5, 10.25, 5.5], "texture": "#0"}, + "east": {"uv": [0, 10, 0.5, 14], "texture": "#0"}, + "south": {"uv": [0.5, 10, 1, 14], "texture": "#0"}, + "west": {"uv": [1, 10, 1.5, 14], "texture": "#0"}, + "up": {"uv": [4.5, 14, 4, 13.5], "texture": "#0"}, + "down": {"uv": [5, 13.5, 4.5, 14], "texture": "#0"} + } + }, + { + "from": [14, 0, 14], + "to": [16, 16, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [15, 8, 15]}, + "faces": { + "north": {"uv": [1.5, 10, 2, 14], "texture": "#0"}, + "east": {"uv": [2, 10, 2.5, 14], "texture": "#0"}, + "south": {"uv": [2.5, 10, 3, 14], "texture": "#0"}, + "west": {"uv": [3, 10, 3.5, 14], "texture": "#0"}, + "up": {"uv": [5.5, 14, 5, 13.5], "texture": "#0"}, + "down": {"uv": [6, 13.5, 5.5, 14], "texture": "#0"} + } + }, + { + "from": [14, 1, 3], + "to": [16, 15, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [14, 17, 3]}, + "faces": { + "north": {"uv": [5.5, 10, 6, 13.5], "texture": "#0"}, + "east": {"uv": [6, 10, 6.5, 13.5], "texture": "#0"}, + "south": {"uv": [6.5, 10, 7, 13.5], "texture": "#0"}, + "west": {"uv": [7, 10, 7.5, 13.5], "texture": "#0"}, + "up": {"uv": [6.5, 14, 6, 13.5], "texture": "#0"}, + "down": {"uv": [7, 13.5, 6.5, 14], "texture": "#0"} + } + }, + { + "from": [2, 14, 3], + "to": [14, 16, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 14, 3]}, + "faces": { + "north": {"uv": [10.25, 1.5, 13.25, 2], "texture": "#0"}, + "east": {"uv": [13.25, 13, 13.75, 13.5], "texture": "#0"}, + "south": {"uv": [10.25, 2, 13.25, 2.5], "texture": "#0"}, + "west": {"uv": [13.5, 0, 14, 0.5], "texture": "#0"}, + "up": {"uv": [13.25, 3, 10.25, 2.5], "texture": "#0"}, + "down": {"uv": [13.25, 3, 10.25, 3.5], "texture": "#0"} + } + }, + { + "from": [4, 11.0153, 0], + "to": [12, 12.0153, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8.01356, 8, 7.7347]}, + "faces": { + "north": {"uv": [12.5, 10.75, 14.5, 11], "texture": "#0"}, + "east": {"uv": [13, 6.75, 14.5, 7], "texture": "#0"}, + "south": {"uv": [12.5, 11, 14.5, 11.25], "texture": "#0"}, + "west": {"uv": [13.25, 3, 14.75, 3.25], "texture": "#0"}, + "up": {"uv": [4, 8.5, 2, 7], "texture": "#0"}, + "down": {"uv": [6, 7, 4, 8.5], "texture": "#0"} + } + }, + { + "from": [5.07162, 1.51195, 2.49463], + "to": [11.07162, 2.51195, 8.49463], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8.01356, 8, 7.7347]}, + "faces": { + "north": {"uv": [13, 5.75, 14.5, 6], "texture": "#0"}, + "east": {"uv": [13, 6, 14.5, 6.25], "texture": "#0"}, + "south": {"uv": [13, 6.25, 14.5, 6.5], "texture": "#0"}, + "west": {"uv": [13, 6.5, 14.5, 6.75], "texture": "#0"}, + "up": {"uv": [10.5, 10, 9, 8.5], "texture": "#0"}, + "down": {"uv": [11.25, 0, 9.75, 1.5], "texture": "#0"} + } + }, + { + "from": [13.46939, 5.0153, 2.52814], + "to": [14.46939, 11.0153, 8.52814], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8.01356, 8, 7.7347]}, + "faces": { + "north": {"uv": [13, 11.25, 13.25, 12.75], "texture": "#0"}, + "east": {"uv": [7.5, 8.5, 9, 10], "texture": "#0"}, + "south": {"uv": [12.75, 13, 13, 14.5], "texture": "#0"}, + "west": {"uv": [9, 7, 10.5, 8.5], "texture": "#0"}, + "up": {"uv": [13.25, 14.5, 13, 13], "texture": "#0"}, + "down": {"uv": [13.5, 1.5, 13.25, 3], "texture": "#0"} + } + }, + { + "from": [5.07162, 12.175, 0.4602], + "to": [11.07162, 13.175, 6.4602], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8.07162, 12.675, 3.4602]}, + "faces": { + "north": {"uv": [12.75, 9, 14.25, 9.25], "texture": "#0"}, + "east": {"uv": [12.75, 9.25, 14.25, 9.5], "texture": "#0"}, + "south": {"uv": [12.75, 12.75, 14.25, 13], "texture": "#0"}, + "west": {"uv": [13, 5.5, 14.5, 5.75], "texture": "#0"}, + "up": {"uv": [6, 10, 4.5, 8.5], "texture": "#0"}, + "down": {"uv": [7.5, 8.5, 6, 10], "texture": "#0"} + } + }, + { + "from": [1.56471, 5.0153, 2.54498], + "to": [2.56471, 11.0153, 8.54498], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8.01356, 8, 7.7347]}, + "faces": { + "north": {"uv": [11.75, 12.75, 12, 14.25], "texture": "#0"}, + "east": {"uv": [1.5, 8.5, 3, 10], "texture": "#0"}, + "south": {"uv": [12, 12.75, 12.25, 14.25], "texture": "#0"}, + "west": {"uv": [3, 8.5, 4.5, 10], "texture": "#0"}, + "up": {"uv": [12.5, 14.25, 12.25, 12.75], "texture": "#0"}, + "down": {"uv": [12.75, 12.75, 12.5, 14.25], "texture": "#0"} + } + }, + { + "from": [4, 5.0153, 0], + "to": [5, 11.0153, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8.01356, 8, 7.7347]}, + "faces": { + "north": {"uv": [11, 12.75, 11.25, 14.25], "texture": "#0"}, + "east": {"uv": [8.25, 5.5, 9.75, 7], "texture": "#0"}, + "south": {"uv": [11.25, 12.75, 11.5, 14.25], "texture": "#0"}, + "west": {"uv": [0, 8.5, 1.5, 10], "texture": "#0"}, + "up": {"uv": [13, 12.75, 12.75, 11.25], "texture": "#0"}, + "down": {"uv": [11.75, 12.75, 11.5, 14.25], "texture": "#0"} + } + }, + { + "from": [11, 5.0153, 0], + "to": [12, 11.0153, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8.01356, 8, 7.7347]}, + "faces": { + "north": {"uv": [12.5, 11.25, 12.75, 12.75], "texture": "#0"}, + "east": {"uv": [6, 7, 7.5, 8.5], "texture": "#0"}, + "south": {"uv": [12.75, 5.5, 13, 7], "texture": "#0"}, + "west": {"uv": [7.5, 7, 9, 8.5], "texture": "#0"}, + "up": {"uv": [10.75, 14.25, 10.5, 12.75], "texture": "#0"}, + "down": {"uv": [11, 12.75, 10.75, 14.25], "texture": "#0"} + } + }, + { + "from": [4, 4.0153, 0], + "to": [12, 5.0153, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [8.01356, 8, 7.7347]}, + "faces": { + "north": {"uv": [10.5, 12.5, 12.5, 12.75], "texture": "#0"}, + "east": {"uv": [12.75, 8.5, 14.25, 8.75], "texture": "#0"}, + "south": {"uv": [12.5, 10.5, 14.5, 10.75], "texture": "#0"}, + "west": {"uv": [12.75, 8.75, 14.25, 9], "texture": "#0"}, + "up": {"uv": [8.25, 7, 6.25, 5.5], "texture": "#0"}, + "down": {"uv": [2, 7, 0, 8.5], "texture": "#0"} + } + }, + { + "from": [2, 0, 3], + "to": [14, 2, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 3]}, + "faces": { + "north": {"uv": [10.25, 3.5, 13.25, 4], "texture": "#0"}, + "east": {"uv": [13.5, 0.5, 14, 1], "texture": "#0"}, + "south": {"uv": [10.25, 4, 13.25, 4.5], "texture": "#0"}, + "west": {"uv": [13.5, 1, 14, 1.5], "texture": "#0"}, + "up": {"uv": [13.25, 5, 10.25, 4.5], "texture": "#0"}, + "down": {"uv": [13.25, 5, 10.25, 5.5], "texture": "#0"} + } + }, + { + "from": [2, 0, 14], + "to": [14, 2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 14]}, + "faces": { + "north": {"uv": [10.5, 7, 13.5, 7.5], "texture": "#0"}, + "east": {"uv": [13.5, 1.5, 14, 2], "texture": "#0"}, + "south": {"uv": [7.5, 10.5, 10.5, 11], "texture": "#0"}, + "west": {"uv": [13.5, 2, 14, 2.5], "texture": "#0"}, + "up": {"uv": [13.5, 8, 10.5, 7.5], "texture": "#0"}, + "down": {"uv": [13.5, 8, 10.5, 8.5], "texture": "#0"} + } + }, + { + "from": [2, 14, 14], + "to": [14, 16, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 14, 14]}, + "faces": { + "north": {"uv": [9.75, 5.5, 12.75, 6], "texture": "#0"}, + "east": {"uv": [10.5, 11.75, 11, 12.25], "texture": "#0"}, + "south": {"uv": [9.75, 6, 12.75, 6.5], "texture": "#0"}, + "west": {"uv": [13.25, 3.25, 13.75, 3.75], "texture": "#0"}, + "up": {"uv": [12.75, 7, 9.75, 6.5], "texture": "#0"}, + "down": {"uv": [10.5, 10, 7.5, 10.5], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0.75, 0, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + { + "name": "Emitter", + "origin": [8.01356, 8, 4.7347], + "color": 0, + "nbt": "{}", + "children": [12, 13, 14, 15, 16, 17, 18, 19] + }, + 20, + 21, + 22 + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/models/block/laser_emitter.json b/src/main/resources/assets/beamtech/models/block/laser_emitter.json new file mode 100644 index 0000000..5394636 --- /dev/null +++ b/src/main/resources/assets/beamtech/models/block/laser_emitter.json @@ -0,0 +1,211 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "beamtech:block/laser_emitter", + "particle": "beamtech:block/laser_emitter" + }, + "elements": [ + { + "from": [0, 0.0153, 13], + "to": [16, 16.0153, 16], + "rotation": {"angle": 0, "axis": "x", "origin": [8.01356, 8, 9.7347]}, + "faces": { + "north": {"uv": [0, 0, 3.5, 3.5], "texture": "#0"}, + "east": {"uv": [7, 6, 7.75, 9.5], "texture": "#0"}, + "south": {"uv": [0, 3.5, 3.5, 7], "texture": "#0"}, + "west": {"uv": [7.75, 6, 8.5, 9.5], "texture": "#0"}, + "up": {"uv": [6.5, 9.25, 3, 8.5], "texture": "#0"}, + "down": {"uv": [12, 6, 8.5, 6.75], "texture": "#0"} + } + }, + { + "from": [1, 1.0153, 8], + "to": [15, 15.0153, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8.01356, 8, 9.7347]}, + "faces": { + "north": {"uv": [3.5, 0, 7, 3.5], "texture": "#0"}, + "east": {"uv": [8.5, 6.75, 9.25, 10.25], "texture": "#0"}, + "south": {"uv": [3.5, 3.5, 7, 7], "texture": "#0"}, + "west": {"uv": [3, 9.25, 3.75, 12.75], "texture": "#0"}, + "up": {"uv": [12.5, 3.75, 9, 3], "texture": "#0"}, + "down": {"uv": [12.5, 3.75, 9, 4.5], "texture": "#0"} + } + }, + { + "from": [6, 6.0153, 7], + "to": [10, 10.0153, 8], + "rotation": {"angle": 0, "axis": "x", "origin": [8.01356, 8, 9.7347]}, + "faces": { + "north": {"uv": [10.75, 7.25, 11.75, 8.25], "texture": "#0"}, + "east": {"uv": [6.75, 8.5, 7, 9.5], "texture": "#0"}, + "south": {"uv": [10.75, 8.25, 11.75, 9.25], "texture": "#0"}, + "west": {"uv": [7.25, 11.25, 7.5, 12.25], "texture": "#0"}, + "up": {"uv": [12.5, 1.25, 11.5, 1], "texture": "#0"}, + "down": {"uv": [12.5, 1.25, 11.5, 1.5], "texture": "#0"} + } + }, + { + "from": [7, 7.0153, 6], + "to": [9, 9.0153, 7], + "rotation": {"angle": 0, "axis": "x", "origin": [8.01356, 8, 9.7347]}, + "faces": { + "north": {"uv": [7.5, 11.25, 8, 11.75], "texture": "#0"}, + "east": {"uv": [6.5, 8.5, 6.75, 9], "texture": "#0"}, + "south": {"uv": [1.5, 11.5, 2, 12], "texture": "#0"}, + "west": {"uv": [8.25, 9.5, 8.5, 10], "texture": "#0"}, + "up": {"uv": [12, 1.75, 11.5, 1.5], "texture": "#0"}, + "down": {"uv": [12, 1.75, 11.5, 2], "texture": "#0"} + } + }, + { + "from": [4, 4.0153, 2], + "to": [12, 5.0153, 8], + "rotation": {"angle": 0, "axis": "x", "origin": [8.01356, 8, 9.7347]}, + "faces": { + "north": {"uv": [10.75, 9.25, 12.75, 9.5], "texture": "#0"}, + "east": {"uv": [10.75, 10.25, 12.25, 10.5], "texture": "#0"}, + "south": {"uv": [10.75, 9.5, 12.75, 9.75], "texture": "#0"}, + "west": {"uv": [10.75, 10.5, 12.25, 10.75], "texture": "#0"}, + "up": {"uv": [5, 8.5, 3, 7], "texture": "#0"}, + "down": {"uv": [9, 3, 7, 4.5], "texture": "#0"} + } + }, + { + "from": [4, 11.0153, 2], + "to": [12, 12.0153, 8], + "rotation": {"angle": 0, "axis": "x", "origin": [8.01356, 8, 9.7347]}, + "faces": { + "north": {"uv": [10.75, 9.75, 12.75, 10], "texture": "#0"}, + "east": {"uv": [10.75, 10.75, 12.25, 11], "texture": "#0"}, + "south": {"uv": [10.75, 10, 12.75, 10.25], "texture": "#0"}, + "west": {"uv": [6.75, 11, 8.25, 11.25], "texture": "#0"}, + "up": {"uv": [9, 6, 7, 4.5], "texture": "#0"}, + "down": {"uv": [7, 7, 5, 8.5], "texture": "#0"} + } + }, + { + "from": [11, 5.0153, 2], + "to": [12, 11.0153, 8], + "rotation": {"angle": 0, "axis": "x", "origin": [8.01356, 8, 9.7347]}, + "faces": { + "north": {"uv": [10.75, 11, 11, 12.5], "texture": "#0"}, + "east": {"uv": [9, 4.5, 10.5, 6], "texture": "#0"}, + "south": {"uv": [11, 11, 11.25, 12.5], "texture": "#0"}, + "west": {"uv": [3.75, 9.25, 5.25, 10.75], "texture": "#0"}, + "up": {"uv": [4, 12.75, 3.75, 11.25], "texture": "#0"}, + "down": {"uv": [4.25, 11.25, 4, 12.75], "texture": "#0"} + } + }, + { + "from": [4, 5.0153, 2], + "to": [5, 11.0153, 8], + "rotation": {"angle": 0, "axis": "x", "origin": [8.01356, 8, 9.7347]}, + "faces": { + "north": {"uv": [4.25, 11.25, 4.5, 12.75], "texture": "#0"}, + "east": {"uv": [5.25, 9.25, 6.75, 10.75], "texture": "#0"}, + "south": {"uv": [4.5, 11.25, 4.75, 12.75], "texture": "#0"}, + "west": {"uv": [9.25, 6.75, 10.75, 8.25], "texture": "#0"}, + "up": {"uv": [5, 12.75, 4.75, 11.25], "texture": "#0"}, + "down": {"uv": [5.25, 11.25, 5, 12.75], "texture": "#0"} + } + }, + { + "from": [1.56471, 5.0153, 4.54498], + "to": [2.56471, 11.0153, 10.54498], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8.01356, 8, 9.7347]}, + "faces": { + "north": {"uv": [5.25, 11.25, 5.5, 12.75], "texture": "#0"}, + "east": {"uv": [9.25, 8.25, 10.75, 9.75], "texture": "#0"}, + "south": {"uv": [5.5, 11.25, 5.75, 12.75], "texture": "#0"}, + "west": {"uv": [6.75, 9.5, 8.25, 11], "texture": "#0"}, + "up": {"uv": [6, 12.75, 5.75, 11.25], "texture": "#0"}, + "down": {"uv": [6.25, 11.25, 6, 12.75], "texture": "#0"} + } + }, + { + "from": [13.46939, 5.0153, 4.52814], + "to": [14.46939, 11.0153, 10.52814], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8.01356, 8, 9.7347]}, + "faces": { + "north": {"uv": [6.25, 11.25, 6.5, 12.75], "texture": "#0"}, + "east": {"uv": [9.25, 9.75, 10.75, 11.25], "texture": "#0"}, + "south": {"uv": [6.5, 11.25, 6.75, 12.75], "texture": "#0"}, + "west": {"uv": [0, 10, 1.5, 11.5], "texture": "#0"}, + "up": {"uv": [7, 12.75, 6.75, 11.25], "texture": "#0"}, + "down": {"uv": [7.25, 11.25, 7, 12.75], "texture": "#0"} + } + }, + { + "from": [5.07162, 1.51195, 4.49463], + "to": [11.07162, 2.51195, 10.49463], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8.01356, 8, 9.7347]}, + "faces": { + "north": {"uv": [9.25, 11.25, 10.75, 11.5], "texture": "#0"}, + "east": {"uv": [11.25, 11, 12.75, 11.25], "texture": "#0"}, + "south": {"uv": [11.25, 11.25, 12.75, 11.5], "texture": "#0"}, + "west": {"uv": [0, 11.5, 1.5, 11.75], "texture": "#0"}, + "up": {"uv": [11.5, 1.5, 10, 0], "texture": "#0"}, + "down": {"uv": [3, 10, 1.5, 11.5], "texture": "#0"} + } + }, + { + "from": [5.07162, 13.45492, 4.57462], + "to": [11.07162, 14.45492, 10.57462], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8.01356, 8, 9.7347]}, + "faces": { + "north": {"uv": [11.5, 0, 13, 0.25], "texture": "#0"}, + "east": {"uv": [11.5, 0.25, 13, 0.5], "texture": "#0"}, + "south": {"uv": [11.5, 0.5, 13, 0.75], "texture": "#0"}, + "west": {"uv": [11.5, 0.75, 13, 1], "texture": "#0"}, + "up": {"uv": [11.5, 3, 10, 1.5], "texture": "#0"}, + "down": {"uv": [12, 4.5, 10.5, 6], "texture": "#0"} + } + }, + { + "from": [2, 2.0153, 11], + "to": [14, 14.0153, 13], + "rotation": {"angle": 0, "axis": "x", "origin": [8.01356, 8, 9.7347]}, + "faces": { + "north": {"uv": [0, 7, 3, 10], "texture": "#0"}, + "east": {"uv": [8.25, 10.25, 8.75, 13.25], "texture": "#0"}, + "south": {"uv": [7, 0, 10, 3], "texture": "#0"}, + "west": {"uv": [8.75, 10.25, 9.25, 13.25], "texture": "#0"}, + "up": {"uv": [6.75, 11.25, 3.75, 10.75], "texture": "#0"}, + "down": {"uv": [13.75, 6.75, 10.75, 7.25], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [118, 0, 45], + "translation": [0, 0.75, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/models/block/laser_emitter_downwards.json b/src/main/resources/assets/beamtech/models/block/laser_emitter_downwards.json new file mode 100644 index 0000000..80730ca --- /dev/null +++ b/src/main/resources/assets/beamtech/models/block/laser_emitter_downwards.json @@ -0,0 +1,186 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "beamtech:block/laser_emitter", + "particle": "beamtech:block/laser_emitter" + }, + "elements": [ + { + "from": [0.02712, 13.0153, 0], + "to": [16.02712, 16.0153, 16], + "rotation": {"angle": 0, "axis": "z", "origin": [8.01356, 9.75, 7.9847]}, + "faces": { + "north": {"uv": [12, 6, 8.5, 6.75], "texture": "#0"}, + "east": {"uv": [7.75, 6, 8.5, 9.5], "rotation": 270, "texture": "#0"}, + "south": {"uv": [6.5, 9.25, 3, 8.5], "rotation": 180, "texture": "#0"}, + "west": {"uv": [7, 6, 7.75, 9.5], "rotation": 90, "texture": "#0"}, + "up": {"uv": [0, 3.5, 3.5, 7], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 3.5, 3.5], "texture": "#0"} + } + }, + { + "from": [1.02712, 8.0153, 1], + "to": [15.02712, 11.0153, 15], + "rotation": {"angle": 0, "axis": "z", "origin": [8.01356, 9.75, 7.9847]}, + "faces": { + "north": {"uv": [12.5, 3.75, 9, 4.5], "texture": "#0"}, + "east": {"uv": [3, 9.25, 3.75, 12.75], "rotation": 270, "texture": "#0"}, + "south": {"uv": [12.5, 3.75, 9, 3], "rotation": 180, "texture": "#0"}, + "west": {"uv": [8.5, 6.75, 9.25, 10.25], "rotation": 90, "texture": "#0"}, + "up": {"uv": [3.5, 3.5, 7, 7], "rotation": 180, "texture": "#0"}, + "down": {"uv": [3.5, 0, 7, 3.5], "texture": "#0"} + } + }, + { + "from": [6.02712, 7.0153, 6], + "to": [10.02712, 8.0153, 10], + "rotation": {"angle": 0, "axis": "z", "origin": [8.01356, 9.75, 7.9847]}, + "faces": { + "north": {"uv": [12.5, 1.25, 11.5, 1.5], "texture": "#0"}, + "east": {"uv": [7.25, 11.25, 7.5, 12.25], "rotation": 270, "texture": "#0"}, + "south": {"uv": [12.5, 1.25, 11.5, 1], "rotation": 180, "texture": "#0"}, + "west": {"uv": [6.75, 8.5, 7, 9.5], "rotation": 90, "texture": "#0"}, + "up": {"uv": [10.75, 8.25, 11.75, 9.25], "rotation": 180, "texture": "#0"}, + "down": {"uv": [10.75, 7.25, 11.75, 8.25], "texture": "#0"} + } + }, + { + "from": [7.02712, 6.0153, 7], + "to": [9.02712, 7.0153, 9], + "rotation": {"angle": 0, "axis": "z", "origin": [8.01356, 9.75, 7.9847]}, + "faces": { + "north": {"uv": [12, 1.75, 11.5, 2], "texture": "#0"}, + "east": {"uv": [8.25, 9.5, 8.5, 10], "rotation": 270, "texture": "#0"}, + "south": {"uv": [12, 1.75, 11.5, 1.5], "rotation": 180, "texture": "#0"}, + "west": {"uv": [6.5, 8.5, 6.75, 9], "rotation": 90, "texture": "#0"}, + "up": {"uv": [1.5, 11.5, 2, 12], "rotation": 180, "texture": "#0"}, + "down": {"uv": [7.5, 11.25, 8, 11.75], "texture": "#0"} + } + }, + { + "from": [4.02712, 2.0153, 4], + "to": [12.02712, 8.0153, 5], + "rotation": {"angle": 0, "axis": "z", "origin": [8.01356, 9.75, 7.9847]}, + "faces": { + "north": {"uv": [9, 3, 7, 4.5], "texture": "#0"}, + "east": {"uv": [10.75, 10.5, 12.25, 10.75], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5, 8.5, 3, 7], "rotation": 180, "texture": "#0"}, + "west": {"uv": [10.75, 10.25, 12.25, 10.5], "rotation": 90, "texture": "#0"}, + "up": {"uv": [10.75, 9.5, 12.75, 9.75], "rotation": 180, "texture": "#0"}, + "down": {"uv": [10.75, 9.25, 12.75, 9.5], "texture": "#0"} + } + }, + { + "from": [4.02712, 2.0153, 11], + "to": [12.02712, 8.0153, 12], + "rotation": {"angle": 0, "axis": "z", "origin": [8.01356, 9.75, 7.9847]}, + "faces": { + "north": {"uv": [7, 7, 5, 8.5], "texture": "#0"}, + "east": {"uv": [6.75, 11, 8.25, 11.25], "rotation": 270, "texture": "#0"}, + "south": {"uv": [9, 6, 7, 4.5], "rotation": 180, "texture": "#0"}, + "west": {"uv": [10.75, 10.75, 12.25, 11], "rotation": 90, "texture": "#0"}, + "up": {"uv": [10.75, 10, 12.75, 10.25], "rotation": 180, "texture": "#0"}, + "down": {"uv": [10.75, 9.75, 12.75, 10], "texture": "#0"} + } + }, + { + "from": [4.02712, 2.0153, 5], + "to": [5.02712, 8.0153, 11], + "rotation": {"angle": 0, "axis": "z", "origin": [8.01356, 9.75, 7.9847]}, + "faces": { + "north": {"uv": [4.25, 11.25, 4, 12.75], "texture": "#0"}, + "east": {"uv": [3.75, 9.25, 5.25, 10.75], "rotation": 270, "texture": "#0"}, + "south": {"uv": [4, 12.75, 3.75, 11.25], "rotation": 180, "texture": "#0"}, + "west": {"uv": [9, 4.5, 10.5, 6], "rotation": 90, "texture": "#0"}, + "up": {"uv": [11, 11, 11.25, 12.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [10.75, 11, 11, 12.5], "texture": "#0"} + } + }, + { + "from": [11.02712, 2.0153, 5], + "to": [12.02712, 8.0153, 11], + "rotation": {"angle": 0, "axis": "z", "origin": [8.01356, 9.75, 7.9847]}, + "faces": { + "north": {"uv": [5.25, 11.25, 5, 12.75], "texture": "#0"}, + "east": {"uv": [9.25, 6.75, 10.75, 8.25], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5, 12.75, 4.75, 11.25], "rotation": 180, "texture": "#0"}, + "west": {"uv": [5.25, 9.25, 6.75, 10.75], "rotation": 90, "texture": "#0"}, + "up": {"uv": [4.5, 11.25, 4.75, 12.75], "rotation": 180, "texture": "#0"}, + "down": {"uv": [4.25, 11.25, 4.5, 12.75], "texture": "#0"} + } + }, + { + "from": [13.46241, 4.56028, 5], + "to": [14.46241, 10.56028, 11], + "rotation": {"angle": -22.5, "axis": "z", "origin": [8.01356, 9.75, 7.9847]}, + "faces": { + "north": {"uv": [6.25, 11.25, 6, 12.75], "texture": "#0"}, + "east": {"uv": [6.75, 9.5, 8.25, 11], "rotation": 270, "texture": "#0"}, + "south": {"uv": [6, 12.75, 5.75, 11.25], "rotation": 180, "texture": "#0"}, + "west": {"uv": [9.25, 8.25, 10.75, 9.75], "rotation": 90, "texture": "#0"}, + "up": {"uv": [5.5, 11.25, 5.75, 12.75], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.25, 11.25, 5.5, 12.75], "texture": "#0"} + } + }, + { + "from": [1.55773, 4.54344, 5], + "to": [2.55773, 10.54344, 11], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8.01356, 9.75, 7.9847]}, + "faces": { + "north": {"uv": [7.25, 11.25, 7, 12.75], "texture": "#0"}, + "east": {"uv": [0, 10, 1.5, 11.5], "rotation": 270, "texture": "#0"}, + "south": {"uv": [7, 12.75, 6.75, 11.25], "rotation": 180, "texture": "#0"}, + "west": {"uv": [9.25, 9.75, 10.75, 11.25], "rotation": 90, "texture": "#0"}, + "up": {"uv": [6.5, 11.25, 6.75, 12.75], "rotation": 180, "texture": "#0"}, + "down": {"uv": [6.25, 11.25, 6.5, 12.75], "texture": "#0"} + } + }, + { + "from": [4.9555, 4.50993, 1.49665], + "to": [10.9555, 10.50993, 2.49665], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8.01356, 9.75, 7.9847]}, + "faces": { + "north": {"uv": [3, 10, 1.5, 11.5], "texture": "#0"}, + "east": {"uv": [0, 11.5, 1.5, 11.75], "rotation": 270, "texture": "#0"}, + "south": {"uv": [11.5, 1.5, 10, 0], "rotation": 180, "texture": "#0"}, + "west": {"uv": [11.25, 11, 12.75, 11.25], "rotation": 90, "texture": "#0"}, + "up": {"uv": [11.25, 11.25, 12.75, 11.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [9.25, 11.25, 10.75, 11.5], "texture": "#0"} + } + }, + { + "from": [4.9555, 4.58992, 13.43962], + "to": [10.9555, 10.58992, 14.43962], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8.01356, 9.75, 7.9847]}, + "faces": { + "north": {"uv": [12, 4.5, 10.5, 6], "texture": "#0"}, + "east": {"uv": [11.5, 0.75, 13, 1], "rotation": 270, "texture": "#0"}, + "south": {"uv": [11.5, 3, 10, 1.5], "rotation": 180, "texture": "#0"}, + "west": {"uv": [11.5, 0.25, 13, 0.5], "rotation": 90, "texture": "#0"}, + "up": {"uv": [11.5, 0.5, 13, 0.75], "rotation": 180, "texture": "#0"}, + "down": {"uv": [11.5, 0, 13, 0.25], "texture": "#0"} + } + }, + { + "from": [2.02712, 11.0153, 2], + "to": [14.02712, 13.0153, 14], + "rotation": {"angle": 0, "axis": "z", "origin": [8.01356, 9.75, 7.9847]}, + "faces": { + "north": {"uv": [13.75, 6.75, 10.75, 7.25], "texture": "#0"}, + "east": {"uv": [8.75, 10.25, 9.25, 13.25], "rotation": 270, "texture": "#0"}, + "south": {"uv": [6.75, 11.25, 3.75, 10.75], "rotation": 180, "texture": "#0"}, + "west": {"uv": [8.25, 10.25, 8.75, 13.25], "rotation": 90, "texture": "#0"}, + "up": {"uv": [7, 0, 10, 3], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 7, 3, 10], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/models/block/laser_emitter_upwards.json b/src/main/resources/assets/beamtech/models/block/laser_emitter_upwards.json new file mode 100644 index 0000000..35836bb --- /dev/null +++ b/src/main/resources/assets/beamtech/models/block/laser_emitter_upwards.json @@ -0,0 +1,186 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "beamtech:block/laser_emitter", + "particle": "beamtech:block/laser_emitter" + }, + "elements": [ + { + "from": [0, -0.0153, 0], + "to": [16, 2.9847, 16], + "rotation": {"angle": 0, "axis": "x", "origin": [8.01356, 6.25, 7.9847]}, + "faces": { + "north": {"uv": [12, 6, 8.5, 6.75], "rotation": 180, "texture": "#0"}, + "east": {"uv": [7, 6, 7.75, 9.5], "rotation": 270, "texture": "#0"}, + "south": {"uv": [6.5, 9.25, 3, 8.5], "texture": "#0"}, + "west": {"uv": [7.75, 6, 8.5, 9.5], "rotation": 90, "texture": "#0"}, + "up": {"uv": [0, 0, 3.5, 3.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 3.5, 3.5, 7], "texture": "#0"} + } + }, + { + "from": [1, 4.9847, 1], + "to": [15, 7.9847, 15], + "rotation": {"angle": 0, "axis": "x", "origin": [8.01356, 6.25, 7.9847]}, + "faces": { + "north": {"uv": [12.5, 3.75, 9, 4.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [8.5, 6.75, 9.25, 10.25], "rotation": 270, "texture": "#0"}, + "south": {"uv": [12.5, 3.75, 9, 3], "texture": "#0"}, + "west": {"uv": [3, 9.25, 3.75, 12.75], "rotation": 90, "texture": "#0"}, + "up": {"uv": [3.5, 0, 7, 3.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [3.5, 3.5, 7, 7], "texture": "#0"} + } + }, + { + "from": [6, 7.9847, 6], + "to": [10, 8.9847, 10], + "rotation": {"angle": 0, "axis": "x", "origin": [8.01356, 6.25, 7.9847]}, + "faces": { + "north": {"uv": [12.5, 1.25, 11.5, 1.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [6.75, 8.5, 7, 9.5], "rotation": 270, "texture": "#0"}, + "south": {"uv": [12.5, 1.25, 11.5, 1], "texture": "#0"}, + "west": {"uv": [7.25, 11.25, 7.5, 12.25], "rotation": 90, "texture": "#0"}, + "up": {"uv": [10.75, 7.25, 11.75, 8.25], "rotation": 180, "texture": "#0"}, + "down": {"uv": [10.75, 8.25, 11.75, 9.25], "texture": "#0"} + } + }, + { + "from": [7, 8.9847, 7], + "to": [9, 9.9847, 9], + "rotation": {"angle": 0, "axis": "x", "origin": [8.01356, 6.25, 7.9847]}, + "faces": { + "north": {"uv": [12, 1.75, 11.5, 2], "rotation": 180, "texture": "#0"}, + "east": {"uv": [6.5, 8.5, 6.75, 9], "rotation": 270, "texture": "#0"}, + "south": {"uv": [12, 1.75, 11.5, 1.5], "texture": "#0"}, + "west": {"uv": [8.25, 9.5, 8.5, 10], "rotation": 90, "texture": "#0"}, + "up": {"uv": [7.5, 11.25, 8, 11.75], "rotation": 180, "texture": "#0"}, + "down": {"uv": [1.5, 11.5, 2, 12], "texture": "#0"} + } + }, + { + "from": [4, 7.9847, 4], + "to": [12, 13.9847, 5], + "rotation": {"angle": 0, "axis": "x", "origin": [8.01356, 6.25, 7.9847]}, + "faces": { + "north": {"uv": [9, 3, 7, 4.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [10.75, 10.25, 12.25, 10.5], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5, 8.5, 3, 7], "texture": "#0"}, + "west": {"uv": [10.75, 10.5, 12.25, 10.75], "rotation": 90, "texture": "#0"}, + "up": {"uv": [10.75, 9.25, 12.75, 9.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [10.75, 9.5, 12.75, 9.75], "texture": "#0"} + } + }, + { + "from": [4, 7.9847, 11], + "to": [12, 13.9847, 12], + "rotation": {"angle": 0, "axis": "x", "origin": [8.01356, 6.25, 7.9847]}, + "faces": { + "north": {"uv": [7, 7, 5, 8.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [10.75, 10.75, 12.25, 11], "rotation": 270, "texture": "#0"}, + "south": {"uv": [9, 6, 7, 4.5], "texture": "#0"}, + "west": {"uv": [6.75, 11, 8.25, 11.25], "rotation": 90, "texture": "#0"}, + "up": {"uv": [10.75, 9.75, 12.75, 10], "rotation": 180, "texture": "#0"}, + "down": {"uv": [10.75, 10, 12.75, 10.25], "texture": "#0"} + } + }, + { + "from": [11, 7.9847, 5], + "to": [12, 13.9847, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8.01356, 6.25, 7.9847]}, + "faces": { + "north": {"uv": [4.25, 11.25, 4, 12.75], "rotation": 180, "texture": "#0"}, + "east": {"uv": [9, 4.5, 10.5, 6], "rotation": 270, "texture": "#0"}, + "south": {"uv": [4, 12.75, 3.75, 11.25], "texture": "#0"}, + "west": {"uv": [3.75, 9.25, 5.25, 10.75], "rotation": 90, "texture": "#0"}, + "up": {"uv": [10.75, 11, 11, 12.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [11, 11, 11.25, 12.5], "texture": "#0"} + } + }, + { + "from": [4, 7.9847, 5], + "to": [5, 13.9847, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8.01356, 6.25, 7.9847]}, + "faces": { + "north": {"uv": [5.25, 11.25, 5, 12.75], "rotation": 180, "texture": "#0"}, + "east": {"uv": [5.25, 9.25, 6.75, 10.75], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5, 12.75, 4.75, 11.25], "texture": "#0"}, + "west": {"uv": [9.25, 6.75, 10.75, 8.25], "rotation": 90, "texture": "#0"}, + "up": {"uv": [4.25, 11.25, 4.5, 12.75], "rotation": 180, "texture": "#0"}, + "down": {"uv": [4.5, 11.25, 4.75, 12.75], "texture": "#0"} + } + }, + { + "from": [1.56471, 5.43972, 5], + "to": [2.56471, 11.43972, 11], + "rotation": {"angle": -22.5, "axis": "z", "origin": [8.01356, 6.25, 7.9847]}, + "faces": { + "north": {"uv": [6.25, 11.25, 6, 12.75], "rotation": 180, "texture": "#0"}, + "east": {"uv": [9.25, 8.25, 10.75, 9.75], "rotation": 270, "texture": "#0"}, + "south": {"uv": [6, 12.75, 5.75, 11.25], "texture": "#0"}, + "west": {"uv": [6.75, 9.5, 8.25, 11], "rotation": 90, "texture": "#0"}, + "up": {"uv": [5.25, 11.25, 5.5, 12.75], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11.25, 5.75, 12.75], "texture": "#0"} + } + }, + { + "from": [13.46939, 5.45656, 5], + "to": [14.46939, 11.45656, 11], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8.01356, 6.25, 7.9847]}, + "faces": { + "north": {"uv": [7.25, 11.25, 7, 12.75], "rotation": 180, "texture": "#0"}, + "east": {"uv": [9.25, 9.75, 10.75, 11.25], "rotation": 270, "texture": "#0"}, + "south": {"uv": [7, 12.75, 6.75, 11.25], "texture": "#0"}, + "west": {"uv": [0, 10, 1.5, 11.5], "rotation": 90, "texture": "#0"}, + "up": {"uv": [6.25, 11.25, 6.5, 12.75], "rotation": 180, "texture": "#0"}, + "down": {"uv": [6.5, 11.25, 6.75, 12.75], "texture": "#0"} + } + }, + { + "from": [5.07162, 5.49007, 1.49665], + "to": [11.07162, 11.49007, 2.49665], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8.01356, 6.25, 7.9847]}, + "faces": { + "north": {"uv": [3, 10, 1.5, 11.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [11.25, 11, 12.75, 11.25], "rotation": 270, "texture": "#0"}, + "south": {"uv": [11.5, 1.5, 10, 0], "texture": "#0"}, + "west": {"uv": [0, 11.5, 1.5, 11.75], "rotation": 90, "texture": "#0"}, + "up": {"uv": [9.25, 11.25, 10.75, 11.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [11.25, 11.25, 12.75, 11.5], "texture": "#0"} + } + }, + { + "from": [5.07162, 5.41008, 13.43962], + "to": [11.07162, 11.41008, 14.43962], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8.01356, 6.25, 7.9847]}, + "faces": { + "north": {"uv": [12, 4.5, 10.5, 6], "rotation": 180, "texture": "#0"}, + "east": {"uv": [11.5, 0.25, 13, 0.5], "rotation": 270, "texture": "#0"}, + "south": {"uv": [11.5, 3, 10, 1.5], "texture": "#0"}, + "west": {"uv": [11.5, 0.75, 13, 1], "rotation": 90, "texture": "#0"}, + "up": {"uv": [11.5, 0, 13, 0.25], "rotation": 180, "texture": "#0"}, + "down": {"uv": [11.5, 0.5, 13, 0.75], "texture": "#0"} + } + }, + { + "from": [2, 2.9847, 2], + "to": [14, 4.9847, 14], + "rotation": {"angle": 0, "axis": "x", "origin": [8.01356, 6.25, 7.9847]}, + "faces": { + "north": {"uv": [13.75, 6.75, 10.75, 7.25], "rotation": 180, "texture": "#0"}, + "east": {"uv": [8.25, 10.25, 8.75, 13.25], "rotation": 270, "texture": "#0"}, + "south": {"uv": [6.75, 11.25, 3.75, 10.75], "texture": "#0"}, + "west": {"uv": [8.75, 10.25, 9.25, 13.25], "rotation": 90, "texture": "#0"}, + "up": {"uv": [0, 7, 3, 10], "rotation": 180, "texture": "#0"}, + "down": {"uv": [7, 0, 10, 3], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/models/block/mirror.json b/src/main/resources/assets/beamtech/models/block/mirror.json new file mode 100644 index 0000000..1a77e88 --- /dev/null +++ b/src/main/resources/assets/beamtech/models/block/mirror.json @@ -0,0 +1,128 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "beamtech:block/mirror", + "particle": "beamtech:block/mirror" + }, + "elements": [ + { + "from": [1, 0, 1], + "to": [15, 1, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [6, 0, 7]}, + "faces": { + "north": {"uv": [5, 7, 8.5, 7.25], "texture": "#0"}, + "east": {"uv": [7, 5.75, 10.5, 6], "texture": "#0"}, + "south": {"uv": [7, 6, 10.5, 6.25], "texture": "#0"}, + "west": {"uv": [7, 6.25, 10.5, 6.5], "texture": "#0"}, + "up": {"uv": [3.5, 3.5, 0, 0], "texture": "#0"}, + "down": {"uv": [3.5, 3.5, 0, 7], "texture": "#0"} + } + }, + { + "from": [5, 7, 7], + "to": [7, 12, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [7.5, 3.75, 8, 5], "texture": "#0"}, + "east": {"uv": [6, 7.5, 6.5, 8.75], "texture": "#0"}, + "south": {"uv": [6.5, 7.5, 7, 8.75], "texture": "#0"}, + "west": {"uv": [7, 7.5, 7.5, 8.75], "texture": "#0"}, + "up": {"uv": [8, 5.5, 7.5, 5], "texture": "#0"}, + "down": {"uv": [8.5, 5, 8, 5.5], "texture": "#0"} + } + }, + { + "from": [1, 2, 6], + "to": [15, 16, 7], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [0, 7, 3.5, 10.5], "texture": "#0"}, + "east": {"uv": [5.5, 7.25, 5.75, 10.75], "texture": "#0"}, + "south": {"uv": [7, 0, 10.5, 3.5], "texture": "#0"}, + "west": {"uv": [5.75, 7.25, 6, 10.75], "texture": "#0"}, + "up": {"uv": [9.5, 7.5, 6, 7.25], "texture": "#0"}, + "down": {"uv": [11, 3.5, 7.5, 3.75], "texture": "#0"} + } + }, + { + "from": [1, 2, 9], + "to": [15, 16, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [3.5, 0, 7, 3.5], "texture": "#0"}, + "east": {"uv": [5, 7.25, 5.25, 10.75], "texture": "#0"}, + "south": {"uv": [3.5, 3.5, 7, 7], "texture": "#0"}, + "west": {"uv": [5.25, 7.25, 5.5, 10.75], "texture": "#0"}, + "up": {"uv": [10.5, 6.75, 7, 6.5], "texture": "#0"}, + "down": {"uv": [10.5, 6.75, 7, 7], "texture": "#0"} + } + }, + { + "from": [9, 7, 7], + "to": [11, 12, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [7.5, 7.5, 8, 8.75], "texture": "#0"}, + "east": {"uv": [8, 3.75, 8.5, 5], "texture": "#0"}, + "south": {"uv": [8, 7.5, 8.5, 8.75], "texture": "#0"}, + "west": {"uv": [8.5, 3.75, 9, 5], "texture": "#0"}, + "up": {"uv": [9, 8.5, 8.5, 8], "texture": "#0"}, + "down": {"uv": [9, 8.5, 8.5, 9], "texture": "#0"} + } + }, + { + "from": [7, 1, 7], + "to": [9, 9, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [3.5, 7, 4, 9.25], "texture": "#0"}, + "east": {"uv": [7, 3.5, 7.5, 5.75], "texture": "#0"}, + "south": {"uv": [4, 7, 4.5, 9.25], "texture": "#0"}, + "west": {"uv": [4.5, 7, 5, 9.25], "texture": "#0"}, + "up": {"uv": [9, 5.5, 8.5, 5], "texture": "#0"}, + "down": {"uv": [9, 7.5, 8.5, 8], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + 0, + { + "name": "group", + "origin": [7, 0, 7], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/models/block/mirror_112.json b/src/main/resources/assets/beamtech/models/block/mirror_112.json new file mode 100644 index 0000000..a5c340a --- /dev/null +++ b/src/main/resources/assets/beamtech/models/block/mirror_112.json @@ -0,0 +1,97 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "beamtech:block/mirror", + "particle": "beamtech:block/mirror" + }, + "elements": [ + { + "from": [1, 0, 1], + "to": [15, 1, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [6, 0, 7]}, + "faces": { + "north": {"uv": [5, 7, 8.5, 7.25], "texture": "#0"}, + "east": {"uv": [7, 5.75, 10.5, 6], "texture": "#0"}, + "south": {"uv": [7, 6, 10.5, 6.25], "texture": "#0"}, + "west": {"uv": [7, 6.25, 10.5, 6.5], "texture": "#0"}, + "up": {"uv": [3.5, 3.5, 0, 0], "texture": "#0"}, + "down": {"uv": [3.5, 3.5, 0, 7], "texture": "#0"} + } + }, + { + "from": [7, 7, 9], + "to": [9, 12, 11], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [6, 7.5, 6.5, 8.75], "texture": "#0"}, + "east": {"uv": [6.5, 7.5, 7, 8.75], "texture": "#0"}, + "south": {"uv": [7, 7.5, 7.5, 8.75], "texture": "#0"}, + "west": {"uv": [7.5, 3.75, 8, 5], "texture": "#0"}, + "up": {"uv": [8, 5.5, 7.5, 5], "rotation": 270, "texture": "#0"}, + "down": {"uv": [8.5, 5, 8, 5.5], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [6, 2, 1], + "to": [7, 16, 15], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [5.5, 7.25, 5.75, 10.75], "texture": "#0"}, + "east": {"uv": [7, 0, 10.5, 3.5], "texture": "#0"}, + "south": {"uv": [5.75, 7.25, 6, 10.75], "texture": "#0"}, + "west": {"uv": [0, 7, 3.5, 10.5], "texture": "#0"}, + "up": {"uv": [9.5, 7.5, 6, 7.25], "rotation": 270, "texture": "#0"}, + "down": {"uv": [11, 3.5, 7.5, 3.75], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [9, 2, 1], + "to": [10, 16, 15], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [5, 7.25, 5.25, 10.75], "texture": "#0"}, + "east": {"uv": [3.5, 3.5, 7, 7], "texture": "#0"}, + "south": {"uv": [5.25, 7.25, 5.5, 10.75], "texture": "#0"}, + "west": {"uv": [3.5, 0, 7, 3.5], "texture": "#0"}, + "up": {"uv": [10.5, 6.75, 7, 6.5], "rotation": 270, "texture": "#0"}, + "down": {"uv": [10.5, 6.75, 7, 7], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [7, 7, 5], + "to": [9, 12, 7], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [8, 3.75, 8.5, 5], "texture": "#0"}, + "east": {"uv": [8, 7.5, 8.5, 8.75], "texture": "#0"}, + "south": {"uv": [8.5, 3.75, 9, 5], "texture": "#0"}, + "west": {"uv": [7.5, 7.5, 8, 8.75], "texture": "#0"}, + "up": {"uv": [9, 8.5, 8.5, 8], "rotation": 270, "texture": "#0"}, + "down": {"uv": [9, 8.5, 8.5, 9], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [7, 1, 7], + "to": [9, 9, 9], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [7, 3.5, 7.5, 5.75], "texture": "#0"}, + "east": {"uv": [4, 7, 4.5, 9.25], "texture": "#0"}, + "south": {"uv": [4.5, 7, 5, 9.25], "texture": "#0"}, + "west": {"uv": [3.5, 7, 4, 9.25], "texture": "#0"}, + "up": {"uv": [9, 5.5, 8.5, 5], "rotation": 270, "texture": "#0"}, + "down": {"uv": [9, 7.5, 8.5, 8], "rotation": 90, "texture": "#0"} + } + } + ], + "groups": [ + 0, + { + "name": "group", + "origin": [7, 0, 7], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/models/block/mirror_135.json b/src/main/resources/assets/beamtech/models/block/mirror_135.json new file mode 100644 index 0000000..1d48eaa --- /dev/null +++ b/src/main/resources/assets/beamtech/models/block/mirror_135.json @@ -0,0 +1,97 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "beamtech:block/mirror", + "particle": "beamtech:block/mirror" + }, + "elements": [ + { + "from": [1, 0, 1], + "to": [15, 1, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [6, 0, 7]}, + "faces": { + "north": {"uv": [5, 7, 8.5, 7.25], "texture": "#0"}, + "east": {"uv": [7, 5.75, 10.5, 6], "texture": "#0"}, + "south": {"uv": [7, 6, 10.5, 6.25], "texture": "#0"}, + "west": {"uv": [7, 6.25, 10.5, 6.5], "texture": "#0"}, + "up": {"uv": [3.5, 3.5, 0, 0], "texture": "#0"}, + "down": {"uv": [3.5, 3.5, 0, 7], "texture": "#0"} + } + }, + { + "from": [7, 7, 9], + "to": [9, 12, 11], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [6, 7.5, 6.5, 8.75], "texture": "#0"}, + "east": {"uv": [6.5, 7.5, 7, 8.75], "texture": "#0"}, + "south": {"uv": [7, 7.5, 7.5, 8.75], "texture": "#0"}, + "west": {"uv": [7.5, 3.75, 8, 5], "texture": "#0"}, + "up": {"uv": [8, 5.5, 7.5, 5], "rotation": 270, "texture": "#0"}, + "down": {"uv": [8.5, 5, 8, 5.5], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [6, 2, 1], + "to": [7, 16, 15], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [5.5, 7.25, 5.75, 10.75], "texture": "#0"}, + "east": {"uv": [7, 0, 10.5, 3.5], "texture": "#0"}, + "south": {"uv": [5.75, 7.25, 6, 10.75], "texture": "#0"}, + "west": {"uv": [0, 7, 3.5, 10.5], "texture": "#0"}, + "up": {"uv": [9.5, 7.5, 6, 7.25], "rotation": 270, "texture": "#0"}, + "down": {"uv": [11, 3.5, 7.5, 3.75], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [9, 2, 1], + "to": [10, 16, 15], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [5, 7.25, 5.25, 10.75], "texture": "#0"}, + "east": {"uv": [3.5, 3.5, 7, 7], "texture": "#0"}, + "south": {"uv": [5.25, 7.25, 5.5, 10.75], "texture": "#0"}, + "west": {"uv": [3.5, 0, 7, 3.5], "texture": "#0"}, + "up": {"uv": [10.5, 6.75, 7, 6.5], "rotation": 270, "texture": "#0"}, + "down": {"uv": [10.5, 6.75, 7, 7], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [7, 7, 5], + "to": [9, 12, 7], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [8, 3.75, 8.5, 5], "texture": "#0"}, + "east": {"uv": [8, 7.5, 8.5, 8.75], "texture": "#0"}, + "south": {"uv": [8.5, 3.75, 9, 5], "texture": "#0"}, + "west": {"uv": [7.5, 7.5, 8, 8.75], "texture": "#0"}, + "up": {"uv": [9, 8.5, 8.5, 8], "rotation": 270, "texture": "#0"}, + "down": {"uv": [9, 8.5, 8.5, 9], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [7, 1, 7], + "to": [9, 9, 9], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [7, 3.5, 7.5, 5.75], "texture": "#0"}, + "east": {"uv": [4, 7, 4.5, 9.25], "texture": "#0"}, + "south": {"uv": [4.5, 7, 5, 9.25], "texture": "#0"}, + "west": {"uv": [3.5, 7, 4, 9.25], "texture": "#0"}, + "up": {"uv": [9, 5.5, 8.5, 5], "rotation": 270, "texture": "#0"}, + "down": {"uv": [9, 7.5, 8.5, 8], "rotation": 90, "texture": "#0"} + } + } + ], + "groups": [ + 0, + { + "name": "group", + "origin": [7, 0, 7], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/models/block/mirror_157.json b/src/main/resources/assets/beamtech/models/block/mirror_157.json new file mode 100644 index 0000000..760d3ad --- /dev/null +++ b/src/main/resources/assets/beamtech/models/block/mirror_157.json @@ -0,0 +1,97 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "beamtech:block/mirror", + "particle": "beamtech:block/mirror" + }, + "elements": [ + { + "from": [1, 0, 1], + "to": [15, 1, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [6, 0, 7]}, + "faces": { + "north": {"uv": [5, 7, 8.5, 7.25], "texture": "#0"}, + "east": {"uv": [7, 5.75, 10.5, 6], "texture": "#0"}, + "south": {"uv": [7, 6, 10.5, 6.25], "texture": "#0"}, + "west": {"uv": [7, 6.25, 10.5, 6.5], "texture": "#0"}, + "up": {"uv": [3.5, 3.5, 0, 0], "texture": "#0"}, + "down": {"uv": [3.5, 3.5, 0, 7], "texture": "#0"} + } + }, + { + "from": [9, 7, 7], + "to": [11, 12, 9], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [6.5, 7.5, 7, 8.75], "texture": "#0"}, + "east": {"uv": [7, 7.5, 7.5, 8.75], "texture": "#0"}, + "south": {"uv": [7.5, 3.75, 8, 5], "texture": "#0"}, + "west": {"uv": [6, 7.5, 6.5, 8.75], "texture": "#0"}, + "up": {"uv": [8, 5.5, 7.5, 5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [8.5, 5, 8, 5.5], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [1, 2, 9], + "to": [15, 16, 10], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [7, 0, 10.5, 3.5], "texture": "#0"}, + "east": {"uv": [5.75, 7.25, 6, 10.75], "texture": "#0"}, + "south": {"uv": [0, 7, 3.5, 10.5], "texture": "#0"}, + "west": {"uv": [5.5, 7.25, 5.75, 10.75], "texture": "#0"}, + "up": {"uv": [9.5, 7.5, 6, 7.25], "rotation": 180, "texture": "#0"}, + "down": {"uv": [11, 3.5, 7.5, 3.75], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [1, 2, 6], + "to": [15, 16, 7], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [3.5, 3.5, 7, 7], "texture": "#0"}, + "east": {"uv": [5.25, 7.25, 5.5, 10.75], "texture": "#0"}, + "south": {"uv": [3.5, 0, 7, 3.5], "texture": "#0"}, + "west": {"uv": [5, 7.25, 5.25, 10.75], "texture": "#0"}, + "up": {"uv": [10.5, 6.75, 7, 6.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [10.5, 6.75, 7, 7], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [5, 7, 7], + "to": [7, 12, 9], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [8, 7.5, 8.5, 8.75], "texture": "#0"}, + "east": {"uv": [8.5, 3.75, 9, 5], "texture": "#0"}, + "south": {"uv": [7.5, 7.5, 8, 8.75], "texture": "#0"}, + "west": {"uv": [8, 3.75, 8.5, 5], "texture": "#0"}, + "up": {"uv": [9, 8.5, 8.5, 8], "rotation": 180, "texture": "#0"}, + "down": {"uv": [9, 8.5, 8.5, 9], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [7, 1, 7], + "to": [9, 9, 9], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [4, 7, 4.5, 9.25], "texture": "#0"}, + "east": {"uv": [4.5, 7, 5, 9.25], "texture": "#0"}, + "south": {"uv": [3.5, 7, 4, 9.25], "texture": "#0"}, + "west": {"uv": [7, 3.5, 7.5, 5.75], "texture": "#0"}, + "up": {"uv": [9, 5.5, 8.5, 5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [9, 7.5, 8.5, 8], "rotation": 180, "texture": "#0"} + } + } + ], + "groups": [ + 0, + { + "name": "group", + "origin": [7, 0, 7], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/models/block/mirror_22.json b/src/main/resources/assets/beamtech/models/block/mirror_22.json new file mode 100644 index 0000000..48941c3 --- /dev/null +++ b/src/main/resources/assets/beamtech/models/block/mirror_22.json @@ -0,0 +1,97 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "beamtech:block/mirror", + "particle": "beamtech:block/mirror" + }, + "elements": [ + { + "from": [1, 0, 1], + "to": [15, 1, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [6, 0, 7]}, + "faces": { + "north": {"uv": [5, 7, 8.5, 7.25], "texture": "#0"}, + "east": {"uv": [7, 5.75, 10.5, 6], "texture": "#0"}, + "south": {"uv": [7, 6, 10.5, 6.25], "texture": "#0"}, + "west": {"uv": [7, 6.25, 10.5, 6.5], "texture": "#0"}, + "up": {"uv": [3.5, 3.5, 0, 0], "texture": "#0"}, + "down": {"uv": [3.5, 3.5, 0, 7], "texture": "#0"} + } + }, + { + "from": [5, 7, 7], + "to": [7, 12, 9], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [7.5, 3.75, 8, 5], "texture": "#0"}, + "east": {"uv": [6, 7.5, 6.5, 8.75], "texture": "#0"}, + "south": {"uv": [6.5, 7.5, 7, 8.75], "texture": "#0"}, + "west": {"uv": [7, 7.5, 7.5, 8.75], "texture": "#0"}, + "up": {"uv": [8, 5.5, 7.5, 5], "texture": "#0"}, + "down": {"uv": [8.5, 5, 8, 5.5], "texture": "#0"} + } + }, + { + "from": [1, 2, 6], + "to": [15, 16, 7], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [0, 7, 3.5, 10.5], "texture": "#0"}, + "east": {"uv": [5.5, 7.25, 5.75, 10.75], "texture": "#0"}, + "south": {"uv": [7, 0, 10.5, 3.5], "texture": "#0"}, + "west": {"uv": [5.75, 7.25, 6, 10.75], "texture": "#0"}, + "up": {"uv": [9.5, 7.5, 6, 7.25], "texture": "#0"}, + "down": {"uv": [11, 3.5, 7.5, 3.75], "texture": "#0"} + } + }, + { + "from": [1, 2, 9], + "to": [15, 16, 10], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [3.5, 0, 7, 3.5], "texture": "#0"}, + "east": {"uv": [5, 7.25, 5.25, 10.75], "texture": "#0"}, + "south": {"uv": [3.5, 3.5, 7, 7], "texture": "#0"}, + "west": {"uv": [5.25, 7.25, 5.5, 10.75], "texture": "#0"}, + "up": {"uv": [10.5, 6.75, 7, 6.5], "texture": "#0"}, + "down": {"uv": [10.5, 6.75, 7, 7], "texture": "#0"} + } + }, + { + "from": [9, 7, 7], + "to": [11, 12, 9], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [7.5, 7.5, 8, 8.75], "texture": "#0"}, + "east": {"uv": [8, 3.75, 8.5, 5], "texture": "#0"}, + "south": {"uv": [8, 7.5, 8.5, 8.75], "texture": "#0"}, + "west": {"uv": [8.5, 3.75, 9, 5], "texture": "#0"}, + "up": {"uv": [9, 8.5, 8.5, 8], "texture": "#0"}, + "down": {"uv": [9, 8.5, 8.5, 9], "texture": "#0"} + } + }, + { + "from": [7, 1, 7], + "to": [9, 9, 9], + "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [3.5, 7, 4, 9.25], "texture": "#0"}, + "east": {"uv": [7, 3.5, 7.5, 5.75], "texture": "#0"}, + "south": {"uv": [4, 7, 4.5, 9.25], "texture": "#0"}, + "west": {"uv": [4.5, 7, 5, 9.25], "texture": "#0"}, + "up": {"uv": [9, 5.5, 8.5, 5], "texture": "#0"}, + "down": {"uv": [9, 7.5, 8.5, 8], "texture": "#0"} + } + } + ], + "groups": [ + 0, + { + "name": "group", + "origin": [7, 0, 7], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/models/block/mirror_45.json b/src/main/resources/assets/beamtech/models/block/mirror_45.json new file mode 100644 index 0000000..434afa5 --- /dev/null +++ b/src/main/resources/assets/beamtech/models/block/mirror_45.json @@ -0,0 +1,97 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "beamtech:block/mirror", + "particle": "beamtech:block/mirror" + }, + "elements": [ + { + "from": [1, 0, 1], + "to": [15, 1, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [6, 0, 7]}, + "faces": { + "north": {"uv": [5, 7, 8.5, 7.25], "texture": "#0"}, + "east": {"uv": [7, 5.75, 10.5, 6], "texture": "#0"}, + "south": {"uv": [7, 6, 10.5, 6.25], "texture": "#0"}, + "west": {"uv": [7, 6.25, 10.5, 6.5], "texture": "#0"}, + "up": {"uv": [3.5, 3.5, 0, 0], "texture": "#0"}, + "down": {"uv": [3.5, 3.5, 0, 7], "texture": "#0"} + } + }, + { + "from": [5, 7, 7], + "to": [7, 12, 9], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [7.5, 3.75, 8, 5], "texture": "#0"}, + "east": {"uv": [6, 7.5, 6.5, 8.75], "texture": "#0"}, + "south": {"uv": [6.5, 7.5, 7, 8.75], "texture": "#0"}, + "west": {"uv": [7, 7.5, 7.5, 8.75], "texture": "#0"}, + "up": {"uv": [8, 5.5, 7.5, 5], "texture": "#0"}, + "down": {"uv": [8.5, 5, 8, 5.5], "texture": "#0"} + } + }, + { + "from": [1, 2, 6], + "to": [15, 16, 7], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [0, 7, 3.5, 10.5], "texture": "#0"}, + "east": {"uv": [5.5, 7.25, 5.75, 10.75], "texture": "#0"}, + "south": {"uv": [7, 0, 10.5, 3.5], "texture": "#0"}, + "west": {"uv": [5.75, 7.25, 6, 10.75], "texture": "#0"}, + "up": {"uv": [9.5, 7.5, 6, 7.25], "texture": "#0"}, + "down": {"uv": [11, 3.5, 7.5, 3.75], "texture": "#0"} + } + }, + { + "from": [1, 2, 9], + "to": [15, 16, 10], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [3.5, 0, 7, 3.5], "texture": "#0"}, + "east": {"uv": [5, 7.25, 5.25, 10.75], "texture": "#0"}, + "south": {"uv": [3.5, 3.5, 7, 7], "texture": "#0"}, + "west": {"uv": [5.25, 7.25, 5.5, 10.75], "texture": "#0"}, + "up": {"uv": [10.5, 6.75, 7, 6.5], "texture": "#0"}, + "down": {"uv": [10.5, 6.75, 7, 7], "texture": "#0"} + } + }, + { + "from": [9, 7, 7], + "to": [11, 12, 9], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [7.5, 7.5, 8, 8.75], "texture": "#0"}, + "east": {"uv": [8, 3.75, 8.5, 5], "texture": "#0"}, + "south": {"uv": [8, 7.5, 8.5, 8.75], "texture": "#0"}, + "west": {"uv": [8.5, 3.75, 9, 5], "texture": "#0"}, + "up": {"uv": [9, 8.5, 8.5, 8], "texture": "#0"}, + "down": {"uv": [9, 8.5, 8.5, 9], "texture": "#0"} + } + }, + { + "from": [7, 1, 7], + "to": [9, 9, 9], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [3.5, 7, 4, 9.25], "texture": "#0"}, + "east": {"uv": [7, 3.5, 7.5, 5.75], "texture": "#0"}, + "south": {"uv": [4, 7, 4.5, 9.25], "texture": "#0"}, + "west": {"uv": [4.5, 7, 5, 9.25], "texture": "#0"}, + "up": {"uv": [9, 5.5, 8.5, 5], "texture": "#0"}, + "down": {"uv": [9, 7.5, 8.5, 8], "texture": "#0"} + } + } + ], + "groups": [ + 0, + { + "name": "group", + "origin": [7, 0, 7], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/models/block/mirror_67.json b/src/main/resources/assets/beamtech/models/block/mirror_67.json new file mode 100644 index 0000000..08e742a --- /dev/null +++ b/src/main/resources/assets/beamtech/models/block/mirror_67.json @@ -0,0 +1,97 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "beamtech:block/mirror", + "particle": "beamtech:block/mirror" + }, + "elements": [ + { + "from": [1, 0, 1], + "to": [15, 1, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [6, 0, 7]}, + "faces": { + "north": {"uv": [5, 7, 8.5, 7.25], "texture": "#0"}, + "east": {"uv": [7, 5.75, 10.5, 6], "texture": "#0"}, + "south": {"uv": [7, 6, 10.5, 6.25], "texture": "#0"}, + "west": {"uv": [7, 6.25, 10.5, 6.5], "texture": "#0"}, + "up": {"uv": [3.5, 3.5, 0, 0], "texture": "#0"}, + "down": {"uv": [3.5, 3.5, 0, 7], "texture": "#0"} + } + }, + { + "from": [7, 7, 9], + "to": [9, 12, 11], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [6, 7.5, 6.5, 8.75], "texture": "#0"}, + "east": {"uv": [6.5, 7.5, 7, 8.75], "texture": "#0"}, + "south": {"uv": [7, 7.5, 7.5, 8.75], "texture": "#0"}, + "west": {"uv": [7.5, 3.75, 8, 5], "texture": "#0"}, + "up": {"uv": [8, 5.5, 7.5, 5], "rotation": 270, "texture": "#0"}, + "down": {"uv": [8.5, 5, 8, 5.5], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [6, 2, 1], + "to": [7, 16, 15], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [5.5, 7.25, 5.75, 10.75], "texture": "#0"}, + "east": {"uv": [7, 0, 10.5, 3.5], "texture": "#0"}, + "south": {"uv": [5.75, 7.25, 6, 10.75], "texture": "#0"}, + "west": {"uv": [0, 7, 3.5, 10.5], "texture": "#0"}, + "up": {"uv": [9.5, 7.5, 6, 7.25], "rotation": 270, "texture": "#0"}, + "down": {"uv": [11, 3.5, 7.5, 3.75], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [9, 2, 1], + "to": [10, 16, 15], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [5, 7.25, 5.25, 10.75], "texture": "#0"}, + "east": {"uv": [3.5, 3.5, 7, 7], "texture": "#0"}, + "south": {"uv": [5.25, 7.25, 5.5, 10.75], "texture": "#0"}, + "west": {"uv": [3.5, 0, 7, 3.5], "texture": "#0"}, + "up": {"uv": [10.5, 6.75, 7, 6.5], "rotation": 270, "texture": "#0"}, + "down": {"uv": [10.5, 6.75, 7, 7], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [7, 7, 5], + "to": [9, 12, 7], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [8, 3.75, 8.5, 5], "texture": "#0"}, + "east": {"uv": [8, 7.5, 8.5, 8.75], "texture": "#0"}, + "south": {"uv": [8.5, 3.75, 9, 5], "texture": "#0"}, + "west": {"uv": [7.5, 7.5, 8, 8.75], "texture": "#0"}, + "up": {"uv": [9, 8.5, 8.5, 8], "rotation": 270, "texture": "#0"}, + "down": {"uv": [9, 8.5, 8.5, 9], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [7, 1, 7], + "to": [9, 9, 9], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [7, 3.5, 7.5, 5.75], "texture": "#0"}, + "east": {"uv": [4, 7, 4.5, 9.25], "texture": "#0"}, + "south": {"uv": [4.5, 7, 5, 9.25], "texture": "#0"}, + "west": {"uv": [3.5, 7, 4, 9.25], "texture": "#0"}, + "up": {"uv": [9, 5.5, 8.5, 5], "rotation": 270, "texture": "#0"}, + "down": {"uv": [9, 7.5, 8.5, 8], "rotation": 90, "texture": "#0"} + } + } + ], + "groups": [ + 0, + { + "name": "group", + "origin": [7, 0, 7], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/models/block/mirror_90.json b/src/main/resources/assets/beamtech/models/block/mirror_90.json new file mode 100644 index 0000000..4d5b56b --- /dev/null +++ b/src/main/resources/assets/beamtech/models/block/mirror_90.json @@ -0,0 +1,97 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "beamtech:block/mirror", + "particle": "beamtech:block/mirror" + }, + "elements": [ + { + "from": [1, 0, 1], + "to": [15, 1, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [6, 0, 7]}, + "faces": { + "north": {"uv": [5, 7, 8.5, 7.25], "texture": "#0"}, + "east": {"uv": [7, 5.75, 10.5, 6], "texture": "#0"}, + "south": {"uv": [7, 6, 10.5, 6.25], "texture": "#0"}, + "west": {"uv": [7, 6.25, 10.5, 6.5], "texture": "#0"}, + "up": {"uv": [3.5, 3.5, 0, 0], "texture": "#0"}, + "down": {"uv": [3.5, 3.5, 0, 7], "texture": "#0"} + } + }, + { + "from": [7, 7, 9], + "to": [9, 12, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [6, 7.5, 6.5, 8.75], "texture": "#0"}, + "east": {"uv": [6.5, 7.5, 7, 8.75], "texture": "#0"}, + "south": {"uv": [7, 7.5, 7.5, 8.75], "texture": "#0"}, + "west": {"uv": [7.5, 3.75, 8, 5], "texture": "#0"}, + "up": {"uv": [8, 5.5, 7.5, 5], "rotation": 270, "texture": "#0"}, + "down": {"uv": [8.5, 5, 8, 5.5], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [6, 2, 1], + "to": [7, 16, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [5.5, 7.25, 5.75, 10.75], "texture": "#0"}, + "east": {"uv": [7, 0, 10.5, 3.5], "texture": "#0"}, + "south": {"uv": [5.75, 7.25, 6, 10.75], "texture": "#0"}, + "west": {"uv": [0, 7, 3.5, 10.5], "texture": "#0"}, + "up": {"uv": [9.5, 7.5, 6, 7.25], "rotation": 270, "texture": "#0"}, + "down": {"uv": [11, 3.5, 7.5, 3.75], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [9, 2, 1], + "to": [10, 16, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [5, 7.25, 5.25, 10.75], "texture": "#0"}, + "east": {"uv": [3.5, 3.5, 7, 7], "texture": "#0"}, + "south": {"uv": [5.25, 7.25, 5.5, 10.75], "texture": "#0"}, + "west": {"uv": [3.5, 0, 7, 3.5], "texture": "#0"}, + "up": {"uv": [10.5, 6.75, 7, 6.5], "rotation": 270, "texture": "#0"}, + "down": {"uv": [10.5, 6.75, 7, 7], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [7, 7, 5], + "to": [9, 12, 7], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [8, 3.75, 8.5, 5], "texture": "#0"}, + "east": {"uv": [8, 7.5, 8.5, 8.75], "texture": "#0"}, + "south": {"uv": [8.5, 3.75, 9, 5], "texture": "#0"}, + "west": {"uv": [7.5, 7.5, 8, 8.75], "texture": "#0"}, + "up": {"uv": [9, 8.5, 8.5, 8], "rotation": 270, "texture": "#0"}, + "down": {"uv": [9, 8.5, 8.5, 9], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [7, 1, 7], + "to": [9, 9, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, + "faces": { + "north": {"uv": [7, 3.5, 7.5, 5.75], "texture": "#0"}, + "east": {"uv": [4, 7, 4.5, 9.25], "texture": "#0"}, + "south": {"uv": [4.5, 7, 5, 9.25], "texture": "#0"}, + "west": {"uv": [3.5, 7, 4, 9.25], "texture": "#0"}, + "up": {"uv": [9, 5.5, 8.5, 5], "rotation": 270, "texture": "#0"}, + "down": {"uv": [9, 7.5, 8.5, 8], "rotation": 90, "texture": "#0"} + } + } + ], + "groups": [ + 0, + { + "name": "group", + "origin": [7, 0, 7], + "color": 0, + "children": [1, 2, 3, 4, 5] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/models/item/alloy_iron.json b/src/main/resources/assets/beamtech/models/item/alloy_iron.json new file mode 100644 index 0000000..a841234 --- /dev/null +++ b/src/main/resources/assets/beamtech/models/item/alloy_iron.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "beamtech:item/alloy_iron" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/models/item/focal_lens.json b/src/main/resources/assets/beamtech/models/item/focal_lens.json new file mode 100644 index 0000000..4cb71c9 --- /dev/null +++ b/src/main/resources/assets/beamtech/models/item/focal_lens.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "beamtech:item/focal_lens" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/models/item/laser_combiner.json b/src/main/resources/assets/beamtech/models/item/laser_combiner.json new file mode 100644 index 0000000..ccd42c5 --- /dev/null +++ b/src/main/resources/assets/beamtech/models/item/laser_combiner.json @@ -0,0 +1,3 @@ +{ + "parent": "beamtech:block/laser_combiner" +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/models/item/laser_emitter.json b/src/main/resources/assets/beamtech/models/item/laser_emitter.json new file mode 100644 index 0000000..b561178 --- /dev/null +++ b/src/main/resources/assets/beamtech/models/item/laser_emitter.json @@ -0,0 +1,3 @@ +{ + "parent": "beamtech:block/laser_emitter" +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/models/item/lens.json b/src/main/resources/assets/beamtech/models/item/lens.json new file mode 100644 index 0000000..52f0d2d --- /dev/null +++ b/src/main/resources/assets/beamtech/models/item/lens.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "beamtech:item/lens" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/models/item/mirror.json b/src/main/resources/assets/beamtech/models/item/mirror.json new file mode 100644 index 0000000..6a901d2 --- /dev/null +++ b/src/main/resources/assets/beamtech/models/item/mirror.json @@ -0,0 +1,3 @@ +{ + "parent": "beamtech:block/mirror" +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/models/item/range_lens.json b/src/main/resources/assets/beamtech/models/item/range_lens.json new file mode 100644 index 0000000..8d12764 --- /dev/null +++ b/src/main/resources/assets/beamtech/models/item/range_lens.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "beamtech:item/range_lens" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/pinwheel/shaders/program/beamtech.fsh b/src/main/resources/assets/beamtech/pinwheel/shaders/program/beamtech.fsh new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/assets/beamtech/pinwheel/shaders/program/beamtech.json b/src/main/resources/assets/beamtech/pinwheel/shaders/program/beamtech.json new file mode 100644 index 0000000..a4a7790 --- /dev/null +++ b/src/main/resources/assets/beamtech/pinwheel/shaders/program/beamtech.json @@ -0,0 +1,3 @@ +{ + "fragment": "beamtech:beamtech" +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/shaders/post/mirror_post.json b/src/main/resources/assets/beamtech/shaders/post/mirror_post.json new file mode 100644 index 0000000..cac5c20 --- /dev/null +++ b/src/main/resources/assets/beamtech/shaders/post/mirror_post.json @@ -0,0 +1,31 @@ +{ + "targets": [ + "final" + ], + "passes": [ + { + "name": "beamtech:mirror", + "intarget": "minecraft:main", + "outtarget": "final", + "uniforms": [ + { + "name": "modelViewProjectionMatrix", + "values": [[1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0]] + }, + { + "name": "modelViewMatrix", + "values": [[1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0]] + }, + { + "name": "normalMatrix", + "values": [[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]] + } + ] + }, + { + "name": "blit", + "intarget": "final", + "outtarget": "minecraft:main" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/shaders/program/mirror.fsh b/src/main/resources/assets/beamtech/shaders/program/mirror.fsh new file mode 100644 index 0000000..cbdeeca --- /dev/null +++ b/src/main/resources/assets/beamtech/shaders/program/mirror.fsh @@ -0,0 +1,14 @@ +#version 150 + +in vec3 vNormal; +in vec2 vTexCoord; + +uniform sampler2D DiffuseSampler; + +out vec4 fragColor; + +void main() { + vec4 baseColor = texture(DiffuseSampler, vTexCoord); + vec4 pinkColor = vec4(1.0, 0.0, 1.0, 1.0); // RGBA for pink + fragColor = pinkColor; +} diff --git a/src/main/resources/assets/beamtech/shaders/program/mirror.json b/src/main/resources/assets/beamtech/shaders/program/mirror.json new file mode 100644 index 0000000..4846c5f --- /dev/null +++ b/src/main/resources/assets/beamtech/shaders/program/mirror.json @@ -0,0 +1,18 @@ +{ + "blend": { + "func": "add", + "srcrgb": "srcalpha", + "dstrgb": "1-srcalpha" + }, + "vertex": "beamtech:mirror", + "fragment": "beamtech:mirror", + "attributes": ["Position", "Normal", "TexCoord"], + "samplers": [ + {"name": "DiffuseSampler"} + ], + "uniforms": [ + {"name": "modelViewProjectionMatrix", "type": "matrix4x4", "count": 1, "values": [[1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0]]}, + {"name": "modelViewMatrix", "type": "matrix4x4", "count": 1, "values": [[1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0]]}, + {"name": "normalMatrix", "type": "matrix3x3", "count": 1, "values": [[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]]} + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/shaders/program/mirror.vsh b/src/main/resources/assets/beamtech/shaders/program/mirror.vsh new file mode 100644 index 0000000..4bb32f2 --- /dev/null +++ b/src/main/resources/assets/beamtech/shaders/program/mirror.vsh @@ -0,0 +1,18 @@ +#version 150 + +in vec3 inPosition; +in vec3 inNormal; +in vec2 inTexCoord; + +out vec3 vNormal; +out vec2 vTexCoord; + +uniform mat4 modelViewProjectionMatrix; +uniform mat4 modelViewMatrix; +uniform mat3 normalMatrix; + +void main() { + gl_Position = modelViewProjectionMatrix * vec4(inPosition, 1.0); + vNormal = normalize(normalMatrix * inNormal); + vTexCoord = inTexCoord; +} diff --git a/src/main/resources/assets/beamtech/sounds.json b/src/main/resources/assets/beamtech/sounds.json new file mode 100644 index 0000000..8cb83cc --- /dev/null +++ b/src/main/resources/assets/beamtech/sounds.json @@ -0,0 +1,8 @@ +{ + "laser_gun_firing": { + "subtitle": "sounds.beamtech.laser_gun_firing", + "sounds": [ + "beamtech:laser_gun_firing" + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/beamtech/sounds/laser_gun_firing.ogg b/src/main/resources/assets/beamtech/sounds/laser_gun_firing.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a0c6febbdaf6c0f16680192195c169e41568b24a GIT binary patch literal 316579 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≫2&X6ttt|M~Ch z*Rl#KF3gFuZr=c*E4b`#xO0xDz$wuCYoP!0!U153cl^t>ni!-(<%T&Dz<)?8yQg_U zRTxRlF`aiuEYeFo$uGx{r_Wig|YWG=O86izDQhvBaK3;`Q@9e&;eXoEES zlYAR7W8+dXW(bVXQ)LXI4(<`N;{Y+PlY(w>7(ET*XFvgohS=vGQ*xoIbyoKwyc$%* zFMi5vStF$^vHt(WuE6s$MVr*(l$IL1N>67?lFAI`gKaiI$bgbr*g8=r+R6oDe!k@O zBs^r76dfZ03hqQ`)`kFc7y22r?;=TPueITa4wmW~$T>OmWTd-j)q_6XsY<}mtgNHi zS|ZHU<9)A>DjTW`g-Y3Z^l16ixeb2G;lc2`k1 z)xl8V+YB%JFjijHAqEMc=Khp}!mm%wM58yBnO!DoRsmzjTX|N2tSoC;Z4%9Ox2n$lJb#Xs2Mr zsGY{+D1&r^RzJBhXh4@XY27|(kbsyTZ_22gvzIVVuD7C^M(TaLJkGrTA7E!=C2K5w=+t5 z34g@8*iB8LzDsla(>?WuZ5w*FUpB*ly80lj%EoaYkLui6LG@q<s|-^mMC1>4Sk=mqG1N|2S7nbJ846pWt3F_C4|^ zRD7;%XE2X-(->q||I=yzv1xd}j7EqdMpzvAOU?hgj-K$Nol*4@2H;m)eyqb+uxV_7b{zn0Cfyv?t}<*6zqSPZH9 z${(AjdpIS(N&Yhd5;6=+82&5tgLaUEd2CX;^Bsz$@^S)cZ9%Dd;hr1>zuf${)4*^oy4_#kDWfm^8T|Sd!FlWKv8RB~3>`rX@9Q%#5Q^}C&!lH)YCqZ!t9=id3c1_v@xTUsQ=t`ez>W%`b>LM;(EMOr{Z%l z2m;bC*hy*V9QRjx@l}SZm$Q*|bS)f&l#Xn2%2(dLZeBc<<&~ia5~b1X8xPYoBr`|I z+`+0!Ri2LpdY?$k7Rmp@2z;Q9(ksnq2u4&TpufI0_qiM`r*!XKGkSj?d)DC}5&q(O zdvwr#A_pPF`XLq--CClYnTF2(IQQ8bOGe^dN4b}~E`p!eAXztb%z8fMu8Pq<4CY)# z4BF6<()xU#ODWbIp6ZmDI%7^Kk87r*$V;${!t=A0`}s(NAOY-NRaRY&zS*SEErALk zr>(7x`0li8|C@gJ+xvT_J;Auj{23wiG_porDdv{R!7spliNBOjAnna-NZ6@y+2yY!0gzSxK2#!evvaFqBvJvEae;U}Csxf6Qsdm&7^W<@ zOzp8ydM8?qu@}&KR*7(Itjdo&T!VwVj`w;5!if1X@aT5;&EN!~EEw=>#(RTr%pdMh zx&ulR$lom}eFtQ;5#d!KNNaO7+{8@TN2WCX$=^%4qwsS@<<{!;VqXY-N15vok z=TqMfb7NPzxDh2GXbbCDQU~XF=&dCY#rOT=gw3z@O;3B=((6`FPblZzrz)ttVHN zcZ^k#TIv3o6ErKNqn>{2)pK`g&g=`@XP zX2%dE)by0IQ0`fVxLlrTW*KBAH`)9QV%B3`u-7m(OsDx+=(t;`ahKF;ih{kffwcJ< z!JfIeoMO*2OI57;4WryDRMK960gw0wv5d}4$|U6?mpQ%KKJ$`;XtZZd7+O{G4!yQ4 z+qpln&2nt73t~b;$=E>C6Br*HJB!iPIJ>9{oZR6o!VnZ)MNCs*ly?Twai6(QqKF?1 zyK|S7$D6e&Pv$63C=}bN_Q#8>Ha^xJ-jf}H@=3>6>MZIu)YJ#z+}EZjX9EVD41f>Ocr#7!rty}joId=E_3$GQ9o2{6j9 z_C=z@C;K$pKtNPOH-cDNtwk&XR$1OxiRc1vAZf6%< zlzEV67PJ!a? z?pi2La4GKYPN8^lEAH;@(BkfpBEdaHgX^3A{?9vW-AN`Z^CkDr$+`RNvv(6pWEEwz zPvSE~lEHwIh`IUj5HYk`yz+P|dJ3bOpSNPuA=yl^x_OTKxGo?jXM-)5@+HVt#Dk6+ zo_3{wHmCP|bxY+%?6BeC&o$fd;&Se**TC2~&onUSfHw=WR4Yx?d?$%UK^cSQKo7w` zbK7>abn+;ESE@=EtItWf(+oZ}EG+yT@6f6#j|aW12y1<18Do+y;wm8eL|E*V5#%~z zUF{yY3yQ)AQX7qpAEhU9uBOFpc==z6TvM~TiayJdaFP!P4o}ynRd57yvN|(dmwmGl z6ql2d^3%w47~CQti8}*eC{-)MCSD2SotQc!mtnQ?MHuMog9uq`Kl>bOphBtERkLu> zEno)hI-&yEMB7W`Ht~B2(_XS-wq?SHX329)H!m=C`g+j~jC*4K5R{M!j*_@l08=-h zF=O+>N5r}oOUFrI70m%K!#_%?dyPjBCAJ3rP`28miz6NJQl`m16w19xD#_l^OGCNWW@8OahXkfZ%tMgJ_P%||q`a$F$ z?Uha6nh4(v@o7)r{XCMa&k;U%X^^=$BF)cmWa% zPvvZjzrkdL1F^eMXYh3C;)GATb8}xc1ZY(KB2FJay#Txx(Jmgic8V9W@0<;&7NFTma%k>3>G>{3t%v8uWP zMI6`aSM>%NJ-R}%`tYI6fj^>U1j?s6cgO6%w2_0rxggK%u~=3xRG?iNrbZBYHEN{0Jd^A_^;oI}o+pd4F}&pF z$Fqk}GYVVU$GC=~U6L>44eB|l5q;V4@plH@;oC>2dnMUv2>me@ShF?rypzcHArm+d znB1fZ4(j2F9tSdlQDWKe8?40}dU}1~iN3@50@nhH+%QE47(L&AX&6l>2)PE<;O7-R zCIe6ZFWDFD$2veG{OV*Tec!zl!fH=me7A^XYhyt)Gu!MUVS~J`W}u8-OR8iTk`5wY zjd!%G930=RVg{<4#}g);Mt{^O<4=ak^%U-23q5nt(%OIdUdB-299og_g$45j&z~JE zX&~TMtPcr4apaa4P9}Emw9uSE5MP1rV$C-SPvM&(kOgEsThmH_mK=}Me{w;q+#3mFHKbtyAx5YItgLUWCwFj&CAkC~W=HKEH-9kZq#i*f=@Q z_fW9*$kHN*X{^}kKEVQ&1`mY1ZEu!mcd2d1n64Q4W!uATc@&2R zS9RJ=nv@-~Up~izr<0jdmgt9LuhQtMM`e4eo5Vq?q?>tv8=dFui`SSFP+n{{z{gAd zn6ro(@Bpp0#)bu6)tohX{RNJw3xsj6h-Er;)oarbH8epp|2Y4rFwGN5HA`EvGdy z!XmJCNt-S-;%E`w{d|)C$9W$q`PGz9uax|%Ab~KGqd5iUSTMO@WAB}YGbec<^Va*M9j`l~;5bvAuu zp3XVQ>+12{sfIhoaW2yeUu|p=vTuo+Ok<)R|JYaiXW3Yw0)!c!UY9@H)^pCiT9z5_ z%}!iy{e^io9R#usFHnDzAG^0jSHT!zFvJWl@eB1Oo%e9jpfvYo`$h*IPxb6wD4U#Q zNkW8Ip89!salsYWp*F(s(tLT}wKKz2{UxB&vezy)7)~EX&OwjXu&;8Qgj&0py20r( zJSGXMLF23a(f#SSyJ%!FxQ0$7`#*w;2xS8v4EjPW%a6tbs9hvVUfvnycXVe9ZgjkM zo{c;4DHWC9+P7@HJ!sM~B;tbwfPXB%=fBfpZvgePp6y6Ud0+dkF#tjG2gNMg9_1Rb zVFaZN2t)=n`xk>m%7yD3o=d{+p(IM~jNVS!k;m6JD;PB##X26 z9^b1h3WY_H4AX9 zFz_rzlTR6vOs!sAwZ#bCdGPbZ(_HaPv!X?s@H2u7bf%9oFzq4qX)tK_fPkKaBAz zj;xx?z7cUw8_HGV0c=J0XZ0niz~JvN-MOF&8o)UY390Mzh;|}3_Jk*5+Y+{*u>$Jh z9y3{%&K@SupWAm7G1Hdb%JS_yp2>Tk!a0#XACx%XpvSN8P42#PWUNlJ zA`i{%d({_;%T0w`ZhNY85cf}JX;(<4buzC;gKk8hMKLyhqy(go7M7ga$UMYEP2=S# zM3$@_30d;%zW5H6M~hJ6bCy&+znV6H-}}DcI?rV?Ohivp?!Ls|3LpxE-0N-yt~0+M zkww4ez4knhLrruVqxBD%7Q4fCvJno_&di}llyKl($`}gowdIDcv^@3h*yt66}~DB;O7A27zdIC}Nt{ zxy^Rj7`~TyRb{rOK);|l@`<2!Q8ru*oXTP+=$r`m)OjGIB3hBN`cdSrX>IjF=q+_4W=Ew~jvs&2w^D6;ZuA*2E(Doyg#sFZXX-F1*<zq+Cx6rB{^&K~oQpC9yl0AoYp& z(Ll760O;h0Df+S?wQg-)EmIM)jOObT%0>d4pVnqF9I%vm4-}Vtz?4)Ej|kXoW38dX zdfX0B`URs5qW}D$f5kpe(4mVuu0{Mp^1tbgNL@sSxYHV#Br~tYr1w3YQTef^c2YU| z?Pw?UnT)RG1=f94R1wX4dGYsmyjyH;OW&G~s`^;2l9D^z$XGu4nrhgl^m<=;+~#5P z{Vyo8{(_@C&BKN4K!~@9>>6*9_41N*Qph zk%i-(fFGo`6QBKT_bfZ;tL{KNm+_;c2g`JlC~IK$4!jX>_eW^=w)TtDL2+&U`~uls zVX^;q{PHe6B4H;(gh2}9JOwGi)!JvLZ#(qU9!aD$fL_@ai?GS{_Y_{p~hm|+73jvQx?Rp^__S0%!c0g-AmrX!gz zVc<{)jLI*Z65XLaH?%K=9IVgVAeGmvmucR1XaAy;tvfc+WA{nH(_rBw3pN>dN#n;a zhD$;+1s#7xZiPODpOiBquQ%43$V@+lkG#PftnO`xF~_HkKiu+qU16ay1auz8Im8aW z*S{sMEe>Ez!Ck8L1RZRhSKj7&gaHLgSzTC^P)i-G<(pqK44!oOMhxtRCXgVt8UU^4 zjJd0vDRSSOQ|aG)C&c((nStlCH|b>!7IFMoQH+W=W*UC}sm|&IF@vSfCzI6+*_%$s zx>p?Mycg|#kL2S1Rap?KOjnE)etsHKrg{#>XcJ`EilBt~T+e*jk4zOBLv1={60?7Y z^@b0CG^3J!cEJnTxO`Y|2HfT3iT$^BUWlHnWFb1MDu`aNPXFf|`FHXxn{NC)0+_l? zk4;|-15vA{^~*Q>Y=!^68m5wcieZq?r%cdYygsa;Sk_xNVRYoqsaAMy!lm_FEU@z> zRa%y}sR)qUq#?3$18ee2Ns-Fh$nO&wInSl5ACXuBS#(NPtY6S6cxDbveaO(M}XI1h< z%N?>dNTGOQkXG?g^;+g`F-2zyfK---9E4KgV5HbZ#JyD0yo55tKvY>!pjPfbd6uRg zMV^XRs0AJWRvT{=`>TKv8(YZ#loS9L|2BvOC>I1@L5oGWf;U2``QncGVvB_*0(^fIqD)GW<=Pm(_oBD@?U0p4u{O15Oxe=u>TeGXYxK?nj>ok z$A00j#Dbj(L}9X4l!41$|JL3PQ|v|-3LYPpPoYjYgyO!H1`XS5<=dWUZV>4q+QFlT zL1^?ShF7Qh)AR73df%t(D*@qEU||qZiJzNFscP0EX&)FF}z%S2B8m#l*h@eY9pX z4}@7-8{1fXetD^BgpBImfM_qN3e@{p(?<@hbdoxlZVY)^=pyd}IrNn6vMWD|a9XAp zMVIuX@^+UUOtZ3g%YGqc@v0g`J;?j!{2uDc60XYv>VrR}-X;4k+X?b~d$76DSNlWq zfH5vyw6}Y`h${nPVVLbCrNr(#r^dtg;@0206ksq}to<11aG&d_BSHn(&eD2>JhBo8 ze={lD_iiIv2OlhQtL8QY93OwrwgRLaVAl7yzuv92NwvPNdKBD1v|HD%#+?vRPU*mO zeflgp5vtAjYRgX#Uct^Fs*0J6Vf>+SnY6ZZA79wxbJ;9sPImS@^mUQ1E=qUOFV90! zsp#_fZ*JA^XP(PkbJ{v5DZRXa!ZP-x)h|C|OgF;-LA0T$toqKc>Q0c&cQ)iBSVg>+v`a{=!+UJEaB~ z&FQTWvy@j~+r>*^M!|tDD?CT?Q7qro3R#8wLhg$GQl94ekg`X;`-i3Q{v)Vg(`K6qik zi98?X5?-GW;6U{vJFj}ZU985MS*zOa@pn3BJA_5tS_w>(p+bzR&nB_5N_sY693V;E zthnq6B=1oFI#|f}+5x54e(XB?mkT6Chvy4vJ&BQah&c%t?QKJ* zl@g6BtN9LH6p|Y%Da`R4H8(%J!k;pYkHY*$mvE=1H=S_!^5D0?!=qjUdetR^^N8fr z`R3OU>$BTJiHV(xmRoom9J96F`r%tm$-+h3!r4UvY$ zKBcTyTwi69Gp7TOw#h=ewVrtrX!1xm9!$^X9*2JFHl9-%G2&}( zYJvp`cSi>9uQWw8a}9~uWe*G@lr3C$cbH~?4nB~>j}QU}dd9tL<}FieGZ#kn_K^>* z^0g#2bxfx&sws|^>;-!Wcs&_?Iu$A|eL|=to<^{hs{p3Fra8 zj;-*?V0-bea!iB^x#9Qmue?0(^3^RNr}B||lmRTq#QS`_-WbujoS4RDz;*V9(l|#$ z86mcd-rDX;)_TUKLWZOg8qZFKVxQkdvagV*SHBHz>hkelUDViEoAxLNy6L#^_)k(b zhZoQZYO%y8<-iwP_`A&E`S6yz$9Qsb+H~*B7BOMq#Q_Yp`Uf|5r^;dNu1_HC^UGC(6hhD*9YFNVX4XaTtsyCg@{dwg_IwSx`hThoRyt+C-n`yA( zm6JSFMY{C!24Rf@iHyn0!qJ3QcO!&HbfiM+&h z^x){yd9Kuv46Fe_6X)dk@#Q0j$xk2a&!8zw^ryJa%G8c=U3BgbT3Be`;IF?IFaprx zF4UAiTQ?^E)D3l)&y=BeZzAT2-!Z1$v9*dD7M%{TtX>rICs+xS;rEhYz;HYvE+N5G z+b-y;0(E>7BI&oOM#oN1LgRQZH7o5MLW60!p$ba{RIzNOIZMl!X
    Vazg;9jsp$ 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≥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

    &+O3GMKA3OjLqeWri(I>@T7u{?_Oj)_{eOh9 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

    GQt_8`&r66_ihV~fPt9vY0&YVBw`e1O|bv#!mwJ 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 Q*!}SZ#|33{>=odD0A~?{cmMzZ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/beamtech/textures/block/laser_combiner.png b/src/main/resources/assets/beamtech/textures/block/laser_combiner.png new file mode 100644 index 0000000000000000000000000000000000000000..19f4c5801c6a0fe22e13296aa6a25bf4a25a074d GIT binary patch literal 4299 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 eX&x4UfdK$MWo-ecKy=0.15.11", + "minecraft": "~1.20.1", + "java": ">=17", + "fabric-api": "*" + }, + "suggests": { + "another-mod": "*" + } +} \ No newline at end of file