Added /createdisk command which creates a disk based on the disk ID. Fixes #1817
This commit is contained in:
@@ -12,6 +12,7 @@ NOTE: Worlds that used Refined Storage 1.5.x are fully compatible with Refined S
|
|||||||
- Rewrote autocrafting (raoulvdberge)
|
- Rewrote autocrafting (raoulvdberge)
|
||||||
- Autocrafting tasks that take longer than 5 seconds to calculate are automatically stopped to avoid server strain (raoulvdberge)
|
- Autocrafting tasks that take longer than 5 seconds to calculate are automatically stopped to avoid server strain (raoulvdberge)
|
||||||
- Added new storage disk system where the storage disk data (items, fluids) are stored off the disk itself, in another file (refinedstorage_disks.dat). The disk itself only stores its ID (raoulvdberge)
|
- Added new storage disk system where the storage disk data (items, fluids) are stored off the disk itself, in another file (refinedstorage_disks.dat). The disk itself only stores its ID (raoulvdberge)
|
||||||
|
- Added /createdisk command which creates a disk based on the disk ID. Turn on advanced tooltips to see the disk ID on a disk item (raoulvdberge)
|
||||||
- Changed fluid storage progression to be 64k - 256k - 1024k - 4096k (raoulvdberge)
|
- Changed fluid storage progression to be 64k - 256k - 1024k - 4096k (raoulvdberge)
|
||||||
- You can no longer put a Filter in filter slots to gain additional filter slots (raoulvdberge)
|
- You can no longer put a Filter in filter slots to gain additional filter slots (raoulvdberge)
|
||||||
- You can now re-insert Processing Patterns in the Pattern Grid and have the inputs and outputs be completed (raoulvdberge)
|
- You can now re-insert Processing Patterns in the Pattern Grid and have the inputs and outputs be completed (raoulvdberge)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.raoulvdberge.refinedstorage;
|
package com.raoulvdberge.refinedstorage;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.command.CommandCreateDisk;
|
||||||
import com.raoulvdberge.refinedstorage.proxy.ProxyCommon;
|
import com.raoulvdberge.refinedstorage.proxy.ProxyCommon;
|
||||||
import net.minecraft.creativetab.CreativeTabs;
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
@@ -9,10 +10,7 @@ import net.minecraftforge.fml.common.Mod;
|
|||||||
import net.minecraftforge.fml.common.Mod.EventHandler;
|
import net.minecraftforge.fml.common.Mod.EventHandler;
|
||||||
import net.minecraftforge.fml.common.Mod.Instance;
|
import net.minecraftforge.fml.common.Mod.Instance;
|
||||||
import net.minecraftforge.fml.common.SidedProxy;
|
import net.minecraftforge.fml.common.SidedProxy;
|
||||||
import net.minecraftforge.fml.common.event.FMLFingerprintViolationEvent;
|
import net.minecraftforge.fml.common.event.*;
|
||||||
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
|
|
||||||
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
|
|
||||||
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
|
||||||
import net.minecraftforge.fml.common.network.NetworkRegistry;
|
import net.minecraftforge.fml.common.network.NetworkRegistry;
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper;
|
import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper;
|
||||||
|
|
||||||
@@ -60,6 +58,11 @@ public final class RS {
|
|||||||
PROXY.postInit(e);
|
PROXY.postInit(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onServerStarting(FMLServerStartingEvent e) {
|
||||||
|
e.registerServerCommand(new CommandCreateDisk());
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onFingerprintViolation(FMLFingerprintViolationEvent e) {
|
public void onFingerprintViolation(FMLFingerprintViolationEvent e) {
|
||||||
FMLLog.bigWarning("Invalid fingerprint detected for the Refined Storage jar file! The file " + e.getSource().getName() + " may have been tampered with. This version will NOT be supported!");
|
FMLLog.bigWarning("Invalid fingerprint detected for the Refined Storage jar file! The file " + e.getSource().getName() + " may have been tampered with. This version will NOT be supported!");
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.raoulvdberge.refinedstorage.api.storage.disk;
|
|||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -27,6 +28,11 @@ public interface IStorageDiskManager {
|
|||||||
@Nullable
|
@Nullable
|
||||||
IStorageDisk getByStack(ItemStack disk);
|
IStorageDisk getByStack(ItemStack disk);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a map of all storage disks
|
||||||
|
*/
|
||||||
|
Map<UUID, IStorageDisk> getAll();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets a storage disk.
|
* Sets a storage disk.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -56,6 +56,11 @@ public class StorageDiskManager extends WorldSavedData implements IStorageDiskMa
|
|||||||
return get(provider.getId(disk));
|
return get(provider.getId(disk));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<UUID, IStorageDisk> getAll() {
|
||||||
|
return disks;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void set(UUID id, IStorageDisk disk) {
|
public void set(UUID id, IStorageDisk disk) {
|
||||||
if (id == null) {
|
if (id == null) {
|
||||||
|
|||||||
@@ -0,0 +1,90 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.command;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider;
|
||||||
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
|
import net.minecraft.command.CommandBase;
|
||||||
|
import net.minecraft.command.CommandException;
|
||||||
|
import net.minecraft.command.ICommandSender;
|
||||||
|
import net.minecraft.command.WrongUsageException;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.init.SoundEvents;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.util.SoundCategory;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class CommandCreateDisk extends CommandBase {
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "createdisk";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUsage(ICommandSender sender) {
|
||||||
|
return "commands.refinedstorage.createdisk.usage";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRequiredPermissionLevel() {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
|
||||||
|
if (args.length < 4) {
|
||||||
|
throw new WrongUsageException("commands.refinedstorage.createdisk.usage");
|
||||||
|
} else {
|
||||||
|
EntityPlayer player = getPlayer(server, sender, args[0]);
|
||||||
|
Item item = getItemByText(sender, args[1]);
|
||||||
|
int metadata = parseInt(args[2]);
|
||||||
|
|
||||||
|
UUID id;
|
||||||
|
try {
|
||||||
|
id = UUID.fromString(args[3]);
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
throw new CommandException("commands.refinedstorage.createdisk.error.diskNotFound", args[3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(item instanceof IStorageDiskProvider)) {
|
||||||
|
throw new CommandException("commands.refinedstorage.createdisk.error.notADisk");
|
||||||
|
}
|
||||||
|
|
||||||
|
IStorageDisk disk = API.instance().getStorageDiskManager(sender.getEntityWorld()).get(id);
|
||||||
|
if (disk == null) {
|
||||||
|
throw new CommandException("commands.refinedstorage.createdisk.error.diskNotFound", args[3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemStack diskStack = new ItemStack(item, 1, metadata);
|
||||||
|
((IStorageDiskProvider) item).setId(diskStack, id);
|
||||||
|
|
||||||
|
if (player.inventory.addItemStackToInventory(diskStack)) {
|
||||||
|
// From CommandGive
|
||||||
|
player.world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.ENTITY_ITEM_PICKUP, SoundCategory.PLAYERS, 0.2F, ((player.getRNG().nextFloat() - player.getRNG().nextFloat()) * 0.7F + 1.0F) * 2.0F);
|
||||||
|
player.inventoryContainer.detectAndSendChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
notifyCommandListener(sender, this, "commands.refinedstorage.createdisk.success", args[3], player.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args, @Nullable BlockPos targetPos) {
|
||||||
|
if (args.length == 1) {
|
||||||
|
return getListOfStringsMatchingLastWord(args, server.getOnlinePlayerNames());
|
||||||
|
} else if (args.length == 2) {
|
||||||
|
return getListOfStringsMatchingLastWord(args, Item.REGISTRY.getKeys());
|
||||||
|
} else if (args.length == 4) {
|
||||||
|
return getListOfStringsMatchingLastWord(args, API.instance().getStorageDiskManager(sender.getEntityWorld()).getAll().keySet().stream().map(UUID::toString).collect(Collectors.toList()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -297,6 +297,11 @@ item.refinedstorage:network_card.name=Network Card
|
|||||||
item.refinedstorage:security_card.name=Security Card
|
item.refinedstorage:security_card.name=Security Card
|
||||||
item.refinedstorage:security_card.owner=Bound to: %s
|
item.refinedstorage:security_card.owner=Bound to: %s
|
||||||
|
|
||||||
|
commands.refinedstorage.createdisk.usage=/createdisk <player> <item> <metadata> <id>
|
||||||
|
commands.refinedstorage.createdisk.error.notADisk=The given disk item is not a disk.
|
||||||
|
commands.refinedstorage.createdisk.error.diskNotFound=Disk %s was not found.
|
||||||
|
commands.refinedstorage.createdisk.success=Successfully gave disk %s to %s.
|
||||||
|
|
||||||
advancements.refinedstorage:controlling.description=Craft a Controller
|
advancements.refinedstorage:controlling.description=Craft a Controller
|
||||||
advancements.refinedstorage:connecting=Connecting
|
advancements.refinedstorage:connecting=Connecting
|
||||||
advancements.refinedstorage:connecting.description=You can place all the devices next to each other to connect them up, or, use Cable
|
advancements.refinedstorage:connecting.description=You can place all the devices next to each other to connect them up, or, use Cable
|
||||||
|
|||||||
Reference in New Issue
Block a user