Re-add the Relay

This commit is contained in:
raoulvdberge
2019-10-20 13:02:55 +02:00
parent 2c69399d88
commit 3bf3fbbe77
20 changed files with 173 additions and 113 deletions

View File

@@ -34,45 +34,19 @@ public class ClientSetup {
new ResourceLocation(RS.ID, "block/controller/cutouts/nearly_on"),
new ResourceLocation(RS.ID, "block/controller/cutouts/on")
));
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "creative_controller"), (base, registry) -> new FullbrightBakedModel(
base,
new ResourceLocation(RS.ID, "block/controller/cutouts/nearly_off"),
new ResourceLocation(RS.ID, "block/controller/cutouts/nearly_on"),
new ResourceLocation(RS.ID, "block/controller/cutouts/on")
));
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "grid"), (base, registry) -> new FullbrightBakedModel(
base,
new ResourceLocation(RS.ID, "block/grid/cutouts/front_connected")
));
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "crafting_grid"), (base, registry) -> new FullbrightBakedModel(
base,
new ResourceLocation(RS.ID, "block/grid/cutouts/crafting_front_connected")
));
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "pattern_grid"), (base, registry) -> new FullbrightBakedModel(
base,
new ResourceLocation(RS.ID, "block/grid/cutouts/pattern_front_connected")
));
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "fluid_grid"), (base, registry) -> new FullbrightBakedModel(
base,
new ResourceLocation(RS.ID, "block/grid/cutouts/fluid_front_connected")
));
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "network_receiver"), (base, registry) -> new FullbrightBakedModel(
base,
new ResourceLocation(RS.ID, "block/network_receiver/cutouts/connected")
));
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "network_transmitter"), (base, registry) -> new FullbrightBakedModel(
base,
new ResourceLocation(RS.ID, "block/network_transmitter/cutouts/connected")
));
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "pattern"), (base, registry) -> new PatternBakedModel(base));
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "grid"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/grid/cutouts/front_connected")));
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "crafting_grid"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/grid/cutouts/crafting_front_connected")));
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "pattern_grid"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/grid/cutouts/pattern_front_connected")));
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "fluid_grid"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/grid/cutouts/fluid_front_connected")));
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "network_receiver"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/network_receiver/cutouts/connected")));
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "network_transmitter"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/network_transmitter/cutouts/connected")));
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "relay"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/relay/cutouts/connected")));
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "disk_drive"), (base, registry) -> new FullbrightBakedModel(
new DiskDriveBakedModel(
@@ -85,6 +59,9 @@ public class ClientSetup {
new ResourceLocation(RS.ID, "block/disks/leds")
).disableCache());
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "pattern"), (base, registry) -> new PatternBakedModel(base));
ModelLoader.addSpecialModel(new ResourceLocation(RS.ID + ":block/disks/disk"));
ModelLoader.addSpecialModel(new ResourceLocation(RS.ID + ":block/disks/disk_near_capacity"));
ModelLoader.addSpecialModel(new ResourceLocation(RS.ID + ":block/disks/disk_full"));
@@ -134,6 +111,7 @@ public class ClientSetup {
ScreenManager.registerFactory(RSContainers.IMPORTER, ImporterScreen::new);
ScreenManager.registerFactory(RSContainers.EXPORTER, ExporterScreen::new);
ScreenManager.registerFactory(RSContainers.NETWORK_TRANSMITTER, NetworkTransmitterScreen::new);
ScreenManager.registerFactory(RSContainers.RELAY, RelayScreen::new);
ClientRegistry.registerKeyBinding(RSKeyBindings.FOCUS_SEARCH_BAR);
ClientRegistry.registerKeyBinding(RSKeyBindings.CLEAR_GRID_CRAFTING_MATRIX);

View File

@@ -120,6 +120,7 @@ public final class RS {
API.instance().getNetworkNodeRegistry().add(ExporterNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new ExporterNetworkNode(world, pos)));
API.instance().getNetworkNodeRegistry().add(NetworkReceiverNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new NetworkReceiverNetworkNode(world, pos)));
API.instance().getNetworkNodeRegistry().add(NetworkTransmitterNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new NetworkTransmitterNetworkNode(world, pos)));
API.instance().getNetworkNodeRegistry().add(RelayNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new RelayNetworkNode(world, pos)));
API.instance().getGridManager().add(GridBlockGridFactory.ID, new GridBlockGridFactory());
@@ -166,6 +167,7 @@ public final class RS {
e.getRegistry().register(new ExporterBlock());
e.getRegistry().register(new NetworkReceiverBlock());
e.getRegistry().register(new NetworkTransmitterBlock());
e.getRegistry().register(new RelayBlock());
}
@SubscribeEvent
@@ -196,6 +198,7 @@ public final class RS {
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(ExporterTile::new, RSBlocks.EXPORTER).build(null).setRegistryName(RS.ID, "exporter")));
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(NetworkReceiverTile::new, RSBlocks.NETWORK_RECEIVER).build(null).setRegistryName(RS.ID, "network_receiver")));
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(NetworkTransmitterTile::new, RSBlocks.NETWORK_TRANSMITTER).build(null).setRegistryName(RS.ID, "network_transmitter")));
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(RelayTile::new, RSBlocks.RELAY).build(null).setRegistryName(RS.ID, "relay")));
}
private <T extends TileEntity> TileEntityType<T> registerTileDataParameters(TileEntityType<T> t) {
@@ -218,6 +221,7 @@ public final class RS {
e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<ImporterContainer, ImporterTile>((windowId, inv, tile) -> new ImporterContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "importer"));
e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<ExporterContainer, ExporterTile>((windowId, inv, tile) -> new ExporterContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "exporter"));
e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<NetworkTransmitterContainer, NetworkTransmitterTile>((windowId, inv, tile) -> new NetworkTransmitterContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "network_transmitter"));
e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<RelayContainer, RelayTile>((windowId, inv, tile) -> new RelayContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "relay"));
}
@SubscribeEvent
@@ -290,6 +294,7 @@ public final class RS {
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.EXPORTER));
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.NETWORK_RECEIVER));
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.NETWORK_TRANSMITTER));
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.RELAY));
}
/* TODO

View File

@@ -13,7 +13,10 @@ public final class RSBlocks {
public static final BlockDetector DETECTOR = new BlockDetector();
public static final BlockDestructor DESTRUCTOR = new BlockDestructor();
public static final BlockConstructor CONSTRUCTOR = new BlockConstructor();
public static final BlockRelay RELAY = new BlockRelay();
@ObjectHolder(RS.ID + ":relay")
public static final RelayBlock RELAY = null;
public static final BlockInterface INTERFACE = new BlockInterface();
public static final BlockCraftingMonitor CRAFTING_MONITOR = new BlockCraftingMonitor();
public static final BlockWirelessTransmitter WIRELESS_TRANSMITTER = new BlockWirelessTransmitter();

View File

@@ -49,8 +49,9 @@ public final class RSContainers {
@ObjectHolder(RS.ID + ":network_transmitter")
public static final ContainerType<NetworkTransmitterContainer> NETWORK_TRANSMITTER = null;
//@ObjectHolder(RS.ID + ":relay")
@ObjectHolder(RS.ID + ":relay")
public static final ContainerType<RelayContainer> RELAY = null;
//@ObjectHolder(RS.ID + ":security_manager")
public static final ContainerType<SecurityManagerContainer> SECURITY_MANAGER = null;

View File

@@ -11,7 +11,6 @@ public class RSOldConfig {
public int detectorUsage;
public int interfaceUsage;
public int fluidInterfaceUsage;
public int relayUsage;
public int wirelessTransmitterUsage;
public int diskManipulatorUsage;
public int securityManagerUsage;
@@ -80,7 +79,6 @@ public class RSOldConfig {
detectorUsage = config.getInt("detector", ENERGY, 2, 0, Integer.MAX_VALUE, "The energy used by Detectors");
interfaceUsage = config.getInt("interface", ENERGY, 3, 0, Integer.MAX_VALUE, "The energy used by Interfaces");
fluidInterfaceUsage = config.getInt("fluidInterface", ENERGY, 3, 0, Integer.MAX_VALUE, "The energy used by Fluid Interfaces");
relayUsage = config.getInt("relay", ENERGY, 1, 0, Integer.MAX_VALUE, "The energy used by Relays");
wirelessTransmitterUsage = config.getInt("wirelessTransmitter", ENERGY, 8, 0, Integer.MAX_VALUE, "The energy used by Wireless Transmitters");
diskManipulatorUsage = config.getInt("diskManipulator", ENERGY, 3, 0, Integer.MAX_VALUE, "The energy used by Disk Manipulators");
securityManagerUsage = config.getInt("securityManager", ENERGY, 4, 0, Integer.MAX_VALUE, "The base energy used by Security Managers");

View File

@@ -63,8 +63,9 @@ public class RSTiles {
@ObjectHolder(RS.ID + ":network_receiver")
public static final TileEntityType<NetworkReceiverTile> NETWORK_RECEIVER = null;
//@ObjectHolder(RS.ID + ":relay")
public static final TileEntityType<TileRelay> RELAY = null;
@ObjectHolder(RS.ID + ":relay")
public static final TileEntityType<RelayTile> RELAY = null;
//@ObjectHolder(RS.ID + ":security_manager")
public static final TileEntityType<TileSecurityManager> SECURITY_MANAGER = null;
//@ObjectHolder(RS.ID + ":storage_monitor")

View File

@@ -9,10 +9,10 @@ import net.minecraft.world.World;
import javax.annotation.Nullable;
public class NetworkNodeRelay extends NetworkNode {
public class RelayNetworkNode extends NetworkNode {
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "relay");
public NetworkNodeRelay(World world, BlockPos pos) {
public RelayNetworkNode(World world, BlockPos pos) {
super(world, pos);
this.redstoneMode = RedstoneMode.LOW;
@@ -30,7 +30,7 @@ public class NetworkNodeRelay extends NetworkNode {
@Override
public int getEnergyUsage() {
return getRedstoneMode() == RedstoneMode.IGNORE ? 0 : RS.INSTANCE.config.relayUsage;
return RS.SERVER_CONFIG.getRelay().getUsage();
}
@Override

View File

@@ -1,34 +0,0 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.tile.TileRelay;
public class BlockRelay extends BlockNode {
public BlockRelay() {
super(BlockInfoBuilder.forId("relay").tileEntity(TileRelay::new).create());
}
/* TODO
@Override
@OnlyIn(Dist.CLIENT)
public void registerModels(IModelRegistration modelRegistration) {
modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory"));
modelRegistration.addBakedModelOverride(info.getId(), base -> new BakedModelFullbright(base, RS.ID + ":blocks/relay/cutouts/connected"));
}
@Override
public BlockRenderLayer getRenderLayer() {
return BlockRenderLayer.CUTOUT;
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, BlockState state, PlayerEntity player, EnumHand hand, Direction side, float hitX, float hitY, float hitZ) {
return openNetworkGui(RSGui.RELAY, player, world, pos, side);
}*/
@Override
public boolean hasConnectedState() {
return true;
}
}

