Adds a keybind to open the vaults Fixes flight being disabled by the server on a relog Adds a flight enchantment to boots and leggings (Tier 1 max) DB Profile has additional column for flight as a boolean. Network packet added for client to server to request the vault to open. Added translation entries to en_us.json
93 lines
3.4 KiB
Java
93 lines
3.4 KiB
Java
package dev.zontreck.otemod.implementation.vault;
|
|
|
|
import java.util.UUID;
|
|
|
|
import com.mojang.blaze3d.systems.RenderSystem;
|
|
import com.mojang.blaze3d.vertex.PoseStack;
|
|
|
|
import dev.zontreck.otemod.OTEMod;
|
|
import dev.zontreck.otemod.commands.vaults.VaultCommand;
|
|
import dev.zontreck.otemod.networking.ModMessages;
|
|
import dev.zontreck.otemod.networking.packets.OpenVaultPacket;
|
|
import net.minecraft.client.gui.components.Button;
|
|
import net.minecraft.client.gui.components.Button.OnPress;
|
|
import net.minecraft.client.gui.font.TextFieldHelper;
|
|
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
|
|
import net.minecraft.client.renderer.GameRenderer;
|
|
import net.minecraft.network.chat.Component;
|
|
import net.minecraft.resources.ResourceLocation;
|
|
import net.minecraft.server.level.ServerPlayer;
|
|
import net.minecraft.world.entity.player.Inventory;
|
|
import net.minecraft.world.entity.player.Player;
|
|
import net.minecraftforge.common.MinecraftForge;
|
|
import net.minecraftforge.network.NetworkHooks;
|
|
|
|
public class VaultScreen extends AbstractContainerScreen <VaultMenu>
|
|
{
|
|
// 176x224
|
|
public final UUID VaultMenuID;
|
|
public final Player thePlayer;
|
|
public final VaultMenu THE_CONTAINER;
|
|
|
|
private static final ResourceLocation TEXTURE = new ResourceLocation(OTEMod.MOD_ID, "textures/gui/vault.png");
|
|
|
|
public VaultScreen(VaultMenu container, Inventory playerInv, Component comp){
|
|
super(container, playerInv, comp);
|
|
thePlayer=playerInv.player;
|
|
|
|
this.VaultMenuID = container.VaultMenuID;
|
|
this.leftPos = 0;
|
|
this.topPos = 0;
|
|
this.THE_CONTAINER=container;
|
|
|
|
this.imageWidth = 207;
|
|
this.imageHeight = 238;
|
|
}
|
|
|
|
@Override
|
|
public void render(PoseStack stack, int mouseX, int mouseY, float partialTicks)
|
|
{
|
|
this.renderBackground(stack);
|
|
super.render(stack, mouseX, mouseY, partialTicks);
|
|
this.renderTooltip(stack, mouseX, mouseY);
|
|
|
|
}
|
|
|
|
@Override
|
|
protected void renderLabels(PoseStack stack, int mouseX, int mouseY)
|
|
{
|
|
this.font.draw(stack, this.title, 63, 12, 0xFFFFFF);
|
|
this.font.draw(stack, this.playerInventoryTitle, 63, 146, 0xFFFFFF);
|
|
//this.font.draw(stack, this.title.getString(), this.leftPos + 17, this.topPos + 15, 0xFFFFFF);
|
|
|
|
//this.font.draw(stack, this.playerInventoryTitle.getString(), this.leftPos + 17, this.topPos + 123, 0xFFFFFF);
|
|
}
|
|
|
|
@Override
|
|
protected void init()
|
|
{
|
|
super.init();
|
|
// This is where custom controls would be added!
|
|
|
|
this.addWidget(new Button(this.leftPos+7,this.topPos+84,16,16,Component.literal(""), (button)->{
|
|
thePlayer.closeContainer();
|
|
|
|
ModMessages.sendToServer(new OpenVaultPacket(0,true,-1));
|
|
} ));
|
|
|
|
this.addWidget(new Button(this.leftPos+187,this.topPos+84,16,16,Component.literal(""), (button)->{
|
|
thePlayer.closeContainer();
|
|
ModMessages.sendToServer(new OpenVaultPacket(0, true, 1));
|
|
} ));
|
|
}
|
|
|
|
@Override
|
|
protected void renderBg(PoseStack stack, float mouseX, int mouseY, int partialTicks)
|
|
{
|
|
renderBackground(stack);
|
|
RenderSystem.setShader(GameRenderer::getPositionTexShader);
|
|
RenderSystem.setShaderColor (1.0f, 1.0f, 1.0f, 1.0f);
|
|
RenderSystem.setShaderTexture(0, TEXTURE);
|
|
blit(stack, this.leftPos, this.topPos, 0, 0, this.imageWidth, this.imageHeight);
|
|
}
|
|
}
|