diff --git a/.github/workflows/mkdocs.yml b/.github/workflows/mkdocs.yml
new file mode 100644
index 00000000..aba6d396
--- /dev/null
+++ b/.github/workflows/mkdocs.yml
@@ -0,0 +1,29 @@
+name: mkdocs
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - develop
+permissions:
+ contents: write
+jobs:
+ deploy:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - name: Configure Git Credentials
+ run: |
+ git config user.name "MarkenJaden"
+ git config user.email "jjsch1410@gmail.com"
+ - uses: actions/setup-python@v5
+ with:
+ python-version: 3.x
+ - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
+ - uses: actions/cache@v4
+ with:
+ key: mkdocs-material-${{ env.cache_id }}
+ path: .cache
+ restore-keys: |
+ mkdocs-material-
+ - run: pip install mkdocs-material
+ - run: mkdocs gh-deploy --force
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c600138a..e4f9ac79 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+### Release 1.3.3
+
+* Fixed [#159] : Mod crashed with java version 12 or higher due to "javalangnosuchfieldexception modifiers"
+* Fixed [#159] : Blocks would glitch in 1.14 - 1.16 after the GUI was opened on the signal or the signalbox. This resulted in the block not reacting to changed states and staying rendered even after the destruction of the block.
+
### Release 1.3.2
* Fixed [#151] : Rail switch always points left from either perspective
diff --git a/README.md b/README.md
index 74f6d423..1493db61 100644
--- a/README.md
+++ b/README.md
@@ -41,7 +41,7 @@ Adds many different signals in different designs, so far without a consistent re
* Huge thanks to [cam72cam](https://github.com/cam72cam) for
- creating [UniversalModCore](https://github.com/TeamOpenIndustry/UniversalModCore), which makes the whole thing
+ creating [UniversalModCore](https://www.github.com/TeamOpenIndustry/UniversalModCore), which makes the whole thing
possible here
diff --git a/VERSION b/VERSION
index 1892b926..31e5c843 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.3.2
+1.3.3
diff --git a/docs/ContentPacksV1.md b/docs/ContentPacksV1.md
new file mode 100644
index 00000000..bdf2addf
--- /dev/null
+++ b/docs/ContentPacksV1.md
@@ -0,0 +1,64 @@
+# Creating and Updating Content Packs for LandOfSignals V1
+
+This guide provides instructions for creating and updating content packs for version 1 of the LandOfSignals mod, ensuring compatibility and integration with the mod's features and theme.
+
+## Content Pack Structure and Specifications
+
+A content pack for LandOfSignals V1 should include:
+
+- `pack.json`: Contains metadata about the content pack, including name, version, author, and description.
+- `assets`: A directory with models, textures, and other necessary assets.
+
+### pack.json Structure
+
+Example `pack.json` file:
+
+```json
+{
+ "name": "My Custom Content Pack",
+ "version": "1.0",
+ "author": "YourName",
+ "description": "A detailed description of your content pack."
+}
+```
+
+### Assets Organization
+
+Assets should be organized into subdirectories within the `assets` folder:
+
+- `assets/models`: For 3D models of signals and signs.
+- `assets/textures`: For textures applicable to the models.
+
+## Creating a Signal
+
+To create a custom signal:
+
+1. Model your signal using 3D modeling software capable of exporting to the OBJ format.
+2. Create and apply textures to your model.
+3. Organize your model and textures in the `assets` directory accordingly.
+4. Define your signal in a JSON file within `assets/models`.
+
+### Signal Definition Example
+
+Example JSON definition for a signal:
+
+```json
+{
+ "id": "custom_signal_v1",
+ "name": "Custom Signal V1",
+ "model": "models/custom_signal_v1.obj",
+ "textures": {
+ "texture": "textures/custom_signal_v1.png"
+ }
+}
+```
+
+## Best Practices for Content Pack Creation
+
+- Maintain organization within your content pack for ease of management.
+- Use descriptive names for models, textures, and assets.
+- Thoroughly test your content pack for compatibility and performance.
+
+## Sharing and Community Support
+
+After creating your content pack, you can share it with the LandOfSignals community. Include a README file with installation and usage instructions. Join our [Discord community](https://discord.gg/ykAqHKYjVM) for support, feedback, and to share your content packs with other users.
diff --git a/docs/ContentPacksV2.md b/docs/ContentPacksV2.md
new file mode 100644
index 00000000..08469bc2
--- /dev/null
+++ b/docs/ContentPacksV2.md
@@ -0,0 +1,66 @@
+# Creating and Customizing Content Packs for LandOfSignals V2
+
+Creating and customizing content packs for LandOfSignals V2 allows mod users to add their own unique signals, signs, and other assets to the game, enhancing the immersive experience with the LandOfSignals theme. This guide will walk you through the process of creating a content pack for version 2 of the mod, ensuring consistency with the LandOfSignals theme.
+
+## Content Pack Structure
+
+A content pack for LandOfSignals V2 consists of a directory containing the following:
+
+- `pack.json`: A JSON file containing metadata about the content pack.
+- `assets`: A directory containing the models, textures, and other assets for your content pack.
+
+### pack.json
+
+The `pack.json` file contains metadata about your content pack. Here is an example structure:
+
+```json
+{
+ "name": "My Custom Content Pack",
+ "version": "2.0",
+ "author": "YourName",
+ "description": "A description of your content pack, aligned with the LandOfSignals theme."
+}
+```
+
+### Assets Directory
+
+The `assets` directory should contain all the models, textures, and other assets for your content pack. Organize your assets into subdirectories for better management. For example:
+
+- `assets/models`: Contains the 3D models for your signals and signs.
+- `assets/textures`: Contains the textures for your models.
+
+## Creating a Signal
+
+To create a signal, you need to:
+
+1. Model your signal using a 3D modeling software that can export to the OBJ format.
+2. Create textures for your model.
+3. Place your model and textures in the appropriate directories within the `assets` directory.
+4. Define your signal in a JSON file within the `assets/models` directory.
+
+### Signal Definition
+
+A signal is defined using a JSON file. Here is an example definition:
+
+```json
+{
+ "id": "custom_signal_v2",
+ "name": "Custom Signal V2",
+ "model": "models/custom_signal_v2.obj",
+ "textures": {
+ "texture": "textures/custom_signal_v2.png"
+ }
+}
+```
+
+## Best Practices
+
+- Keep your content pack organized to make it easier to manage.
+- Use descriptive names for your models, textures, and other assets.
+- Test your content pack thoroughly before releasing it.
+
+## Sharing Your Content Pack
+
+Once you have created your content pack, you can share it with the community. Make sure to include a README file with instructions on how to install and use your content pack, ensuring it aligns with the LandOfSignals theme.
+
+Join our [Discord community](https://discord.gg/ykAqHKYjVM) to share your content packs and get feedback from other users.
diff --git a/docs/HowToUse.md b/docs/HowToUse.md
new file mode 100644
index 00000000..be7993d3
--- /dev/null
+++ b/docs/HowToUse.md
@@ -0,0 +1,43 @@
+# How to Use LandOfSignals
+
+Welcome to the LandOfSignals mod! This guide will walk you through the installation, configuration, and usage of the mod, as well as how to create and use content packs.
+
+## Installation
+
+1. Ensure you have Minecraft Forge installed.
+2. Download the LandOfSignals mod from the official [CurseForge page](https://www.curseforge.com/minecraft/mc-mods/landofsignals).
+3. Place the downloaded `.jar` file into your `Minecraft/mods` folder.
+4. Launch Minecraft and select the Forge profile.
+
+## Configuration
+
+LandOfSignals comes with various configuration options to tailor the mod to your liking. These can be found in the `config/landofsignals.toml` file. Here you can enable or disable specific features and adjust mod settings.
+
+## Using the Mod
+
+To use the mod, you'll need to familiarize yourself with the different types of signals and tools provided:
+
+- **Signal Selector**: Used to select the type of signal you want to place.
+- **Connector Tool**: Connects signals to signal boxes for control.
+- **Signal Box**: Controls the state of connected signals.
+
+### Placing Signals
+
+1. Select a signal using the Signal Selector.
+2. Right-click on the ground or a suitable surface to place the signal.
+3. Use the Connector Tool to link the signal to a Signal Box.
+4. Right-click the Signal Box and configure the signal state as desired.
+
+## Creating Content Packs
+
+Content packs allow you to add new signals and assets to the game. To create a content pack:
+
+1. Create a new directory in `Minecraft/config/landofsignals/contentpacks`.
+2. Inside this directory, create a `pack.json` file with your pack's metadata.
+3. Add your assets and define them in the `pack.json` file. Refer to the [Content Pack Documentation](https://github.com/LandOfRails/LandOfSignals/wiki/Content-Packs) for detailed instructions.
+
+## Community and Support
+
+Join our [Discord community](https://discord.gg/ykAqHKYjVM) for support, to share your content packs, or to connect with other users. Our community is always ready to help with any questions or issues you might encounter.
+
+Thank you for using LandOfSignals!
diff --git a/docs/assets/1.0.0/block_old_shifted_signals_after_update.png b/docs/assets/1.0.0/block_old_shifted_signals_after_update.png
deleted file mode 100644
index 4f2bd99a..00000000
Binary files a/docs/assets/1.0.0/block_old_shifted_signals_after_update.png and /dev/null differ
diff --git a/docs/assets/1.0.0/block_old_signals_after_update.png b/docs/assets/1.0.0/block_old_signals_after_update.png
deleted file mode 100644
index d652d9f8..00000000
Binary files a/docs/assets/1.0.0/block_old_signals_after_update.png and /dev/null differ
diff --git a/docs/assets/1.0.0/block_old_single_state_signals_after_update.png b/docs/assets/1.0.0/block_old_single_state_signals_after_update.png
deleted file mode 100644
index fa84bc25..00000000
Binary files a/docs/assets/1.0.0/block_old_single_state_signals_after_update.png and /dev/null differ
diff --git a/docs/assets/1.0.0/block_old_ticket_machines_and_so12.png b/docs/assets/1.0.0/block_old_ticket_machines_and_so12.png
deleted file mode 100644
index 83d1389c..00000000
Binary files a/docs/assets/1.0.0/block_old_ticket_machines_and_so12.png and /dev/null differ
diff --git a/docs/assets/1.0.0/block_old_ticket_machines_and_so12_after_click.png b/docs/assets/1.0.0/block_old_ticket_machines_and_so12_after_click.png
deleted file mode 100644
index 85628557..00000000
Binary files a/docs/assets/1.0.0/block_old_ticket_machines_and_so12_after_click.png and /dev/null differ
diff --git a/docs/assets/1.0.0/block_signs.png b/docs/assets/1.0.0/block_signs.png
deleted file mode 100644
index c6a5e80f..00000000
Binary files a/docs/assets/1.0.0/block_signs.png and /dev/null differ
diff --git a/docs/assets/1.0.0/block_ticket_machine_hitbox.png b/docs/assets/1.0.0/block_ticket_machine_hitbox.png
deleted file mode 100644
index ade311b4..00000000
Binary files a/docs/assets/1.0.0/block_ticket_machine_hitbox.png and /dev/null differ
diff --git a/docs/assets/1.0.0/blocks_deprecated_stellwand.png b/docs/assets/1.0.0/blocks_deprecated_stellwand.png
deleted file mode 100644
index f83e6b8a..00000000
Binary files a/docs/assets/1.0.0/blocks_deprecated_stellwand.png and /dev/null differ
diff --git a/docs/assets/1.0.0/creative_inventory_assets.png b/docs/assets/1.0.0/creative_inventory_assets.png
deleted file mode 100644
index 63ea1a0e..00000000
Binary files a/docs/assets/1.0.0/creative_inventory_assets.png and /dev/null differ
diff --git a/docs/assets/1.0.0/creative_inventory_deprecated_stellwand.png b/docs/assets/1.0.0/creative_inventory_deprecated_stellwand.png
deleted file mode 100644
index 03565a67..00000000
Binary files a/docs/assets/1.0.0/creative_inventory_deprecated_stellwand.png and /dev/null differ
diff --git a/docs/assets/1.0.0/creative_inventory_signals.png b/docs/assets/1.0.0/creative_inventory_signals.png
deleted file mode 100644
index 59f10ab3..00000000
Binary files a/docs/assets/1.0.0/creative_inventory_signals.png and /dev/null differ
diff --git a/docs/assets/1.0.0/creative_inventory_signs.png b/docs/assets/1.0.0/creative_inventory_signs.png
deleted file mode 100644
index 6a7323c1..00000000
Binary files a/docs/assets/1.0.0/creative_inventory_signs.png and /dev/null differ
diff --git a/docs/assets/1.0.0/forge_gui_entering_world_after_update.png b/docs/assets/1.0.0/forge_gui_entering_world_after_update.png
deleted file mode 100644
index bdcabc46..00000000
Binary files a/docs/assets/1.0.0/forge_gui_entering_world_after_update.png and /dev/null differ
diff --git a/docs/assets/1.0.0/item_name_and_tooltip.png b/docs/assets/1.0.0/item_name_and_tooltip.png
deleted file mode 100644
index 984110aa..00000000
Binary files a/docs/assets/1.0.0/item_name_and_tooltip.png and /dev/null differ
diff --git a/docs/assets/1.0.0/item_old_signal_after_update.png b/docs/assets/1.0.0/item_old_signal_after_update.png
deleted file mode 100644
index 55cbb01a..00000000
Binary files a/docs/assets/1.0.0/item_old_signal_after_update.png and /dev/null differ
diff --git a/docs/assets/1.0.0/item_old_signalbox_after_update.png b/docs/assets/1.0.0/item_old_signalbox_after_update.png
deleted file mode 100644
index 4c7e6e9a..00000000
Binary files a/docs/assets/1.0.0/item_old_signalbox_after_update.png and /dev/null differ
diff --git a/docs/assets/1.0.0/message_deprecated_stellwand.png b/docs/assets/1.0.0/message_deprecated_stellwand.png
deleted file mode 100644
index c25970aa..00000000
Binary files a/docs/assets/1.0.0/message_deprecated_stellwand.png and /dev/null differ
diff --git a/docs/assets/1.0.0/signal_prioritization.png b/docs/assets/1.0.0/signal_prioritization.png
deleted file mode 100644
index 9f40b9b3..00000000
Binary files a/docs/assets/1.0.0/signal_prioritization.png and /dev/null differ
diff --git a/docs/assets/1.0.0/signal_prioritization_large_index.png b/docs/assets/1.0.0/signal_prioritization_large_index.png
deleted file mode 100644
index 37d0d49c..00000000
Binary files a/docs/assets/1.0.0/signal_prioritization_large_index.png and /dev/null differ
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 00000000..89d2326d
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,56 @@
+# Welcome to the LandOfSignals Documentation
+
+Welcome to the official documentation for the LandOfSignals mod. This guide is designed to help you understand how to install, configure, and effectively use the mod and its content pack systems in your Minecraft world.
+
+## Table of Contents
+
+- [Installation](#installation)
+- [Getting Started with LandOfSignals](#getting-started-with-landofsignals)
+- [Using the Mod](#using-the-mod)
+- [Content Pack Systems](#content-pack-systems)
+ - [Creating Content Packs for V1](ContentPacksV1.md)
+ - [Creating Content Packs for V2](ContentPacksV2.md)
+- [Advanced Configuration](#advanced-configuration)
+- [Troubleshooting](#troubleshooting)
+- [Contributing](#contributing)
+- [Support and Community](#support-and-community)
+
+## Installation
+
+Learn how to install LandOfSignals and its dependencies to get started with enhancing your Minecraft railway systems.
+
+## Getting Started with LandOfSignals
+
+Discover the basics of using LandOfSignals, including an overview of its features and how to navigate the mod's interface.
+
+## Using the Mod
+
+Detailed instructions on how to use the various signals, items, and functionalities added by LandOfSignals.
+
+## Content Pack Systems
+
+Explore how to create and use content packs with LandOfSignals, enhancing the customization and variety of your railway systems.
+
+### Creating Content Packs for V1
+
+Step-by-step guide on creating content packs compatible with version 1 of the mod. [Learn more](ContentPacksV1.md).
+
+### Creating Content Packs for V2
+
+Instructions on developing content packs for version 2 of LandOfSignals, including advanced features and tips. [Learn more](ContentPacksV2.md).
+
+## Advanced Configuration
+
+Customize your experience with LandOfSignals by adjusting mod settings and exploring advanced features.
+
+## Troubleshooting
+
+Solutions to common issues encountered while using LandOfSignals. For further assistance, visit our [GitHub repository](https://github.com/LandOfRails/LandOfSignals) or join our [Discord community](https://discord.gg/ykAqHKYjVM).
+
+## Contributing
+
+Interested in contributing to the LandOfSignals project? Find out how you can help improve the mod and its documentation.
+
+## Support and Community
+
+Join our Discord community for support, to share content packs, and to connect with other LandOfSignals users.
diff --git a/docs/stellwand/Stellwand.md b/docs/stellwand/Stellwand.md
deleted file mode 100644
index 2a594486..00000000
--- a/docs/stellwand/Stellwand.md
+++ /dev/null
@@ -1,157 +0,0 @@
-[... back to README.md][README]
-
-
-# Stellwand
-
-![Stellwand logo](stellwand.png)
-
-## Usage
-
-
-Usage
-
-
-Blocks:
-
-* Sender: Block that is connected to one or multiple signals and adds signalmodes. To activate it, just give it a
- redstone signal. A sender can only control one lamp (=signalgroup). Can be connected with multiple signals of the same
- type.
-* Signal: Block that can display multiple signals, but has only one displayable lamp (=signalgroup). Can be connected to
- multiple senders.
-* Multisignal: Block that can display multiple signals and has multiple displayable lamps (=signalgroups). Can be
- connected to multiple senders.
-* Filler: Block that has no special functionality and only is decorative
-
-Items:
-
-* Connector: Used to connect senders and signals.
-* Magnifying glass: Used to show which signals are connected to a sender.
-
-Connecting senders and signals:
-
-1. Get your connector.
-2. Click on either the sender or signal. (Your connector will turn either blue or green)
-3. Now click on the opposite block. (Your chat should show it connected)
-
-
-
-
-## Recipes
-
-
-Recipes
-
-### Blockfiller
-
-![Recipe for Blockfiller](recipe_filler.png)
-
-`4 Terracotta` create `4 Blockfillers`.
-
-### Blocksignal
-
-![Recipe for Blocksignal](recipe_signal.png)
-
-`2 Blockfillers and 2 Redstonedust` create `2 Blocksignals`.
-
-### Blockmultisignal
-
-![Recipe for Blockmultisignal](recipe_multisignal.png)
-
-`2 Blocksignals` create `1 Blockmultisignal`.
-***Info:*** The `Blocksignals` need to be on top of each other.
-
-### Blocksender
-
-![Recipe for Blocksender](recipe_sender.png)
-
-`2 Blockfillers and 2 Redstonetorches` create `2 Blocksenders`.
-
-### Connector
-
-![Recipe for Connector](recipe_connector.png)
-
-`1 Blockfiller and 1 Redstonedust` create `1 Connector`.
-***Info:*** The `Blockfiller` needs to be left of the `Redstonedust`.
-
-### Magnifying glass
-
-![Recipe for Magnifying glass](recipe_magnifyingglass.png)
-
-`2 Blockfillers, 1 Glasspane and 1 Stick` create `1 Magnifying glass`.
-
-
-
-## Config
-
-
-Config
-
-Configurations done over the stellwand.cfg only refresh on restart.
-
-### debugging > debugOutput
-
-> Default: false
-
-Enables debug logging for further inspection of issues.
-
-### disableRecipes
-
-> Default: false
-
-Removes every recipe; effectively making it creative-only.
-
-### disableStellwand
-
-> Default: false
-
-**Extreme option. Disables the stellwand part completely.
-Will break every already existing block/item from stellwand.
-Should only be used with the intention of disabling it from the start.**
-
-***If you have issues if the stellwand part, state your issue on our discord first.***
-
-
-
-## Contentpacks
-
-
-Contentpacks
-
-### Contentpacks available:
-
-* Non right now, see the next chapter to change this. ;)
-
-### Creating a contentpack:
-
-[Documentation on how to create a contentpack](./contentpacks/Stellwand_Contentpacks.md)
-
-
-
-## Features planned
-
-
-Features planned
-
-* Buttons for interaction (currently in development)
-* Sender with multiple functions (blinking)
-* LandOfSignalsAPI containing methods for retrieving directionFrom/directionTo from all blocks available
-
-
-
-
-### Changes to documentation
-
-| _Date_ | _Author_ | _Changes_ |
-|------------|------------|---------------------------------|
-| 15.01.2022 | Danielxs01 | Initial creation |
-| 31.01.2022 | Danielxs01 | Finalization v1.0 |
-| 02.02.2022 | Danielxs01 | Added Recipes and Configoptions |
-| | | |
-
-
-
-[... back to README.md][README]
-
-
-
-[README]: ../../README.md
\ No newline at end of file
diff --git a/docs/stellwand/contentpacks/Stellwand_Contentpacks.md b/docs/stellwand/contentpacks/Stellwand_Contentpacks.md
deleted file mode 100644
index 1b3f1316..00000000
--- a/docs/stellwand/contentpacks/Stellwand_Contentpacks.md
+++ /dev/null
@@ -1,301 +0,0 @@
-[..back to Stellwand.md](../Stellwand.md)
-
-
-# Creating contentpacks
-
-## Basics
-
-
-Basics
-
-> What kind of content is addable?
-
-Everything Block you see can be added through the content system. They themselves are added via the content pack system.
-
-> What type of file will the contentpack be?
-
-Currently a *.zip-File - It's not planned for other file types to be available.
-
-> What do I need to create a contentpack?
-
-- Some Modeller: For creating the *.obj files
-- Some text-editor: For creating the adjacent *.json files
-- Some Filezipper: For packing the files into a *.zip
-
-What have I used?
-
-- Blockbench
-- Notepad++/Visual Studio Code
-- WinRar / 7ZIP
-
-
-
-## Basefile
-
-
-Basefile
-
-```json
-{
- // Current addonversion, leave it like this
- "addonversion": "2",
- // Your contentpackname.
- "name": "MyContentpackname",
- // The version of your contentpack
- "packversion": "1.0",
- // The author of this pack
- "author": "You",
- "content": {
- // Path to your block-jsons : Blocktype
- "assets/stellwand/mainpack/signals/blockstraightunisolated/blockstraightunisolated.json": "BLOCKSIGNAL",
- // "assets/stellwand/[MyContentpackname]" is needed. Structure after that is open.
- "assets/stellwand/mainpack/senders/blocksender2/blocksender2.json": "BLOCKSENDER",
- "assets/stellwand/mainpack/fillers/blockfiller/filler.json": "BLOCKFILLER"
- }
-}
-```
-
-> *Important:*
-> The packId is created from `name` and `author`. This should not be changed after being initially set!
-> What happens if you still do it? Older blocks loose their reference and will be broken.
-
-
Available Blocktypes:
-
-- BLOCKFILLER
-- BLOCKSENDER
-- BLOCKSIGNAL
-- BLOCKMULTISIGNAL
-
-
-
-## Content (Blocks)
-
-
-Content
-
-
-
- Type: BLOCKFILLER
-
-```json
-{
- // Name of your block
- "name": "Custom Block Filler",
- // Path to your block *.obj, starts from the contentpackname
- "model": "myContentpackname/fillers/blockfiller/filler.obj",
- "block": {
- // Default rotation of your block (x,y,z)
- "rotation": [
- 0,
- 0,
- 0
- ],
- // Default translation of your block (x,y,z)
- "translation": [
- 0.5,
- 0.5,
- 0.5
- ]
- },
- "item": {
- // Default rotation of your item (x,y,z)
- "rotation": [
- 15,
- 195,
- 0
- ],
- // Default translation of your item (x,y,z)
- "translation": [
- 0.5,
- 0.5,
- 0.5
- ],
- // Scale of your item. Usally smaller than 1
- "scale": 0.7,
- // Path to your item *.obj, starts with contentpackname
- "model": "myContentpackname/fillers/blockfiller/filler.obj"
- }
-}
-```
-
-
-
-
- Type: BLOCKSENDER
-
-```json
-{
- // Name of your block
- "name": "Custom Block Sender",
- // Path to your block *.obj, starts from the contentpackname
- "model": "myContentpackname/senders/blocksender/blocksender.obj",
- "block": {
- // Default rotation of your block (x,y,z)
- "rotation": [
- 0,
- 0,
- 0
- ],
- // Default translation of your block (x,y,z)
- "translation": [
- 0.5,
- 0.5,
- 0.5
- ]
- },
- "item": {
- // Default rotation of your item (x,y,z)
- "rotation": [
- 15,
- 195,
- 0
- ],
- // Default translation of your item (x,y,z)
- "translation": [
- 0.5,
- 0.5,
- 0.5
- ],
- // Scale of your item. Usally smaller than 1
- "scale": 0.7,
- // Path to your item *.obj, starts with contentpackname
- "model": "myContentpackname/senders/blocksender/blocksender.obj"
- }
-}
-```
-
-
-
-
-Type: BLOCKSIGNAL
-
-```json
-{
- "name": "Custom Block Straight Unisolated",
- "directionFrom": [
- "LEFT"
- ],
- "directionTo": [
- "RIGHT"
- ],
- "model": "mainpack/signals/blockstraightunisolated/unisolatedtrack.obj",
- "block": {
- "rotation": [
- 0,
- 0,
- 0
- ],
- "translation": [
- 0.5,
- 0.5,
- 0.5
- ],
- // Different signalstates
- "modes": {
- // Groupname: Groupid (Should both be unique, Id is used for .obj)
- "Off": "off",
- "White": "white"
- }
- },
- "item": {
- "rotation": [
- 15,
- 195,
- 0
- ],
- "translation": [
- 0.5,
- 0.5,
- 0.5
- ],
- "scale": 0.7,
- "model": "mainpack/signals/blockstraightunisolated/unisolatedtrack.obj",
- "mode": "white"
- }
-}
-```
-
-
-
-
-
-Type: BLOCKMULTISIGNAL
-
-```json
-{
- "name": "Custom Multiblock Straight and Diagonal",
- "directionFrom": [
- "LEFT",
- "TOP_LEFT"
- ],
- "directionTo": [
- "RIGHT",
- "BOTTOM_RIGHT"
- ],
- "model": "mainpack/multisignals/blockstraightanddiagonal/blockstraightanddiagonal.obj",
- "block": {
- "rotation": [
- 0,
- 0,
- 0
- ],
- "translation": [
- 0.5,
- 0.5,
- 0.5
- ],
- // Different signals
- "modes": {
- // Signalname
- "Left track": {
- // Groupname: Groupid (Should both be unique, Id is used for .obj)
- "Off": "leftStraightOff",
- "White": "leftStraightWhite",
- "Red": "leftStraightRed"
- },
- "Left top track": {
- "Off": "leftTopOff",
- "White": "leftTopWhite",
- "Red": "leftTopRight"
- },
- "Right track": {
- "Off": "rightStraightOff",
- "White": "rightStraightWhite",
- "Red": "rightStraightRed"
- },
- "Right bottom track": {
- "Off": "rightBottomOff",
- "White": "rightBottomWhite",
- "Red": "rightBottomRed"
- }
- }
- },
- "item": {
- "rotation": [
- 15,
- 195,
- 0
- ],
- "translation": [
- 0.5,
- 0.5,
- 0.5
- ],
- "scale": 0.7,
- "model": "mainpack/multisignals/blockstraightanddiagonal/blockstraightanddiagonal.obj",
- "mode": "white"
- }
-}
-```
-
-
-
-
-
-## Example pack
-
-See [Resources/stellwand](../../../Resources/stellwand/)
-
-
-
-[..back to Stellwand.md](../Stellwand.md)
\ No newline at end of file
diff --git a/docs/stellwand/recipe_connector.png b/docs/stellwand/recipe_connector.png
deleted file mode 100644
index 610c5286..00000000
Binary files a/docs/stellwand/recipe_connector.png and /dev/null differ
diff --git a/docs/stellwand/recipe_filler.png b/docs/stellwand/recipe_filler.png
deleted file mode 100644
index b348d652..00000000
Binary files a/docs/stellwand/recipe_filler.png and /dev/null differ
diff --git a/docs/stellwand/recipe_magnifyingglass.png b/docs/stellwand/recipe_magnifyingglass.png
deleted file mode 100644
index 8cbddd0f..00000000
Binary files a/docs/stellwand/recipe_magnifyingglass.png and /dev/null differ
diff --git a/docs/stellwand/recipe_multisignal.png b/docs/stellwand/recipe_multisignal.png
deleted file mode 100644
index bf9d9eda..00000000
Binary files a/docs/stellwand/recipe_multisignal.png and /dev/null differ
diff --git a/docs/stellwand/recipe_sender.png b/docs/stellwand/recipe_sender.png
deleted file mode 100644
index 2fbc1dbf..00000000
Binary files a/docs/stellwand/recipe_sender.png and /dev/null differ
diff --git a/docs/stellwand/recipe_signal.png b/docs/stellwand/recipe_signal.png
deleted file mode 100644
index 459f9c82..00000000
Binary files a/docs/stellwand/recipe_signal.png and /dev/null differ
diff --git a/docs/stellwand/stellwand.png b/docs/stellwand/stellwand.png
deleted file mode 100644
index 611e8891..00000000
Binary files a/docs/stellwand/stellwand.png and /dev/null differ
diff --git a/mkdocs.yml b/mkdocs.yml
new file mode 100644
index 00000000..05e2db64
--- /dev/null
+++ b/mkdocs.yml
@@ -0,0 +1,5 @@
+site_name: LandOfSignals Wiki
+theme:
+ name: material
+plugins:
+ - search
diff --git a/src/main/java/net/landofrails/landofsignals/LandOfSignals.java b/src/main/java/net/landofrails/landofsignals/LandOfSignals.java
index 5ab5dca7..3b2cc11d 100644
--- a/src/main/java/net/landofrails/landofsignals/LandOfSignals.java
+++ b/src/main/java/net/landofrails/landofsignals/LandOfSignals.java
@@ -29,7 +29,7 @@ public class LandOfSignals extends ModCore.Mod {
public static final String MODID = "landofsignals";
// Current version
@SuppressWarnings("unused")
- public static final String VERSION = "1.3.2";
+ public static final String VERSION = "1.3.3";
@Override
public String modID() {
diff --git a/src/main/java/net/landofrails/landofsignals/gui/GuiSignalBoxComplexSignal.java b/src/main/java/net/landofrails/landofsignals/gui/GuiSignalBoxComplexSignal.java
index 719a9fe9..373c8c80 100644
--- a/src/main/java/net/landofrails/landofsignals/gui/GuiSignalBoxComplexSignal.java
+++ b/src/main/java/net/landofrails/landofsignals/gui/GuiSignalBoxComplexSignal.java
@@ -23,6 +23,7 @@
public class GuiSignalBoxComplexSignal implements IScreen {
private static TileSignalBox tsb;
+ private static String signalId;
private final ItemStack itemStackRight;
private final ItemStack itemStackLeft;
@@ -41,10 +42,8 @@ public class GuiSignalBoxComplexSignal implements IScreen {
private String originalLeftState;
public GuiSignalBoxComplexSignal() {
- final TileComplexSignal tsp = tsb.getTileComplexSignal();
- String itemId = tsp.getId();
- modes = LOSBlocks.BLOCK_COMPLEX_SIGNAL.getAllGroupStates(tsp.getId());
+ modes = LOSBlocks.BLOCK_COMPLEX_SIGNAL.getAllGroupStates(signalId);
modeGroups = modes.keySet();
originalSignalGroup = tsb.getGroupId(getFirstValue(modeGroups));
signalGroup = originalSignalGroup;
@@ -56,19 +55,20 @@ public GuiSignalBoxComplexSignal() {
itemStackLeft = new ItemStack(LOSItems.ITEM_COMPLEX_SIGNAL, 1);
final TagCompound tag = itemStackLeft.getTagCompound();
- tag.setString("itemId", itemId);
+ tag.setString("itemId", signalId);
itemStackLeft.setTagCompound(tag);
itemStackRight = new ItemStack(LOSItems.ITEM_COMPLEX_SIGNAL, 1);
final TagCompound tag2 = itemStackRight.getTagCompound();
- tag2.setString("itemId", itemId);
+ tag2.setString("itemId", signalId);
itemStackRight.setTagCompound(tag2);
}
- public static void open(final TileSignalBox tileSignalBox) {
+ public static void open(final TileSignalBox tileSignalBox, String signalId) {
tsb = tileSignalBox;
+ GuiSignalBoxComplexSignal.signalId = signalId;
LOSGuis.SIGNAL_BOX_COMPLEX_SIGNAL.open(MinecraftClient.getPlayer());
}
diff --git a/src/main/java/net/landofrails/landofsignals/gui/GuiSignalBoxSignalPart.java b/src/main/java/net/landofrails/landofsignals/gui/GuiSignalBoxSignalPart.java
index c7f6666d..839035f4 100644
--- a/src/main/java/net/landofrails/landofsignals/gui/GuiSignalBoxSignalPart.java
+++ b/src/main/java/net/landofrails/landofsignals/gui/GuiSignalBoxSignalPart.java
@@ -21,6 +21,7 @@
public class GuiSignalBoxSignalPart implements IScreen {
private static TileSignalBox tsb;
+ private static String signalId;
private final ItemStack itemStackRight;
private final ItemStack itemStackLeft;
@@ -34,10 +35,7 @@ public class GuiSignalBoxSignalPart implements IScreen {
public GuiSignalBoxSignalPart() {
- final TileSignalPart tsp = tsb.getTileSignalPart();
- String itemId = tsp.getId();
-
- states = LOSBlocks.BLOCK_SIGNAL_PART.getAllStates(tsp.getId());
+ states = LOSBlocks.BLOCK_SIGNAL_PART.getAllStates(signalId);
originalRightState = tsb.getActiveGroupState("");
rightState = originalRightState;
@@ -47,19 +45,20 @@ public GuiSignalBoxSignalPart() {
itemStackLeft = new ItemStack(LOSItems.ITEM_SIGNAL_PART, 1);
final TagCompound tag = itemStackLeft.getTagCompound();
- tag.setString("itemId", itemId);
+ tag.setString("itemId", signalId);
itemStackLeft.setTagCompound(tag);
itemStackRight = new ItemStack(LOSItems.ITEM_SIGNAL_PART, 1);
final TagCompound tag2 = itemStackRight.getTagCompound();
- tag2.setString("itemId", itemId);
+ tag2.setString("itemId", signalId);
itemStackRight.setTagCompound(tag2);
}
- public static void open(final TileSignalBox tileSignalBox) {
+ public static void open(final TileSignalBox tileSignalBox, String signalId) {
tsb = tileSignalBox;
+ GuiSignalBoxSignalPart.signalId = signalId;
LOSGuis.SIGNAL_BOX_SIGNAL_PART.open(MinecraftClient.getPlayer());
}
@@ -76,7 +75,7 @@ public void init(final IScreenBuilder screen) {
groupButton = new Button(screen, -100, 0, GuiText.LABEL_SIGNALGROUP.toString("default")) {
@Override
public void onClick(Player.Hand hand) {
-
+ // Signal parts have only one group - so no logic needed here
}
};
new Button(screen, -100, 50, "<-- " + GuiText.LABEL_NOREDSTONE) {
diff --git a/src/main/java/net/landofrails/landofsignals/gui/GuiSignalPrioritization.java b/src/main/java/net/landofrails/landofsignals/gui/GuiSignalPrioritization.java
index 406efbe8..ccc07170 100644
--- a/src/main/java/net/landofrails/landofsignals/gui/GuiSignalPrioritization.java
+++ b/src/main/java/net/landofrails/landofsignals/gui/GuiSignalPrioritization.java
@@ -17,8 +17,6 @@
import net.landofrails.landofsignals.LOSItems;
import net.landofrails.landofsignals.packet.GuiSignalPrioritizationToServerPacket;
import net.landofrails.landofsignals.serialization.EmptyStringMapper;
-import net.landofrails.landofsignals.tile.TileComplexSignal;
-import net.landofrails.landofsignals.tile.TileSignalPart;
import util.Matrix4;
import java.text.MessageFormat;
@@ -26,11 +24,15 @@
import java.util.function.Consumer;
import java.util.function.Supplier;
+import static net.landofrails.landofsignals.packet.GuiSignalPrioritizationToClientPacket.SIGNAL_PART_ID;
+
public class GuiSignalPrioritization implements IScreen {
- private static TileSignalPart tileSignalPart;
- private static TileComplexSignal tileComplexSignal;
+ private static Integer signalType;
private static Vec3i signalPos;
+ private static String signalId;
+ private static String[] orderedStates;
+ private static Map orderedGroupStates;
private static final Supplier GUI = () -> LOSGuis.SIGNAL_PRIORITIZATION;
@@ -133,8 +135,7 @@ public void onClick(Player.Hand hand) {
};
actions[i] = indexOffset -> {
- int index = entriesIndex + indexOffset;
- itemIndex = index;
+ itemIndex = entriesIndex + indexOffset;
updateButtons();
};
}
@@ -176,7 +177,7 @@ public void onEnterKey(IScreenBuilder builder) {
@Override
public void onClose() {
- if (tileSignalPart != null) {
+ if (signalType == SIGNAL_PART_ID) {
if (Arrays.deepEquals(originalStates, states)) {
return;
}
@@ -242,29 +243,20 @@ else if (useNext)
}
private static T getFirstValue(T[] values) {
- for (T object : values)
- return object;
+ if(values != null && values.length >= 1)
+ return values[0];
return null;
}
private static Map cleanCopy(Map map) {
Map val = new HashMap<>();
- map.forEach((groupId, states) -> {
- val.put(groupId, Arrays.copyOf(states, states.length));
- });
+ map.forEach((groupId, states) -> val.put(groupId, Arrays.copyOf(states, states.length)));
return val;
}
- // Getters for signal-dependent stuff
- private String getId() {
- if (tileSignalPart != null)
- return tileSignalPart.getId();
- return tileComplexSignal.getId();
- }
-
private boolean initStates(IScreenBuilder screen) {
- if (tileSignalPart != null) {
- states = tileSignalPart.getOrderedStates();
+ if (signalType == SIGNAL_PART_ID) {
+ states = orderedStates != null ? Arrays.copyOf(orderedStates, orderedStates.length) : null;
if (states == null || states.length == 0) {
screen.close();
return false;
@@ -275,7 +267,7 @@ private boolean initStates(IScreenBuilder screen) {
groups = new String[0];
} else {
- groupStates = tileComplexSignal.getOrderedGroupStates();
+ groupStates = orderedGroupStates != null? cleanCopy(orderedGroupStates) : null;
if (groupStates == null || groupStates.isEmpty()) {
screen.close();
return false;
@@ -283,7 +275,7 @@ private boolean initStates(IScreenBuilder screen) {
originalGroupStates = cleanCopy(groupStates);
- Map signalGroups = LOSBlocks.BLOCK_COMPLEX_SIGNAL.getAllGroupStates(tileComplexSignal.getId());
+ Map signalGroups = LOSBlocks.BLOCK_COMPLEX_SIGNAL.getAllGroupStates(signalId);
groups = signalGroups.keySet().toArray(new String[0]);
groupNames = new HashMap<>();
signalGroups.forEach((groupId, group) ->
@@ -296,22 +288,21 @@ private boolean initStates(IScreenBuilder screen) {
}
private void createItem() {
- String blockId = getId();
- if (tileSignalPart != null) {
+ if (signalType == SIGNAL_PART_ID) {
item = new ItemStack(LOSItems.ITEM_SIGNAL_PART, 1);
TagCompound tag = item.getTagCompound();
- tag.setString("itemId", blockId);
+ tag.setString("itemId", signalId);
item.setTagCompound(tag);
} else {
item = new ItemStack(LOSItems.ITEM_COMPLEX_SIGNAL, 1);
TagCompound tag = item.getTagCompound();
- tag.setString("itemId", blockId);
+ tag.setString("itemId", signalId);
item.setTagCompound(tag);
}
}
private void refreshItem() {
- if (tileSignalPart != null) {
+ if (signalType == SIGNAL_PART_ID) {
final TagCompound rightTag = item.getTagCompound();
rightTag.setString("itemState", states[itemIndex]);
item.setTagCompound(rightTag);
@@ -336,17 +327,13 @@ private void updateGroup(String newGroup) {
// Open-Functions
- public static void open(Vec3i signalPos, TileSignalPart tileSignalPart) {
+ public static void open(Vec3i signalPos, int signalType, String signalId, String[] orderedStates, Map orderedGroupStates) {
GuiSignalPrioritization.signalPos = signalPos;
- GuiSignalPrioritization.tileSignalPart = tileSignalPart;
- GuiSignalPrioritization.tileComplexSignal = null;
- GUI.get().open(MinecraftClient.getPlayer());
- }
+ GuiSignalPrioritization.signalType = signalType;
+ GuiSignalPrioritization.signalId = signalId;
+ GuiSignalPrioritization.orderedStates = orderedStates;
+ GuiSignalPrioritization.orderedGroupStates = orderedGroupStates;
- public static void open(Vec3i signalPos, TileComplexSignal tileComplexSignal) {
- GuiSignalPrioritization.signalPos = signalPos;
- GuiSignalPrioritization.tileSignalPart = null;
- GuiSignalPrioritization.tileComplexSignal = tileComplexSignal;
GUI.get().open(MinecraftClient.getPlayer());
}
diff --git a/src/main/java/net/landofrails/landofsignals/packet/GuiSignalPrioritizationToClientPacket.java b/src/main/java/net/landofrails/landofsignals/packet/GuiSignalPrioritizationToClientPacket.java
index d4c1849d..80fcc64a 100644
--- a/src/main/java/net/landofrails/landofsignals/packet/GuiSignalPrioritizationToClientPacket.java
+++ b/src/main/java/net/landofrails/landofsignals/packet/GuiSignalPrioritizationToClientPacket.java
@@ -5,49 +5,60 @@
import cam72cam.mod.net.Packet;
import cam72cam.mod.serialization.TagField;
import net.landofrails.landofsignals.gui.GuiSignalPrioritization;
+import net.landofrails.landofsignals.serialization.MapStringStringArrayMapper;
+import net.landofrails.landofsignals.serialization.StringArrayMapper;
import net.landofrails.landofsignals.tile.TileComplexSignal;
import net.landofrails.landofsignals.tile.TileSignalPart;
+import java.util.Map;
+
public class GuiSignalPrioritizationToClientPacket extends Packet {
+ public static final int SIGNAL_PART_ID = 1;
+ public static final int COMPLEX_SIGNAL_ID = 2;
+
@TagField("signalPos")
Vec3i signalPos;
- @TagField("tileSignalPart")
- TileSignalPart tileSignalPart;
- @TagField("tileComplexSignal")
- TileComplexSignal tileComplexSignal;
+ @TagField("signalType")
+ int signalType;
+ @TagField("signalId")
+ String signalId;
+ @TagField(value = "orderedStates", mapper = StringArrayMapper.class)
+ String[] orderedStates = null;
+ @TagField(value = "orderedGroupStates", mapper = MapStringStringArrayMapper.class)
+ Map orderedGroupStates = null;
public GuiSignalPrioritizationToClientPacket() {
}
- public GuiSignalPrioritizationToClientPacket(Vec3i signalPos, TileSignalPart tileSignalPart) {
- this.signalPos = signalPos;
- this.tileSignalPart = tileSignalPart;
+ public GuiSignalPrioritizationToClientPacket(TileSignalPart tileSignalPart) {
+ this.signalPos = tileSignalPart.getPos();
+ this.signalType = SIGNAL_PART_ID;
+ this.signalId = tileSignalPart.getId();
+ this.orderedStates = tileSignalPart.getOrderedStates();
}
- public GuiSignalPrioritizationToClientPacket(Vec3i signalPos, TileComplexSignal tileComplexSignal) {
- this.signalPos = signalPos;
- this.tileComplexSignal = tileComplexSignal;
+ public GuiSignalPrioritizationToClientPacket(TileComplexSignal tileComplexSignal) {
+ this.signalPos = tileComplexSignal.getPos();
+ this.signalType = COMPLEX_SIGNAL_ID;
+ this.signalId = tileComplexSignal.getId();
+ this.orderedGroupStates = tileComplexSignal.getOrderedGroupStates();
}
@Override
protected void handle() {
- if (tileSignalPart != null) {
- getWorld().setBlockEntity(signalPos, tileSignalPart);
- GuiSignalPrioritization.open(signalPos, tileSignalPart);
- } else if (tileComplexSignal != null) {
- getWorld().setBlockEntity(signalPos, tileComplexSignal);
- GuiSignalPrioritization.open(signalPos, tileComplexSignal);
- }
+ GuiSignalPrioritization.open(signalPos, signalType, signalId, orderedStates, orderedGroupStates);
}
public static void sendToPlayer(Player player, TileSignalPart tileSignalPart) {
- new GuiSignalPrioritizationToClientPacket(tileSignalPart.getPos(), tileSignalPart).sendToPlayer(player);
+ tileSignalPart.markDirty();
+ new GuiSignalPrioritizationToClientPacket(tileSignalPart).sendToPlayer(player);
}
public static void sendToPlayer(Player player, TileComplexSignal tileComplexSignal) {
- new GuiSignalPrioritizationToClientPacket(tileComplexSignal.getPos(), tileComplexSignal).sendToPlayer(player);
+ tileComplexSignal.markDirty();
+ new GuiSignalPrioritizationToClientPacket(tileComplexSignal).sendToPlayer(player);
}
}
diff --git a/src/main/java/net/landofrails/landofsignals/packet/SignalBoxTileSignalPartPacket.java b/src/main/java/net/landofrails/landofsignals/packet/SignalBoxTileSignalPartPacket.java
index bef1b106..8dbe2475 100644
--- a/src/main/java/net/landofrails/landofsignals/packet/SignalBoxTileSignalPartPacket.java
+++ b/src/main/java/net/landofrails/landofsignals/packet/SignalBoxTileSignalPartPacket.java
@@ -12,45 +12,34 @@
public class SignalBoxTileSignalPartPacket extends Packet {
- @TagField("tileSignalPart")
- TileSignalPart tileSignalPart;
- @TagField("tileComplexSignal")
- TileComplexSignal tileComplexSignal;
-
- @TagField("tileSignalBox")
- TileSignalBox tileSignalBox;
@TagField("posSignalBox")
Vec3i posSignalBox;
@TagField("signalType")
Byte signalType;
+ @TagField("signalId")
+ String signalId;
public SignalBoxTileSignalPartPacket() {
}
public SignalBoxTileSignalPartPacket(final TileSignalPart tileSignalPart, final TileSignalBox tileSignalBox) {
- this.tileSignalPart = tileSignalPart;
- this.tileSignalBox = tileSignalBox;
+ this.signalId = tileSignalPart.getId();
this.posSignalBox = tileSignalBox.getPos();
this.signalType = tileSignalBox.getSignalType();
}
public SignalBoxTileSignalPartPacket(final TileComplexSignal tileComplexSignal, final TileSignalBox tileSignalBox) {
- this.tileComplexSignal = tileComplexSignal;
- this.tileSignalBox = tileSignalBox;
+ this.signalId = tileComplexSignal.getId();
this.posSignalBox = tileSignalBox.getPos();
this.signalType = tileSignalBox.getSignalType();
}
@Override
protected void handle() {
- if (tileSignalPart != null) {
- getWorld().setBlockEntity(posSignalBox, tileSignalBox);
- getWorld().getBlockEntity(posSignalBox, TileSignalBox.class).setTileSignalPart(tileSignalPart);
- GuiSignalBoxSignalPart.open(tileSignalBox);
- } else if (tileComplexSignal != null) {
- getWorld().setBlockEntity(posSignalBox, tileSignalBox);
- getWorld().getBlockEntity(posSignalBox, TileSignalBox.class).setTileComplexSignal(tileComplexSignal);
- GuiSignalBoxComplexSignal.open(tileSignalBox);
+ if (signalType == 0) {
+ GuiSignalBoxSignalPart.open(getWorld().getBlockEntity(posSignalBox, TileSignalBox.class), signalId);
+ } else if (signalType == 1) {
+ GuiSignalBoxComplexSignal.open(getWorld().getBlockEntity(posSignalBox, TileSignalBox.class), signalId);
} else {
LandOfSignals.error("Can't open Signalbox, no tile entity given.");
}
diff --git a/src/main/java/net/landofrails/landofsignals/tile/TileComplexSignal.java b/src/main/java/net/landofrails/landofsignals/tile/TileComplexSignal.java
index bf59153f..76995f73 100644
--- a/src/main/java/net/landofrails/landofsignals/tile/TileComplexSignal.java
+++ b/src/main/java/net/landofrails/landofsignals/tile/TileComplexSignal.java
@@ -30,7 +30,7 @@ public class TileComplexSignal extends BlockEntity implements IManipulate {
@TagField("blockRotation")
private int blockRotate;
@TagField("id")
- private final String id;
+ private String id;
@TagField(value = "signalGroupStates", mapper = MapStringStringMapper.class)
private Map signalGroupStates = new HashMap<>();
// for server only
diff --git a/src/main/java/net/landofrails/landofsignals/tile/TileSignPart.java b/src/main/java/net/landofrails/landofsignals/tile/TileSignPart.java
index 35a6b361..3fe44917 100644
--- a/src/main/java/net/landofrails/landofsignals/tile/TileSignPart.java
+++ b/src/main/java/net/landofrails/landofsignals/tile/TileSignPart.java
@@ -25,7 +25,7 @@ public class TileSignPart extends BlockEntity implements IManipulate {
@TagField("blockRotation")
private int blockRotate;
@TagField("id")
- private final String id;
+ private String id;
@TagField
private String signText;
@TagField("offset")
diff --git a/src/main/java/net/landofrails/landofsignals/tile/TileSignalBox.java b/src/main/java/net/landofrails/landofsignals/tile/TileSignalBox.java
index 986e80fc..52bacad1 100644
--- a/src/main/java/net/landofrails/landofsignals/tile/TileSignalBox.java
+++ b/src/main/java/net/landofrails/landofsignals/tile/TileSignalBox.java
@@ -63,9 +63,6 @@ public class TileSignalBox extends BlockEntity implements IManipulate {
@Nullable
private Integer lastRedstone;
- private TileSignalPart tileSignalPart;
- private TileComplexSignal tileComplexSignal;
-
// client-only
private boolean highlighting = false;
@@ -111,6 +108,7 @@ public boolean onClick(Player player, Player.Hand hand, Facing facing, Vec3d hit
clearPreviousData();
}
+ this.markDirty();
new SignalBoxTileSignalPartPacket(tempSignalPart, this).sendToPlayer(player);
return true;
}
@@ -121,6 +119,7 @@ public boolean onClick(Player player, Player.Hand hand, Facing facing, Vec3d hit
clearPreviousData();
}
+ this.markDirty();
new SignalBoxTileSignalPartPacket(tempComplexSignal, this).sendToPlayer(player);
return true;
}
@@ -212,26 +211,6 @@ public void setTileSignalPartPos(final Vec3i pos, final byte signalType) {
markDirty();
}
- public void setTileSignalPart(final TileSignalPart tileSignalPart) {
- this.tileComplexSignal = null;
- this.tileSignalPart = tileSignalPart;
- this.signalType = 0;
- }
-
- public TileSignalPart getTileSignalPart() {
- return tileSignalPart;
- }
-
- public void setTileComplexSignal(TileComplexSignal tileComplexSignal) {
- this.tileSignalPart = null;
- this.tileComplexSignal = tileComplexSignal;
- this.signalType = 1;
- }
-
- public TileComplexSignal getTileComplexSignal() {
- return tileComplexSignal;
- }
-
@Nullable
public Byte getSignalType() {
return this.signalType;
diff --git a/src/main/java/net/landofrails/landofsignals/tile/TileSignalPart.java b/src/main/java/net/landofrails/landofsignals/tile/TileSignalPart.java
index c61f8f31..41ed3a1f 100644
--- a/src/main/java/net/landofrails/landofsignals/tile/TileSignalPart.java
+++ b/src/main/java/net/landofrails/landofsignals/tile/TileSignalPart.java
@@ -34,7 +34,7 @@ public class TileSignalPart extends BlockEntity implements IManipulate {
@TagField("blockRotation")
private int blockRotate;
@TagField("id")
- private final String id;
+ private String id;
@TagField("texturePath")
private String texturePath = "";
@TagField(value = "orderedStates", mapper = StringArrayMapper.class)
diff --git a/src/main/java/net/landofrails/landofsignals/tile/TileSignalPartAnimated.java b/src/main/java/net/landofrails/landofsignals/tile/TileSignalPartAnimated.java
index a435c4ef..7e37fa36 100644
--- a/src/main/java/net/landofrails/landofsignals/tile/TileSignalPartAnimated.java
+++ b/src/main/java/net/landofrails/landofsignals/tile/TileSignalPartAnimated.java
@@ -16,7 +16,7 @@ public class TileSignalPartAnimated extends BlockEntityTickable implements IMani
@TagField("blockRotation")
private int blockRotate;
@TagField("id")
- private final String id;
+ private String id;
@TagField("texturePath")
private String animationOrTextureName;
diff --git a/umc.json b/umc.json
index 4a4e2e73..dd7fe232 100644
--- a/umc.json
+++ b/umc.json
@@ -4,7 +4,7 @@
"cls": "LandOfSignals",
"name": "LandOfSignals",
"id": "landofsignals",
- "version": "1.3.2",
+ "version": "1.3.3",
"dependencies": {}
},
"umc": {