View File

@@ -0,0 +1,64 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.container.RelayContainer;
import com.raoulvdberge.refinedstorage.container.factory.PositionalTileContainerProvider;
import com.raoulvdberge.refinedstorage.tile.RelayTile;
import com.raoulvdberge.refinedstorage.util.BlockUtils;
import com.raoulvdberge.refinedstorage.util.NetworkUtils;
import net.minecraft.block.BlockState;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.World;
import net.minecraftforge.fml.network.NetworkHooks;
import javax.annotation.Nullable;
public class RelayBlock extends NodeBlock {
public RelayBlock() {
super(BlockUtils.DEFAULT_ROCK_PROPERTIES);
this.setRegistryName(RS.ID, "relay");
}
@Override
public BlockRenderLayer getRenderLayer() {
return BlockRenderLayer.CUTOUT;
}
@Nullable
@Override
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
return new RelayTile();
}
@Override
@SuppressWarnings("deprecation")
public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) {
if (!world.isRemote) {
return NetworkUtils.attemptModify(world, pos, hit.getFace(), player, () -> NetworkHooks.openGui(
(ServerPlayerEntity) player,
new PositionalTileContainerProvider<RelayTile>(
new TranslationTextComponent("gui.refinedstorage.relay"),
(tile, windowId, inventory, p) -> new RelayContainer(tile, player, windowId),
pos
),
pos
));
}
return true;
}
@Override
public boolean hasConnectedState() {
return true;
}
}

