forked from RepoMirrors/kami-blue
added dupe book command
This commit is contained in:
parent
1f1c837ba8
commit
d04ef24971
|
@ -0,0 +1,60 @@
|
|||
package me.zeroeightsix.kami.command.commands;
|
||||
|
||||
import io.netty.buffer.Unpooled;
|
||||
import me.zeroeightsix.kami.command.Command;
|
||||
import me.zeroeightsix.kami.command.syntax.ChunkBuilder;
|
||||
import me.zeroeightsix.kami.util.Wrapper;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.ItemWritableBook;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import net.minecraft.nbt.NBTTagString;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.network.play.client.CPacketCustomPayload;
|
||||
|
||||
import java.util.Random;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
/**
|
||||
* @author 0x2E | PretendingToCode
|
||||
*/
|
||||
public class DupeBookCommand extends Command {
|
||||
|
||||
public DupeBookCommand() {
|
||||
super("dupebook", new ChunkBuilder().append("name").build());
|
||||
setDescription("Generates books used for chunk savestate dupe.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void call(String[] args) {
|
||||
ItemStack is = Wrapper.getPlayer().inventory.getCurrentItem();
|
||||
|
||||
if (is.getItem() instanceof ItemWritableBook) {
|
||||
IntStream characterGenerator = new Random().ints(0x80, 0x10ffff - 0x800).map(i -> i < 0xd800 ? i : i + 0x800);
|
||||
NBTTagList pages = new NBTTagList();
|
||||
String joinedPages = characterGenerator.limit(50 * 210).mapToObj(i -> String.valueOf((char) i)).collect(Collectors.joining());
|
||||
|
||||
for (int page = 0; page < 50; page++) {
|
||||
pages.appendTag(new NBTTagString(joinedPages.substring(page * 210, (page + 1) * 210)));
|
||||
}
|
||||
|
||||
if(is.hasTagCompound()){
|
||||
is.getTagCompound().setTag("pages", pages);
|
||||
is.getTagCompound().setTag("title", new NBTTagString(""));
|
||||
is.getTagCompound().setTag("author", new NBTTagString(Wrapper.getPlayer().getName()));
|
||||
} else {
|
||||
is.setTagInfo("pages", pages);
|
||||
is.setTagInfo("title", new NBTTagString(""));
|
||||
is.setTagInfo("author", new NBTTagString(Wrapper.getPlayer().getName()));
|
||||
}
|
||||
|
||||
PacketBuffer buf = new PacketBuffer(Unpooled.buffer());
|
||||
buf.writeItemStack(is);
|
||||
|
||||
Wrapper.getPlayer().connection.sendPacket(new CPacketCustomPayload("MC|BEdit", buf));
|
||||
Command.sendChatMessage("Dupe book generated.");
|
||||
} else {
|
||||
Command.sendChatMessage("You must be holding a writable book.");
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue