Re-add the Network Transmitter
This commit is contained in:
@@ -67,6 +67,11 @@ public class ClientSetup {
|
||||
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, "disk_drive"), (base, registry) -> new FullbrightBakedModel(
|
||||
@@ -128,6 +133,7 @@ public class ClientSetup {
|
||||
ScreenManager.registerFactory(RSContainers.EXTERNAL_STORAGE, ExternalStorageScreen::new);
|
||||
ScreenManager.registerFactory(RSContainers.IMPORTER, ImporterScreen::new);
|
||||
ScreenManager.registerFactory(RSContainers.EXPORTER, ExporterScreen::new);
|
||||
ScreenManager.registerFactory(RSContainers.NETWORK_TRANSMITTER, NetworkTransmitterScreen::new);
|
||||
|
||||
ClientRegistry.registerKeyBinding(RSKeyBindings.FOCUS_SEARCH_BAR);
|
||||
ClientRegistry.registerKeyBinding(RSKeyBindings.CLEAR_GRID_CRAFTING_MATRIX);
|
||||
|
||||
@@ -116,6 +116,7 @@ public final class RS {
|
||||
API.instance().getNetworkNodeRegistry().add(ImporterNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new ImporterNetworkNode(world, pos)));
|
||||
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().getGridManager().add(GridBlockGridFactory.ID, new GridBlockGridFactory());
|
||||
|
||||
@@ -161,6 +162,7 @@ public final class RS {
|
||||
e.getRegistry().register(new ImporterBlock());
|
||||
e.getRegistry().register(new ExporterBlock());
|
||||
e.getRegistry().register(new NetworkReceiverBlock());
|
||||
e.getRegistry().register(new NetworkTransmitterBlock());
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
@@ -190,6 +192,7 @@ public final class RS {
|
||||
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(ImporterTile::new, RSBlocks.IMPORTER).build(null).setRegistryName(RS.ID, "importer")));
|
||||
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")));
|
||||
}
|
||||
|
||||
private <T extends TileEntity> TileEntityType<T> registerTileDataParameters(TileEntityType<T> t) {
|
||||
@@ -211,6 +214,7 @@ public final class RS {
|
||||
e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<ExternalStorageContainer, ExternalStorageTile>((windowId, inv, tile) -> new ExternalStorageContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "external_storage"));
|
||||
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"));
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
@@ -282,6 +286,7 @@ public final class RS {
|
||||
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.IMPORTER));
|
||||
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.EXPORTER));
|
||||
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.NETWORK_RECEIVER));
|
||||
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.NETWORK_TRANSMITTER));
|
||||
}
|
||||
|
||||
/* TODO
|
||||
|
||||
@@ -18,8 +18,9 @@ public final class RSBlocks {
|
||||
public static final BlockCraftingMonitor CRAFTING_MONITOR = new BlockCraftingMonitor();
|
||||
public static final BlockWirelessTransmitter WIRELESS_TRANSMITTER = new BlockWirelessTransmitter();
|
||||
public static final BlockCrafter CRAFTER = new BlockCrafter();
|
||||
public static final BlockNetworkTransmitter NETWORK_TRANSMITTER = new BlockNetworkTransmitter();
|
||||
|
||||
@ObjectHolder(RS.ID + ":network_transmitter")
|
||||
public static final NetworkTransmitterBlock NETWORK_TRANSMITTER = null;
|
||||
@ObjectHolder(RS.ID + ":network_receiver")
|
||||
public static final NetworkReceiverBlock NETWORK_RECEIVER = null;
|
||||
|
||||
|
||||
@@ -45,8 +45,10 @@ public final class RSContainers {
|
||||
|
||||
//@ObjectHolder(RS.ID + ":interface")
|
||||
public static final ContainerType<ImporterContainer> INTERFACE = null;
|
||||
//@ObjectHolder(RS.ID + ":network_transmitter")
|
||||
|
||||
@ObjectHolder(RS.ID + ":network_transmitter")
|
||||
public static final ContainerType<NetworkTransmitterContainer> NETWORK_TRANSMITTER = null;
|
||||
|
||||
//@ObjectHolder(RS.ID + ":relay")
|
||||
public static final ContainerType<RelayContainer> RELAY = null;
|
||||
//@ObjectHolder(RS.ID + ":security_manager")
|
||||
|
||||
@@ -13,7 +13,6 @@ public class RSOldConfig {
|
||||
public int fluidInterfaceUsage;
|
||||
public int relayUsage;
|
||||
public int wirelessTransmitterUsage;
|
||||
public int networkTransmitterUsage;
|
||||
public int diskManipulatorUsage;
|
||||
public int securityManagerUsage;
|
||||
public int securityManagerPerSecurityCardUsage;
|
||||
@@ -83,7 +82,6 @@ public class RSOldConfig {
|
||||
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");
|
||||
networkTransmitterUsage = config.getInt("networkTransmitter", ENERGY, 64, 0, Integer.MAX_VALUE, "The energy used by Network 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");
|
||||
securityManagerPerSecurityCardUsage = config.getInt("securityManagerPerSecurityCard", ENERGY, 10, 0, Integer.MAX_VALUE, "The additional energy used by Security Cards in Security Managers");
|
||||
|
||||
@@ -57,9 +57,9 @@ public class RSTiles {
|
||||
|
||||
//@ObjectHolder(RS.ID + ":interface")
|
||||
public static final TileEntityType<ImporterTile> INTERFACE = null;
|
||||
//@ObjectHolder(RS.ID + ":network_transmitter")
|
||||
public static final TileEntityType<TileNetworkTransmitter> NETWORK_TRANSMITTER = null;
|
||||
|
||||
@ObjectHolder(RS.ID + ":network_transmitter")
|
||||
public static final TileEntityType<NetworkTransmitterTile> NETWORK_TRANSMITTER = null;
|
||||
@ObjectHolder(RS.ID + ":network_receiver")
|
||||
public static final TileEntityType<NetworkReceiverTile> NETWORK_RECEIVER = null;
|
||||
|
||||
|
||||
@@ -72,6 +72,7 @@ public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor {
|
||||
@Nonnull
|
||||
@Override
|
||||
public ItemStack getItemStack() {
|
||||
// TODO This doesn't work crossdim.
|
||||
return new ItemStack(Item.BLOCK_TO_ITEM.get(world.getBlockState(pos).getBlock()), 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -6,17 +6,19 @@ import com.raoulvdberge.refinedstorage.api.util.Action;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.validator.ItemValidator;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.item.NetworkCardItem;
|
||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.dimension.DimensionType;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class NetworkNodeNetworkTransmitter extends NetworkNode {
|
||||
public class NetworkTransmitterNetworkNode extends NetworkNode {
|
||||
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "network_transmitter");
|
||||
|
||||
private BaseItemHandler networkCard = new BaseItemHandler(1)
|
||||
@@ -27,9 +29,10 @@ public class NetworkNodeNetworkTransmitter extends NetworkNode {
|
||||
|
||||
if (card.isEmpty()) {
|
||||
receiver = null;
|
||||
receiverDimension = null;
|
||||
} else {
|
||||
// TODO receiver = ItemNetworkCard.getReceiver(card);
|
||||
// TODO receiverDimension = ItemNetworkCard.getDimension(card);
|
||||
receiver = NetworkCardItem.getReceiver(card);
|
||||
receiverDimension = NetworkCardItem.getDimension(card);
|
||||
}
|
||||
|
||||
if (network != null) {
|
||||
@@ -38,9 +41,9 @@ public class NetworkNodeNetworkTransmitter extends NetworkNode {
|
||||
});
|
||||
|
||||
private BlockPos receiver;
|
||||
private int receiverDimension;
|
||||
private DimensionType receiverDimension;
|
||||
|
||||
public NetworkNodeNetworkTransmitter(World world, BlockPos pos) {
|
||||
public NetworkTransmitterNetworkNode(World world, BlockPos pos) {
|
||||
super(world, pos);
|
||||
}
|
||||
|
||||
@@ -67,7 +70,7 @@ public class NetworkNodeNetworkTransmitter extends NetworkNode {
|
||||
|
||||
@Override
|
||||
public int getEnergyUsage() {
|
||||
return RS.INSTANCE.config.networkTransmitterUsage;
|
||||
return RS.SERVER_CONFIG.getNetworkTransmitter().getUsage();
|
||||
}
|
||||
|
||||
public BaseItemHandler getNetworkCard() {
|
||||
@@ -84,24 +87,25 @@ public class NetworkNodeNetworkTransmitter extends NetworkNode {
|
||||
return receiver;
|
||||
}
|
||||
|
||||
public int getReceiverDimension() {
|
||||
@Nullable
|
||||
public DimensionType getReceiverDimension() {
|
||||
return receiverDimension;
|
||||
}
|
||||
|
||||
public int getDistance() {
|
||||
if (receiver == null) {
|
||||
return 0;
|
||||
if (receiver == null || receiverDimension == null || !isSameDimension()) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return (int) Math.sqrt(Math.pow(pos.getX() - receiver.getX(), 2) + Math.pow(pos.getY() - receiver.getY(), 2) + Math.pow(pos.getZ() - receiver.getZ(), 2));
|
||||
}
|
||||
|
||||
public boolean isSameDimension() {
|
||||
return world.getDimension().getType().getId() == receiverDimension;
|
||||
return world.getDimension().getType() == receiverDimension;
|
||||
}
|
||||
|
||||
private boolean canTransmit() {
|
||||
return canUpdate() && receiver != null;
|
||||
return canUpdate() && receiver != null && receiverDimension != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -115,15 +119,18 @@ public class NetworkNodeNetworkTransmitter extends NetworkNode {
|
||||
|
||||
if (canTransmit()) {
|
||||
if (!isSameDimension()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO final World dimensionWorld = DimensionManager.getWorld(receiverDimension);
|
||||
// TODO if (!isSameDimension()) {
|
||||
// World dimensionWorld = DimensionManager.getWorld(world.getServer(), receiverDimension, true, true);
|
||||
|
||||
//if (dimensionWorld != null) {
|
||||
// operator.apply(dimensionWorld, receiver, null);
|
||||
// }
|
||||
} else {
|
||||
//} else {
|
||||
operator.apply(world, receiver, null);
|
||||
}
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
package com.raoulvdberge.refinedstorage.block;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileNetworkTransmitter;
|
||||
|
||||
public class BlockNetworkTransmitter extends BlockNode {
|
||||
public BlockNetworkTransmitter() {
|
||||
super(BlockInfoBuilder.forId("network_transmitter").tileEntity(TileNetworkTransmitter::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/network_transmitter/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.NETWORK_TRANSMITTER, player, world, pos, side);
|
||||
}*/
|
||||
|
||||
@Override
|
||||
public boolean hasConnectedState() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package com.raoulvdberge.refinedstorage.block;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.container.NetworkTransmitterContainer;
|
||||
import com.raoulvdberge.refinedstorage.container.factory.PositionalTileContainerProvider;
|
||||
import com.raoulvdberge.refinedstorage.tile.NetworkTransmitterTile;
|
||||
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 NetworkTransmitterBlock extends NodeBlock {
|
||||
public NetworkTransmitterBlock() {
|
||||
super(BlockUtils.DEFAULT_ROCK_PROPERTIES);
|
||||
|
||||
this.setRegistryName(RS.ID, "network_transmitter");
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockRenderLayer getRenderLayer() {
|
||||
return BlockRenderLayer.CUTOUT;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
|
||||
return new NetworkTransmitterTile();
|
||||
}
|
||||
|
||||
@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<NetworkTransmitterTile>(
|
||||
new TranslationTextComponent("gui.refinedstorage.network_transmitter"),
|
||||
(tile, windowId, inventory, p) -> new NetworkTransmitterContainer(tile, player, windowId),
|
||||
pos
|
||||
),
|
||||
pos
|
||||
));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasConnectedState() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,7 @@ public class ServerConfig {
|
||||
private Importer importer;
|
||||
private Exporter exporter;
|
||||
private NetworkReceiver networkReceiver;
|
||||
private NetworkTransmitter networkTransmitter;
|
||||
private Upgrades upgrades;
|
||||
|
||||
public ServerConfig() {
|
||||
@@ -29,6 +30,7 @@ public class ServerConfig {
|
||||
importer = new Importer();
|
||||
exporter = new Exporter();
|
||||
networkReceiver = new NetworkReceiver();
|
||||
networkTransmitter = new NetworkTransmitter();
|
||||
upgrades = new Upgrades();
|
||||
|
||||
spec = builder.build();
|
||||
@@ -78,6 +80,10 @@ public class ServerConfig {
|
||||
return networkReceiver;
|
||||
}
|
||||
|
||||
public NetworkTransmitter getNetworkTransmitter() {
|
||||
return networkTransmitter;
|
||||
}
|
||||
|
||||
public ForgeConfigSpec getSpec() {
|
||||
return spec;
|
||||
}
|
||||
@@ -389,4 +395,20 @@ public class ServerConfig {
|
||||
return usage.get();
|
||||
}
|
||||
}
|
||||
|
||||
public class NetworkTransmitter {
|
||||
private final ForgeConfigSpec.IntValue usage;
|
||||
|
||||
public NetworkTransmitter() {
|
||||
builder.push("networkTransmitter");
|
||||
|
||||
usage = builder.comment("The energy used by the Network Transmitter").defineInRange("usage", 64, 0, Integer.MAX_VALUE);
|
||||
|
||||
builder.pop();
|
||||
}
|
||||
|
||||
public int getUsage() {
|
||||
return usage.get();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
package com.raoulvdberge.refinedstorage.container;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RSContainers;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileNetworkTransmitter;
|
||||
import com.raoulvdberge.refinedstorage.tile.NetworkTransmitterTile;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraftforge.items.SlotItemHandler;
|
||||
|
||||
public class NetworkTransmitterContainer extends BaseContainer {
|
||||
public NetworkTransmitterContainer(TileNetworkTransmitter networkTransmitter, PlayerEntity player, int windowId) {
|
||||
public NetworkTransmitterContainer(NetworkTransmitterTile networkTransmitter, PlayerEntity player, int windowId) {
|
||||
super(RSContainers.NETWORK_TRANSMITTER, networkTransmitter, player, windowId);
|
||||
|
||||
addSlot(new SlotItemHandler(networkTransmitter.getNode().getNetworkCard(), 0, 8, 20));
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
package com.raoulvdberge.refinedstorage.screen;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.container.NetworkTransmitterContainer;
|
||||
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileNetworkTransmitter;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
|
||||
public class GuiNetworkTransmitter extends BaseScreen<NetworkTransmitterContainer> {
|
||||
private TileNetworkTransmitter networkTransmitter;
|
||||
|
||||
public GuiNetworkTransmitter(NetworkTransmitterContainer container, TileNetworkTransmitter networkTransmitter, PlayerInventory inventory) {
|
||||
super(container, 176, 137, inventory, null);
|
||||
|
||||
this.networkTransmitter = networkTransmitter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostInit(int x, int y) {
|
||||
addSideButton(new RedstoneModeSideButton(this, TileNetworkTransmitter.REDSTONE_MODE));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick(int x, int y) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderBackground(int x, int y, int mouseX, int mouseY) {
|
||||
bindTexture(RS.ID, "gui/network_transmitter.png");
|
||||
|
||||
blit(x, y, 0, 0, xSize, ySize);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderForeground(int mouseX, int mouseY) {
|
||||
renderString(7, 7, I18n.format("gui.refinedstorage:network_transmitter"));
|
||||
|
||||
String distance;
|
||||
|
||||
if (networkTransmitter.getNode().getNetworkCard().getStackInSlot(0).isEmpty()) {
|
||||
distance = I18n.format("gui.refinedstorage:network_transmitter.missing_card");
|
||||
} else if (TileNetworkTransmitter.RECEIVER_DIMENSION.getValue() != networkTransmitter.getWorld().getDimension().getType().getId()) {
|
||||
distance = I18n.format("gui.refinedstorage:network_transmitter.dimension", TileNetworkTransmitter.RECEIVER_DIMENSION.getValue());
|
||||
} else if (TileNetworkTransmitter.DISTANCE.getValue() != -1) {
|
||||
distance = I18n.format("gui.refinedstorage:network_transmitter.distance", TileNetworkTransmitter.DISTANCE.getValue());
|
||||
} else {
|
||||
distance = I18n.format("gui.refinedstorage:network_transmitter.missing_card");
|
||||
}
|
||||
|
||||
renderString(51, 24, distance);
|
||||
renderString(7, 42, I18n.format("container.inventory"));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.raoulvdberge.refinedstorage.screen;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.container.NetworkTransmitterContainer;
|
||||
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton;
|
||||
import com.raoulvdberge.refinedstorage.tile.NetworkTransmitterTile;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class NetworkTransmitterScreen extends BaseScreen<NetworkTransmitterContainer> {
|
||||
public NetworkTransmitterScreen(NetworkTransmitterContainer container, PlayerInventory inventory, ITextComponent title) {
|
||||
super(container, 176, 137, inventory, title);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostInit(int x, int y) {
|
||||
addSideButton(new RedstoneModeSideButton(this, NetworkTransmitterTile.REDSTONE_MODE));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick(int x, int y) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderBackground(int x, int y, int mouseX, int mouseY) {
|
||||
bindTexture(RS.ID, "gui/network_transmitter.png");
|
||||
|
||||
blit(x, y, 0, 0, xSize, ySize);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderForeground(int mouseX, int mouseY) {
|
||||
renderString(7, 7, title.getFormattedText());
|
||||
|
||||
String text;
|
||||
|
||||
Optional<ResourceLocation> receiverDim = NetworkTransmitterTile.RECEIVER_DIMENSION.getValue();
|
||||
int distance = NetworkTransmitterTile.DISTANCE.getValue();
|
||||
|
||||
if (!receiverDim.isPresent()) {
|
||||
text = I18n.format("gui.refinedstorage.network_transmitter.missing_card");
|
||||
} else if (distance != -1) {
|
||||
text = I18n.format("gui.refinedstorage.network_transmitter.distance", distance);
|
||||
} else {
|
||||
text = receiverDim.get().toString();
|
||||
}
|
||||
|
||||
renderString(51, 24, text);
|
||||
renderString(7, 42, I18n.format("container.inventory"));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.raoulvdberge.refinedstorage.tile;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RSTiles;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkTransmitterNetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.RSSerializers;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||
import net.minecraft.network.datasync.DataSerializers;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.items.CapabilityItemHandler;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Optional;
|
||||
|
||||
public class NetworkTransmitterTile extends NetworkNodeTile<NetworkTransmitterNetworkNode> {
|
||||
public static final TileDataParameter<Integer, NetworkTransmitterTile> DISTANCE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getDistance());
|
||||
public static final TileDataParameter<Optional<ResourceLocation>, NetworkTransmitterTile> RECEIVER_DIMENSION = new TileDataParameter<>(RSSerializers.OPTIONAL_RESOURCE_LOCATION_SERIALIZER, Optional.empty(), t -> {
|
||||
if (t.getNode().getReceiverDimension() != null) {
|
||||
return Optional.of(t.getNode().getReceiverDimension().getRegistryName());
|
||||
}
|
||||
|
||||
return Optional.empty();
|
||||
});
|
||||
|
||||
private LazyOptional<IItemHandler> networkCardCapability = LazyOptional.of(() -> getNode().getNetworkCard());
|
||||
|
||||
public NetworkTransmitterTile() {
|
||||
super(RSTiles.NETWORK_TRANSMITTER);
|
||||
|
||||
dataManager.addWatchedParameter(DISTANCE);
|
||||
dataManager.addWatchedParameter(RECEIVER_DIMENSION);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nonnull
|
||||
public NetworkTransmitterNetworkNode createNode(World world, BlockPos pos) {
|
||||
return new NetworkTransmitterNetworkNode(world, pos);
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction direction) {
|
||||
if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
|
||||
return networkCardCapability.cast();
|
||||
}
|
||||
|
||||
return super.getCapability(cap, direction);
|
||||
}
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
package com.raoulvdberge.refinedstorage.tile;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RSTiles;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeNetworkTransmitter;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||
import net.minecraft.network.datasync.DataSerializers;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class TileNetworkTransmitter extends NetworkNodeTile<NetworkNodeNetworkTransmitter> {
|
||||
public static final TileDataParameter<Integer, TileNetworkTransmitter> DISTANCE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> {
|
||||
NetworkNodeNetworkTransmitter transmitter = t.getNode();
|
||||
|
||||
return (transmitter.getReceiver() != null && transmitter.isSameDimension()) ? transmitter.getDistance() : -1;
|
||||
});
|
||||
// TODO Use dim here instead?
|
||||
public static final TileDataParameter<Integer, TileNetworkTransmitter> RECEIVER_DIMENSION = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getReceiverDimension());
|
||||
|
||||
public TileNetworkTransmitter() {
|
||||
super(RSTiles.NETWORK_TRANSMITTER);
|
||||
|
||||
dataManager.addWatchedParameter(DISTANCE);
|
||||
dataManager.addWatchedParameter(RECEIVER_DIMENSION);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nonnull
|
||||
public NetworkNodeNetworkTransmitter createNode(World world, BlockPos pos) {
|
||||
return new NetworkNodeNetworkTransmitter(world, pos);
|
||||
}
|
||||
|
||||
/* TODO
|
||||
@Override
|
||||
public boolean hasCapability(@Nonnull Capability<?> capability, @Nullable Direction facing) {
|
||||
return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY || super.hasCapability(capability, facing);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getCapability(@Nonnull Capability<T> capability, @Nullable Direction facing) {
|
||||
if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
|
||||
return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(getNode().getNetworkCard());
|
||||
}
|
||||
|
||||
return super.getCapability(capability, facing);
|
||||
}*/
|
||||
}
|
||||
@@ -6,10 +6,12 @@ import com.raoulvdberge.refinedstorage.util.AccessTypeUtils;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.network.datasync.DataParameter;
|
||||
import net.minecraft.network.datasync.IDataSerializer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public final class RSSerializers {
|
||||
public static final IDataSerializer<List<ClientNode>> CLIENT_NODE_SERIALIZER = new IDataSerializer<List<ClientNode>>() {
|
||||
@@ -113,4 +115,32 @@ public final class RSSerializers {
|
||||
return value;
|
||||
}
|
||||
};
|
||||
|
||||
public static final IDataSerializer<Optional<ResourceLocation>> OPTIONAL_RESOURCE_LOCATION_SERIALIZER = new IDataSerializer<Optional<ResourceLocation>>() {
|
||||
@Override
|
||||
public void write(PacketBuffer buf, Optional<ResourceLocation> value) {
|
||||
buf.writeBoolean(value.isPresent());
|
||||
|
||||
value.ifPresent(buf::writeResourceLocation);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<ResourceLocation> read(PacketBuffer buf) {
|
||||
if (!buf.readBoolean()) {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
return Optional.of(buf.readResourceLocation());
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataParameter<Optional<ResourceLocation>> createKey(int id) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<ResourceLocation> copyValue(Optional<ResourceLocation> value) {
|
||||
return value;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,27 +1,10 @@
|
||||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
"model": "refinedstorage:cube_all_cutout",
|
||||
"textures": {
|
||||
"particle": "refinedstorage:blocks/network_transmitter/network_transmitter",
|
||||
"all": "refinedstorage:blocks/network_transmitter/network_transmitter",
|
||||
"cutout": "refinedstorage:blocks/network_transmitter/cutouts/disconnected"
|
||||
}
|
||||
},
|
||||
"variants": {
|
||||
"inventory": [
|
||||
{
|
||||
"transform": "forge:default-block"
|
||||
}
|
||||
],
|
||||
"connected": {
|
||||
"true": {
|
||||
"textures": {
|
||||
"cutout": "refinedstorage:blocks/network_transmitter/cutouts/connected"
|
||||
}
|
||||
"connected=true": {
|
||||
"model": "refinedstorage:block/network_transmitter_connected"
|
||||
},
|
||||
"false": {
|
||||
}
|
||||
"connected=false": {
|
||||
"model": "refinedstorage:block/network_transmitter_disconnected"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -47,10 +47,9 @@
|
||||
"gui.refinedstorage.filter": "Filter",
|
||||
"gui.refinedstorage.filter.compare_nbt": "NBT",
|
||||
"gui.refinedstorage.filter.mod_filter": "Mod filter",
|
||||
"gui.refinedstorage:network_transmitter": "Network Transmitter",
|
||||
"gui.refinedstorage:network_transmitter.distance": "%d block(s)",
|
||||
"gui.refinedstorage:network_transmitter.dimension": "Dimension %d",
|
||||
"gui.refinedstorage:network_transmitter.missing_card": "Missing Network Card",
|
||||
"gui.refinedstorage.network_transmitter": "Network Transmitter",
|
||||
"gui.refinedstorage.network_transmitter.distance": "%d block(s)",
|
||||
"gui.refinedstorage.network_transmitter.missing_card": "Missing Network Card",
|
||||
"gui.refinedstorage:fluid_interface": "Fluid Interface",
|
||||
"gui.refinedstorage:fluid_interface.in": "In",
|
||||
"gui.refinedstorage:fluid_interface.out": "Out",
|
||||
@@ -202,7 +201,7 @@
|
||||
"block.refinedstorage:wireless_transmitter.tooltip": "Must be placed on %s.",
|
||||
"block.refinedstorage:crafter": "Crafter",
|
||||
"block.refinedstorage.network_receiver": "Network Receiver",
|
||||
"block.refinedstorage:network_transmitter": "Network Transmitter",
|
||||
"block.refinedstorage.network_transmitter": "Network Transmitter",
|
||||
"block.refinedstorage:fluid_interface": "Fluid Interface",
|
||||
"block.refinedstorage.64k_fluid_storage_block": "64k Fluid Storage Block",
|
||||
"block.refinedstorage.256k_fluid_storage_block": "256k Fluid Storage Block",
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"parent": "refinedstorage:block/cube_all_cutout",
|
||||
"textures": {
|
||||
"particle": "refinedstorage:block/network_transmitter/network_transmitter",
|
||||
"all": "refinedstorage:block/network_transmitter/network_transmitter",
|
||||
"cutout": "refinedstorage:block/network_transmitter/cutouts/connected"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"parent": "refinedstorage:block/cube_all_cutout",
|
||||
"textures": {
|
||||
"particle": "refinedstorage:block/network_transmitter/network_transmitter",
|
||||
"all": "refinedstorage:block/network_transmitter/network_transmitter",
|
||||
"cutout": "refinedstorage:block/network_transmitter/cutouts/disconnected"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"parent": "refinedstorage:block/network_transmitter_disconnected"
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "refinedstorage:network_transmitter"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -7,19 +7,19 @@
|
||||
],
|
||||
"key": {
|
||||
"E": {
|
||||
"item": "minecraft:ender_pearl"
|
||||
"tag": "forge:ender_pearls"
|
||||
},
|
||||
"C": {
|
||||
"item": "#construction_core"
|
||||
"item": "refinedstorage:construction_core"
|
||||
},
|
||||
"M": {
|
||||
"item": "refinedstorage:machine_casing"
|
||||
},
|
||||
"D": {
|
||||
"item": "#destruction_core"
|
||||
"item": "refinedstorage:destruction_core"
|
||||
},
|
||||
"A": {
|
||||
"item": "#advanced_processor"
|
||||
"item": "refinedstorage:advanced_processor"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
Reference in New Issue
Block a user