View File

@@ -17,6 +17,7 @@ public class ServerConfig {
private Exporter exporter;
private NetworkReceiver networkReceiver;
private NetworkTransmitter networkTransmitter;
private Relay relay;
private Upgrades upgrades;
public ServerConfig() {
@@ -31,6 +32,7 @@ public class ServerConfig {
exporter = new Exporter();
networkReceiver = new NetworkReceiver();
networkTransmitter = new NetworkTransmitter();
relay = new Relay();
upgrades = new Upgrades();
spec = builder.build();
@@ -84,6 +86,10 @@ public class ServerConfig {
return networkTransmitter;
}
public Relay getRelay() {
return relay;
}
public ForgeConfigSpec getSpec() {
return spec;
}
@@ -411,4 +417,20 @@ public class ServerConfig {
return usage.get();
}
}
public class Relay {
private final ForgeConfigSpec.IntValue usage;
public Relay() {
builder.push("relay");
usage = builder.comment("The energy used by the Relay").defineInRange("usage", 1, 0, Integer.MAX_VALUE);
builder.pop();
}
public int getUsage() {
return usage.get();
}
}
}

View File

@@ -1,11 +1,11 @@
package com.raoulvdberge.refinedstorage.container;
import com.raoulvdberge.refinedstorage.RSContainers;
import com.raoulvdberge.refinedstorage.tile.TileRelay;
import com.raoulvdberge.refinedstorage.tile.RelayTile;
import net.minecraft.entity.player.PlayerEntity;
public class RelayContainer extends BaseContainer {
public RelayContainer(TileRelay relay, PlayerEntity player, int windowId) {
public RelayContainer(RelayTile relay, PlayerEntity player, int windowId) {
super(RSContainers.RELAY, relay, player, windowId);
addPlayerInventory(8, 50);

View File

@@ -3,18 +3,19 @@ package com.raoulvdberge.refinedstorage.screen;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.container.RelayContainer;
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton;
import com.raoulvdberge.refinedstorage.tile.TileRelay;
import com.raoulvdberge.refinedstorage.tile.RelayTile;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent;
public class GuiRelay extends BaseScreen<RelayContainer> {
public GuiRelay(RelayContainer container, PlayerInventory inventory) {
super(container, 176, 131, inventory, null);
public class RelayScreen extends BaseScreen<RelayContainer> {
public RelayScreen(RelayContainer container, PlayerInventory inventory, ITextComponent title) {
super(container, 176, 131, inventory, title);
}
@Override
public void onPostInit(int x, int y) {
addSideButton(new RedstoneModeSideButton(this, TileRelay.REDSTONE_MODE));
addSideButton(new RedstoneModeSideButton(this, RelayTile.REDSTONE_MODE));
}
@Override
@@ -30,7 +31,7 @@ public class GuiRelay extends BaseScreen<RelayContainer> {
@Override
public void renderForeground(int mouseX, int mouseY) {
renderString(7, 7, I18n.format("gui.refinedstorage:relay"));
renderString(7, 7, title.getFormattedText());
renderString(7, 39, I18n.format("container.inventory"));
}
}

View File

@@ -1,20 +1,20 @@
package com.raoulvdberge.refinedstorage.tile;
import com.raoulvdberge.refinedstorage.RSTiles;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeRelay;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.RelayNetworkNode;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import javax.annotation.Nonnull;
public class TileRelay extends NetworkNodeTile<NetworkNodeRelay> {
public TileRelay() {
public class RelayTile extends NetworkNodeTile<RelayNetworkNode> {
public RelayTile() {
super(RSTiles.RELAY);
}
@Override
@Nonnull
public NetworkNodeRelay createNode(World world, BlockPos pos) {
return new NetworkNodeRelay(world, pos);
public RelayNetworkNode createNode(World world, BlockPos pos) {
return new RelayNetworkNode(world, pos);
}
}

View File

@@ -1,27 +1,10 @@
{
"forge_marker": 1,
"defaults": {
"model": "refinedstorage:cube_all_cutout",
"textures": {
"particle": "refinedstorage:blocks/relay/relay",
"all": "refinedstorage:blocks/relay/relay",
"cutout": "refinedstorage:blocks/relay/cutouts/disconnected"
}
},
"variants": {
"inventory": [
{
"transform": "forge:default-block"
}
],
"connected": {
"true": {
"textures": {
"cutout": "refinedstorage:blocks/relay/cutouts/connected"
}
},
"false": {
}
"connected=true": {
"model": "refinedstorage:block/relay_connected"
},
"connected=false": {
"model": "refinedstorage:block/relay_disconnected"
}
}
}

View File

@@ -26,7 +26,7 @@
"gui.refinedstorage:detector": "Detector",
"gui.refinedstorage:destructor": "Destructor",
"gui.refinedstorage:constructor": "Constructor",
"gui.refinedstorage:relay": "Relay",
"gui.refinedstorage.relay": "Relay",
"gui.refinedstorage:interface.import": "Interface Import",
"gui.refinedstorage:interface.export": "Interface Export",
"gui.refinedstorage:crafting_monitor": "Crafting Monitor",
@@ -194,7 +194,7 @@
"block.refinedstorage.16k_storage_block": "16k Storage Block",
"block.refinedstorage.64k_storage_block": "64k Storage Block",
"block.refinedstorage.creative_storage_block": "Creative Storage Block",
"block.refinedstorage:relay": "Relay",
"block.refinedstorage.relay": "Relay",
"block.refinedstorage:interface": "Interface",
"block.refinedstorage:crafting_monitor": "Crafting Monitor",
"block.refinedstorage:wireless_transmitter": "Wireless Transmitter",

View File

@@ -0,0 +1,8 @@
{
"parent": "refinedstorage:block/cube_all_cutout",
"textures": {
"particle": "refinedstorage:block/relay/relay",
"all": "refinedstorage:block/relay/relay",
"cutout": "refinedstorage:block/relay/cutouts/connected"
}
}

View File

@@ -0,0 +1,8 @@
{
"parent": "refinedstorage:block/cube_all_cutout",
"textures": {
"particle": "refinedstorage:block/relay/relay",
"all": "refinedstorage:block/relay/relay",
"cutout": "refinedstorage:block/relay/cutouts/disconnected"
}
}

View File

@@ -0,0 +1,3 @@
{
"parent": "refinedstorage:block/relay_disconnected"
}

View File

@@ -0,0 +1,19 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "refinedstorage:relay"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}