1
.github/FUNDING.yml
vendored
Normal file
1
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1 @@
|
||||
patreon: raoulvdberge
|
||||
12
CHANGELOG.md
12
CHANGELOG.md
@@ -8,6 +8,18 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
## [Unreleased]
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed client crash when hovering over a fluid in the Fluid Grid by [@jackodsteel](https://github.com/jackodsteel).
|
||||
- Fixed random client crashes when starting the game.
|
||||
|
||||
### Changed
|
||||
|
||||
- Update Korean translation by [@mindy15963](https://github.com/mindy15963).
|
||||
|
||||
## [v1.10.0-beta.3] - 2021-12-17
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed networks and network devices being removed when a chunk unloads.
|
||||
|
||||
## [v1.10.0-beta.2] - 2021-12-16
|
||||
|
||||
@@ -33,7 +33,7 @@ apply plugin: 'maven-publish'
|
||||
|
||||
group = 'com.refinedmods'
|
||||
archivesBaseName = 'refinedstorage'
|
||||
version = '1.10.0-beta.3'
|
||||
version = '1.10.0-beta.4'
|
||||
|
||||
if (System.getenv('GITHUB_SHA') != null) {
|
||||
version += '+' + System.getenv('GITHUB_SHA').substring(0, 7)
|
||||
|
||||
@@ -5,7 +5,7 @@ import com.refinedmods.refinedstorage.config.ClientConfig;
|
||||
import com.refinedmods.refinedstorage.config.ServerConfig;
|
||||
import com.refinedmods.refinedstorage.datageneration.DataGenerators;
|
||||
import com.refinedmods.refinedstorage.integration.curios.CuriosIntegration;
|
||||
import com.refinedmods.refinedstorage.item.group.MainItemGroup;
|
||||
import com.refinedmods.refinedstorage.item.group.MainCreativeModeTab;
|
||||
import com.refinedmods.refinedstorage.network.NetworkHandler;
|
||||
import com.refinedmods.refinedstorage.setup.ClientSetup;
|
||||
import com.refinedmods.refinedstorage.setup.CommonSetup;
|
||||
@@ -28,7 +28,7 @@ public final class RS {
|
||||
public static final String NAME = "Refined Storage";
|
||||
|
||||
public static final NetworkHandler NETWORK_HANDLER = new NetworkHandler();
|
||||
public static final CreativeModeTab MAIN_GROUP = new MainItemGroup();
|
||||
public static final CreativeModeTab CREATIVE_MODE_TAB = new MainCreativeModeTab();
|
||||
public static final ServerConfig SERVER_CONFIG = new ServerConfig();
|
||||
public static final ClientConfig CLIENT_CONFIG = new ClientConfig();
|
||||
|
||||
|
||||
@@ -207,7 +207,7 @@ public final class RSItems {
|
||||
}
|
||||
|
||||
private static <T extends BaseBlock> RegistryObject<BlockItem> registerBlockItemFor(RegistryObject<T> block) {
|
||||
return ITEMS.register(block.getId().getPath(), () -> new BaseBlockItem(block.get(), new Item.Properties().tab(RS.MAIN_GROUP)));
|
||||
return ITEMS.register(block.getId().getPath(), () -> new BaseBlockItem(block.get(), new Item.Properties().tab(RS.CREATIVE_MODE_TAB)));
|
||||
}
|
||||
|
||||
public static void register() {
|
||||
|
||||
@@ -245,7 +245,7 @@ public class API implements IRSAPI {
|
||||
@Nonnull
|
||||
public IStorageDisk<ItemStack> createDefaultItemDisk(ServerLevel level, int capacity, @Nullable Player owner) {
|
||||
if (level == null) {
|
||||
throw new IllegalArgumentException("World cannot be null");
|
||||
throw new IllegalArgumentException("Level cannot be null");
|
||||
}
|
||||
|
||||
return new ItemStorageDisk(level, capacity, owner == null ? null : owner.getGameProfile().getId());
|
||||
@@ -255,7 +255,7 @@ public class API implements IRSAPI {
|
||||
@Nonnull
|
||||
public IStorageDisk<FluidStack> createDefaultFluidDisk(ServerLevel level, int capacity, @Nullable Player owner) {
|
||||
if (level == null) {
|
||||
throw new IllegalArgumentException("World cannot be null");
|
||||
throw new IllegalArgumentException("Level cannot be null");
|
||||
}
|
||||
|
||||
return new FluidStorageDisk(level, capacity, owner == null ? null : owner.getGameProfile().getId());
|
||||
|
||||
@@ -9,7 +9,7 @@ import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
|
||||
public class NetworkListener {
|
||||
@SubscribeEvent
|
||||
public void onWorldTick(TickEvent.WorldTickEvent e) {
|
||||
public void onLevelTick(TickEvent.WorldTickEvent e) {
|
||||
if (!e.world.isClientSide() && e.phase == TickEvent.Phase.END) {
|
||||
e.world.getProfiler().push("network ticking");
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.refinedmods.refinedstorage.apiimpl.network;
|
||||
import com.refinedmods.refinedstorage.api.network.INetwork;
|
||||
import com.refinedmods.refinedstorage.api.network.INetworkManager;
|
||||
import com.refinedmods.refinedstorage.api.network.NetworkType;
|
||||
import com.refinedmods.refinedstorage.apiimpl.util.RSWorldSavedData;
|
||||
import com.refinedmods.refinedstorage.apiimpl.util.RSSavedData;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.nbt.ListTag;
|
||||
@@ -16,7 +16,7 @@ import javax.annotation.Nullable;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class NetworkManager extends RSWorldSavedData implements INetworkManager {
|
||||
public class NetworkManager extends RSSavedData implements INetworkManager {
|
||||
public static final String NAME = "refinedstorage_networks";
|
||||
|
||||
private static final String NBT_NETWORKS = "Networks";
|
||||
|
||||
@@ -91,7 +91,7 @@ public class NetworkNodeGraph implements INetworkNodeGraph {
|
||||
listeners.forEach(INetworkNodeGraphListener::onChanged);
|
||||
}
|
||||
|
||||
protected Level getWorld() {
|
||||
protected Level getLevel() {
|
||||
return network.getLevel();
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import com.refinedmods.refinedstorage.api.network.security.Permission;
|
||||
import com.refinedmods.refinedstorage.api.util.Action;
|
||||
import com.refinedmods.refinedstorage.util.NetworkUtils;
|
||||
import com.refinedmods.refinedstorage.util.PlayerUtils;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
@@ -27,7 +27,7 @@ public class NetworkNodeListener {
|
||||
INetworkNode node = NetworkUtils.getNodeFromBlockEntity(e.getWorld().getBlockEntity(e.getBlockSnapshot().getPos().relative(facing)));
|
||||
|
||||
if (node != null && node.getNetwork() != null && !node.getNetwork().getSecurityManager().hasPermission(Permission.BUILD, player)) {
|
||||
WorldUtils.sendNoPermissionMessage(player);
|
||||
LevelUtils.sendNoPermissionMessage(player);
|
||||
|
||||
e.setCanceled(true);
|
||||
|
||||
@@ -63,7 +63,7 @@ public class NetworkNodeListener {
|
||||
INetworkNode node = NetworkUtils.getNodeFromBlockEntity(e.getWorld().getBlockEntity(e.getPos()));
|
||||
|
||||
if (node != null && node.getNetwork() != null && !node.getNetwork().getSecurityManager().hasPermission(Permission.BUILD, e.getPlayer())) {
|
||||
WorldUtils.sendNoPermissionMessage(e.getPlayer());
|
||||
LevelUtils.sendNoPermissionMessage(e.getPlayer());
|
||||
|
||||
e.setCanceled(true);
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.refinedmods.refinedstorage.api.network.node.INetworkNode;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeFactory;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeManager;
|
||||
import com.refinedmods.refinedstorage.apiimpl.API;
|
||||
import com.refinedmods.refinedstorage.apiimpl.util.RSWorldSavedData;
|
||||
import com.refinedmods.refinedstorage.apiimpl.util.RSSavedData;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.nbt.ListTag;
|
||||
@@ -18,7 +18,7 @@ import javax.annotation.Nullable;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class NetworkNodeManager extends RSWorldSavedData implements INetworkNodeManager {
|
||||
public class NetworkNodeManager extends RSSavedData implements INetworkNodeManager {
|
||||
public static final String NAME = "refinedstorage_nodes";
|
||||
|
||||
private static final String NBT_NODES = "Nodes";
|
||||
|
||||
@@ -10,7 +10,7 @@ import com.refinedmods.refinedstorage.blockentity.craftingmonitor.WirelessCrafti
|
||||
import com.refinedmods.refinedstorage.container.factory.CraftingMonitorMenuProvider;
|
||||
import com.refinedmods.refinedstorage.inventory.player.PlayerSlot;
|
||||
import com.refinedmods.refinedstorage.item.WirelessCraftingMonitorItem;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.network.chat.TranslatableComponent;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
@@ -52,7 +52,7 @@ public class WirelessCraftingMonitorNetworkItem implements INetworkItem {
|
||||
|
||||
if (!network.getSecurityManager().hasPermission(Permission.MODIFY, player) ||
|
||||
!network.getSecurityManager().hasPermission(Permission.AUTOCRAFTING, player)) {
|
||||
WorldUtils.sendNoPermissionMessage(player);
|
||||
LevelUtils.sendNoPermissionMessage(player);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import com.refinedmods.refinedstorage.apiimpl.API;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.grid.factory.WirelessFluidGridGridFactory;
|
||||
import com.refinedmods.refinedstorage.inventory.player.PlayerSlot;
|
||||
import com.refinedmods.refinedstorage.item.WirelessFluidGridItem;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.network.chat.TranslatableComponent;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
@@ -49,7 +49,7 @@ public class WirelessFluidGridNetworkItem implements INetworkItem {
|
||||
}
|
||||
|
||||
if (!network.getSecurityManager().hasPermission(Permission.MODIFY, player)) {
|
||||
WorldUtils.sendNoPermissionMessage(player);
|
||||
LevelUtils.sendNoPermissionMessage(player);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import com.refinedmods.refinedstorage.apiimpl.API;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.grid.factory.WirelessGridGridFactory;
|
||||
import com.refinedmods.refinedstorage.inventory.player.PlayerSlot;
|
||||
import com.refinedmods.refinedstorage.item.WirelessGridItem;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.network.chat.TranslatableComponent;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
@@ -49,7 +49,7 @@ public class WirelessGridNetworkItem implements INetworkItem {
|
||||
}
|
||||
|
||||
if (!network.getSecurityManager().hasPermission(Permission.MODIFY, player)) {
|
||||
WorldUtils.sendNoPermissionMessage(player);
|
||||
LevelUtils.sendNoPermissionMessage(player);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ import com.refinedmods.refinedstorage.inventory.listener.NetworkNodeFluidInvento
|
||||
import com.refinedmods.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.refinedmods.refinedstorage.item.UpgradeItem;
|
||||
import com.refinedmods.refinedstorage.util.StackUtils;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.core.PositionImpl;
|
||||
@@ -105,7 +105,7 @@ public class ConstructorNetworkNode extends NetworkNode implements IComparable,
|
||||
network.getCraftingManager().request(this, stack, FluidAttributes.BUCKET_VOLUME);
|
||||
}
|
||||
} else if (!level.getBlockState(front).getFluidState().isSource()) {
|
||||
FluidUtil.tryPlaceFluid(WorldUtils.getFakePlayer((ServerLevel) level, getOwner()), level, InteractionHand.MAIN_HAND, front, new NetworkFluidHandler(StackUtils.copy(stack, FluidAttributes.BUCKET_VOLUME)), stack);
|
||||
FluidUtil.tryPlaceFluid(LevelUtils.getFakePlayer((ServerLevel) level, getOwner()), level, InteractionHand.MAIN_HAND, front, new NetworkFluidHandler(StackUtils.copy(stack, FluidAttributes.BUCKET_VOLUME)), stack);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,7 +114,7 @@ public class ConstructorNetworkNode extends NetworkNode implements IComparable,
|
||||
if (!took.isEmpty()) {
|
||||
BlockPlaceContext ctx = new ConstructorBlockItemUseContext(
|
||||
level,
|
||||
WorldUtils.getFakePlayer((ServerLevel) level, getOwner()),
|
||||
LevelUtils.getFakePlayer((ServerLevel) level, getOwner()),
|
||||
InteractionHand.MAIN_HAND,
|
||||
took,
|
||||
new BlockHitResult(Vec3.ZERO, getDirection(), pos, false)
|
||||
|
||||
@@ -13,7 +13,7 @@ import com.refinedmods.refinedstorage.inventory.item.validator.PatternItemValida
|
||||
import com.refinedmods.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.refinedmods.refinedstorage.item.UpgradeItem;
|
||||
import com.refinedmods.refinedstorage.util.StackUtils;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
@@ -260,7 +260,7 @@ public class CrafterNetworkNode extends NetworkNode implements ICraftingPatternC
|
||||
return null;
|
||||
}
|
||||
|
||||
return WorldUtils.getItemHandler(proxy.getFacingBlockEntity(), proxy.getDirection().getOpposite());
|
||||
return LevelUtils.getItemHandler(proxy.getFacingBlockEntity(), proxy.getDirection().getOpposite());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -271,7 +271,7 @@ public class CrafterNetworkNode extends NetworkNode implements ICraftingPatternC
|
||||
return null;
|
||||
}
|
||||
|
||||
return WorldUtils.getFluidHandler(proxy.getFacingBlockEntity(), proxy.getDirection().getOpposite());
|
||||
return LevelUtils.getFluidHandler(proxy.getFacingBlockEntity(), proxy.getDirection().getOpposite());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -16,7 +16,7 @@ import com.refinedmods.refinedstorage.inventory.listener.NetworkNodeFluidInvento
|
||||
import com.refinedmods.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.refinedmods.refinedstorage.item.UpgradeItem;
|
||||
import com.refinedmods.refinedstorage.util.StackUtils;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
@@ -122,7 +122,7 @@ public class DestructorNetworkNode extends NetworkNode implements IComparable, I
|
||||
new BlockHitResult(Vec3.ZERO, getDirection().getOpposite(), front, false),
|
||||
level,
|
||||
front,
|
||||
WorldUtils.getFakePlayer((ServerLevel) level, getOwner())
|
||||
LevelUtils.getFakePlayer((ServerLevel) level, getOwner())
|
||||
);
|
||||
|
||||
if (!frontStack.isEmpty() &&
|
||||
@@ -133,7 +133,7 @@ public class DestructorNetworkNode extends NetworkNode implements IComparable, I
|
||||
(ServerLevel) level,
|
||||
front,
|
||||
level.getBlockEntity(front),
|
||||
WorldUtils.getFakePlayer((ServerLevel) level, getOwner()),
|
||||
LevelUtils.getFakePlayer((ServerLevel) level, getOwner()),
|
||||
tool
|
||||
);
|
||||
|
||||
@@ -143,10 +143,10 @@ public class DestructorNetworkNode extends NetworkNode implements IComparable, I
|
||||
}
|
||||
}
|
||||
|
||||
BlockEvent.BreakEvent e = new BlockEvent.BreakEvent(level, front, frontBlockState, WorldUtils.getFakePlayer((ServerLevel) level, getOwner()));
|
||||
BlockEvent.BreakEvent e = new BlockEvent.BreakEvent(level, front, frontBlockState, LevelUtils.getFakePlayer((ServerLevel) level, getOwner()));
|
||||
|
||||
if (!MinecraftForge.EVENT_BUS.post(e)) {
|
||||
frontBlock.playerWillDestroy(level, front, frontBlockState, WorldUtils.getFakePlayer((ServerLevel) level, getOwner()));
|
||||
frontBlock.playerWillDestroy(level, front, frontBlockState, LevelUtils.getFakePlayer((ServerLevel) level, getOwner()));
|
||||
|
||||
level.removeBlock(front, false);
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ import com.refinedmods.refinedstorage.inventory.listener.NetworkNodeFluidInvento
|
||||
import com.refinedmods.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.refinedmods.refinedstorage.item.UpgradeItem;
|
||||
import com.refinedmods.refinedstorage.util.StackUtils;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
@@ -87,7 +87,7 @@ public class ExporterNetworkNode extends NetworkNode implements IComparable, ITy
|
||||
|
||||
if (canUpdate() && ticks % upgrades.getSpeed() == 0 && level.isLoaded(pos)) {
|
||||
if (type == IType.ITEMS) {
|
||||
IItemHandler handler = WorldUtils.getItemHandler(getFacingBlockEntity(), getDirection().getOpposite());
|
||||
IItemHandler handler = LevelUtils.getItemHandler(getFacingBlockEntity(), getDirection().getOpposite());
|
||||
|
||||
if (handler != null) {
|
||||
while (filterSlot + 1 < itemFilters.getSlots() && itemFilters.getStackInSlot(filterSlot).isEmpty()) {
|
||||
@@ -167,7 +167,7 @@ public class ExporterNetworkNode extends NetworkNode implements IComparable, ITy
|
||||
filterSlot = 0;
|
||||
}
|
||||
|
||||
IFluidHandler handler = WorldUtils.getFluidHandler(getFacingBlockEntity(), getDirection().getOpposite());
|
||||
IFluidHandler handler = LevelUtils.getFluidHandler(getFacingBlockEntity(), getDirection().getOpposite());
|
||||
|
||||
if (handler != null) {
|
||||
FluidStack stack = fluids[filterSlot];
|
||||
|
||||
@@ -17,7 +17,7 @@ import com.refinedmods.refinedstorage.blockentity.config.IComparable;
|
||||
import com.refinedmods.refinedstorage.blockentity.config.IType;
|
||||
import com.refinedmods.refinedstorage.blockentity.config.IWhitelistBlacklist;
|
||||
import com.refinedmods.refinedstorage.util.StackUtils;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
@@ -68,7 +68,7 @@ public class ImporterNetworkNode extends NetworkNode implements IComparable, IWh
|
||||
|
||||
if (type == IType.ITEMS) {
|
||||
BlockEntity facing = getFacingBlockEntity();
|
||||
IItemHandler handler = WorldUtils.getItemHandler(facing, getDirection().getOpposite());
|
||||
IItemHandler handler = LevelUtils.getItemHandler(facing, getDirection().getOpposite());
|
||||
|
||||
if (facing instanceof DiskDriveBlockEntity || handler == null) {
|
||||
return;
|
||||
@@ -100,7 +100,7 @@ public class ImporterNetworkNode extends NetworkNode implements IComparable, IWh
|
||||
}
|
||||
}
|
||||
} else if (type == IType.FLUIDS && ticks % upgrades.getSpeed() == 0) {
|
||||
IFluidHandler handler = WorldUtils.getFluidHandler(getFacingBlockEntity(), getDirection().getOpposite());
|
||||
IFluidHandler handler = LevelUtils.getFluidHandler(getFacingBlockEntity(), getDirection().getOpposite());
|
||||
|
||||
if (handler != null) {
|
||||
FluidStack stack = handler.drain(FluidAttributes.BUCKET_VOLUME, IFluidHandler.FluidAction.SIMULATE);
|
||||
|
||||
@@ -36,8 +36,8 @@ public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor {
|
||||
// However, due to the memory footprint of worlds and modded minecraft having the tendency to have lots of worlds,
|
||||
// Forge is planning to unload (aka remove) worlds so their instances will change.
|
||||
// This is problematic as this attribute will target the wrong world in that case.
|
||||
// Idea: possibly change to a getter based on RegistryKey<World>?
|
||||
// Another note: this attribute isn't the *real* problem. Because network nodes are in WorldSavedData in a tick handler,
|
||||
// Idea: possibly change to a getter based on RegistryKey<Level>?
|
||||
// Another note: this attribute isn't the *real* problem. Because network nodes are in SavedData in a tick handler,
|
||||
// new instances of network nodes will be created when the world refreshes (causing this field to be different too).
|
||||
// However, network nodes in the network graph *AREN'T* recreated when the world refreshes, causing the graph to have the incorrect instance, and even worse,
|
||||
// having multiple different instances of the same network node.
|
||||
|
||||
@@ -114,10 +114,10 @@ public class NetworkTransmitterNetworkNode extends NetworkNode {
|
||||
|
||||
if (canTransmit()) {
|
||||
if (!isSameDimension()) {
|
||||
Level dimensionWorld = level.getServer().getLevel(receiverDimension);
|
||||
Level dimensionLevel = level.getServer().getLevel(receiverDimension);
|
||||
|
||||
if (dimensionWorld != null && dimensionWorld.getBlockEntity(receiver) instanceof NetworkReceiverBlockEntity) {
|
||||
operator.apply(dimensionWorld, receiver, null);
|
||||
if (dimensionLevel != null && dimensionLevel.getBlockEntity(receiver) instanceof NetworkReceiverBlockEntity) {
|
||||
operator.apply(dimensionLevel, receiver, null);
|
||||
}
|
||||
} else {
|
||||
if (level.getBlockEntity(receiver) instanceof NetworkReceiverBlockEntity) {
|
||||
|
||||
@@ -14,7 +14,7 @@ import com.refinedmods.refinedstorage.blockentity.config.IType;
|
||||
import com.refinedmods.refinedstorage.blockentity.config.RedstoneMode;
|
||||
import com.refinedmods.refinedstorage.util.NetworkUtils;
|
||||
import com.refinedmods.refinedstorage.util.StackUtils;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
@@ -46,14 +46,14 @@ public class StorageMonitorNetworkNode extends NetworkNode implements IComparabl
|
||||
.addListener(new NetworkNodeInventoryListener(this))
|
||||
.addListener((handler, slot, reading) -> {
|
||||
if (!reading) {
|
||||
WorldUtils.updateBlock(level, pos);
|
||||
LevelUtils.updateBlock(level, pos);
|
||||
}
|
||||
});
|
||||
|
||||
private final FluidInventory fluidFilter = new FluidInventory(1, FluidAttributes.BUCKET_VOLUME)
|
||||
.addListener((handler, slot, reading) -> {
|
||||
if (!reading) {
|
||||
WorldUtils.updateBlock(level, pos);
|
||||
LevelUtils.updateBlock(level, pos);
|
||||
}
|
||||
});
|
||||
private final Map<String, Pair<ItemStack, Long>> deposits = new HashMap<>();
|
||||
@@ -82,7 +82,7 @@ public class StorageMonitorNetworkNode extends NetworkNode implements IComparabl
|
||||
} else if (oldAmount != newAmount) {
|
||||
oldAmount = newAmount;
|
||||
|
||||
WorldUtils.updateBlock(level, pos);
|
||||
LevelUtils.updateBlock(level, pos);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -249,7 +249,7 @@ public class StorageMonitorNetworkNode extends NetworkNode implements IComparabl
|
||||
public void setCompare(int compare) {
|
||||
this.compare = compare;
|
||||
|
||||
WorldUtils.updateBlock(level, pos);
|
||||
LevelUtils.updateBlock(level, pos);
|
||||
|
||||
markDirty();
|
||||
}
|
||||
@@ -325,7 +325,7 @@ public class StorageMonitorNetworkNode extends NetworkNode implements IComparabl
|
||||
public void setType(int type) {
|
||||
this.type = type;
|
||||
|
||||
WorldUtils.updateBlock(level, pos);
|
||||
LevelUtils.updateBlock(level, pos);
|
||||
markDirty();
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ import com.refinedmods.refinedstorage.inventory.listener.NetworkNodeFluidInvento
|
||||
import com.refinedmods.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.refinedmods.refinedstorage.util.AccessTypeUtils;
|
||||
import com.refinedmods.refinedstorage.util.StackUtils;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
@@ -75,7 +75,7 @@ public class DiskDriveNetworkNode extends NetworkNode implements IStorageProvide
|
||||
}
|
||||
|
||||
if (!reading) {
|
||||
WorldUtils.updateBlock(level, pos);
|
||||
LevelUtils.updateBlock(level, pos);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -125,7 +125,7 @@ public class DiskDriveNetworkNode extends NetworkNode implements IStorageProvide
|
||||
++ticksSinceBlockUpdateRequested;
|
||||
|
||||
if (ticksSinceBlockUpdateRequested > DISK_STATE_UPDATE_THROTTLE) {
|
||||
WorldUtils.updateBlock(level, pos);
|
||||
LevelUtils.updateBlock(level, pos);
|
||||
|
||||
this.blockUpdateRequested = false;
|
||||
this.ticksSinceBlockUpdateRequested = 0;
|
||||
@@ -148,7 +148,7 @@ public class DiskDriveNetworkNode extends NetworkNode implements IStorageProvide
|
||||
network.getNodeGraph().runActionWhenPossible(ItemStorageCache.INVALIDATE_ACTION.apply(InvalidateCause.CONNECTED_STATE_CHANGED));
|
||||
network.getNodeGraph().runActionWhenPossible(FluidStorageCache.INVALIDATE_ACTION.apply(InvalidateCause.CONNECTED_STATE_CHANGED));
|
||||
|
||||
WorldUtils.updateBlock(level, pos);
|
||||
LevelUtils.updateBlock(level, pos);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,7 +22,7 @@ import com.refinedmods.refinedstorage.inventory.listener.NetworkNodeFluidInvento
|
||||
import com.refinedmods.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.refinedmods.refinedstorage.item.UpgradeItem;
|
||||
import com.refinedmods.refinedstorage.util.StackUtils;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
@@ -68,7 +68,7 @@ public class DiskManipulatorNetworkNode extends NetworkNode implements IComparab
|
||||
);
|
||||
|
||||
if (!reading) {
|
||||
WorldUtils.updateBlock(level, pos);
|
||||
LevelUtils.updateBlock(level, pos);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -88,7 +88,7 @@ public class DiskManipulatorNetworkNode extends NetworkNode implements IComparab
|
||||
);
|
||||
|
||||
if (!reading) {
|
||||
WorldUtils.updateBlock(level, pos);
|
||||
LevelUtils.updateBlock(level, pos);
|
||||
}
|
||||
}
|
||||
}));
|
||||
|
||||
@@ -8,7 +8,7 @@ import com.refinedmods.refinedstorage.api.util.Action;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.DiskState;
|
||||
import com.refinedmods.refinedstorage.blockentity.config.IWhitelistBlacklist;
|
||||
import com.refinedmods.refinedstorage.util.StackUtils;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
@@ -33,7 +33,7 @@ public class StorageDiskFluidManipulatorWrapper implements IStorageDisk<FluidSta
|
||||
if (lastState != currentState) {
|
||||
lastState = currentState;
|
||||
|
||||
WorldUtils.updateBlock(diskManipulator.getLevel(), diskManipulator.getPos());
|
||||
LevelUtils.updateBlock(diskManipulator.getLevel(), diskManipulator.getPos());
|
||||
}
|
||||
},
|
||||
diskManipulator
|
||||
|
||||
@@ -7,7 +7,7 @@ import com.refinedmods.refinedstorage.api.storage.disk.IStorageDiskListener;
|
||||
import com.refinedmods.refinedstorage.api.util.Action;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.DiskState;
|
||||
import com.refinedmods.refinedstorage.blockentity.config.IWhitelistBlacklist;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
@@ -33,7 +33,7 @@ public class StorageDiskItemManipulatorWrapper implements IStorageDisk<ItemStack
|
||||
if (lastState != currentState) {
|
||||
lastState = currentState;
|
||||
|
||||
WorldUtils.updateBlock(diskManipulator.getLevel(), diskManipulator.getPos());
|
||||
LevelUtils.updateBlock(diskManipulator.getLevel(), diskManipulator.getPos());
|
||||
}
|
||||
},
|
||||
diskManipulator
|
||||
|
||||
@@ -5,7 +5,7 @@ import com.refinedmods.refinedstorage.api.storage.disk.IStorageDiskFactory;
|
||||
import com.refinedmods.refinedstorage.api.storage.disk.IStorageDiskManager;
|
||||
import com.refinedmods.refinedstorage.api.storage.disk.IStorageDiskProvider;
|
||||
import com.refinedmods.refinedstorage.apiimpl.API;
|
||||
import com.refinedmods.refinedstorage.apiimpl.util.RSWorldSavedData;
|
||||
import com.refinedmods.refinedstorage.apiimpl.util.RSSavedData;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.nbt.ListTag;
|
||||
import net.minecraft.nbt.Tag;
|
||||
@@ -18,7 +18,7 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public class StorageDiskManager extends RSWorldSavedData implements IStorageDiskManager {
|
||||
public class StorageDiskManager extends RSSavedData implements IStorageDiskManager {
|
||||
public static final String NAME = "refinedstorage_disks";
|
||||
|
||||
private static final String NBT_DISKS = "Disks";
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.refinedmods.refinedstorage.api.storage.externalstorage.IExternalStora
|
||||
import com.refinedmods.refinedstorage.api.storage.externalstorage.IExternalStorageContext;
|
||||
import com.refinedmods.refinedstorage.api.storage.externalstorage.IExternalStorageProvider;
|
||||
import com.refinedmods.refinedstorage.blockentity.FluidInterfaceBlockEntity;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
@@ -14,7 +14,7 @@ import javax.annotation.Nonnull;
|
||||
public class FluidExternalStorageProvider implements IExternalStorageProvider<FluidStack> {
|
||||
@Override
|
||||
public boolean canProvide(BlockEntity blockEntity, Direction direction) {
|
||||
return WorldUtils.getFluidHandler(blockEntity, direction.getOpposite()) != null;
|
||||
return LevelUtils.getFluidHandler(blockEntity, direction.getOpposite()) != null;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@@ -25,7 +25,7 @@ public class FluidExternalStorageProvider implements IExternalStorageProvider<Fl
|
||||
return null;
|
||||
}
|
||||
|
||||
return WorldUtils.getFluidHandler(blockEntity, direction.getOpposite());
|
||||
return LevelUtils.getFluidHandler(blockEntity, direction.getOpposite());
|
||||
}, blockEntity instanceof FluidInterfaceBlockEntity);
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import com.refinedmods.refinedstorage.api.storage.externalstorage.IExternalStora
|
||||
import com.refinedmods.refinedstorage.api.storage.externalstorage.IExternalStorageProvider;
|
||||
import com.refinedmods.refinedstorage.blockentity.InterfaceBlockEntity;
|
||||
import com.refinedmods.refinedstorage.util.NetworkUtils;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
@@ -23,7 +23,7 @@ public class ItemExternalStorageProvider implements IExternalStorageProvider<Ite
|
||||
return false;
|
||||
}
|
||||
|
||||
return WorldUtils.getItemHandler(blockEntity, direction.getOpposite()) != null;
|
||||
return LevelUtils.getItemHandler(blockEntity, direction.getOpposite()) != null;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@@ -34,7 +34,7 @@ public class ItemExternalStorageProvider implements IExternalStorageProvider<Ite
|
||||
return null;
|
||||
}
|
||||
|
||||
return WorldUtils.getItemHandler(blockEntity, direction.getOpposite());
|
||||
return LevelUtils.getItemHandler(blockEntity, direction.getOpposite());
|
||||
}, blockEntity instanceof InterfaceBlockEntity);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.refinedmods.refinedstorage.apiimpl.storage.tracker;
|
||||
import com.refinedmods.refinedstorage.api.storage.StorageType;
|
||||
import com.refinedmods.refinedstorage.api.storage.tracker.IStorageTracker;
|
||||
import com.refinedmods.refinedstorage.api.storage.tracker.IStorageTrackerManager;
|
||||
import com.refinedmods.refinedstorage.apiimpl.util.RSWorldSavedData;
|
||||
import com.refinedmods.refinedstorage.apiimpl.util.RSSavedData;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.nbt.ListTag;
|
||||
import net.minecraft.nbt.Tag;
|
||||
@@ -12,7 +12,7 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public class StorageTrackerManager extends RSWorldSavedData implements IStorageTrackerManager {
|
||||
public class StorageTrackerManager extends RSSavedData implements IStorageTrackerManager {
|
||||
public static final String NAME = "refinedstorage_tracker";
|
||||
|
||||
private static final String NBT_TRACKERS = "Tracker";
|
||||
|
||||
@@ -11,8 +11,8 @@ import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
|
||||
public abstract class RSWorldSavedData extends SavedData {
|
||||
private final Logger LOGGER = LogManager.getLogger(RSWorldSavedData.class);
|
||||
public abstract class RSSavedData extends SavedData {
|
||||
private final Logger LOGGER = LogManager.getLogger(RSSavedData.class);
|
||||
|
||||
public abstract void load(CompoundTag nbt);
|
||||
|
||||
@@ -6,7 +6,7 @@ import com.refinedmods.refinedstorage.container.factory.BlockEntityMenuProvider;
|
||||
import com.refinedmods.refinedstorage.blockentity.StorageMonitorBlockEntity;
|
||||
import com.refinedmods.refinedstorage.util.BlockUtils;
|
||||
import com.refinedmods.refinedstorage.util.NetworkUtils;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.network.chat.TranslatableComponent;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
@@ -72,7 +72,7 @@ public class StorageMonitorBlock extends NetworkNodeBlock {
|
||||
super.attack(state, level, pos, player);
|
||||
|
||||
if (!level.isClientSide) {
|
||||
HitResult result = WorldUtils.rayTracePlayer(level, player);
|
||||
HitResult result = LevelUtils.rayTracePlayer(level, player);
|
||||
|
||||
if (!(result instanceof BlockHitResult)) {
|
||||
return;
|
||||
|
||||
@@ -53,6 +53,7 @@ public abstract class BaseBlockEntity extends BlockEntity {
|
||||
@Override
|
||||
public void setRemoved() {
|
||||
super.setRemoved();
|
||||
// TODO: remove when https://github.com/MinecraftForge/MinecraftForge/pull/8303/files is merged
|
||||
// @Volatile: MC calls setRemoved when a chunk unloads now as well (see ServerLevel#unload -> LevelChunk#clearAllBlockEntities).
|
||||
// Since we don't want to remove network node data in that case, we need to know if it was removed due to unloading.
|
||||
// We can use "unloaded" for that, it's set in #onChunkUnloaded.
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.CableNetworkNode;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
@@ -53,6 +53,6 @@ public class CableBlockEntity extends NetworkNodeBlockEntity<CableNetworkNode> {
|
||||
|
||||
requestModelDataUpdate();
|
||||
|
||||
WorldUtils.updateBlock(level, worldPosition);
|
||||
LevelUtils.updateBlock(level, worldPosition);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||
import com.refinedmods.refinedstorage.blockentity.config.IComparable;
|
||||
import com.refinedmods.refinedstorage.blockentity.config.IType;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
@@ -69,6 +69,6 @@ public class ConstructorBlockEntity extends NetworkNodeBlockEntity<ConstructorNe
|
||||
|
||||
requestModelDataUpdate();
|
||||
|
||||
WorldUtils.updateBlock(level, worldPosition);
|
||||
LevelUtils.updateBlock(level, worldPosition);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import com.refinedmods.refinedstorage.blockentity.config.IComparable;
|
||||
import com.refinedmods.refinedstorage.blockentity.config.IType;
|
||||
import com.refinedmods.refinedstorage.blockentity.config.IWhitelistBlacklist;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
@@ -72,6 +72,6 @@ public class DestructorBlockEntity extends NetworkNodeBlockEntity<DestructorNetw
|
||||
|
||||
requestModelDataUpdate();
|
||||
|
||||
WorldUtils.updateBlock(level, worldPosition);
|
||||
LevelUtils.updateBlock(level, worldPosition);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import com.refinedmods.refinedstorage.apiimpl.network.node.diskdrive.DiskDriveNe
|
||||
import com.refinedmods.refinedstorage.blockentity.config.*;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.RSSerializers;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
@@ -127,7 +127,7 @@ public class DiskDriveBlockEntity extends NetworkNodeBlockEntity<DiskDriveNetwor
|
||||
|
||||
requestModelDataUpdate();
|
||||
|
||||
WorldUtils.updateBlock(level, worldPosition);
|
||||
LevelUtils.updateBlock(level, worldPosition);
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
|
||||
@@ -7,7 +7,7 @@ import com.refinedmods.refinedstorage.blockentity.config.IComparable;
|
||||
import com.refinedmods.refinedstorage.blockentity.config.IType;
|
||||
import com.refinedmods.refinedstorage.blockentity.config.IWhitelistBlacklist;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
@@ -84,7 +84,7 @@ public class DiskManipulatorBlockEntity extends NetworkNodeBlockEntity<DiskManip
|
||||
|
||||
requestModelDataUpdate();
|
||||
|
||||
WorldUtils.updateBlock(level, worldPosition);
|
||||
LevelUtils.updateBlock(level, worldPosition);
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
|
||||
@@ -6,7 +6,7 @@ import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||
import com.refinedmods.refinedstorage.blockentity.config.IComparable;
|
||||
import com.refinedmods.refinedstorage.blockentity.config.IType;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
@@ -65,6 +65,6 @@ public class ExporterBlockEntity extends NetworkNodeBlockEntity<ExporterNetworkN
|
||||
|
||||
requestModelDataUpdate();
|
||||
|
||||
WorldUtils.updateBlock(level, worldPosition);
|
||||
LevelUtils.updateBlock(level, worldPosition);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||
import com.refinedmods.refinedstorage.blockentity.config.*;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.RSSerializers;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
@@ -99,6 +99,6 @@ public class ExternalStorageBlockEntity extends NetworkNodeBlockEntity<ExternalS
|
||||
|
||||
requestModelDataUpdate();
|
||||
|
||||
WorldUtils.updateBlock(level, worldPosition);
|
||||
LevelUtils.updateBlock(level, worldPosition);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import com.refinedmods.refinedstorage.blockentity.config.IComparable;
|
||||
import com.refinedmods.refinedstorage.blockentity.config.IType;
|
||||
import com.refinedmods.refinedstorage.blockentity.config.IWhitelistBlacklist;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
@@ -63,6 +63,6 @@ public class ImporterBlockEntity extends NetworkNodeBlockEntity<ImporterNetworkN
|
||||
|
||||
requestModelDataUpdate();
|
||||
|
||||
WorldUtils.updateBlock(level, worldPosition);
|
||||
LevelUtils.updateBlock(level, worldPosition);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ import com.refinedmods.refinedstorage.item.blockitem.PortableGridBlockItem;
|
||||
import com.refinedmods.refinedstorage.screen.BaseScreen;
|
||||
import com.refinedmods.refinedstorage.screen.grid.GridScreen;
|
||||
import com.refinedmods.refinedstorage.util.StackUtils;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
@@ -189,7 +189,7 @@ public class PortableGridBlockEntity extends BaseBlockEntity implements IGrid, I
|
||||
if (!reading) {
|
||||
updateState();
|
||||
|
||||
WorldUtils.updateBlock(level, worldPosition); // Re-send grid type
|
||||
LevelUtils.updateBlock(level, worldPosition); // Re-send grid type
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -5,7 +5,7 @@ import net.minecraft.world.item.Item;
|
||||
|
||||
public class CoreItem extends Item {
|
||||
public CoreItem() {
|
||||
super(new Item.Properties().tab(RS.MAIN_GROUP));
|
||||
super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB));
|
||||
}
|
||||
|
||||
public enum Type {
|
||||
|
||||
@@ -10,7 +10,7 @@ import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverType;
|
||||
import com.refinedmods.refinedstorage.block.CableBlock;
|
||||
import com.refinedmods.refinedstorage.blockentity.NetworkNodeBlockEntity;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -40,7 +40,7 @@ public class CoverItem extends Item {
|
||||
|
||||
|
||||
public CoverItem() {
|
||||
super(new Item.Properties().tab(RS.MAIN_GROUP));
|
||||
super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB));
|
||||
}
|
||||
|
||||
public static void setItem(ItemStack cover, ItemStack item) {
|
||||
@@ -135,7 +135,7 @@ public class CoverItem extends Item {
|
||||
INetworkNode node = ((NetworkNodeBlockEntity<?>) blockEntity).getNode();
|
||||
|
||||
if (node.getNetwork() != null && !node.getNetwork().getSecurityManager().hasPermission(Permission.BUILD, context.getPlayer())) {
|
||||
WorldUtils.sendNoPermissionMessage(context.getPlayer());
|
||||
LevelUtils.sendNoPermissionMessage(context.getPlayer());
|
||||
|
||||
return InteractionResult.FAIL;
|
||||
}
|
||||
@@ -143,7 +143,7 @@ public class CoverItem extends Item {
|
||||
if (((ICoverable) node).getCoverManager().setCover(facing, createCover(getItem(stack)))) {
|
||||
context.getPlayer().getItemInHand(context.getHand()).shrink(1);
|
||||
|
||||
WorldUtils.updateBlock(level, pos);
|
||||
LevelUtils.updateBlock(level, pos);
|
||||
API.instance().getNetworkNodeManager((ServerLevel) level).markForSaving();
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ public class FilterItem extends Item {
|
||||
private static final String NBT_TYPE = "Type";
|
||||
|
||||
public FilterItem() {
|
||||
super(new Item.Properties().tab(RS.MAIN_GROUP).stacksTo(1));
|
||||
super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB).stacksTo(1));
|
||||
}
|
||||
|
||||
public static int getCompare(ItemStack stack) {
|
||||
|
||||
@@ -35,7 +35,7 @@ public class FluidStorageDiskItem extends Item implements IStorageDiskProvider {
|
||||
private final FluidStorageType type;
|
||||
|
||||
public FluidStorageDiskItem(FluidStorageType type) {
|
||||
super(new Item.Properties().tab(RS.MAIN_GROUP).stacksTo(1));
|
||||
super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB).stacksTo(1));
|
||||
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import net.minecraft.world.item.Item;
|
||||
|
||||
public class FluidStoragePartItem extends Item {
|
||||
public FluidStoragePartItem() {
|
||||
super(new Item.Properties().tab(RS.MAIN_GROUP));
|
||||
super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB));
|
||||
}
|
||||
|
||||
public static FluidStoragePartItem getByType(FluidStorageType type) {
|
||||
|
||||
@@ -28,7 +28,7 @@ public class NetworkCardItem extends Item {
|
||||
private static final String NBT_DIMENSION = "Dimension";
|
||||
|
||||
public NetworkCardItem() {
|
||||
super(new Item.Properties().tab(RS.MAIN_GROUP).stacksTo(1));
|
||||
super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB).stacksTo(1));
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -98,13 +98,13 @@ public abstract class NetworkItem extends EnergyItem implements INetworkItemProv
|
||||
return;
|
||||
}
|
||||
|
||||
Level nodeWorld = server.getLevel(dimension);
|
||||
if (nodeWorld == null) {
|
||||
Level nodeLevel = server.getLevel(dimension);
|
||||
if (nodeLevel == null) {
|
||||
onError.accept(notFound);
|
||||
return;
|
||||
}
|
||||
|
||||
INetwork network = NetworkUtils.getNetworkFromNode(NetworkUtils.getNodeFromBlockEntity(nodeWorld.getBlockEntity(new BlockPos(getX(stack), getY(stack), getZ(stack)))));
|
||||
INetwork network = NetworkUtils.getNetworkFromNode(NetworkUtils.getNodeFromBlockEntity(nodeLevel.getBlockEntity(new BlockPos(getX(stack), getY(stack), getZ(stack)))));
|
||||
if (network == null) {
|
||||
onError.accept(notFound);
|
||||
return;
|
||||
|
||||
@@ -54,7 +54,7 @@ public class PatternItem extends Item implements ICraftingPatternProvider, IItem
|
||||
private static final int VERSION = 1;
|
||||
|
||||
public PatternItem() {
|
||||
super(new Item.Properties().tab(RS.MAIN_GROUP));
|
||||
super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB));
|
||||
}
|
||||
|
||||
public static ICraftingPattern fromCache(Level level, ItemStack stack) {
|
||||
|
||||
@@ -5,6 +5,6 @@ import net.minecraft.world.item.Item;
|
||||
|
||||
public class ProcessorBindingItem extends Item {
|
||||
public ProcessorBindingItem() {
|
||||
super(new Item.Properties().tab(RS.MAIN_GROUP));
|
||||
super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import net.minecraft.world.item.Item;
|
||||
|
||||
public class ProcessorItem extends Item {
|
||||
public ProcessorItem() {
|
||||
super(new Item.Properties().tab(RS.MAIN_GROUP));
|
||||
super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB));
|
||||
}
|
||||
|
||||
public enum Type {
|
||||
|
||||
@@ -5,6 +5,6 @@ import net.minecraft.world.item.Item;
|
||||
|
||||
public class QuartzEnrichedIronItem extends Item {
|
||||
public QuartzEnrichedIronItem() {
|
||||
super(new Item.Properties().tab(RS.MAIN_GROUP));
|
||||
super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ public class SecurityCardItem extends Item {
|
||||
private static final String NBT_PERMISSION = "Permission_%d";
|
||||
|
||||
public SecurityCardItem() {
|
||||
super(new Item.Properties().tab(RS.MAIN_GROUP).stacksTo(1));
|
||||
super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB).stacksTo(1));
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -5,6 +5,6 @@ import net.minecraft.world.item.Item;
|
||||
|
||||
public class SiliconItem extends Item {
|
||||
public SiliconItem() {
|
||||
super(new Item.Properties().tab(RS.MAIN_GROUP));
|
||||
super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ public class StorageDiskItem extends Item implements IStorageDiskProvider {
|
||||
private final ItemStorageType type;
|
||||
|
||||
public StorageDiskItem(ItemStorageType type) {
|
||||
super(new Item.Properties().tab(RS.MAIN_GROUP).stacksTo(1));
|
||||
super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB).stacksTo(1));
|
||||
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,6 @@ import net.minecraft.world.item.Item;
|
||||
|
||||
public class StorageHousingItem extends Item {
|
||||
public StorageHousingItem() {
|
||||
super(new Item.Properties().tab(RS.MAIN_GROUP));
|
||||
super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import net.minecraft.world.item.Item;
|
||||
|
||||
public class StoragePartItem extends Item {
|
||||
public StoragePartItem() {
|
||||
super(new Item.Properties().tab(RS.MAIN_GROUP));
|
||||
super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB));
|
||||
}
|
||||
|
||||
public static StoragePartItem getByType(ItemStorageType type) {
|
||||
|
||||
@@ -16,7 +16,7 @@ public class UpgradeItem extends Item {
|
||||
private final Type type;
|
||||
|
||||
public UpgradeItem(Type type) {
|
||||
super(new Item.Properties().tab(RS.MAIN_GROUP));
|
||||
super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB));
|
||||
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ public class WirelessCraftingMonitorItem extends NetworkItem {
|
||||
private final Type type;
|
||||
|
||||
public WirelessCraftingMonitorItem(Type type) {
|
||||
super(new Item.Properties().tab(RS.MAIN_GROUP).stacksTo(1), type == Type.CREATIVE, () -> RS.SERVER_CONFIG.getWirelessCraftingMonitor().getCapacity());
|
||||
super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB).stacksTo(1), type == Type.CREATIVE, () -> RS.SERVER_CONFIG.getWirelessCraftingMonitor().getCapacity());
|
||||
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ public class WirelessFluidGridItem extends NetworkItem {
|
||||
private final Type type;
|
||||
|
||||
public WirelessFluidGridItem(Type type) {
|
||||
super(new Item.Properties().tab(RS.MAIN_GROUP).stacksTo(1), type == Type.CREATIVE, () -> RS.SERVER_CONFIG.getWirelessFluidGrid().getCapacity());
|
||||
super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB).stacksTo(1), type == Type.CREATIVE, () -> RS.SERVER_CONFIG.getWirelessFluidGrid().getCapacity());
|
||||
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ public class WirelessGridItem extends NetworkItem {
|
||||
private final Type type;
|
||||
|
||||
public WirelessGridItem(Type type) {
|
||||
super(new Item.Properties().tab(RS.MAIN_GROUP).stacksTo(1), type == Type.CREATIVE, () -> RS.SERVER_CONFIG.getWirelessGrid().getCapacity());
|
||||
super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB).stacksTo(1), type == Type.CREATIVE, () -> RS.SERVER_CONFIG.getWirelessGrid().getCapacity());
|
||||
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import com.refinedmods.refinedstorage.api.network.node.INetworkNode;
|
||||
import com.refinedmods.refinedstorage.api.network.security.Permission;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.Cover;
|
||||
import com.refinedmods.refinedstorage.util.NetworkUtils;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
@@ -18,7 +18,7 @@ import net.minecraftforge.items.ItemHandlerHelper;
|
||||
|
||||
public class WrenchItem extends Item {
|
||||
public WrenchItem() {
|
||||
super(new Item.Properties().tab(RS.MAIN_GROUP).stacksTo(1));
|
||||
super(new Item.Properties().tab(RS.CREATIVE_MODE_TAB).stacksTo(1));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -30,7 +30,7 @@ public class WrenchItem extends Item {
|
||||
INetworkNode node = NetworkUtils.getNodeFromBlockEntity(ctx.getLevel().getBlockEntity(ctx.getClickedPos()));
|
||||
INetwork network = NetworkUtils.getNetworkFromNode(node);
|
||||
if (network != null && !network.getSecurityManager().hasPermission(Permission.BUILD, ctx.getPlayer())) {
|
||||
WorldUtils.sendNoPermissionMessage(ctx.getPlayer());
|
||||
LevelUtils.sendNoPermissionMessage(ctx.getPlayer());
|
||||
|
||||
return InteractionResult.FAIL;
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ public class ControllerBlockItem extends EnergyBlockItem {
|
||||
private final Component displayName;
|
||||
|
||||
public ControllerBlockItem(ControllerBlock block, DyeColor color, Component displayName) {
|
||||
super(block, new Item.Properties().tab(RS.MAIN_GROUP).stacksTo(1), block.getType() == NetworkType.CREATIVE, () -> RS.SERVER_CONFIG.getController().getCapacity());
|
||||
super(block, new Item.Properties().tab(RS.CREATIVE_MODE_TAB).stacksTo(1), block.getType() == NetworkType.CREATIVE, () -> RS.SERVER_CONFIG.getController().getCapacity());
|
||||
|
||||
if (color != ColorMap.DEFAULT_COLOR) {
|
||||
this.displayName = new TranslatableComponent("color.minecraft." + color.getName())
|
||||
|
||||
@@ -35,7 +35,7 @@ public class FluidStorageBlockItem extends BaseBlockItem {
|
||||
private final FluidStorageType type;
|
||||
|
||||
public FluidStorageBlockItem(FluidStorageBlock block) {
|
||||
super(block, new Item.Properties().tab(RS.MAIN_GROUP));
|
||||
super(block, new Item.Properties().tab(RS.CREATIVE_MODE_TAB));
|
||||
|
||||
this.type = block.getType();
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ public class PortableGridBlockItem extends EnergyBlockItem {
|
||||
public PortableGridBlockItem(Type type) {
|
||||
super(
|
||||
type == Type.CREATIVE ? RSBlocks.CREATIVE_PORTABLE_GRID.get() : RSBlocks.PORTABLE_GRID.get(),
|
||||
new Item.Properties().tab(RS.MAIN_GROUP).stacksTo(1),
|
||||
new Item.Properties().tab(RS.CREATIVE_MODE_TAB).stacksTo(1),
|
||||
type == Type.CREATIVE,
|
||||
() -> RS.SERVER_CONFIG.getPortableGrid().getCapacity()
|
||||
);
|
||||
|
||||
@@ -32,7 +32,7 @@ public class StorageBlockItem extends BaseBlockItem {
|
||||
private final ItemStorageType type;
|
||||
|
||||
public StorageBlockItem(StorageBlock block) {
|
||||
super(block, new Item.Properties().tab(RS.MAIN_GROUP));
|
||||
super(block, new Item.Properties().tab(RS.CREATIVE_MODE_TAB));
|
||||
|
||||
this.type = block.getType();
|
||||
}
|
||||
|
||||
@@ -6,8 +6,8 @@ import com.refinedmods.refinedstorage.util.ColorMap;
|
||||
import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
||||
public class MainItemGroup extends CreativeModeTab {
|
||||
public MainItemGroup() {
|
||||
public class MainCreativeModeTab extends CreativeModeTab {
|
||||
public MainCreativeModeTab() {
|
||||
super(RS.ID);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.screen.grid.stack;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.refinedmods.refinedstorage.api.storage.tracker.StorageTrackerEntry;
|
||||
import com.refinedmods.refinedstorage.apiimpl.API;
|
||||
@@ -135,11 +136,10 @@ public class FluidGridStack implements IGridStack {
|
||||
if (bypassCache || cachedTooltip == null) {
|
||||
List<Component> tooltip;
|
||||
try {
|
||||
tooltip = Arrays.asList(stack.getDisplayName());
|
||||
tooltip = Lists.newArrayList(stack.getDisplayName());
|
||||
} catch (Throwable t) {
|
||||
logger.warn("Could not retrieve fluid tooltip of {}", stack.getFluid().getRegistryName());
|
||||
|
||||
tooltip = Arrays.asList(new TextComponent(ERROR_PLACEHOLDER));
|
||||
tooltip = Lists.newArrayList(new TextComponent(ERROR_PLACEHOLDER));
|
||||
}
|
||||
|
||||
if (bypassCache) {
|
||||
|
||||
@@ -79,30 +79,33 @@ public final class ClientSetup {
|
||||
registerBakedModelOverrides();
|
||||
registerPatternRenderHandlers();
|
||||
|
||||
MenuScreens.register(RSContainerMenus.FILTER, FilterScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.CONTROLLER, ControllerScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.DISK_DRIVE, DiskDriveScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.GRID, new GridScreenFactory());
|
||||
MenuScreens.register(RSContainerMenus.STORAGE_BLOCK, StorageBlockScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.FLUID_STORAGE_BLOCK, FluidStorageBlockScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.EXTERNAL_STORAGE, ExternalStorageScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.IMPORTER, ImporterScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.EXPORTER, ExporterScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.NETWORK_TRANSMITTER, NetworkTransmitterScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.RELAY, RelayScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.DETECTOR, DetectorScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.SECURITY_MANAGER, SecurityManagerScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.INTERFACE, InterfaceScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.FLUID_INTERFACE, FluidInterfaceScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.WIRELESS_TRANSMITTER, WirelessTransmitterScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.STORAGE_MONITOR, StorageMonitorScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.CONSTRUCTOR, ConstructorScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.DESTRUCTOR, DestructorScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.DISK_MANIPULATOR, DiskManipulatorScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.CRAFTER, CrafterScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.CRAFTER_MANAGER, new CrafterManagerScreenFactory());
|
||||
MenuScreens.register(RSContainerMenus.CRAFTING_MONITOR, CraftingMonitorScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.WIRELESS_CRAFTING_MONITOR, CraftingMonitorScreen::new);
|
||||
// MenuScreens isn't thread safe
|
||||
e.enqueueWork(() -> {
|
||||
MenuScreens.register(RSContainerMenus.FILTER, FilterScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.CONTROLLER, ControllerScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.DISK_DRIVE, DiskDriveScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.GRID, new GridScreenFactory());
|
||||
MenuScreens.register(RSContainerMenus.STORAGE_BLOCK, StorageBlockScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.FLUID_STORAGE_BLOCK, FluidStorageBlockScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.EXTERNAL_STORAGE, ExternalStorageScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.IMPORTER, ImporterScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.EXPORTER, ExporterScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.NETWORK_TRANSMITTER, NetworkTransmitterScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.RELAY, RelayScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.DETECTOR, DetectorScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.SECURITY_MANAGER, SecurityManagerScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.INTERFACE, InterfaceScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.FLUID_INTERFACE, FluidInterfaceScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.WIRELESS_TRANSMITTER, WirelessTransmitterScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.STORAGE_MONITOR, StorageMonitorScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.CONSTRUCTOR, ConstructorScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.DESTRUCTOR, DestructorScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.DISK_MANIPULATOR, DiskManipulatorScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.CRAFTER, CrafterScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.CRAFTER_MANAGER, new CrafterManagerScreenFactory());
|
||||
MenuScreens.register(RSContainerMenus.CRAFTING_MONITOR, CraftingMonitorScreen::new);
|
||||
MenuScreens.register(RSContainerMenus.WIRELESS_CRAFTING_MONITOR, CraftingMonitorScreen::new);
|
||||
});
|
||||
|
||||
ClientRegistry.registerKeyBinding(RSKeyBindings.FOCUS_SEARCH_BAR);
|
||||
ClientRegistry.registerKeyBinding(RSKeyBindings.CLEAR_GRID_CRAFTING_MATRIX);
|
||||
@@ -111,46 +114,52 @@ public final class ClientSetup {
|
||||
ClientRegistry.registerKeyBinding(RSKeyBindings.OPEN_WIRELESS_CRAFTING_MONITOR);
|
||||
ClientRegistry.registerKeyBinding(RSKeyBindings.OPEN_PORTABLE_GRID);
|
||||
|
||||
RSBlocks.CONTROLLER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.CREATIVE_CONTROLLER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.CRAFTER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.CRAFTER_MANAGER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.CRAFTING_MONITOR.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.DETECTOR.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.DISK_MANIPULATOR.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.GRID.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.CRAFTING_GRID.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.PATTERN_GRID.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.FLUID_GRID.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.NETWORK_RECEIVER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.NETWORK_TRANSMITTER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.RELAY.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.SECURITY_MANAGER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.WIRELESS_TRANSMITTER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
ItemBlockRenderTypes.setRenderLayer(RSBlocks.CABLE.get(), RenderType.cutout());
|
||||
ItemBlockRenderTypes.setRenderLayer(RSBlocks.IMPORTER.get(), RenderType.cutout());
|
||||
ItemBlockRenderTypes.setRenderLayer(RSBlocks.EXPORTER.get(), RenderType.cutout());
|
||||
ItemBlockRenderTypes.setRenderLayer(RSBlocks.EXTERNAL_STORAGE.get(), RenderType.cutout());
|
||||
ItemBlockRenderTypes.setRenderLayer(RSBlocks.CONSTRUCTOR.get(), RenderType.cutout());
|
||||
ItemBlockRenderTypes.setRenderLayer(RSBlocks.DESTRUCTOR.get(), RenderType.cutout());
|
||||
// RenderLayer isn't thread safe
|
||||
e.enqueueWork(() -> {
|
||||
RSBlocks.CONTROLLER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.CREATIVE_CONTROLLER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.CRAFTER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.CRAFTER_MANAGER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.CRAFTING_MONITOR.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.DETECTOR.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.DISK_MANIPULATOR.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.GRID.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.CRAFTING_GRID.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.PATTERN_GRID.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.FLUID_GRID.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.NETWORK_RECEIVER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.NETWORK_TRANSMITTER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.RELAY.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.SECURITY_MANAGER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
RSBlocks.WIRELESS_TRANSMITTER.values().forEach(block -> ItemBlockRenderTypes.setRenderLayer(block.get(), RenderType.cutout()));
|
||||
ItemBlockRenderTypes.setRenderLayer(RSBlocks.CABLE.get(), RenderType.cutout());
|
||||
ItemBlockRenderTypes.setRenderLayer(RSBlocks.IMPORTER.get(), RenderType.cutout());
|
||||
ItemBlockRenderTypes.setRenderLayer(RSBlocks.EXPORTER.get(), RenderType.cutout());
|
||||
ItemBlockRenderTypes.setRenderLayer(RSBlocks.EXTERNAL_STORAGE.get(), RenderType.cutout());
|
||||
ItemBlockRenderTypes.setRenderLayer(RSBlocks.CONSTRUCTOR.get(), RenderType.cutout());
|
||||
ItemBlockRenderTypes.setRenderLayer(RSBlocks.DESTRUCTOR.get(), RenderType.cutout());
|
||||
});
|
||||
|
||||
BlockEntityRenderers.register(RSBlockEntities.STORAGE_MONITOR, ctx -> new StorageMonitorBlockEntityRenderer());
|
||||
|
||||
Minecraft.getInstance().getItemColors().register(new PatternItemColor(), RSItems.PATTERN.get());
|
||||
// ItemProperties isn't thread safe
|
||||
e.enqueueWork(() -> {
|
||||
Minecraft.getInstance().getItemColors().register(new PatternItemColor(), RSItems.PATTERN.get());
|
||||
|
||||
ItemProperties.register(RSItems.SECURITY_CARD.get(), new ResourceLocation("active"), new SecurityCardItemPropertyGetter());
|
||||
ItemProperties.register(RSItems.SECURITY_CARD.get(), new ResourceLocation("active"), new SecurityCardItemPropertyGetter());
|
||||
|
||||
RSItems.CONTROLLER.values().forEach(controller -> ItemProperties.register(controller.get(), new ResourceLocation("energy_type"), new ControllerItemPropertyGetter()));
|
||||
RSItems.CREATIVE_CONTROLLER.values().forEach(controller -> ItemProperties.register(controller.get(), new ResourceLocation("energy_type"), new ControllerItemPropertyGetter()));
|
||||
RSItems.CONTROLLER.values().forEach(controller -> ItemProperties.register(controller.get(), new ResourceLocation("energy_type"), new ControllerItemPropertyGetter()));
|
||||
RSItems.CREATIVE_CONTROLLER.values().forEach(controller -> ItemProperties.register(controller.get(), new ResourceLocation("energy_type"), new ControllerItemPropertyGetter()));
|
||||
|
||||
ItemProperties.register(RSItems.WIRELESS_CRAFTING_MONITOR.get(), CONNECTED, new NetworkItemPropertyGetter());
|
||||
ItemProperties.register(RSItems.CREATIVE_WIRELESS_CRAFTING_MONITOR.get(), CONNECTED, new NetworkItemPropertyGetter());
|
||||
ItemProperties.register(RSItems.WIRELESS_CRAFTING_MONITOR.get(), CONNECTED, new NetworkItemPropertyGetter());
|
||||
ItemProperties.register(RSItems.CREATIVE_WIRELESS_CRAFTING_MONITOR.get(), CONNECTED, new NetworkItemPropertyGetter());
|
||||
|
||||
ItemProperties.register(RSItems.WIRELESS_GRID.get(), CONNECTED, new NetworkItemPropertyGetter());
|
||||
ItemProperties.register(RSItems.CREATIVE_WIRELESS_GRID.get(), CONNECTED, new NetworkItemPropertyGetter());
|
||||
ItemProperties.register(RSItems.WIRELESS_GRID.get(), CONNECTED, new NetworkItemPropertyGetter());
|
||||
ItemProperties.register(RSItems.CREATIVE_WIRELESS_GRID.get(), CONNECTED, new NetworkItemPropertyGetter());
|
||||
|
||||
ItemProperties.register(RSItems.WIRELESS_FLUID_GRID.get(), CONNECTED, new NetworkItemPropertyGetter());
|
||||
ItemProperties.register(RSItems.CREATIVE_WIRELESS_FLUID_GRID.get(), CONNECTED, new NetworkItemPropertyGetter());
|
||||
ItemProperties.register(RSItems.WIRELESS_FLUID_GRID.get(), CONNECTED, new NetworkItemPropertyGetter());
|
||||
ItemProperties.register(RSItems.CREATIVE_WIRELESS_FLUID_GRID.get(), CONNECTED, new NetworkItemPropertyGetter());
|
||||
});
|
||||
}
|
||||
|
||||
private static void registerPatternRenderHandlers() {
|
||||
|
||||
@@ -95,7 +95,7 @@ public class ColorMap<T extends IForgeRegistryEntry<? super T>> {
|
||||
block.getId().getPath(),
|
||||
() -> new ColoredBlockItem(
|
||||
block.get(),
|
||||
new Item.Properties().tab(RS.MAIN_GROUP),
|
||||
new Item.Properties().tab(RS.CREATIVE_MODE_TAB),
|
||||
color,
|
||||
BlockUtils.getBlockTranslation(translationBlock.get())
|
||||
)
|
||||
|
||||
@@ -30,8 +30,8 @@ import javax.annotation.Nullable;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
public final class WorldUtils {
|
||||
private WorldUtils() {
|
||||
public final class LevelUtils {
|
||||
private LevelUtils() {
|
||||
}
|
||||
|
||||
public static void updateBlock(@Nullable Level level, BlockPos pos) {
|
||||
@@ -56,7 +56,7 @@ public final class NetworkUtils {
|
||||
if (network != null) {
|
||||
for (Permission permission : permissionsRequired) {
|
||||
if (!network.getSecurityManager().hasPermission(permission, player)) {
|
||||
WorldUtils.sendNoPermissionMessage(player);
|
||||
LevelUtils.sendNoPermissionMessage(player);
|
||||
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
|
||||
@@ -1,33 +1,54 @@
|
||||
{
|
||||
"itemGroup.refinedstorage": "Refined Storage",
|
||||
"itemGroup.refinedstorage": "리파인드 스토리지",
|
||||
"itemGroup.refinedstorage.covers": "리파인드 스토리지 커버즈",
|
||||
|
||||
"key.refinedstorage.focusSearchBar": "그리드 검색",
|
||||
"key.refinedstorage.clearGridCraftingMatrix": "그리드 제작 매트릭스 지우기",
|
||||
"key.refinedstorage.openWirelessGrid": "무선 그리드 열기",
|
||||
"key.refinedstorage.openWirelessFluidGrid": "무선 액체 그리드 열기",
|
||||
"key.refinedstorage.openPortableGrid": "휴대용 그리드 열기",
|
||||
"key.refinedstorage.openWirelessCraftingMonitor": "무선 제작 모니터 열기",
|
||||
|
||||
"gui.refinedstorage.controller": "컨트롤러",
|
||||
"gui.refinedstorage.creative_controller": "크리에이티브 컨트롤러",
|
||||
"gui.refinedstorage.controller": "콘트롤러",
|
||||
"gui.refinedstorage.creative_controller": "크리에이티브 콘트롤러",
|
||||
"gui.refinedstorage.grid": "그리드",
|
||||
"gui.refinedstorage.grid.craft": "제작",
|
||||
"gui.refinedstorage.crafting_grid": "제작 그리드",
|
||||
"gui.refinedstorage.pattern_grid": "패턴 그리드",
|
||||
"gui.refinedstorage.grid.pattern_create": "패턴 제작",
|
||||
"gui.refinedstorage.wireless_grid": "무선 그리드",
|
||||
"gui.refinedstorage.fluid_grid": "액체 그리드",
|
||||
"gui.refinedstorage.portable_grid": "휴대용 그리드",
|
||||
"gui.refinedstorage.item_amount": "아이템 양",
|
||||
"gui.refinedstorage.fluid_amount": "액량(mB)",
|
||||
"gui.refinedstorage.disk_drive": "디스크 드라이브",
|
||||
"gui.refinedstorage.disk_drive.disks": "디스크",
|
||||
"gui.refinedstorage.external_storage": "외부 저장 포트",
|
||||
"gui.refinedstorage.importer": "입력 포트",
|
||||
"gui.refinedstorage.exporter": "출력 포트",
|
||||
"gui.refinedstorage.disk_manipulator": "디스크 조작기",
|
||||
"gui.refinedstorage.disk_manipulator.in": "입력",
|
||||
"gui.refinedstorage.disk_manipulator.out": "출력",
|
||||
"gui.refinedstorage.external_storage": "외부 저장공간",
|
||||
"gui.refinedstorage.importer": "입력기",
|
||||
"gui.refinedstorage.exporter": "출력기",
|
||||
"gui.refinedstorage.detector": "감지기",
|
||||
"gui.refinedstorage.destructor": "파괴기",
|
||||
"gui.refinedstorage.constructor": "설치기",
|
||||
"gui.refinedstorage.relay": "중계기",
|
||||
"gui.refinedstorage.interface.import": "인터페이스 입력",
|
||||
"gui.refinedstorage.interface.export": "인터페이스 출력",
|
||||
"gui.refinedstorage.crafting_monitor": "조합 모니터",
|
||||
"gui.refinedstorage.wireless_crafting_monitor": "무선 조합 모니터",
|
||||
"gui.refinedstorage.crafting_monitor.machine_none": "기계를 찾을 수 없음",
|
||||
"gui.refinedstorage.crafting_monitor": "제작 모니터",
|
||||
"gui.refinedstorage.wireless_crafting_monitor": "무선 제작 모니터",
|
||||
"gui.refinedstorage.crafting_monitor.tooltip.requested": "%d 요청됨",
|
||||
"gui.refinedstorage.crafting_monitor.stored": "저장: %d",
|
||||
"gui.refinedstorage.crafting_monitor.missing": "부족: %d",
|
||||
"gui.refinedstorage.crafting_monitor.processing": "처리: %d",
|
||||
"gui.refinedstorage.crafting_monitor.scheduled": "예정: %d",
|
||||
"gui.refinedstorage.crafting_monitor.crafting": "제작: %d",
|
||||
"gui.refinedstorage.crafting_monitor.machine_does_not_accept_item": "기계가 아이템을 허용하지 않습니다.",
|
||||
"gui.refinedstorage.crafting_monitor.machine_does_not_accept_fluid": "기계가 액체를 허용하지 않습니다.",
|
||||
"gui.refinedstorage.crafting_monitor.machine_none": "기계를 찾을 수 없습니다.",
|
||||
"gui.refinedstorage.crafting_monitor.crafter_is_locked": "제작기가 잠겼습니다.",
|
||||
"gui.refinedstorage.wireless_transmitter": "무선 송신기",
|
||||
"gui.refinedstorage.wireless_transmitter.distance": "%d블럭",
|
||||
"gui.refinedstorage.crafter": "조합기",
|
||||
"gui.refinedstorage.crafter": "제작기",
|
||||
"gui.refinedstorage.filter": "필터",
|
||||
"gui.refinedstorage.filter.compare_nbt": "NBT",
|
||||
"gui.refinedstorage.filter.mod_filter": "모드 필터",
|
||||
@@ -41,16 +62,22 @@
|
||||
"gui.refinedstorage.crafting_preview.to_craft": "제작할 아이템: %d",
|
||||
"gui.refinedstorage.crafting_preview.available": "사용 가능: %d",
|
||||
"gui.refinedstorage.crafting_preview.missing": "부족: %d",
|
||||
"gui.refinedstorage.crafting_preview.circular": "제작할 아이템이 서로를 필요로 합니다!",
|
||||
"gui.refinedstorage.crafting_preview.loop": "처리 중..",
|
||||
"gui.refinedstorage.crafting_preview.error": "요청에 실패했습니다.",
|
||||
"gui.refinedstorage.crafting_preview.error.recursive.0": "제작 재료 중 하나는 결국 ",
|
||||
"gui.refinedstorage.crafting_preview.error.recursive.1": "스스로가 필요하게 되었습니다.",
|
||||
"gui.refinedstorage.crafting_preview.error.recursive.2": "패턴을 제거하거나 제작 시 ",
|
||||
"gui.refinedstorage.crafting_preview.error.recursive.3": "패턴이 사용되지 않도록 해야 합니다.",
|
||||
"gui.refinedstorage.crafting_preview.error.recursive.4": "불쾌감을 주는 패턴:",
|
||||
"gui.refinedstorage.crafting_preview.error.too_complex.0": "제작 작업 계산이 너무 복잡하여 ",
|
||||
"gui.refinedstorage.crafting_preview.error.too_complex.1": "서버 부담을 피하기 위해 중지되었습니다.",
|
||||
"gui.refinedstorage.security_manager": "보안 관리자",
|
||||
"gui.refinedstorage.security_manager.configure": "설정",
|
||||
"gui.refinedstorage.security_manager.permission.0": "보관하기",
|
||||
"gui.refinedstorage.security_manager.permission.0.tooltip": "네트워크에 아이템 넣기",
|
||||
"gui.refinedstorage.security_manager.permission.1": "꺼내기",
|
||||
"gui.refinedstorage.security_manager.permission.1.tooltip": "네트워크에서 아이템 가져오기",
|
||||
"gui.refinedstorage.security_manager.permission.2": "자동 조합하기",
|
||||
"gui.refinedstorage.security_manager.permission.2.tooltip": "자동 조합 시작, 중지 및 현재 작업 보기",
|
||||
"gui.refinedstorage.security_manager.permission.0": "삽입",
|
||||
"gui.refinedstorage.security_manager.permission.0.tooltip": "네트워크에 아이템이나 액체를 삽입하기",
|
||||
"gui.refinedstorage.security_manager.permission.1": "추출",
|
||||
"gui.refinedstorage.security_manager.permission.1.tooltip": "네트워크에서 아이템이나 액체를 추출하기",
|
||||
"gui.refinedstorage.security_manager.permission.2": "자동 제작하기",
|
||||
"gui.refinedstorage.security_manager.permission.2.tooltip": "자동 제작 시작, 중지 및 현재 작업 보기",
|
||||
"gui.refinedstorage.security_manager.permission.3": "수정",
|
||||
"gui.refinedstorage.security_manager.permission.3.tooltip": "네트워크 상의 GUI 열기",
|
||||
"gui.refinedstorage.security_manager.permission.4": "조작",
|
||||
@@ -58,40 +85,78 @@
|
||||
"gui.refinedstorage.security_manager.permission.5": "보안",
|
||||
"gui.refinedstorage.security_manager.permission.5.tooltip": "보안 옵션 조정하기",
|
||||
"gui.refinedstorage.storage_monitor": "저장 모니터",
|
||||
|
||||
"gui.refinedstorage.crafter_manager": "제작기 관리자",
|
||||
"gui.refinedstorage.alternatives": "대체",
|
||||
"gui.refinedstorage.alternatives.apply": "적용",
|
||||
"gui.refinedstorage.jei.transfer.autocrafting_available": "자동 제작 사용 가능",
|
||||
"gui.refinedstorage.jei.transfer.request_autocrafting": "CTRL + 클릭하여 자동 제작 요청",
|
||||
"misc.refinedstorage.energy_stored": "%d / %d FE",
|
||||
"misc.refinedstorage.energy_usage": "사용: %d FE/t",
|
||||
"misc.refinedstorage.energy_usage_minimal": "%d FE/t",
|
||||
|
||||
"misc.refinedstorage.storage.stored": "저장량: %s",
|
||||
"misc.refinedstorage.storage.stored_capacity": "저쟝량: %s / %s",
|
||||
"misc.refinedstorage.storage.stored_minimal": "%s",
|
||||
"misc.refinedstorage.storage.stored_capacity_minimal": "%s / %s",
|
||||
"misc.refinedstorage.storage.full": "%d%% 가득 참",
|
||||
|
||||
"misc.refinedstorage.network_item.tooltip": "%d, %d, %d로 연결됨",
|
||||
"misc.refinedstorage.network_item.out_of_range": "근방에 무선 송신기가 없습니다.",
|
||||
"misc.refinedstorage.network_item.not_found": "컨트롤러를 찾을 수 없습니다.",
|
||||
"misc.refinedstorage.network_item.not_found": "콘트롤러를 찾을 수 없습니다.",
|
||||
"misc.refinedstorage.network_item.shortcut_not_found": "인벤토리에 %s이(가) 없습니다.",
|
||||
"misc.refinedstorage.network_item.shortcut_duplicate": "인벤토리에 두 개 이상의 %s이(가) 있습니다.",
|
||||
"misc.refinedstorage.network_item.out_of_energy": "%s의 에너지가 부족합니다.",
|
||||
|
||||
"misc.refinedstorage.network_card.tooltip": "%d, %d, %d로 연결됨",
|
||||
|
||||
"misc.refinedstorage.pattern.inputs": "입력",
|
||||
"misc.refinedstorage.pattern.outputs": "출력",
|
||||
"misc.refinedstorage.pattern.invalid": "잘못된 패턴",
|
||||
"misc.refinedstorage.pattern.exact": "정확한 모드 사용",
|
||||
"misc.refinedstorage.pattern.allowed_item_tag": "%s에 대해 %s의 아이템을 사용합니다.",
|
||||
"misc.refinedstorage.pattern.allowed_fluid_tag": "%s에 대해 %s의 액체를 사용합니다.",
|
||||
|
||||
"misc.refinedstorage.pattern.error.processing_no_outputs": "처리 패턴에 출력이 없습니다.",
|
||||
"misc.refinedstorage.pattern.error.no_output": "제작법에 출력이 없습니다.",
|
||||
"misc.refinedstorage.pattern.error.recipe_does_not_exist": "제작법이 존재하지 않습니다.",
|
||||
"misc.refinedstorage.pattern.error.tag_no_longer_applicable": "%s 태그를 %s에 더 이상 적용할 수 없습니다.",
|
||||
"misc.refinedstorage.security.no_permission": "해당 작업을 실행할 권한이 없습니다.",
|
||||
|
||||
"misc.refinedstorage.start": "시작",
|
||||
"misc.refinedstorage.clear": "초기화",
|
||||
"misc.refinedstorage.set": "설정",
|
||||
"misc.refinedstorage.cancel_all": "모두 취소",
|
||||
"misc.refinedstorage.priority": "우선 순위",
|
||||
"misc.refinedstorage.exact": "정확성",
|
||||
"misc.refinedstorage.processing": "처리",
|
||||
"misc.refinedstorage.fluidmode": "액체",
|
||||
"misc.refinedstorage.total": "%s 합계",
|
||||
"misc.refinedstorage.last_modified.just_now": "%s에 의해 방금 전에 최종 수정됨",
|
||||
"misc.refinedstorage.last_modified.second": "%s에 의해 %d초 전에 마지막으로 수정됨",
|
||||
"misc.refinedstorage.last_modified.seconds": "%s에 의해 %d초 전에 마지막으로 수정됨",
|
||||
"misc.refinedstorage.last_modified.minute": "%s에 의해 %d분 전에 마지막으로 수정됨",
|
||||
"misc.refinedstorage.last_modified.minutes": "%s에 의해 %d분 전에 마지막으로 수정됨",
|
||||
"misc.refinedstorage.last_modified.hour": "%s에 의해 %d시간 전에 마지막으로 수정됨",
|
||||
"misc.refinedstorage.last_modified.hours": "%s에 의해 %d시간 전에 마지막으로 수정됨",
|
||||
"misc.refinedstorage.last_modified.day": "%s에 의해 %d일 전에 마지막으로 수정됨",
|
||||
"misc.refinedstorage.last_modified.days": "%s에 의해 %d일 전에 마지막으로 수정됨",
|
||||
"misc.refinedstorage.last_modified.week": "%s에 의해 %d주 전에 마지막으로 수정됨",
|
||||
"misc.refinedstorage.last_modified.weeks": "%s에 의해 %d주 전에 마지막으로 수정됨",
|
||||
"misc.refinedstorage.last_modified.year": "%s에 의해 %d년 전에 마지막으로 수정됨",
|
||||
"misc.refinedstorage.last_modified.years": "%s에 의해 %d년 전에 마지막으로 수정됨",
|
||||
|
||||
"sidebutton.refinedstorage.exact_mode": "정확한 모드",
|
||||
"sidebutton.refinedstorage.exact_mode.on": "켜짐",
|
||||
"sidebutton.refinedstorage.exact_mode.off": "꺼짐",
|
||||
|
||||
"sidebutton.refinedstorage.redstone_mode": "레드스톤 모드",
|
||||
"sidebutton.refinedstorage.redstone_mode.0": "신호와 상관 없이 작동",
|
||||
"sidebutton.refinedstorage.redstone_mode.1": "신호를 받을 때 작동",
|
||||
"sidebutton.refinedstorage.redstone_mode.2": "신호를 받지 않을 때 작동",
|
||||
|
||||
"sidebutton.refinedstorage.crafter_mode": "제작기 모드",
|
||||
"sidebutton.refinedstorage.crafter_mode.0": "레드스톤 신호 무시",
|
||||
"sidebutton.refinedstorage.crafter_mode.1": "레드스톤 신호가 자동 제작의 잠금을 해제합니다.",
|
||||
"sidebutton.refinedstorage.crafter_mode.2": "레드스톤 신호가 자동 제작을 잠급니다.",
|
||||
"sidebutton.refinedstorage.crafter_mode.3": "레드스톤 펄스가 다음 세트를 삽입합니다.",
|
||||
|
||||
"sidebutton.refinedstorage.grid.view_type": "표시",
|
||||
"sidebutton.refinedstorage.grid.view_type.0": "일반",
|
||||
"sidebutton.refinedstorage.grid.view_type.1": "제작 가능 아이템 숨김",
|
||||
@@ -103,11 +168,15 @@
|
||||
"sidebutton.refinedstorage.grid.sorting.type.0": "수량",
|
||||
"sidebutton.refinedstorage.grid.sorting.type.1": "이름",
|
||||
"sidebutton.refinedstorage.grid.sorting.type.2": "ID",
|
||||
"sidebutton.refinedstorage.grid.sorting.type.3": "인벤토리트윅스",
|
||||
"sidebutton.refinedstorage.grid.sorting.type.4": "최근 수정",
|
||||
"sidebutton.refinedstorage.grid.search_box_mode": "검색 모드",
|
||||
"sidebutton.refinedstorage.grid.search_box_mode.0": "일반",
|
||||
"sidebutton.refinedstorage.grid.search_box_mode.1": "일반 (자동 선택됨)",
|
||||
"sidebutton.refinedstorage.grid.search_box_mode.2": "JEI 통합",
|
||||
"sidebutton.refinedstorage.grid.search_box_mode.3": "JEI 통합 (자동 선택됨)",
|
||||
"sidebutton.refinedstorage.grid.search_box_mode.4": "JEI 통합 (양방향)",
|
||||
"sidebutton.refinedstorage.grid.search_box_mode.5": "JEI 통합 (양방향 자동 선택됨)",
|
||||
"sidebutton.refinedstorage.grid.size": "크기",
|
||||
"sidebutton.refinedstorage.grid.size.0": "맞춤",
|
||||
"sidebutton.refinedstorage.grid.size.1": "작음",
|
||||
@@ -130,58 +199,53 @@
|
||||
"sidebutton.refinedstorage.detector.mode.0": "수량 이하일 때 신호 출력",
|
||||
"sidebutton.refinedstorage.detector.mode.1": "수량과 일치할 때 신호 출력",
|
||||
"sidebutton.refinedstorage.detector.mode.2": "수량 이상일 때 신호 출력",
|
||||
|
||||
"sidebutton.refinedstorage.constructor.drop": "블럭을 설치하지 않고 떨어트림",
|
||||
|
||||
"sidebutton.refinedstorage.destructor.pickup": "블럭을 파괴하지 않고 주움",
|
||||
|
||||
"sidebutton.refinedstorage.access_type": "액세스 종류",
|
||||
"sidebutton.refinedstorage.access_type.0": "입출력",
|
||||
"sidebutton.refinedstorage.access_type.1": "입력",
|
||||
"sidebutton.refinedstorage.access_type.2": "출력",
|
||||
|
||||
"block.refinedstorage.controller": "컨트롤러",
|
||||
"block.refinedstorage.creative_controller": "크리에이티브 컨트롤러",
|
||||
"block.refinedstorage.controller": "콘트롤러",
|
||||
"block.refinedstorage.creative_controller": "크리에이티브 콘트롤러",
|
||||
"block.refinedstorage.cable": "케이블",
|
||||
"block.refinedstorage.grid": "그리드",
|
||||
"block.refinedstorage.crafting_grid": "조합 그리드",
|
||||
"block.refinedstorage.crafting_grid": "제작 그리드",
|
||||
"block.refinedstorage.pattern_grid": "패턴 그리드",
|
||||
"block.refinedstorage.fluid_grid": "액체 그리드",
|
||||
"block.refinedstorage.disk_drive": "디스크 드라이브",
|
||||
"block.refinedstorage.disk_manipulator": "디스크 조작기",
|
||||
"block.refinedstorage.external_storage": "외부 저장 포트",
|
||||
"block.refinedstorage.importer": "입력 포트",
|
||||
"block.refinedstorage.exporter": "출력 포트",
|
||||
"block.refinedstorage.external_storage": "외부 저장공간",
|
||||
"block.refinedstorage.importer": "입력기",
|
||||
"block.refinedstorage.exporter": "출력기",
|
||||
"block.refinedstorage.detector": "감지기",
|
||||
"block.refinedstorage.machine_casing": "기계 케이싱",
|
||||
"block.refinedstorage.destructor": "파괴기",
|
||||
"block.refinedstorage.constructor": "설치기",
|
||||
"block.refinedstorage.1k_storage_block": "1k 저장 공간",
|
||||
"block.refinedstorage.4k_storage_block": "4k 저장 공간",
|
||||
"block.refinedstorage.16k_storage_block": "16k 저장 공간",
|
||||
"block.refinedstorage.64k_storage_block": "64k 저장 공간",
|
||||
"block.refinedstorage.creative_storage_block": "크리에이티브 저장 공간",
|
||||
"block.refinedstorage.1k_storage_block": "1k 저장공간",
|
||||
"block.refinedstorage.4k_storage_block": "4k 저장공간",
|
||||
"block.refinedstorage.16k_storage_block": "16k 저장공간",
|
||||
"block.refinedstorage.64k_storage_block": "64k 저장공간",
|
||||
"block.refinedstorage.creative_storage_block": "크리에이티브 저장공간",
|
||||
"block.refinedstorage.relay": "중계기",
|
||||
"block.refinedstorage.interface": "인터페이스",
|
||||
"block.refinedstorage.crafting_monitor": "조합 모니터",
|
||||
"block.refinedstorage.crafting_monitor": "제작 모니터",
|
||||
"block.refinedstorage.wireless_transmitter": "무선 송신기",
|
||||
"block.refinedstorage.wireless_transmitter.tooltip": "%s에 설치되어야 합니다.",
|
||||
"block.refinedstorage.crafter": "조합기",
|
||||
"block.refinedstorage.crafter": "제작기",
|
||||
"block.refinedstorage.network_receiver": "네트워크 수신기",
|
||||
"block.refinedstorage.network_transmitter": "네트워크 송신기",
|
||||
"block.refinedstorage.fluid_interface": "액체 인터페이스",
|
||||
"block.refinedstorage.64k_fluid_storage_block": "64k 액체 저장 공간",
|
||||
"block.refinedstorage.256k_fluid_storage_block": "256k 액체 저장 공간",
|
||||
"block.refinedstorage.1024k_fluid_storage_block": "1024k 액체 저장 공간",
|
||||
"block.refinedstorage.4096k_fluid_storage_block": "4096k 액체 저장 공간",
|
||||
"block.refinedstorage.creative_fluid_storage_block": "크리에이티브 액체 저장 공간",
|
||||
"block.refinedstorage.64k_fluid_storage_block": "64k 액체 저장공간",
|
||||
"block.refinedstorage.256k_fluid_storage_block": "256k 액체 저장공간",
|
||||
"block.refinedstorage.1024k_fluid_storage_block": "1024k 액체 저장공간",
|
||||
"block.refinedstorage.4096k_fluid_storage_block": "4096k 액체 저장공간",
|
||||
"block.refinedstorage.creative_fluid_storage_block": "크리에이티브 액체 저장공간",
|
||||
"block.refinedstorage.security_manager": "보안 관리자",
|
||||
"block.refinedstorage.quartz_enriched_iron_block": "석영 강화 철 블럭",
|
||||
"block.refinedstorage.storage_monitor": "저장 모니터",
|
||||
"block.refinedstorage.portable_grid": "휴대용 그리드",
|
||||
"block.refinedstorage.creative_portable_grid": "크리에이티브 휴대용 그리드",
|
||||
"block.refinedstorage.portable_grid.tooltip": "웅크리기로 설치할 수 있습니다.",
|
||||
|
||||
"block.refinedstorage.crafter_manager": "제작기 관리자",
|
||||
"item.refinedstorage.1k_storage_disk": "1k 저장 디스크",
|
||||
"item.refinedstorage.4k_storage_disk": "4k 저장 디스크",
|
||||
"item.refinedstorage.16k_storage_disk": "16k 저장 디스크",
|
||||
@@ -202,6 +266,9 @@
|
||||
"item.refinedstorage.construction_core": "형성 코어",
|
||||
"item.refinedstorage.destruction_core": "파괴 코어",
|
||||
"item.refinedstorage.silicon": "실리콘",
|
||||
"item.refinedstorage.raw_basic_processor": "처리되지 않은 기본 프로세서",
|
||||
"item.refinedstorage.raw_improved_processor": "처리되지 않은 강화 프로세서",
|
||||
"item.refinedstorage.raw_advanced_processor": "처리되지 않은 고급 프로세서",
|
||||
"item.refinedstorage.basic_processor": "기본 프로세서",
|
||||
"item.refinedstorage.improved_processor": "강화 프로세서",
|
||||
"item.refinedstorage.advanced_processor": "고급 프로세서",
|
||||
@@ -223,10 +290,86 @@
|
||||
"item.refinedstorage.fortune_1_upgrade": "행운 업그레이드",
|
||||
"item.refinedstorage.fortune_2_upgrade": "행운 업그레이드",
|
||||
"item.refinedstorage.fortune_3_upgrade": "행운 업그레이드",
|
||||
"item.refinedstorage.storage_housing": "빈 저장 디스크",
|
||||
"item.refinedstorage.regulator_upgrade": "조절기 업그레이드",
|
||||
"item.refinedstorage.storage_housing": "저장공간 하우징",
|
||||
"item.refinedstorage.filter": "필터",
|
||||
"item.refinedstorage.network_card": "네트워크 카드",
|
||||
"item.refinedstorage.wrench": "렌치",
|
||||
"item.refinedstorage.security_card": "보안 카드",
|
||||
"item.refinedstorage.security_card.owner": "플레이어: %s"
|
||||
"item.refinedstorage.security_card.owner": "플레이어: %s",
|
||||
"item.refinedstorage.processor_binding": "프로세서 바인딩",
|
||||
"item.refinedstorage.cover": "커버",
|
||||
"item.refinedstorage.hollow_cover": "빈 커버",
|
||||
"commands.refinedstorage.disk.create.error.disk_not_found": "%s 디스크를 찾을 수 없습니다.",
|
||||
"commands.refinedstorage.disk.create.success": "%s 디스크에 %s을(를) 부여했습니다.",
|
||||
"commands.refinedstorage.network.list.pos": "X: %d, Y: %d, Z: %d에서의 네트워크",
|
||||
"commands.refinedstorage.network.list.tick_times": "평균 틱 시간: %s ms. 평균 TPS: %s",
|
||||
"commands.refinedstorage.network.list.autocrafting_tasks": "%s 작업",
|
||||
"commands.refinedstorage.network.list.nodes": "%s 노드",
|
||||
"commands.refinedstorage.network.list.energy_usage": "에너지 사용: %s",
|
||||
"commands.refinedstorage.network.get.error.not_found": "네트워크를 찾지 못했습니다.",
|
||||
"commands.refinedstorage.network.autocrafting.get.error.not_found": "작업를 찾지 못했습니다.",
|
||||
"commands.refinedstorage.network.autocrafting.cancel.single": "작업 %d개를 취소했습니다.",
|
||||
"commands.refinedstorage.network.autocrafting.cancel.multiple": "작업 %d개를 취소했습니다.",
|
||||
"advancements.refinedstorage.controlling.description": "콘트롤러를 제작합니다.",
|
||||
"advancements.refinedstorage.connecting": "연결",
|
||||
"advancements.refinedstorage.connecting.description": "모든 장치를 나란히 배치하여 연결하거나 케이블을 사용할 수 있습니다.",
|
||||
"advancements.refinedstorage.conditional_connecting": "조건부 연결",
|
||||
"advancements.refinedstorage.conditional_connecting.description": "네트워크 신호가 레드스톤으로 전달될 수 있는지 제어하기 위해 중계기를 제작합니다.",
|
||||
"advancements.refinedstorage.drives": "드라이브",
|
||||
"advancements.refinedstorage.drives.description": "디스크를 저장할 수 있도록 디스크 드라이브를 제작합니다.",
|
||||
"advancements.refinedstorage.manipulating_disks": "디스크 조작",
|
||||
"advancements.refinedstorage.manipulating_disks.description": "디스크 조작기를 사용하여 디스크 내용을 쉽게 수정합니다.",
|
||||
"advancements.refinedstorage.storing_items": "아이템 정렬",
|
||||
"advancements.refinedstorage.storing_items.description": "저장 디스크를 제작하여 디스크 드라이브에 넣습니다.",
|
||||
"advancements.refinedstorage.viewing_items": "아이템 보기",
|
||||
"advancements.refinedstorage.viewing_items.description": "그리드를 제작하여 아이템 저장공간과 상호 작용합니다.",
|
||||
"advancements.refinedstorage.portable_storage": "휴대용 저장공간",
|
||||
"advancements.refinedstorage.portable_storage.description": "휴대용 그리드를 제작하여 네트워크에 있지 않고 디스크의 아이템 및 액체에 접근할 수 있습니다.",
|
||||
"advancements.refinedstorage.upgrading_your_grid": "그리드를 업그레이드하기",
|
||||
"advancements.refinedstorage.upgrading_your_grid.description": "그리드를 제작 그리드로 업그레이드하여 그리드에서 제작 기능을 얻으십시오.",
|
||||
"advancements.refinedstorage.storing_fluids": "액체 저장",
|
||||
"advancements.refinedstorage.storing_fluids.description": "액체 저장 디스크를 제작하여 디스크 드라이브에 넣습니다.",
|
||||
"advancements.refinedstorage.viewing_fluids": "액체 보기",
|
||||
"advancements.refinedstorage.viewing_fluids.description": "액체 저장공간과 상호 작용하도록 액체 그리드를 제작합니다.",
|
||||
"advancements.refinedstorage.better_than_a_barrel": "통보다 좋다!",
|
||||
"advancements.refinedstorage.better_than_a_barrel.description": "저장 모니터를 제작하여 네트워크의 아이템을 보거나 삽입 또는 추출합니다.",
|
||||
"advancements.refinedstorage.autocrafting": "자동 제작",
|
||||
"advancements.refinedstorage.autocrafting.description": "제작기를 제작합니다.",
|
||||
"advancements.refinedstorage.pattern_creation": "패턴 제작",
|
||||
"advancements.refinedstorage.pattern_creation.description": "패턴 그리드 및 패턴을 사용하여 패턴을 작성합니다.",
|
||||
"advancements.refinedstorage.monitoring": "감시",
|
||||
"advancements.refinedstorage.monitoring.description": "제작 모니터로 제작 작업의 상태를 확인합니다.",
|
||||
"advancements.refinedstorage.managing_patterns": "패턴 관리",
|
||||
"advancements.refinedstorage.managing_patterns.description": "제작기 관리자를 제작하여 패턴을 보다 효율적으로 관리할 수 있습니다.",
|
||||
"advancements.refinedstorage.importing": "입력",
|
||||
"advancements.refinedstorage.importing.description": "입력기를 사용하여 아이템 또는 액체를 저장공간 네트워크로 가져옵니다.",
|
||||
"advancements.refinedstorage.destruction": "파괴",
|
||||
"advancements.refinedstorage.destruction.description": "파괴기를 사용하여 블록이나 액체를 저장공간 네트워크로 가져옵니다.",
|
||||
"advancements.refinedstorage.exporting": "출력",
|
||||
"advancements.refinedstorage.exporting.description": "출력기를 사용하여 블록이나 액체를 저장공간 네트워크로 가져옵니다.",
|
||||
"advancements.refinedstorage.construction": "설치",
|
||||
"advancements.refinedstorage.construction.description": "설치기를 사용하여 저장공간 네트워크에서 블록이나 액체를 얻습니다.",
|
||||
"advancements.refinedstorage.security": "보안",
|
||||
"advancements.refinedstorage.security.description": "보안 관리자 및 보안 카드를 사용하여 네트워크를 보호하십시오.",
|
||||
"advancements.refinedstorage.wireless": "무선",
|
||||
"advancements.refinedstorage.wireless.description": "무선 송신기로 네트워크 신호를 전송합니다.",
|
||||
"advancements.refinedstorage.wireless_items": "무선 아이템",
|
||||
"advancements.refinedstorage.wireless_items.description": "무선 그리드를 통해 아이템 저장공간과 무선으로 상호작용하십시오.",
|
||||
"advancements.refinedstorage.wireless_fluids": "무선 액체",
|
||||
"advancements.refinedstorage.wireless_fluids.description": "무선 액체 그리드로 액체 저장공간과 무선으로 상호작용하십시오.",
|
||||
"advancements.refinedstorage.wireless_monitoring": "무선 감시",
|
||||
"advancements.refinedstorage.wireless_monitoring.description": "무선 제작 모니터로 무선으로 제작 작업의 상태를 확인하십시오.",
|
||||
"advancements.refinedstorage.no_cables_required": "케이블을 요구하지 않습니다.",
|
||||
"advancements.refinedstorage.no_cables_required.description": "네트워크 송신기, 네트워크 수신기 및 네트워크 카드를 사용하여 케이블을 사용하지 않고도 네트워크에 추가 구성요소를 추가할 수 있습니다.",
|
||||
"advancements.refinedstorage.upgrading": "업그레이드",
|
||||
"advancements.refinedstorage.upgrading.description": "다양한 장치를 개선하기 위해 업그레이드를 제작합니다.",
|
||||
"advancements.refinedstorage.crafting_on_demand": "주문형 제작",
|
||||
"advancements.refinedstorage.crafting_on_demand.description": "인터페이스, 출력기 또는 설치기에서 제작 업그레이드를 사용하여 주문형 아이템 및 블록을 제작합니다.",
|
||||
"advancements.refinedstorage.detecting": "탐지",
|
||||
"advancements.refinedstorage.detecting.description": "감지기를 사용하여 네트워크의 아이템 또는 액체를 탐지합니다.",
|
||||
"advancements.refinedstorage.interface_to_the_world": "월드에 대한 인터페이스",
|
||||
"advancements.refinedstorage.interface_to_the_world.description": "인터페이스로 아이템을 동시에 내보내고 가져옵니다.",
|
||||
"advancements.refinedstorage.storing_externally": "외부로 저장",
|
||||
"advancements.refinedstorage.storing_externally.description": "외부 저장공간을 사용하여 네트워크에 상자와 같은 외부 블록의 저장공간을 제공합니다."
|
||||
}
|
||||
Reference in New Issue
Block a user