summary refs log tree commit diff stats
path: root/src/client/java/space/autistic
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/java/space/autistic')
-rw-r--r--src/client/java/space/autistic/radio/client/mixin/BlockStatesLoaderMixin.java43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/client/java/space/autistic/radio/client/mixin/BlockStatesLoaderMixin.java b/src/client/java/space/autistic/radio/client/mixin/BlockStatesLoaderMixin.java
new file mode 100644
index 0000000..0e9b05e
--- /dev/null
+++ b/src/client/java/space/autistic/radio/client/mixin/BlockStatesLoaderMixin.java
@@ -0,0 +1,43 @@
+package space.autistic.radio.client.mixin;
+
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.Blocks;
+import net.minecraft.client.render.model.BlockStatesLoader;
+import net.minecraft.state.StateManager;
+import net.minecraft.state.property.BooleanProperty;
+import net.minecraft.state.property.DirectionProperty;
+import net.minecraft.state.property.Property;
+import net.minecraft.util.Identifier;
+import net.minecraft.util.profiler.Profiler;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Shadow;
+import org.spongepowered.asm.mixin.Unique;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+
+@Mixin(BlockStatesLoader.class)
+public abstract class BlockStatesLoaderMixin {
+
+    @Shadow
+    abstract void loadBlockStates(Identifier id, StateManager<Block, BlockState> stateManager);
+
+    @Shadow
+    private Profiler profiler;
+
+    @Unique
+    private static final StateManager<Block, BlockState> STATE_MANAGER = new StateManager.Builder<Block, BlockState>(Blocks.AIR)
+            .add(DirectionProperty.of("facing"))
+            .build(Block::getDefaultState, BlockState::new);
+
+    @Inject(
+            method = {"load()V"},
+            at = {@At("HEAD")}
+    )
+    void onLoad(CallbackInfo callbackInfo) {
+        profiler.push("pirate_radio_static_definitions");
+        loadBlockStates(Identifier.of("pirate-radio", "disposable-transmitter"), STATE_MANAGER);
+        profiler.pop();
+    }
+}