From fb44bceaee2a8132a3f11c126f8bf41758d43be1 Mon Sep 17 00:00:00 2001 From: Qther Date: Fri, 4 Jan 2019 23:41:34 +0800 Subject: [PATCH 1/3] Added option for page numbers CommandBook now accepts /cbook on top of the old format /cbook which still simply makes 50 pages. --- .../clientcommands/command/CommandBook.java | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 master/src/main/java/net/earthcomputer/clientcommands/command/CommandBook.java diff --git a/master/src/main/java/net/earthcomputer/clientcommands/command/CommandBook.java b/master/src/main/java/net/earthcomputer/clientcommands/command/CommandBook.java new file mode 100644 index 000000000..b3aac1c18 --- /dev/null +++ b/master/src/main/java/net/earthcomputer/clientcommands/command/CommandBook.java @@ -0,0 +1,88 @@ +package net.earthcomputer.clientcommands.command; + +import io.netty.buffer.Unpooled; +import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.client.resources.I18n; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommandSender; +import net.minecraft.command.WrongUsageException; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.nbt.NBTTagString; +import net.minecraft.network.PacketBuffer; +import net.minecraft.network.play.client.CPacketCustomPayload; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextComponentString; +import net.minecraft.util.text.TextComponentTranslation; +import net.minecraft.util.text.TextFormatting; + +import javax.annotation.Nullable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Random; +import java.util.function.IntSupplier; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public class CommandBook extends ClientCommandBase { + @Override + public String getName() { + return "cbook"; + } + + @Override + public String getUsage(ICommandSender sender) { + return "commands.cbook.usage"; + } + + public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException { + if (args.length == 0) + throw new WrongUsageException(getUsage(sender)); + + if (!(sender instanceof EntityPlayerSP)) + throw new CommandException("commands.cbook.noPlayer"); + + int limit = args.length > 1 ? parseInt(args[1], 1, 50) : 50; + + EntityPlayerSP player = (EntityPlayerSP) sender; + ItemStack heldItem = player.getHeldItemMainhand(); + if (heldItem.getItem() != Items.WRITABLE_BOOK) { + throw new CommandException("commands.cbook.noBook"); + } + + IntStream characterGenerator; + + switch (args[0]) { + case "fill": + characterGenerator = IntStream.generate(() -> 0x10ffff); + break; + case "random": + characterGenerator = new Random().ints(0x80, 0x10ffff - 0x800).map(i -> i < 0xd800 ? i : i + 0x800); + break; + default: + throw new CommandException(getUsage(sender)); + } + + String joinedPages = characterGenerator.limit(50 * 210).mapToObj(i -> String.valueOf((char) i)).collect(Collectors.joining()); + + NBTTagList pages = new NBTTagList(); + + for (int page = 0; page < limit; page++) { + pages.appendTag(new NBTTagString(joinedPages.substring(page * 210, (page + 1) * 210))); + } + + if (heldItem.hasTagCompound()) { + heldItem.getTagCompound().setTag("pages", pages); + } else { + heldItem.setTagInfo("pages", pages); + } + PacketBuffer buf = new PacketBuffer(Unpooled.buffer()); + buf.writeItemStack(heldItem); + player.connection.sendPacket(new CPacketCustomPayload("MC|BEdit", buf)); + + sender.sendMessage(new TextComponentTranslation("commands.cbook.success")); + } +} From c66b61dd3c97a7bf1402124e70e46f16e7eeab81 Mon Sep 17 00:00:00 2001 From: Qther Date: Sat, 5 Jan 2019 00:10:49 +0800 Subject: [PATCH 2/3] fixed lang --- src/main/resources/assets/clientcommands/lang/en_us.lang | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/main/resources/assets/clientcommands/lang/en_us.lang b/src/main/resources/assets/clientcommands/lang/en_us.lang index 1f8ff79d0..9e5795e92 100644 --- a/src/main/resources/assets/clientcommands/lang/en_us.lang +++ b/src/main/resources/assets/clientcommands/lang/en_us.lang @@ -63,7 +63,7 @@ commands.cabort.usage=/cabort commands.cbook.success=Successfully edited book commands.cbook.noBook=You are not holding a book commands.cbook.noPlayer=You are not a player -commands.cbook.usage=/cbook +commands.cbook.usage=/cbook commands.ccalc.mathError=Math error: %s commands.ccalc.syntaxError=Syntax error @@ -74,10 +74,6 @@ commands.cclear.usage=/cclear [item] [data] [maxCount] [dataTag] commands.cclone.usage=/cclone < >|selection [maskMode] commands.cclone.overlapNotSupported=The cclone command does not support overlap -commands.ccrackplayerrng.success=Player RNG cracked: %d -commands.ccrackplayerrng.multiplayer=This command only works in singleplayer -commands.ccrackplayerrng.usage=/ccrackplayerrng - commands.cstack.usage=/cstack < >|selection [direction|< >] [maskMode] commands.cenchant.success=Starting enchantment manipulation From 8c0f1db6839d06a80334ba6c89be9926bad2ceec Mon Sep 17 00:00:00 2001 From: Qther Date: Sat, 5 Jan 2019 00:15:14 +0800 Subject: [PATCH 3/3] fixed fixed lang im stupid and tired --- src/main/resources/assets/clientcommands/lang/en_us.lang | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/resources/assets/clientcommands/lang/en_us.lang b/src/main/resources/assets/clientcommands/lang/en_us.lang index 9e5795e92..10732c40e 100644 --- a/src/main/resources/assets/clientcommands/lang/en_us.lang +++ b/src/main/resources/assets/clientcommands/lang/en_us.lang @@ -74,6 +74,10 @@ commands.cclear.usage=/cclear [item] [data] [maxCount] [dataTag] commands.cclone.usage=/cclone < >|selection [maskMode] commands.cclone.overlapNotSupported=The cclone command does not support overlap +commands.ccrackplayerrng.success=Player RNG cracked: %d +commands.ccrackplayerrng.multiplayer=This command only works in singleplayer +commands.ccrackplayerrng.usage=/ccrackplayerrng + commands.cstack.usage=/cstack < >|selection [direction|< >] [maskMode] commands.cenchant.success=Starting enchantment manipulation