Added /createdisk command which creates a disk based on the disk ID. Fixes #1817
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.raoulvdberge.refinedstorage;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.command.CommandCreateDisk;
|
||||
import com.raoulvdberge.refinedstorage.proxy.ProxyCommon;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
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.Instance;
|
||||
import net.minecraftforge.fml.common.SidedProxy;
|
||||
import net.minecraftforge.fml.common.event.FMLFingerprintViolationEvent;
|
||||
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.event.*;
|
||||
import net.minecraftforge.fml.common.network.NetworkRegistry;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper;
|
||||
|
||||
@@ -60,6 +58,11 @@ public final class RS {
|
||||
PROXY.postInit(e);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onServerStarting(FMLServerStartingEvent e) {
|
||||
e.registerServerCommand(new CommandCreateDisk());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
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!");
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.raoulvdberge.refinedstorage.api.storage.disk;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
@@ -27,6 +28,11 @@ public interface IStorageDiskManager {
|
||||
@Nullable
|
||||
IStorageDisk getByStack(ItemStack disk);
|
||||
|
||||
/**
|
||||
* @return a map of all storage disks
|
||||
*/
|
||||
Map<UUID, IStorageDisk> getAll();
|
||||
|
||||
/**
|
||||
* Sets a storage disk.
|
||||
*
|
||||
|
||||
@@ -56,6 +56,11 @@ public class StorageDiskManager extends WorldSavedData implements IStorageDiskMa
|
||||
return get(provider.getId(disk));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<UUID, IStorageDisk> getAll() {
|
||||
return disks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(UUID id, IStorageDisk disk) {
|
||||
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.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:connecting=Connecting
|
||||
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