Added a GUI via an item you can get it via /seed gui

This commit is contained in:
Neil
2020-02-18 02:33:03 +01:00
parent 3baab7fe78
commit da35bda7b9
13 changed files with 147 additions and 34 deletions
@@ -2,18 +2,25 @@ package kaptainwutax.seedcracker;
import kaptainwutax.seedcracker.cracker.storage.DataStorage;
import kaptainwutax.seedcracker.finder.FinderQueue;
import kaptainwutax.seedcracker.gui.GuiItem;
import kaptainwutax.seedcracker.render.RenderQueue;
import net.fabricmc.api.ModInitializer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.util.Identifier;
import net.minecraft.util.Rarity;
import net.minecraft.util.registry.Registry;
public class SeedCracker implements ModInitializer {
private static final SeedCracker INSTANCE = new SeedCracker();
private DataStorage dataStorage = new DataStorage();
public static Item GUI_ITEM=new GuiItem(new Item.Settings().group(ItemGroup.MISC).rarity(Rarity.EPIC));
@Override
public void onInitialize() {
RenderQueue.get().add("hand", FinderQueue.get()::renderFinders);
Registry.register(Registry.ITEM,new Identifier("seedcracker","gui_item"),GUI_ITEM);
/*
long ss = 5718603440394L;
LCG lcg = Rand.JAVA_LCG.combine(-5);
@@ -0,0 +1,42 @@
package kaptainwutax.seedcracker.command;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.brigadier.exceptions.SimpleCommandExceptionType;
import kaptainwutax.seedcracker.finder.Finder;
import kaptainwutax.seedcracker.finder.FinderQueue;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.text.TranslatableText;
import net.minecraft.util.Formatting;
import static kaptainwutax.seedcracker.SeedCracker.GUI_ITEM;
import static net.minecraft.server.command.CommandManager.literal;
public class GuiCommand extends ClientCommand {
@Override
public String getName() {
return "gui";
}
@Override
public void build(LiteralArgumentBuilder<ServerCommandSource> builder) {
builder.executes(ctx->
{
ServerCommandSource source = ctx.getSource();
ClientPlayerEntity self =(ClientPlayerEntity) source.getEntity();
assert self != null;
if(!self.inventory.insertStack(new ItemStack(GUI_ITEM))){
throw new SimpleCommandExceptionType(new TranslatableText("inventory.isfull")).create();
}
return 1;
});
}
}
@@ -0,0 +1,37 @@
package kaptainwutax.seedcracker.gui;
import io.github.cottonmc.cotton.gui.client.BackgroundPainter;
import io.github.cottonmc.cotton.gui.client.LightweightGuiDescription;
import io.github.cottonmc.cotton.gui.widget.WButton;
import io.github.cottonmc.cotton.gui.widget.WGridPanel;
import io.github.cottonmc.cotton.gui.widget.WLabel;
import io.github.cottonmc.cotton.gui.widget.WSprite;
import net.minecraft.text.LiteralText;
import net.minecraft.text.TranslatableText;
import net.minecraft.util.Identifier;
public class Gui extends LightweightGuiDescription {
public Gui() {
WGridPanel root = new WGridPanel();
setRootPanel(root);
root.setSize(256, 240);
WSprite icon = new WSprite(new Identifier("minecraft:textures/item/redstone.png"));
root.add(icon, 0, 2, 1, 1);
WButton button = new WButton(new TranslatableText("gui.examplemod.examplebutton"));
root.add(button, 0, 3, 4, 1);
WLabel label = new WLabel(new LiteralText("Test"), 0xFFFFFF);
root.add(label, 0, 4, 2, 1);
root.validate(this);
}
@Override
public void addPainters() {
getRootPanel().setBackgroundPainter(BackgroundPainter.VANILLA); //This is done automatically though
}
}
@@ -0,0 +1,22 @@
package kaptainwutax.seedcracker.gui;
import net.minecraft.client.MinecraftClient;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Hand;
import net.minecraft.util.TypedActionResult;
import net.minecraft.world.World;
public class GuiItem extends Item {
public GuiItem(Settings settings) {
super(settings);
}
@Override
public TypedActionResult<ItemStack> use(World world, PlayerEntity user, Hand hand) {
MinecraftClient.getInstance().openScreen(new Screen(new Gui()));
return super.use(world, user, hand);
}
}
@@ -1,22 +0,0 @@
package kaptainwutax.seedcracker.gui;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.text.LiteralText;
public class GuiScreen extends Screen {
public GuiScreen(String name) {
super(new LiteralText(name));
}
@Override
public void render(int mouseX, int mouseY, float partialTicks) {
this.renderBackground();
}
@Override
public boolean isPauseScreen() {
return false;
}
}
@@ -0,0 +1,11 @@
package kaptainwutax.seedcracker.gui;
import io.github.cottonmc.cotton.gui.GuiDescription;
import io.github.cottonmc.cotton.gui.client.CottonClientScreen;
public class Screen extends CottonClientScreen {
public Screen(GuiDescription description) {
super(description);
}
}
@@ -5,6 +5,7 @@ import com.mojang.brigadier.StringReader;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import kaptainwutax.seedcracker.command.ClientCommand;
import kaptainwutax.seedcracker.command.FinderCommand;
import kaptainwutax.seedcracker.command.GuiCommand;
import kaptainwutax.seedcracker.command.RenderCommand;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayerEntity;
@@ -23,10 +24,12 @@ public class ClientCommands {
public static RenderCommand RENDER;
public static FinderCommand FINDER;
public static GuiCommand GUI;
static {
COMMANDS.add(RENDER = new RenderCommand());
COMMANDS.add(FINDER = new FinderCommand());
COMMANDS.add(GUI = new GuiCommand());
}
public static void registerCommands(CommandDispatcher<ServerCommandSource> dispatcher) {
@@ -2,10 +2,7 @@ package kaptainwutax.seedcracker.mixin;
import com.mojang.brigadier.StringReader;
import kaptainwutax.seedcracker.SeedCracker;
import kaptainwutax.seedcracker.gui.GuiScreen;
import kaptainwutax.seedcracker.init.ClientCommands;
import kaptainwutax.seedcracker.init.KeyBindings;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayerEntity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@@ -20,10 +17,6 @@ public abstract class ClientPlayerEntityMixin {
@Inject(method = "tick", at = @At("HEAD"))
private void tick(CallbackInfo ci) {
SeedCracker.get().getDataStorage().tick();
if(MinecraftClient.getInstance().currentScreen == null && KeyBindings.OPEN_MENU.isPressed()) {
MinecraftClient.getInstance().openScreen(new GuiScreen("Test"));
}
}
@Inject(method = "sendChatMessage", at = @At("HEAD"), cancellable = true)