77 lines
2.7 KiB
Java
77 lines
2.7 KiB
Java
|
package net.minecraft.client.gui.screens;
|
||
|
|
||
|
import net.minecraft.client.gui.GuiGraphics;
|
||
|
import net.minecraft.client.gui.components.Button;
|
||
|
import net.minecraft.client.multiplayer.ClientPacketListener;
|
||
|
import net.minecraft.network.chat.Component;
|
||
|
import net.minecraft.network.protocol.game.ServerboundPlayerCommandPacket;
|
||
|
import net.minecraftforge.api.distmarker.Dist;
|
||
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||
|
|
||
|
@OnlyIn(Dist.CLIENT)
|
||
|
public class InBedChatScreen extends ChatScreen {
|
||
|
private Button leaveBedButton;
|
||
|
|
||
|
public InBedChatScreen() {
|
||
|
super("");
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected void init() {
|
||
|
super.init();
|
||
|
this.leaveBedButton = Button.builder(Component.translatable("multiplayer.stopSleeping"), p_96074_ -> this.sendWakeUp())
|
||
|
.bounds(this.width / 2 - 100, this.height - 40, 200, 20)
|
||
|
.build();
|
||
|
this.addRenderableWidget(this.leaveBedButton);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void render(GuiGraphics p_281659_, int p_283403_, int p_281737_, float p_282201_) {
|
||
|
if (!this.minecraft.getChatStatus().isChatAllowed(this.minecraft.isLocalServer())) {
|
||
|
this.leaveBedButton.render(p_281659_, p_283403_, p_281737_, p_282201_);
|
||
|
} else {
|
||
|
super.render(p_281659_, p_283403_, p_281737_, p_282201_);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void onClose() {
|
||
|
this.sendWakeUp();
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public boolean charTyped(char p_263331_, int p_263427_) {
|
||
|
return !this.minecraft.getChatStatus().isChatAllowed(this.minecraft.isLocalServer()) ? true : super.charTyped(p_263331_, p_263427_);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public boolean keyPressed(int p_96070_, int p_96071_, int p_96072_) {
|
||
|
if (p_96070_ == 256) {
|
||
|
this.sendWakeUp();
|
||
|
}
|
||
|
|
||
|
if (!this.minecraft.getChatStatus().isChatAllowed(this.minecraft.isLocalServer())) {
|
||
|
return true;
|
||
|
} else if (p_96070_ != 257 && p_96070_ != 335) {
|
||
|
return super.keyPressed(p_96070_, p_96071_, p_96072_);
|
||
|
} else {
|
||
|
this.handleChatInput(this.input.getValue(), true);
|
||
|
this.input.setValue("");
|
||
|
this.minecraft.gui.getChat().resetChatScroll();
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void sendWakeUp() {
|
||
|
ClientPacketListener clientpacketlistener = this.minecraft.player.connection;
|
||
|
clientpacketlistener.send(new ServerboundPlayerCommandPacket(this.minecraft.player, ServerboundPlayerCommandPacket.Action.STOP_SLEEPING));
|
||
|
}
|
||
|
|
||
|
public void onPlayerWokeUp() {
|
||
|
if (this.input.getValue().isEmpty()) {
|
||
|
this.minecraft.setScreen(null);
|
||
|
} else {
|
||
|
this.minecraft.setScreen(new ChatScreen(this.input.getValue()));
|
||
|
}
|
||
|
}
|
||
|
}
|