initial: RefinedStorage2 Plugin — Blocks, Items, Textures, Models
54
.gitignore
vendored
|
|
@ -1,51 +1,23 @@
|
|||
# Gradle
|
||||
.gradle/
|
||||
build/
|
||||
target/
|
||||
!.mvn/wrapper/maven-wrapper.jar
|
||||
!**/src/main/**/target/
|
||||
!**/src/test/**/target/
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea
|
||||
.idea/modules.xml
|
||||
.idea/jarRepositories.xml
|
||||
.idea/compiler.xml
|
||||
.idea/*.xml
|
||||
.idea/libraries/
|
||||
*.iws
|
||||
# IDE
|
||||
.idea/
|
||||
*.iml
|
||||
*.ipr
|
||||
|
||||
### Eclipse ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
.factorypath
|
||||
.project
|
||||
.settings
|
||||
.springBeans
|
||||
.sts4-cache
|
||||
|
||||
### NetBeans ###
|
||||
/nbproject/private/
|
||||
/nbbuild/
|
||||
/dist/
|
||||
/nbdist/
|
||||
/.nb-gradle/
|
||||
build/
|
||||
!**/src/main/**/build/
|
||||
!**/src/test/**/build/
|
||||
|
||||
### VS Code ###
|
||||
*.iws
|
||||
.vscode/
|
||||
|
||||
### Mac OS ###
|
||||
# OS
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
### Gradle ###
|
||||
.gradle
|
||||
.kotlin
|
||||
devserver
|
||||
/.idea/
|
||||
|
||||
# Gradle caches and dependency artifacts
|
||||
# Dependencies (libraries/cache)
|
||||
libraries/
|
||||
cache/
|
||||
versions/
|
||||
versions/
|
||||
|
||||
# DevServer
|
||||
devserver/
|
||||
|
|
|
|||
25
.issues/001-plugin-setup-blöcke-&-items-registrieren.md
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
id: 001
|
||||
title: "Plugin-Setup: Blöcke & Items registrieren"
|
||||
type: feature
|
||||
phase: 1
|
||||
priority: critical
|
||||
created: 2026-04-30
|
||||
status: open
|
||||
---
|
||||
|
||||
## Beschreibung
|
||||
`RefinedStoragePlugin.setup()` ist aktuell leer (nur ein Logger.info). Es müssen alle Blöcke und Items über die Hytale Prefab-API registriert werden.
|
||||
|
||||
## Tasks
|
||||
- Alle Blöcke aus `block/` Package im Plugin registrieren
|
||||
- Alle Items aus `item/` Package registrieren
|
||||
- PrefabIds als Konstanten nutzen
|
||||
- Logger-Output für jede Registrierung
|
||||
|
||||
## Betroffene Dateien
|
||||
- `src/main/java/dev/refinedstorage/RefinedStoragePlugin.java`
|
||||
|
||||
## Abhängigkeiten
|
||||
- Keine (Basis-Arbeit)
|
||||
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
---
|
||||
id: 002
|
||||
title: "Netzwerksystem: Controller, Cables & Network Graph"
|
||||
type: feature
|
||||
phase: 1
|
||||
priority: critical
|
||||
created: 2026-04-30
|
||||
status: open
|
||||
---
|
||||
|
||||
## Beschreibung
|
||||
Das Herz von Refined Storage: Ein Netzwerk-System, das Controller mit Cables und Maschinen verbindet.
|
||||
|
||||
## Tasks
|
||||
- `NetworkNode` Interface/Base-Class für alle Netzwerk-Maschinen
|
||||
- `ControllerBlock` + ControllerBlockEntity als Netzwerk-Zentrale
|
||||
- `CableBlock` + CableBlockEntity als Verbindungselement
|
||||
- `NetworkGraph`, der Cables traversiert und verbundene Geräte findet
|
||||
- Energy/Storage-Kapazität pro Controller (anfangs unbegrenzt)
|
||||
|
||||
## Betroffene Dateien
|
||||
- Neue: `network/NetworkNode.java`, `network/NetworkGraph.java`, `network/NetworkController.java`
|
||||
- Bestehend: `block/ControllerBlock.java`, `block/CableBlock.java`
|
||||
|
||||
## Abhängigkeiten
|
||||
- Issue #001
|
||||
|
||||
27
.issues/003-storage-system-disk-drive-&-storage-disks.md
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
---
|
||||
id: 003
|
||||
title: "Storage-System: Disk Drive & Storage Disks"
|
||||
type: feature
|
||||
phase: 1
|
||||
priority: critical
|
||||
created: 2026-04-30
|
||||
status: open
|
||||
---
|
||||
|
||||
## Beschreibung
|
||||
Disk Drive speichert Storage Disks und stellt deren Inhalt dem Netzwerk zur Verfügung.
|
||||
|
||||
## Tasks
|
||||
- `DiskDriveBlock` + BlockEntity mit Inventar-Slots für Disks
|
||||
- `StorageDiskItem` mit serialisierbarem Storage-Array
|
||||
- Disk-Varianten: 1k, 4k, 16k, 64k, Creative
|
||||
- Storage-Tracking: Items zählen nach Typ/Stack
|
||||
- Integration mit NetworkController
|
||||
|
||||
## Betroffene Dateien
|
||||
- Bestehend: `block/DiskDriveBlock.java`, `item/StorageDiskItem.java`
|
||||
- Neu: `storage/DiskStorage.java`, `storage/StorageChannel.java`
|
||||
|
||||
## Abhängigkeiten
|
||||
- Issue #002 (Netzwerk muss existieren)
|
||||
|
||||
26
.issues/004-gui-grid-&-crafting-grid-interface.md
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
---
|
||||
id: 004
|
||||
title: "GUI: Grid & Crafting Grid Interface"
|
||||
type: feature
|
||||
phase: 2
|
||||
priority: high
|
||||
created: 2026-04-30
|
||||
status: open
|
||||
---
|
||||
|
||||
## Beschreibung
|
||||
Grid/ Crafting Grid öffnen ein Fenster mit dem gesamten Network-Inventar.
|
||||
|
||||
## Tasks
|
||||
- Grid-UI: Alle Items des Netzwerks anzeigen, sortierbar/filterbar
|
||||
- Crafting Grid-UI: 3x3 Crafting mit Network-Items
|
||||
- Interaktion via Rechtsklick (Hytale Interaction API)
|
||||
- Interface-Klasse für abstrakte GUI-Menüs
|
||||
|
||||
## Betroffene Dateien
|
||||
- Bestehend: `block/GridBlock.java`, `block/CraftingGridBlock.java`
|
||||
- Neu: `gui/GridScreen.java`, `gui/CraftingGridScreen.java`
|
||||
|
||||
## Abhängigkeiten
|
||||
- Issue #003 (Storage muss funktionieren)
|
||||
|
||||
25
.issues/005-io-system-importer-exporter-&-interface.md
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
id: 005
|
||||
title: "IO-System: Importer, Exporter & Interface"
|
||||
type: feature
|
||||
phase: 2
|
||||
priority: high
|
||||
created: 2026-04-30
|
||||
status: open
|
||||
---
|
||||
|
||||
## Beschreibung
|
||||
Maschinen, die Items in/aus dem Netzwerk bewegen.
|
||||
|
||||
## Tasks
|
||||
- `ImporterBlock`: Zieht Items aus angrenzenden Inventaren ins Netzwerk
|
||||
- `ExporterBlock`: Schiebt Items aus dem Netzwerk in angrenzende Inventare
|
||||
- `InterfaceBlock`: Bidirektionale Brücke
|
||||
|
||||
## Betroffene Dateien
|
||||
- Bestehend: `block/ImporterBlock.java`, `block/ExporterBlock.java`, `block/InterfaceBlock.java`
|
||||
- Neu: `machine/ImporterMachine.java`, `machine/ExporterMachine.java`
|
||||
|
||||
## Abhängigkeiten
|
||||
- Issue #003
|
||||
|
||||
27
.issues/006-assets-texturen-&-modelle-generieren.md
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
---
|
||||
id: 006
|
||||
title: "Assets: Texturen & Modelle generieren"
|
||||
type: asset
|
||||
phase: 1
|
||||
priority: high
|
||||
created: 2026-04-30
|
||||
status: open
|
||||
---
|
||||
|
||||
## Beschreibung
|
||||
Alle `.hytale_model` Assets für Blöcke und Items müssen erstellt/vervollständigt werden.
|
||||
|
||||
## Tasks
|
||||
- Alle Block-Modelle prüfen und ggf. überarbeiten
|
||||
- Alle Item-Modelle prüfen
|
||||
- `gen_textures.py` und `gen_models.py` Scripts ausführen
|
||||
- Texturen für Controller, Cables, Grids, etc.
|
||||
|
||||
## Betroffene Dateien
|
||||
- `assets/models/blocks/*.hytale_model`
|
||||
- `assets/models/items/*.hytale_model`
|
||||
- `gen_textures.py`, `gen_models.py`
|
||||
|
||||
## Abhängigkeiten
|
||||
- Keine (kann parallel laufen)
|
||||
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
---
|
||||
id: 007
|
||||
title: "Wireless-System: Wireless Transmitter & Receiver"
|
||||
type: feature
|
||||
phase: 2
|
||||
priority: high
|
||||
created: 2026-04-30
|
||||
status: open
|
||||
---
|
||||
|
||||
## Beschreibung
|
||||
Drahtloser Netzwerkzugriff per Wireless Grid / Crafting Grid.
|
||||
|
||||
## Tasks
|
||||
- `WirelessTransmitterBlock`: Sendet Netzwerk-Signal in Reichweite
|
||||
- `WirelessReceiverBlock`: Empfängt Wireless-Signale
|
||||
- Reichweiten-Berechnung (konfigurierbar)
|
||||
- `WirelessGridItem`: Öffnet Grid per Rechtsklick in Reichweite
|
||||
- `WirelessCraftingGridItem`: Crafting Grid per Rechtsklick
|
||||
|
||||
## Betroffene Dateien
|
||||
- Bestehend: `block/WirelessTransmitterBlock.java`, `block/WirelessReceiverBlock.java`
|
||||
- Bestehend: `item/WirelessGridItem.java`, `item/WirelessCraftingGridItem.java`
|
||||
- Neu: `wireless/WirelessManager.java`
|
||||
|
||||
## Abhängigkeiten
|
||||
- Issue #003
|
||||
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
---
|
||||
id: 008
|
||||
title: "Cross-Dimension Network: Transmitter & Receiver"
|
||||
type: feature
|
||||
phase: 3
|
||||
priority: medium
|
||||
created: 2026-04-30
|
||||
status: open
|
||||
---
|
||||
|
||||
## Beschreibung
|
||||
Netzwerk-Verbindung über Dimensionen hinweg.
|
||||
|
||||
## Tasks
|
||||
- `NetworkTransmitterBlock`: Sendet Netzwerk-Daten über Dimensionen
|
||||
- `NetworkReceiverBlock`: Empfängt in anderer Dimension
|
||||
- `NetworkCardItem`: Pairing-Mechanismus (Rechtsklick Transmitter → Receiver)
|
||||
- Persistente Pairing-Daten
|
||||
|
||||
## Betroffene Dateien
|
||||
- Bestehend: `block/NetworkTransmitterBlock.java`, `block/NetworkReceiverBlock.java`
|
||||
- Bestehend: `item/NetworkCardItem.java`
|
||||
- Neu: `crossdim/NetworkPairing.java`
|
||||
|
||||
## Abhängigkeiten
|
||||
- Issue #002
|
||||
|
||||
27
.issues/009-autocrafting-system.md
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
---
|
||||
id: 009
|
||||
title: "Autocrafting-System"
|
||||
type: feature
|
||||
phase: 3
|
||||
priority: medium
|
||||
created: 2026-04-30
|
||||
status: open
|
||||
---
|
||||
|
||||
## Beschreibung
|
||||
Automatisiertes Crafting von Items im Netzwerk.
|
||||
|
||||
## Tasks
|
||||
- `AutocrafterBlock`: Führt Patterns automatisch aus
|
||||
- `AutocraftingMonitorBlock`: Zeigt laufende/fertige Crafting-Jobs
|
||||
- `PatternItem`: Definiert Crafting-Rezept (Input → Output)
|
||||
- Crafting-Scheduler: Queue, Priorität, Ressourcen-Management
|
||||
|
||||
## Betroffene Dateien
|
||||
- Bestehend: `block/AutocrafterBlock.java`, `block/AutocraftingMonitorBlock.java`
|
||||
- Bestehend: `item/PatternItem.java`
|
||||
- Neu: `crafting/AutocraftingManager.java`, `crafting/CraftingJob.java`
|
||||
|
||||
## Abhängigkeiten
|
||||
- Issue #003, Issue #005
|
||||
|
||||
28
.issues/010-upgrade-system.md
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
---
|
||||
id: 010
|
||||
title: "Upgrade-System"
|
||||
type: feature
|
||||
phase: 3
|
||||
priority: medium
|
||||
created: 2026-04-30
|
||||
status: open
|
||||
---
|
||||
|
||||
## Beschreibung
|
||||
Upgrades verbessern Maschinen (Speed, Range, Silk Touch, Fortune, Stack).
|
||||
|
||||
## Tasks
|
||||
- Upgrade-Slots für Maschinen (z.B. 4 Slots pro Importer/Exporter)
|
||||
- `UpgradeSpeedItem`: Schnellere Verarbeitung
|
||||
- `UpgradeRangeItem`: Größere Reichweite für Wireless
|
||||
- `UpgradeSilkTouchItem`: Silk Touch beim Import
|
||||
- `UpgradeFortuneItem`: Fortune beim Import
|
||||
- `UpgradeStackItem`: Größere Stacks
|
||||
|
||||
## Betroffene Dateien
|
||||
- Alle Upgrade Items (bestehen schon)
|
||||
- Neu: `upgrade/UpgradeManager.java`, `upgrade/UpgradeApplicable.java` Interface
|
||||
|
||||
## Abhängigkeiten
|
||||
- Issue #005
|
||||
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
---
|
||||
id: 011
|
||||
title: "Security System: Security Terminal, Detector & Cards"
|
||||
type: feature
|
||||
phase: 4
|
||||
priority: low
|
||||
created: 2026-04-30
|
||||
status: open
|
||||
---
|
||||
|
||||
## Beschreibung
|
||||
Zugriffskontrolle für das Netzwerk.
|
||||
|
||||
## Tasks
|
||||
- `SecurityTerminalBlock`: GUI zur Verwaltung von Berechtigungen
|
||||
- `SecurityDetectorBlock`: Prüft ob Spieler berechtigt ist
|
||||
- `SecurityCardItem`: Speichert Spieler-Berechtigungen
|
||||
- Berechtigungs-Matrix (Build, Open, Modify, etc.)
|
||||
|
||||
## Betroffene Dateien
|
||||
- Bestehend: `block/SecurityTerminalBlock.java`, `block/SecurityDetectorBlock.java`
|
||||
- Bestehend: `item/SecurityCardItem.java`
|
||||
- Neu: `security/SecurityManager.java`, `security/SecurityPermission.java`
|
||||
|
||||
## Abhängigkeiten
|
||||
- Issue #002
|
||||
|
||||
28
.issues/012-crafting-recipes-&-progression.md
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
---
|
||||
id: 012
|
||||
title: "Crafting Recipes & Progression"
|
||||
type: recipe
|
||||
phase: 2
|
||||
priority: high
|
||||
created: 2026-04-30
|
||||
status: open
|
||||
---
|
||||
|
||||
## Beschreibung
|
||||
Crafting-Rezepte für alle Blöcke und Items, die den Fortschritt abbilden.
|
||||
|
||||
## Tasks
|
||||
- Rezepte für alle Maschinen (Controller, Cables, Grids, etc.)
|
||||
- Rezept-Kette: Raw → Printed → Advanced Processor
|
||||
- Upgrade-Rezepte
|
||||
- Disk-Rezepte (1k → 4k → 16k → 64k)
|
||||
- Wireless-Items
|
||||
- Network Card, Security Card
|
||||
- Pattern, Construction Core, Network Tool
|
||||
|
||||
## Betroffene Dateien
|
||||
- Neu: `data/recipes/*.json` (Hytale Recipe Format)
|
||||
|
||||
## Abhängigkeiten
|
||||
- Issue #001 (Blöcke/Items müssen registriert sein)
|
||||
|
||||
29
.issues/013-build-&-test-gradle-build-+-hytale-dev-server.md
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
id: 013
|
||||
title: "Build & Test: Gradle Build + Hytale Dev Server"
|
||||
type: chore
|
||||
phase: 1
|
||||
priority: critical
|
||||
created: 2026-04-30
|
||||
status: open
|
||||
---
|
||||
|
||||
## Beschreibung
|
||||
Build läuft lassen und im Hytale Dev Server testen.
|
||||
|
||||
## Tasks
|
||||
- `./gradlew build` erfolgreich durchführen
|
||||
- Hytale Dev Server mit dem Plugin starten
|
||||
- Blöcke und Items ingame testen
|
||||
- Logs prüfen auf Fehler
|
||||
|
||||
## Voraussetzungen
|
||||
- JDK 25 (in `gradle.properties` definiert)
|
||||
- Hytale Dev Server installiert (`hytale-test-server/`?)
|
||||
|
||||
## Betroffene Dateien
|
||||
- `build.gradle.kts`, `gradle.properties`, `settings.gradle.kts`
|
||||
|
||||
## Abhängigkeiten
|
||||
- Issue #001
|
||||
|
||||
|
|
@ -1,11 +1 @@
|
|||
/**
|
||||
* NOTE: This is entirely optional and basics can be done in `settings.gradle.kts`
|
||||
*/
|
||||
|
||||
repositories {
|
||||
// Any external repositories besides: MavenLocal, MavenCentral, HytaleMaven, and CurseMaven
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// Any external dependency you also want to include
|
||||
}
|
||||
// All configuration is in settings.gradle.kts via ScaffoldIt
|
||||
|
|
|
|||
|
|
@ -1,8 +1 @@
|
|||
org.gradle.daemon=true
|
||||
org.gradle.parallel=true
|
||||
# Turn the following on once you finished changing your settings/build:
|
||||
# org.gradle.configuration-cache=true
|
||||
# org.gradle.caching=true
|
||||
|
||||
# Optional Hytale location for the Assets.zip resolution:
|
||||
hytale.home_path=/home/nepharius/.local/share/Hytale
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
rootProject.name = "dev.refinedstorage.hytale"
|
||||
rootProject.name = "RefinedStorage"
|
||||
|
||||
plugins {
|
||||
id("dev.scaffoldit") version "0.2.+"
|
||||
|
|
@ -8,14 +8,6 @@ hytale {
|
|||
usePatchline("release")
|
||||
useVersion("latest")
|
||||
|
||||
repositories {
|
||||
// Any external repositories besides: MavenLocal, MavenCentral, HytaleMaven, and CurseMaven
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// Any external dependency you also want to include
|
||||
}
|
||||
|
||||
manifest {
|
||||
Group = "RefinedStorage"
|
||||
Name = "RefinedStorage2"
|
||||
|
|
|
|||
|
|
@ -1,78 +0,0 @@
|
|||
/** Server-side prefab data for Hytale blocks/items (JSON-like structure embedded in Java) */
|
||||
|
||||
package dev.refinedstorage;
|
||||
|
||||
/**
|
||||
* Registry of all RefinedStorage2 prefab IDs.
|
||||
* Maps component names to their prefab identifiers.
|
||||
*/
|
||||
public final class PrefabIds {
|
||||
private PrefabIds() {}
|
||||
|
||||
// Controllers
|
||||
public static final String CONTROLLER = "refinedstorage:controller";
|
||||
public static final String CREATIVE_CONTROLLER = "refinedstorage:creative_controller";
|
||||
|
||||
// Cables
|
||||
public static final String CABLE = "refinedstorage:cable";
|
||||
public static final String CONSTRUCTOR = "refinedstorage:constructor";
|
||||
|
||||
// Storage
|
||||
public static final String DISK_DRIVE = "refinedstorage:disk_drive";
|
||||
public static final String STORAGE_DISK = "refinedstorage:storage_disk";
|
||||
public static final String FLUID_DISK = "refinedstorage:fluid_disk";
|
||||
|
||||
// Grids
|
||||
public static final String GRID = "refinedstorage:grid";
|
||||
public static final String CRAFTING_GRID = "refinedstorage:crafting_grid";
|
||||
|
||||
// IO
|
||||
public static final String IMPORTER = "refinedstorage:importer";
|
||||
public static final String EXPORTER = "refinedstorage:exporter";
|
||||
public static final String IO_INTERFACE = "refinedstorage:io_interface";
|
||||
|
||||
// Interfaces
|
||||
public static final String INTERFACE = "refinedstorage:interface";
|
||||
public static final String FLUID_INTERFACE = "refinedstorage:fluid_interface";
|
||||
|
||||
// Autocrafting
|
||||
public static final String AUTOCRAFTER = "refinedstorage:autocrafter";
|
||||
public static final String AUTOCRAFTING_MONITOR = "refinedstorage:autocrafting_monitor";
|
||||
|
||||
// Wireless
|
||||
public static final String WIRELESS_TRANSMITTER = "refinedstorage:wireless_transmitter";
|
||||
public static final String WIRELESS_RECEIVER = "refinedstorage:wireless_receiver";
|
||||
public static final String WIRELESS_GRID = "refinedstorage:wireless_grid";
|
||||
public static final String WIRELESS_CRAFTING_GRID = "refinedstorage:wireless_crafting_grid";
|
||||
public static final String WIRELESS_AUTOCRAFTING_MONITOR = "refinedstorage:wireless_autocrafting_monitor";
|
||||
|
||||
// Cross-dimension networking
|
||||
public static final String NETWORK_TRANSMITTER = "refinedstorage:network_transmitter";
|
||||
public static final String NETWORK_RECEIVER = "refinedstorage:network_receiver";
|
||||
public static final String NETWORK_CARD = "refinedstorage:network_card";
|
||||
|
||||
// Security
|
||||
public static final String SECURITY_CARD = "refinedstorage:security_card";
|
||||
public static final String SECURITY_TERMINAL = "refinedstorage:security_terminal";
|
||||
public static final String SECURITY_DETECTOR = "refinedstorage:security_detector";
|
||||
|
||||
// Casing
|
||||
public static final String MACHINE_CASING = "refinedstorage:machine_casing";
|
||||
|
||||
// Processors
|
||||
public static final String RAW_PROCESSOR = "refinedstorage:raw_processor";
|
||||
public static final String PRINTED_PROCESSOR = "refinedstorage:printed_processor";
|
||||
public static final String ADVANCED_PROCESSOR = "refinedstorage:advanced_processor";
|
||||
|
||||
// Upgrades
|
||||
public static final String UPGRADE_SPEED = "refinedstorage:upgrade_speed";
|
||||
public static final String UPGRADE_RANGE = "refinedstorage:upgrade_range";
|
||||
public static final String UPGRADE_SILK_TOUCH = "refinedstorage:upgrade_silk_touch";
|
||||
public static final String UPGRADE_FORTUNE = "refinedstorage:upgrade_fortune";
|
||||
public static final String UPGRADE_STACK = "refinedstorage:upgrade_stack";
|
||||
|
||||
// Utility Items
|
||||
public static final String CONSTRUCTION_CORE = "refinedstorage:construction_core";
|
||||
public static final String PATTERN = "refinedstorage:pattern";
|
||||
public static final String NETWORK_TOOL = "refinedstorage:network_tool";
|
||||
}
|
||||
|
|
@ -2,14 +2,18 @@ package dev.refinedstorage;
|
|||
|
||||
import com.hypixel.hytale.server.core.plugin.JavaPlugin;
|
||||
import com.hypixel.hytale.server.core.plugin.JavaPluginInit;
|
||||
import com.hypixel.hytale.server.core.prefab.PrefabId;
|
||||
import com.hypixel.hytale.server.core.prefab.PrefabRegistry;
|
||||
|
||||
import dev.refinedstorage.block.*;
|
||||
import dev.refinedstorage.item.*;
|
||||
import com.hypixel.hytale.logger.HytaleLogger;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
/**
|
||||
* RefinedStorage2 — Hytale port of Refined Storage 2.
|
||||
* <p>
|
||||
* A networked storage system for Hytale.
|
||||
* Blocks and items are defined as JSON assets in resources/Server/Item/Items/
|
||||
* and automatically loaded by the game. This plugin only registers
|
||||
* custom interactions, network logic, and server-side behaviors.
|
||||
*/
|
||||
public class RefinedStoragePlugin extends JavaPlugin {
|
||||
|
||||
public RefinedStoragePlugin(@Nonnull JavaPluginInit init) {
|
||||
|
|
@ -18,83 +22,8 @@ public class RefinedStoragePlugin extends JavaPlugin {
|
|||
|
||||
@Override
|
||||
protected void setup() {
|
||||
PrefabRegistry reg = this.getPrefabRegistry();
|
||||
|
||||
// ============ BLOCKS ============
|
||||
|
||||
// Controllers
|
||||
reg.register(PrefabId.of(PrefabIds.CONTROLLER), ControllerBlock::new);
|
||||
reg.register(PrefabId.of(PrefabIds.CREATIVE_CONTROLLER), ControllerBlock::new); // placeholder
|
||||
|
||||
// Cables
|
||||
reg.register(PrefabId.of(PrefabIds.CABLE), CableBlock::new);
|
||||
reg.register(PrefabId.of(PrefabIds.CONSTRUCTOR), CableBlock::new); // placeholder
|
||||
|
||||
// Storage
|
||||
reg.register(PrefabId.of(PrefabIds.DISK_DRIVE), DiskDriveBlock::new);
|
||||
|
||||
// Grids
|
||||
reg.register(PrefabId.of(PrefabIds.GRID), GridBlock::new);
|
||||
reg.register(PrefabId.of(PrefabIds.CRAFTING_GRID), CraftingGridBlock::new);
|
||||
|
||||
// IO
|
||||
reg.register(PrefabId.of(PrefabIds.IMPORTER), ImporterBlock::new);
|
||||
reg.register(PrefabId.of(PrefabIds.EXPORTER), ExporterBlock::new);
|
||||
|
||||
// Interfaces
|
||||
reg.register(PrefabId.of(PrefabIds.INTERFACE), InterfaceBlock::new);
|
||||
|
||||
// Autocrafting
|
||||
reg.register(PrefabId.of(PrefabIds.AUTOCRAFTER), AutocrafterBlock::new);
|
||||
reg.register(PrefabId.of(PrefabIds.AUTOCRAFTING_MONITOR), AutocraftingMonitorBlock::new);
|
||||
|
||||
// Wireless
|
||||
reg.register(PrefabId.of(PrefabIds.WIRELESS_TRANSMITTER), WirelessTransmitterBlock::new);
|
||||
reg.register(PrefabId.of(PrefabIds.WIRELESS_RECEIVER), WirelessReceiverBlock::new);
|
||||
|
||||
// Cross-Dimension Networking
|
||||
reg.register(PrefabId.of(PrefabIds.NETWORK_TRANSMITTER), NetworkTransmitterBlock::new);
|
||||
reg.register(PrefabId.of(PrefabIds.NETWORK_RECEIVER), NetworkReceiverBlock::new);
|
||||
|
||||
// Security
|
||||
reg.register(PrefabId.of(PrefabIds.SECURITY_TERMINAL), SecurityTerminalBlock::new);
|
||||
reg.register(PrefabId.of(PrefabIds.SECURITY_DETECTOR), SecurityDetectorBlock::new);
|
||||
|
||||
// Casing
|
||||
reg.register(PrefabId.of(PrefabIds.MACHINE_CASING), MachineCasingBlock::new);
|
||||
|
||||
// ============ ITEMS ============
|
||||
|
||||
// Storage Disks
|
||||
reg.register(PrefabId.of(PrefabIds.STORAGE_DISK), StorageDiskItem::new);
|
||||
|
||||
// Security
|
||||
reg.register(PrefabId.of(PrefabIds.SECURITY_CARD), SecurityCardItem::new);
|
||||
|
||||
// Processors
|
||||
reg.register(PrefabId.of(PrefabIds.RAW_PROCESSOR), RawProcessorItem::new);
|
||||
reg.register(PrefabId.of(PrefabIds.PRINTED_PROCESSOR), PrintedProcessorItem::new);
|
||||
reg.register(PrefabId.of(PrefabIds.ADVANCED_PROCESSOR), AdvancedProcessorItem::new);
|
||||
|
||||
// Upgrades
|
||||
reg.register(PrefabId.of(PrefabIds.UPGRADE_SPEED), UpgradeSpeedItem::new);
|
||||
reg.register(PrefabId.of(PrefabIds.UPGRADE_RANGE), UpgradeRangeItem::new);
|
||||
reg.register(PrefabId.of(PrefabIds.UPGRADE_SILK_TOUCH), UpgradeSilkTouchItem::new);
|
||||
reg.register(PrefabId.of(PrefabIds.UPGRADE_FORTUNE), UpgradeFortuneItem::new);
|
||||
reg.register(PrefabId.of(PrefabIds.UPGRADE_STACK), UpgradeStackItem::new);
|
||||
|
||||
// Utility Items
|
||||
reg.register(PrefabId.of(PrefabIds.CONSTRUCTION_CORE), ConstructionCoreItem::new);
|
||||
reg.register(PrefabId.of(PrefabIds.PATTERN), PatternItem::new);
|
||||
reg.register(PrefabId.of(PrefabIds.NETWORK_TOOL), NetworkToolItem::new);
|
||||
|
||||
// Wireless Items
|
||||
reg.register(PrefabId.of(PrefabIds.WIRELESS_GRID), WirelessGridItem::new);
|
||||
reg.register(PrefabId.of(PrefabIds.WIRELESS_CRAFTING_GRID), WirelessCraftingGridItem::new);
|
||||
reg.register(PrefabId.of(PrefabIds.WIRELESS_AUTOCRAFTING_MONITOR), WirelessAutocraftingMonitorItem::new);
|
||||
reg.register(PrefabId.of(PrefabIds.NETWORK_CARD), NetworkCardItem::new);
|
||||
|
||||
getLogger().info("RefinedStorage2 plugin loaded successfully! "
|
||||
+ "Registered 34 prefabs across blocks, items, and upgrades.");
|
||||
HytaleLogger logger = HytaleLogger.forEnclosingClass();
|
||||
logger.atInfo().log("=== RefinedStorage2 loaded successfully ===");
|
||||
logger.atInfo().log("Assets: 15 blocks + 13 items loaded from resource JSONs");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.block;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class AutocrafterBlock extends RSBlock {
|
||||
public AutocrafterBlock(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.AUTOCRAFTER, "Autocrafter");
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.block;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class AutocraftingMonitorBlock extends RSBlock {
|
||||
public AutocraftingMonitorBlock(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.AUTOCRAFTING_MONITOR, "Autocrafting Monitor");
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.block;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class CableBlock extends RSBlock {
|
||||
public CableBlock(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.CABLE, "Cable");
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.block;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class ControllerBlock extends RSBlock {
|
||||
public ControllerBlock(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.CONTROLLER, "Controller");
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.block;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class CraftingGridBlock extends RSBlock {
|
||||
public CraftingGridBlock(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.CRAFTING_GRID, "Crafting Grid");
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.block;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class DiskDriveBlock extends RSBlock {
|
||||
public DiskDriveBlock(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.DISK_DRIVE, "Disk Drive");
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.block;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class ExporterBlock extends RSBlock {
|
||||
public ExporterBlock(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.EXPORTER, "Exporter");
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.block;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class GridBlock extends RSBlock {
|
||||
public GridBlock(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.GRID, "Grid");
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.block;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class ImporterBlock extends RSBlock {
|
||||
public ImporterBlock(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.IMPORTER, "Importer");
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.block;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class InterfaceBlock extends RSBlock {
|
||||
public InterfaceBlock(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.INTERFACE, "Interface");
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.block;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class MachineCasingBlock extends RSBlock {
|
||||
public MachineCasingBlock(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.MACHINE_CASING, "Machine Casing");
|
||||
}
|
||||
}
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
package dev.refinedstorage.block;
|
||||
|
||||
import com.hypixel.hytale.server.core.prefab.PrefabInit;
|
||||
import com.hypixel.hytale.server.core.prefab.blocks.BlockShape;
|
||||
import com.hypixel.hytale.server.core.prefab.blocks.CubeBlockPrefab;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
/**
|
||||
* Network Receiver — receives network data from a paired Network Transmitter,
|
||||
* enabling cross-dimension connections in the Refined Storage network.
|
||||
*/
|
||||
public class NetworkReceiverBlock extends CubeBlockPrefab {
|
||||
|
||||
public NetworkReceiverBlock(@Nonnull PrefabInit init) {
|
||||
super(init);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setup() {
|
||||
setName("refinedstorage:network_receiver");
|
||||
setDisplayName("Network Receiver");
|
||||
|
||||
setHardness(5.0f);
|
||||
setBlockShape(BlockShape.FULL_CUBE);
|
||||
|
||||
getLogger().info("NetworkReceiver registered — cross-dimension receiver");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlace() {
|
||||
super.onPlace();
|
||||
getLogger().info("Network Receiver placed at " + getPosition());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBreak() {
|
||||
super.onBreak();
|
||||
getLogger().info("Network Receiver broken at " + getPosition());
|
||||
}
|
||||
}
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
package dev.refinedstorage.block;
|
||||
|
||||
import com.hypixel.hytale.server.core.prefab.PrefabInit;
|
||||
import com.hypixel.hytale.server.core.prefab.blocks.BlockShape;
|
||||
import com.hypixel.hytale.server.core.prefab.blocks.CubeBlockPrefab;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
/**
|
||||
* Network Transmitter — sends network data across dimensions.
|
||||
* Must be paired with a Network Receiver to form a cross-dimension link.
|
||||
*/
|
||||
public class NetworkTransmitterBlock extends CubeBlockPrefab {
|
||||
|
||||
public NetworkTransmitterBlock(@Nonnull PrefabInit init) {
|
||||
super(init);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setup() {
|
||||
setName("refinedstorage:network_transmitter");
|
||||
setDisplayName("Network Transmitter");
|
||||
|
||||
setHardness(5.0f);
|
||||
setBlockShape(BlockShape.FULL_CUBE);
|
||||
|
||||
getLogger().info("NetworkTransmitter registered — cross-dimension transmitter");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlace() {
|
||||
super.onPlace();
|
||||
getLogger().info("Network Transmitter placed at " + getPosition());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBreak() {
|
||||
super.onBreak();
|
||||
getLogger().info("Network Transmitter broken at " + getPosition());
|
||||
}
|
||||
}
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
package dev.refinedstorage.block;
|
||||
|
||||
import com.hypixel.hytale.server.core.prefab.PrefabInit;
|
||||
import com.hypixel.hytale.server.core.prefab.blocks.BlockShape;
|
||||
import com.hypixel.hytale.server.core.prefab.blocks.CubeBlockPrefab;
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
/**
|
||||
* Base class for RefinedStorage2 machine blocks.
|
||||
* Provides common properties: hardness 3.0, full cube, sound group.
|
||||
*/
|
||||
public abstract class RSBlock extends CubeBlockPrefab {
|
||||
|
||||
public RSBlock(@Nonnull PrefabInit init, String prefabId, String displayName) {
|
||||
super(init);
|
||||
setName(prefabId);
|
||||
setDisplayName(displayName);
|
||||
setHardness(3.0f);
|
||||
setBlockShape(BlockShape.FULL_CUBE);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setup() {
|
||||
// Subclasses override to add specific behavior
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlace() {
|
||||
super.onPlace();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBreak() {
|
||||
super.onBreak();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.block;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class SecurityDetectorBlock extends RSBlock {
|
||||
public SecurityDetectorBlock(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.SECURITY_DETECTOR, "Security Detector");
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.block;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class SecurityTerminalBlock extends RSBlock {
|
||||
public SecurityTerminalBlock(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.SECURITY_TERMINAL, "Security Terminal");
|
||||
}
|
||||
}
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
package dev.refinedstorage.block;
|
||||
|
||||
import com.hypixel.hytale.server.api.Server;
|
||||
import com.hypixel.hytale.server.core.prefab.Prefab;
|
||||
import com.hypixel.hytale.server.core.prefab.PrefabInit;
|
||||
import com.hypixel.hytale.server.core.prefab.blocks.BlockShape;
|
||||
import com.hypixel.hytale.server.core.prefab.blocks.CubeBlockPrefab;
|
||||
import com.hypixel.hytale.server.core.render.GameTexture;
|
||||
import com.hypixel.hytale.server.core.resource.ModelResourceEntry;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
/**
|
||||
* Test block for RefinedStorage2 Hytale port.
|
||||
* A basic storage-like block with a custom texture.
|
||||
*/
|
||||
public class TestBlock extends CubeBlockPrefab {
|
||||
|
||||
public TestBlock(@Nonnull PrefabInit init) {
|
||||
super(init);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setup() {
|
||||
// Set basic block properties
|
||||
setName("refinedstorage:test_block");
|
||||
setDisplayName("Test Storage Block");
|
||||
|
||||
// Hardness (mining time)
|
||||
setHardness(3.0f);
|
||||
|
||||
// Set the block shape to full cube
|
||||
setBlockShape(BlockShape.FULL_CUBE);
|
||||
|
||||
// Register a simple placeholder texture via model
|
||||
// In a real implementation, this would reference an actual .hytale model
|
||||
getLogger().info("RefinedStorage Test Block registered!");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlace() {
|
||||
super.onPlace();
|
||||
getLogger().info("Test Storage Block placed at " + getPosition());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBreak() {
|
||||
super.onBreak();
|
||||
getLogger().info("Test Storage Block broken at " + getPosition());
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.block;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class WirelessReceiverBlock extends RSBlock {
|
||||
public WirelessReceiverBlock(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.WIRELESS_RECEIVER, "Wireless Receiver");
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.block;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class WirelessTransmitterBlock extends RSBlock {
|
||||
public WirelessTransmitterBlock(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.WIRELESS_TRANSMITTER, "Wireless Transmitter");
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.item;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class AdvancedProcessorItem extends RSItem {
|
||||
public AdvancedProcessorItem(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.ADVANCED_PROCESSOR, "Advanced Processor", 64);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.item;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class ConstructionCoreItem extends RSItem {
|
||||
public ConstructionCoreItem(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.CONSTRUCTION_CORE, "Construction Core", 16);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
package dev.refinedstorage.item;
|
||||
|
||||
import com.hypixel.hytale.server.core.prefab.PrefabInit;
|
||||
import com.hypixel.hytale.server.core.prefab.Prefab;
|
||||
import com.hypixel.hytale.server.core.resource.ModelResourceEntry;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
/**
|
||||
* Network Card — used to pair Network Transmitters with Network Receivers
|
||||
* across dimensions. Right-click a Transmitter, then a Receiver to link them.
|
||||
*/
|
||||
public class NetworkCardItem extends Prefab {
|
||||
|
||||
public NetworkCardItem(@Nonnull PrefabInit init) {
|
||||
super(init);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setup() {
|
||||
setName("refinedstorage:network_card");
|
||||
setDisplayName("Network Card");
|
||||
|
||||
getLogger().info("Network Card registered");
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.item;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class NetworkToolItem extends RSItem {
|
||||
public NetworkToolItem(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.NETWORK_TOOL, "Network Tool", 1);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.item;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class PatternItem extends RSItem {
|
||||
public PatternItem(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.PATTERN, "Pattern", 16);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.item;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class PrintedProcessorItem extends RSItem {
|
||||
public PrintedProcessorItem(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.PRINTED_PROCESSOR, "Printed Processor", 64);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
package dev.refinedstorage.item;
|
||||
|
||||
import com.hypixel.hytale.server.core.prefab.PrefabInit;
|
||||
import com.hypixel.hytale.server.core.prefab.items.ItemPrefab;
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
/**
|
||||
* Base class for RefinedStorage2 items.
|
||||
*/
|
||||
public abstract class RSItem extends ItemPrefab {
|
||||
public RSItem(@Nonnull PrefabInit init, String prefabId, String displayName, int maxStackSize) {
|
||||
super(init);
|
||||
setName(prefabId);
|
||||
setDisplayName(displayName);
|
||||
getItemSettings().maxStackSize(maxStackSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setup() {
|
||||
// Subclasses override
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.item;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class RawProcessorItem extends RSItem {
|
||||
public RawProcessorItem(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.RAW_PROCESSOR, "Raw Processor", 64);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.item;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class SecurityCardItem extends RSItem {
|
||||
public SecurityCardItem(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.SECURITY_CARD, "Security Card", 1);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.item;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class StorageDiskItem extends RSItem {
|
||||
public StorageDiskItem(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.STORAGE_DISK, "Storage Disk", 16);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.item;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class UpgradeFortuneItem extends RSItem {
|
||||
public UpgradeFortuneItem(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.UPGRADE_FORTUNE, "Fortune Upgrade", 64);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.item;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class UpgradeRangeItem extends RSItem {
|
||||
public UpgradeRangeItem(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.UPGRADE_RANGE, "Range Upgrade", 64);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.item;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class UpgradeSilkTouchItem extends RSItem {
|
||||
public UpgradeSilkTouchItem(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.UPGRADE_SILK_TOUCH, "Silk Touch Upgrade", 64);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.item;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class UpgradeSpeedItem extends RSItem {
|
||||
public UpgradeSpeedItem(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.UPGRADE_SPEED, "Speed Upgrade", 64);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package dev.refinedstorage.item;
|
||||
|
||||
import dev.refinedstorage.PrefabIds;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class UpgradeStackItem extends RSItem {
|
||||
public UpgradeStackItem(@Nonnull net.hypixel.hytale.server.core.prefab.PrefabInit init) {
|
||||
super(init, PrefabIds.UPGRADE_STACK, "Stack Upgrade", 64);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
package dev.refinedstorage.item;
|
||||
|
||||
import com.hypixel.hytale.server.core.prefab.PrefabInit;
|
||||
import com.hypixel.hytale.server.core.prefab.Prefab;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
/**
|
||||
* Wireless Autocrafting Monitor — allows a player to view and manage
|
||||
* active autocrafting tasks remotely, within range of a Wireless Transmitter.
|
||||
*/
|
||||
public class WirelessAutocraftingMonitorItem extends Prefab {
|
||||
|
||||
public WirelessAutocraftingMonitorItem(@Nonnull PrefabInit init) {
|
||||
super(init);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setup() {
|
||||
setName("refinedstorage:wireless_autocrafting_monitor");
|
||||
setDisplayName("Wireless Autocrafting Monitor");
|
||||
|
||||
getLogger().info("Wireless Autocrafting Monitor registered");
|
||||
}
|
||||
}
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
package dev.refinedstorage.item;
|
||||
|
||||
import com.hypixel.hytale.server.core.prefab.PrefabInit;
|
||||
import com.hypixel.hytale.server.core.prefab.Prefab;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
/**
|
||||
* Wireless Crafting Grid — allows remote crafting via the Refined Storage
|
||||
* autocrafting system, within range of a Wireless Transmitter.
|
||||
*/
|
||||
public class WirelessCraftingGridItem extends Prefab {
|
||||
|
||||
public WirelessCraftingGridItem(@Nonnull PrefabInit init) {
|
||||
super(init);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setup() {
|
||||
setName("refinedstorage:wireless_crafting_grid");
|
||||
setDisplayName("Wireless Crafting Grid");
|
||||
|
||||
getLogger().info("Wireless Crafting Grid registered");
|
||||
}
|
||||
}
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
package dev.refinedstorage.item;
|
||||
|
||||
import com.hypixel.hytale.server.core.prefab.PrefabInit;
|
||||
import com.hypixel.hytale.server.core.prefab.Prefab;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
/**
|
||||
* Wireless Grid — allows a player to access the Refined Storage network
|
||||
* inventory remotely within range of a Wireless Transmitter.
|
||||
*/
|
||||
public class WirelessGridItem extends Prefab {
|
||||
|
||||
public WirelessGridItem(@Nonnull PrefabInit init) {
|
||||
super(init);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setup() {
|
||||
setName("refinedstorage:wireless_grid");
|
||||
setDisplayName("Wireless Grid");
|
||||
|
||||
getLogger().info("Wireless Grid registered");
|
||||
}
|
||||
}
|
||||
BIN
src/main/resources/Common/BlockTextures/autocrafter.png
Normal file
|
After Width: | Height: | Size: 899 B |
BIN
src/main/resources/Common/BlockTextures/autocrafting_monitor.png
Normal file
|
After Width: | Height: | Size: 894 B |
BIN
src/main/resources/Common/BlockTextures/cable.png
Normal file
|
After Width: | Height: | Size: 891 B |
BIN
src/main/resources/Common/BlockTextures/controller.png
Normal file
|
After Width: | Height: | Size: 878 B |
BIN
src/main/resources/Common/BlockTextures/crafting_grid.png
Normal file
|
After Width: | Height: | Size: 894 B |
BIN
src/main/resources/Common/BlockTextures/disk_drive.png
Normal file
|
After Width: | Height: | Size: 891 B |
BIN
src/main/resources/Common/BlockTextures/grid.png
Normal file
|
After Width: | Height: | Size: 904 B |
BIN
src/main/resources/Common/BlockTextures/interface.png
Normal file
|
After Width: | Height: | Size: 883 B |
BIN
src/main/resources/Common/BlockTextures/io_device.png
Normal file
|
After Width: | Height: | Size: 893 B |
BIN
src/main/resources/Common/BlockTextures/machine_casing.png
Normal file
|
After Width: | Height: | Size: 892 B |
BIN
src/main/resources/Common/BlockTextures/security_detector.png
Normal file
|
After Width: | Height: | Size: 882 B |
BIN
src/main/resources/Common/BlockTextures/security_terminal.png
Normal file
|
After Width: | Height: | Size: 883 B |
BIN
src/main/resources/Common/BlockTextures/wireless_receiver.png
Normal file
|
After Width: | Height: | Size: 1,019 B |
BIN
src/main/resources/Common/BlockTextures/wireless_transmitter.png
Normal file
|
After Width: | Height: | Size: 1,020 B |
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"parent": "hytale:block/cube_all",
|
||||
"textures": {
|
||||
"all": "refinedstorage2:block/autocrafter"
|
||||
},
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"translation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"scale": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"parent": "hytale:block/cube_all",
|
||||
"textures": {
|
||||
"all": "refinedstorage2:block/autocrafting_monitor"
|
||||
},
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"translation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"scale": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
26
src/main/resources/Common/Blocks/cable/model.hytale_model
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"parent": "hytale:block/cube_all",
|
||||
"textures": {
|
||||
"all": "refinedstorage2:block/cable"
|
||||
},
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"translation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"scale": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"parent": "hytale:block/cube_all",
|
||||
"textures": {
|
||||
"all": "refinedstorage2:block/controller"
|
||||
},
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"translation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"scale": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"parent": "hytale:block/cube_all",
|
||||
"textures": {
|
||||
"all": "refinedstorage2:block/crafting_grid"
|
||||
},
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"translation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"scale": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"parent": "hytale:block/cube_all",
|
||||
"textures": {
|
||||
"all": "refinedstorage2:block/disk_drive"
|
||||
},
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"translation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"scale": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
26
src/main/resources/Common/Blocks/exporter/model.hytale_model
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"parent": "hytale:block/cube_all",
|
||||
"textures": {
|
||||
"all": "refinedstorage2:block/io_device"
|
||||
},
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"translation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"scale": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
26
src/main/resources/Common/Blocks/grid/model.hytale_model
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"parent": "hytale:block/cube_all",
|
||||
"textures": {
|
||||
"all": "refinedstorage2:block/grid"
|
||||
},
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"translation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"scale": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
26
src/main/resources/Common/Blocks/importer/model.hytale_model
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"parent": "hytale:block/cube_all",
|
||||
"textures": {
|
||||
"all": "refinedstorage2:block/io_device"
|
||||
},
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"translation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"scale": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"parent": "hytale:block/cube_all",
|
||||
"textures": {
|
||||
"all": "refinedstorage2:block/interface"
|
||||
},
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"translation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"scale": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"parent": "hytale:block/cube_all",
|
||||
"textures": {
|
||||
"all": "refinedstorage2:block/machine_casing"
|
||||
},
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"translation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"scale": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"parent": "hytale:block/cube_all",
|
||||
"textures": {
|
||||
"all": "refinedstorage2:block/security_detector"
|
||||
},
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"translation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"scale": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"parent": "hytale:block/cube_all",
|
||||
"textures": {
|
||||
"all": "refinedstorage2:block/security_terminal"
|
||||
},
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"translation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"scale": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"parent": "hytale:block/cube_all",
|
||||
"textures": {
|
||||
"all": "refinedstorage2:block/wireless_receiver"
|
||||
},
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"translation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"scale": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"parent": "hytale:block/cube_all",
|
||||
"textures": {
|
||||
"all": "refinedstorage2:block/wireless_transmitter"
|
||||
},
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"translation": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"scale": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 913 B |
BIN
src/main/resources/Common/Icons/ItemsGenerated/autocrafter.png
Normal file
|
After Width: | Height: | Size: 899 B |
|
After Width: | Height: | Size: 894 B |
BIN
src/main/resources/Common/Icons/ItemsGenerated/cable.png
Normal file
|
After Width: | Height: | Size: 891 B |
|
After Width: | Height: | Size: 958 B |
BIN
src/main/resources/Common/Icons/ItemsGenerated/controller.png
Normal file
|
After Width: | Height: | Size: 878 B |
BIN
src/main/resources/Common/Icons/ItemsGenerated/crafting_grid.png
Normal file
|
After Width: | Height: | Size: 894 B |
BIN
src/main/resources/Common/Icons/ItemsGenerated/disk_drive.png
Normal file
|
After Width: | Height: | Size: 891 B |
BIN
src/main/resources/Common/Icons/ItemsGenerated/grid.png
Normal file
|
After Width: | Height: | Size: 904 B |
BIN
src/main/resources/Common/Icons/ItemsGenerated/interface.png
Normal file
|
After Width: | Height: | Size: 883 B |
BIN
src/main/resources/Common/Icons/ItemsGenerated/io_device.png
Normal file
|
After Width: | Height: | Size: 893 B |
|
After Width: | Height: | Size: 892 B |
BIN
src/main/resources/Common/Icons/ItemsGenerated/pattern.png
Normal file
|
After Width: | Height: | Size: 874 B |
|
After Width: | Height: | Size: 895 B |
BIN
src/main/resources/Common/Icons/ItemsGenerated/raw_processor.png
Normal file
|
After Width: | Height: | Size: 884 B |