initial: RefinedStorage2 Plugin — Blocks, Items, Textures, Models

This commit is contained in:
Lead Developer Web 2026-04-30 15:03:00 +02:00
parent 09fba7f177
commit 40888704f3
165 changed files with 1705 additions and 808 deletions

54
.gitignore vendored
View file

@ -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/

View 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)

View file

@ -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

View 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)

View 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)

View 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

View 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)

View file

@ -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

View file

@ -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

View 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

View 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

View file

@ -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

View 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)

View 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

View file

@ -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

View file

@ -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

View file

@ -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"

View file

@ -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";
}

View file

@ -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");
}
}

View file

@ -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");
}
}

View file

@ -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");
}
}

View file

@ -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");
}
}

View file

@ -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");
}
}

View file

@ -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");
}
}

View file

@ -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");
}
}

View file

@ -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");
}
}

View file

@ -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");
}
}

View file

@ -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");
}
}

View file

@ -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");
}
}

View file

@ -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");
}
}

View file

@ -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());
}
}

View file

@ -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());
}
}

View file

@ -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();
}
}

View file

@ -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");
}
}

View file

@ -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");
}
}

View file

@ -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());
}
}

View file

@ -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");
}
}

View file

@ -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");
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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");
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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");
}
}

View file

@ -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");
}
}

View file

@ -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");
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 899 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 894 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 891 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 894 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 891 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 904 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 883 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 893 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 892 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 882 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 883 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,019 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,020 B

View file

@ -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
]
}
}
}

View file

@ -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
]
}
}
}

View 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
]
}
}
}

View file

@ -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
]
}
}
}

View file

@ -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
]
}
}
}

View file

@ -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
]
}
}
}

View 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
]
}
}
}

View 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
]
}
}
}

View 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
]
}
}
}

View file

@ -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
]
}
}
}

View file

@ -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
]
}
}
}

View file

@ -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
]
}
}
}

View file

@ -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
]
}
}
}

View file

@ -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
]
}
}
}

View file

@ -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
]
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 913 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 899 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 894 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 891 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 958 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 894 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 891 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 904 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 883 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 893 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 892 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 874 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 895 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 B

Some files were not shown because too many files have changed in this diff Show more