CreativeMasterBonin

Crash Screen

Jun 26th, 2024
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 15.08 KB | None | 0 0
  1. package net.rk.thingamajigs.screen;
  2.  
  3. import com.mojang.blaze3d.systems.RenderSystem;
  4. import net.minecraft.ChatFormatting;
  5. import net.minecraft.client.Minecraft;
  6. import net.minecraft.client.gui.GuiGraphics;
  7. import net.minecraft.client.gui.components.Button;
  8. import net.minecraft.client.gui.components.EditBox;
  9. import net.minecraft.client.gui.components.Tooltip;
  10. import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
  11. import net.minecraft.client.resources.sounds.SimpleSoundInstance;
  12. import net.minecraft.core.BlockPos;
  13. import net.minecraft.network.chat.Component;
  14. import net.minecraft.resources.ResourceLocation;
  15. import net.minecraft.sounds.SoundEvents;
  16. import net.minecraft.util.FastColor;
  17. import net.minecraft.world.entity.player.Inventory;
  18. import net.minecraft.world.entity.player.Player;
  19. import net.minecraft.world.level.Level;
  20. import net.neoforged.neoforge.client.gui.widget.ExtendedButton;
  21. import net.neoforged.neoforge.network.PacketDistributor;
  22. import net.rk.thingamajigs.Thingamajigs;
  23. import net.rk.thingamajigs.blockentity.custom.DJLaserLightBE;
  24. import net.rk.thingamajigs.menu.DJLaserLightMenu;
  25. import net.rk.thingamajigs.network.record.DJLaserLightUpdatePayload;
  26. import net.rk.thingamajigs.screen.widget.CustomRSLocationEditBox;
  27. import net.rk.thingamajigs.xtras.TColors;
  28. import org.jetbrains.annotations.Nullable;
  29.  
  30. import java.util.HashMap;
  31.  
  32. public class DJLaserLightScreen extends AbstractContainerScreen<DJLaserLightMenu> {
  33.     private final static HashMap<String, Object> guistate = DJLaserLightMenu.guistate;
  34.     private final Level world;
  35.     private final int x, y, z;
  36.     private final Player entity;
  37.  
  38.     private DJLaserLightBE djllbe;
  39.  
  40.     private static final ResourceLocation BG_TEXTURE = ResourceLocation.parse("thingamajigs:textures/gui/laser_light_menu.png");
  41.  
  42.     // buttons
  43.     public Button decreaseHeightButton;
  44.     public Button increaseHeightButton;
  45.  
  46.     public Button closeThisScreenButton;
  47.  
  48.     public Button whiteButton;
  49.     public Button blueButton;
  50.     public EditBox colorHexBox;
  51.     public Button updateHexColorButton;
  52.     public Button incHorzOscButton;
  53.     public Button decHorzOscButton;
  54.     public Button incVertOscButton;
  55.     public Button decVertOscButton;
  56.  
  57.     public DJLaserLightScreen(DJLaserLightMenu container, Inventory inventory, Component text) {
  58.         super(container, inventory, text);
  59.         this.world = container.world;
  60.         this.x = container.x;
  61.         this.y = container.y;
  62.         this.z = container.z;
  63.         this.entity = container.entity;
  64.         this.imageWidth = 320;
  65.         this.imageHeight = 240;
  66.  
  67.         this.minecraft = Minecraft.getInstance();
  68.         this.font = this.minecraft.font;
  69.  
  70.         int widthx = (this.width - this.imageWidth) / 2;
  71.         int heighty = (this.height - this.imageHeight) / 2;
  72.  
  73.         this.djllbe = (DJLaserLightBE)world.getBlockEntity(new BlockPos(x,y,z)); // access the BE at the current pos that the screen is opened at
  74.     }
  75.  
  76.     @Override
  77.     protected void init() {
  78.         super.init();
  79.         setupExtras();
  80.         addRenderableWidget(decreaseHeightButton);
  81.         addRenderableWidget(increaseHeightButton);
  82.         addRenderableWidget(closeThisScreenButton);
  83.         addRenderableWidget(whiteButton);
  84.         addRenderableWidget(blueButton);
  85.         addRenderableWidget(colorHexBox);
  86.         addRenderableWidget(updateHexColorButton);
  87.         addRenderableWidget(incHorzOscButton);
  88.         addRenderableWidget(decHorzOscButton);
  89.     }
  90.  
  91.     @Override
  92.     public void render(GuiGraphics pGuiGraphics, int pMouseX, int pMouseY, float pPartialTick) {
  93.         this.renderBackground(pGuiGraphics,pMouseX,pMouseY,pPartialTick);
  94.         this.renderBg(pGuiGraphics,pPartialTick,pMouseX,pMouseY);
  95.         super.render(pGuiGraphics,pMouseX,pMouseY,pPartialTick);
  96.     }
  97.  
  98.     @Override
  99.     protected void renderLabels(GuiGraphics pGuiGraphics, int pMouseX, int pMouseY) {
  100.         Component modelabel = Component.translatable("container.thingamajigs.laser_light.mode_title")
  101.                 .withStyle(ChatFormatting.WHITE);
  102.         Component extraInfolabel = Component.translatable("container.thingamajigs.laser_light.mode_unused");
  103.  
  104.         pGuiGraphics.drawString(this.font, this.title, this.titleLabelX, this.titleLabelY,
  105.                 TColors.getWhite(), false);
  106.  
  107.         if(djllbe.lightMode == 0){
  108.             extraInfolabel = Component.translatable("container.thingamajigs.laser_light.mode_zero_label");
  109.         }
  110.     }
  111.  
  112.     @Override
  113.     public void renderBackground(GuiGraphics pGuiGraphics, int pMouseX, int pMouseY, float pPartialTick) {
  114.         this.renderCustomBg(pGuiGraphics);
  115.         if (this.minecraft.level != null) {
  116.             net.neoforged.neoforge.common.NeoForge.EVENT_BUS.post(new net.neoforged.neoforge.client.event.ScreenEvent.BackgroundRendered(this, pGuiGraphics));
  117.         }
  118.     }
  119.  
  120.     public void renderCustomBg(GuiGraphics guigraph) {
  121.         ResourceLocation BG_LOC = ResourceLocation.fromNamespaceAndPath(Thingamajigs.MODID,"textures/block/sidewalk_new.png");
  122.  
  123.         guigraph.blit(BG_LOC, this.leftPos - 18, this.topPos + 107, 0, 0.0F, 0.0F,
  124.                 16, 16, 16, 16);
  125.  
  126.         guigraph.setColor(FastColor.ARGB32.red(djllbe.color),
  127.                 FastColor.ARGB32.green(djllbe.color),
  128.                 FastColor.ARGB32.blue(djllbe.color),
  129.                 1.0f);
  130.  
  131.         net.neoforged.neoforge.common.NeoForge.EVENT_BUS.post(
  132.                 new net.neoforged.neoforge.client.event.ScreenEvent.BackgroundRendered(this, guigraph));
  133.     }
  134.  
  135.     @Override
  136.     protected void renderBg(GuiGraphics ggraph, float ptick, int mousx, int mousy) {
  137.         RenderSystem.setShaderColor(1, 1, 1, 1);
  138.         RenderSystem.enableBlend();
  139.         RenderSystem.defaultBlendFunc();
  140.         RenderSystem.setShaderTexture(0, BG_TEXTURE);
  141.         ggraph.blit(BG_TEXTURE,
  142.                 this.leftPos,this.topPos,0,0,
  143.                 this.imageWidth,this.imageHeight,this.imageWidth,this.imageHeight);
  144.         RenderSystem.disableBlend();
  145.     }
  146.  
  147.     @Override
  148.     public void containerTick() {
  149.         super.containerTick();
  150.     }
  151.  
  152.     @Override
  153.     public void onClose() {
  154.         super.onClose();
  155.     }
  156.  
  157.     @Override
  158.     public boolean keyPressed(int key, int b, int c) {
  159.         if(key == 256){
  160.             this.getMinecraft().player.closeContainer();
  161.             return true;
  162.         }
  163.         return false;
  164.     }
  165.  
  166.     private void setupExtras(){
  167.         int smallSliderwidth = 72;
  168.         int sliderheight = 16;
  169.         int mediumSliderwidth = 102;
  170.  
  171.         int incHButxPos = this.leftPos + 8;
  172.         int incHButyPos = this.topPos + 18;
  173.         int rightPos = this.leftPos + 320;
  174.         int bottomPos = this.topPos + 240;
  175.  
  176.         closeThisScreenButton = new ExtendedButton(rightPos - 16,this.topPos,16,16,
  177.                 Component.literal("X"),(h) -> {
  178.             Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_CARTOGRAPHY_TABLE_TAKE_RESULT,1.0f));
  179.             this.getMinecraft().player.closeContainer();
  180.         }){
  181.             @Nullable
  182.             @Override
  183.             public Tooltip getTooltip() {
  184.                 return Tooltip.create(Component.literal("Close The UI"));
  185.             }
  186.         };
  187.  
  188.         increaseHeightButton = new ExtendedButton(incHButxPos + 66,incHButyPos,64,16,
  189.                 Component.translatable("button.thingamajigs.laser_light.height_inc"),(handler) -> {
  190.             PacketDistributor.sendToServer(new DJLaserLightUpdatePayload(
  191.                     new BlockPos(x,y,z),
  192.                     djllbe.height + 1,
  193.                     djllbe.colorstr,
  194.                     djllbe.laserSize,
  195.                     djllbe.laserCount,
  196.                     djllbe.angleOffset,
  197.                     djllbe.vAngleOffset,
  198.                     djllbe.lightMode,
  199.                     djllbe.hOsc,
  200.                     djllbe.vOsc,
  201.                     djllbe.hMulti,
  202.                     djllbe.vMulti,
  203.                     djllbe.lightModeData,
  204.                     djllbe.laserTextureLoc
  205.             ));
  206.             Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.ITEM_PICKUP,1.0f));
  207.         }){};
  208.  
  209.         decreaseHeightButton = new ExtendedButton(incHButxPos,incHButyPos,64,16,
  210.                 Component.translatable("button.thingamajigs.laser_light.height_dec"),(handler) -> {
  211.             PacketDistributor.sendToServer(new DJLaserLightUpdatePayload(
  212.                     new BlockPos(x,y,z),djllbe.height - 1,djllbe.colorstr,
  213.                     djllbe.laserSize,
  214.                     djllbe.laserCount,
  215.                     djllbe.angleOffset,
  216.                     djllbe.vAngleOffset,
  217.                     djllbe.lightMode,
  218.                     djllbe.hOsc,
  219.                     djllbe.vOsc,
  220.                     djllbe.hMulti,
  221.                     djllbe.vMulti,
  222.                     djllbe.lightModeData,
  223.                     djllbe.laserTextureLoc
  224.             ));
  225.             Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.ITEM_PICKUP,0.75f));
  226.         }){};
  227.  
  228.         incHorzOscButton = new ExtendedButton(increaseHeightButton.getX(),increaseHeightButton.getY() + increaseHeightButton.getHeight() + 2,
  229.                 64,16,
  230.                 Component.translatable("button.thingamajigs.laser_light.horzoscinc"),(handler) -> {
  231.             PacketDistributor.sendToServer(new DJLaserLightUpdatePayload(
  232.                     new BlockPos(x,y,z),djllbe.height,djllbe.colorstr,
  233.                     djllbe.laserSize,
  234.                     djllbe.laserCount,
  235.                     djllbe.angleOffset,
  236.                     djllbe.vAngleOffset,
  237.                     djllbe.lightMode,
  238.                     djllbe.hOsc,
  239.                     djllbe.vOsc,
  240.                     djllbe.hMulti,
  241.                     djllbe.vMulti,
  242.                     djllbe.lightModeData,
  243.                     djllbe.laserTextureLoc
  244.             ));
  245.             Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.ITEM_PICKUP,1.0f));
  246.         }){};
  247.  
  248.         decHorzOscButton = new ExtendedButton(decreaseHeightButton.getX(),incHorzOscButton.getY(),64,16,
  249.                 Component.translatable("button.thingamajigs.laser_light.horzoscdec"),(handler) -> {
  250.             PacketDistributor.sendToServer(new DJLaserLightUpdatePayload(
  251.                     new BlockPos(x,y,z),djllbe.height,djllbe.colorstr,
  252.                     djllbe.laserSize,
  253.                     djllbe.laserCount,
  254.                     djllbe.angleOffset,
  255.                     djllbe.vAngleOffset,
  256.                     djllbe.lightMode,
  257.                     djllbe.hOsc,
  258.                     djllbe.vOsc,
  259.                     djllbe.hMulti,
  260.                     djllbe.vMulti,
  261.                     djllbe.lightModeData,
  262.                     djllbe.laserTextureLoc
  263.             ));
  264.             Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.ITEM_PICKUP,0.75f));
  265.         }){};
  266.  
  267.         incVertOscButton = new ExtendedButton(incHorzOscButton.getX(),incHorzOscButton.getY() + 2,64,16,
  268.                 Component.translatable("button.thingamajigs.laser_light.vertoscinc"),(handler) -> {
  269.             PacketDistributor.sendToServer(new DJLaserLightUpdatePayload(
  270.                     new BlockPos(x,y,z),djllbe.height,djllbe.colorstr,
  271.                     djllbe.laserSize,
  272.                     djllbe.laserCount,
  273.                     djllbe.angleOffset,
  274.                     djllbe.vAngleOffset,
  275.                     djllbe.lightMode,
  276.                     djllbe.hOsc,
  277.                     djllbe.vOsc,
  278.                     djllbe.hMulti,
  279.                     djllbe.vMulti,
  280.                     djllbe.lightModeData,
  281.                     djllbe.laserTextureLoc
  282.             ));
  283.             Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.ITEM_PICKUP,1.0f));
  284.         }){};
  285.  
  286.         decVertOscButton = new ExtendedButton(incHorzOscButton.getX(),incVertOscButton.getY(),64,16,
  287.                 Component.translatable("button.thingamajigs.laser_light.vertoscdec"),(handler) -> {
  288.             PacketDistributor.sendToServer(new DJLaserLightUpdatePayload(
  289.                     new BlockPos(x,y,z),djllbe.height,djllbe.colorstr,
  290.                     djllbe.laserSize,
  291.                     djllbe.laserCount,
  292.                     djllbe.angleOffset,
  293.                     djllbe.vAngleOffset,
  294.                     djllbe.lightMode,
  295.                     djllbe.hOsc,
  296.                     djllbe.vOsc,
  297.                     djllbe.hMulti,
  298.                     djllbe.vMulti,
  299.                     djllbe.lightModeData,
  300.                     djllbe.laserTextureLoc
  301.             ));
  302.             Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.ITEM_PICKUP,0.75f));
  303.         }){};
  304.  
  305.  
  306.  
  307.  
  308.         colorHexBox = new CustomRSLocationEditBox(this.getMinecraft().font,incHButxPos,incHButyPos + 120,
  309.                 72,16,Component.literal("colorHexEditbox"),djllbe.colorstr){
  310.             @Override
  311.             public void setTextColor(int decColor) {
  312.                 super.setTextColor(djllbe.color);
  313.             }
  314.             @Override
  315.             public void setCanLoseFocus(boolean loseFocus) {
  316.                 super.setCanLoseFocus(true);
  317.             }
  318.         };
  319.  
  320.         updateHexColorButton = new ExtendedButton(colorHexBox.getX() + colorHexBox.getWidth() + 2,colorHexBox.getY(),24,16,
  321.                 Component.translatable("button.thingamajigs.laser_light.send_color_update"),(handler) -> {
  322.             PacketDistributor.sendToServer(new DJLaserLightUpdatePayload(
  323.                     new BlockPos(x,y,z),djllbe.height,colorHexBox.getValue(),
  324.                     djllbe.laserSize,
  325.                     djllbe.laserCount,
  326.                     djllbe.angleOffset,
  327.                     djllbe.vAngleOffset,
  328.                     djllbe.lightMode,
  329.                     djllbe.hOsc,
  330.                     djllbe.vOsc,
  331.                     djllbe.hMulti,
  332.                     djllbe.vMulti,
  333.                     djllbe.lightModeData,
  334.                     djllbe.laserTextureLoc
  335.             ));
  336.             Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.BUCKET_EMPTY,1.0f));
  337.         }){};
  338.  
  339.         whiteButton = new ExtendedButton(colorHexBox.getX(),colorHexBox.getY() + 2,64,16,
  340.                 Component.translatable("button.thingamajigs.laser_light.reset"),(handler) -> {
  341.             PacketDistributor.sendToServer(new DJLaserLightUpdatePayload(
  342.                     new BlockPos(x,y,z),djllbe.height,"FFFFFF",
  343.                     djllbe.laserSize,
  344.                     djllbe.laserCount,
  345.                     djllbe.angleOffset,
  346.                     djllbe.vAngleOffset,
  347.                     djllbe.lightMode,
  348.                     djllbe.hOsc,
  349.                     djllbe.vOsc,
  350.                     djllbe.hMulti,
  351.                     djllbe.vMulti,
  352.                     djllbe.lightModeData,
  353.                     djllbe.laserTextureLoc
  354.             ));
  355.             Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.ITEM_PICKUP,1.0f));
  356.         }){};
  357.     }
  358. }
  359.  
Add Comment
Please, Sign In to add comment