From 9349ffe2645a0d28a913f7b44d50303025370d8c Mon Sep 17 00:00:00 2001 From: Dimmerworld Date: Sat, 10 Feb 2018 22:53:11 +1100 Subject: [PATCH 1/2] Update forge and Sound options for Alarm (#1435) * Update forge and Sound options for Alarm * Revert changes to gradle wrapper properties * Cleanup imports * Removed sneaky debugging stuff --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- .../java/techreborn/blocks/BlockAlarm.java | 16 ++++++ src/main/java/techreborn/init/ModSounds.java | 4 ++ src/main/java/techreborn/lib/MessageIDs.java | 1 + src/main/java/techreborn/tiles/TileAlarm.java | 52 ++++++++++++++++-- .../assets/techreborn/lang/en_us.lang | 1 + .../resources/assets/techreborn/sounds.json | 12 ++++ .../techreborn/sounds/Alarm credits.txt | 7 +++ .../assets/techreborn/sounds/alarm_2.ogg | Bin 0 -> 31996 bytes .../assets/techreborn/sounds/alarm_3.ogg | Bin 0 -> 15860 bytes 11 files changed, 90 insertions(+), 7 deletions(-) create mode 100644 src/main/resources/assets/techreborn/sounds/Alarm credits.txt create mode 100644 src/main/resources/assets/techreborn/sounds/alarm_2.ogg create mode 100644 src/main/resources/assets/techreborn/sounds/alarm_3.ogg diff --git a/build.gradle b/build.gradle index 87bfd83fa..8fb1c555d 100644 --- a/build.gradle +++ b/build.gradle @@ -93,7 +93,7 @@ if (ENV.BUILD_NUMBER) { } minecraft { - version = "1.12.2-14.23.1.2590" + version = "1.12.2-14.23.2.2613" mappings = "snapshot_20171003" replace "@MODVERSION@", project.version useDepAts = true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 79a59180c..82afe9ee7 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,4 +1,4 @@ -#Mon Jun 19 11:12:24 BST 2017 +#Fri Feb 09 20:12:54 AEDT 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/java/techreborn/blocks/BlockAlarm.java b/src/main/java/techreborn/blocks/BlockAlarm.java index 0a7c8686b..fc0fb9e98 100644 --- a/src/main/java/techreborn/blocks/BlockAlarm.java +++ b/src/main/java/techreborn/blocks/BlockAlarm.java @@ -30,6 +30,7 @@ import net.minecraft.block.properties.PropertyDirection; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumBlockRenderType; import net.minecraft.util.EnumFacing; @@ -81,6 +82,21 @@ public class BlockAlarm extends BaseTileBlock { return new BlockStateContainer(this, FACING, ACTIVE); } + @Override + public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { + TileAlarm tileEntity = (TileAlarm)worldIn.getTileEntity(pos); + if (tileEntity == null) { + return super.onBlockActivated(worldIn, pos, state, playerIn, hand, facing, hitX, hitY, hitZ); + }else { + if(!worldIn.isRemote) { + if(playerIn.isSneaking()) { + tileEntity.rightClick(); + } + } + } + return true; + } + @Override public int getMetaFromState(IBlockState state) { int facingInt = state.getValue(FACING).getIndex(); diff --git a/src/main/java/techreborn/init/ModSounds.java b/src/main/java/techreborn/init/ModSounds.java index b98e7b9a8..542fb3635 100644 --- a/src/main/java/techreborn/init/ModSounds.java +++ b/src/main/java/techreborn/init/ModSounds.java @@ -44,6 +44,8 @@ public class ModSounds { public static SoundEvent MACHINE_RUN; public static SoundEvent MACHINE_START; public static SoundEvent ALARM; + public static SoundEvent ALARM_2; + public static SoundEvent ALARM_3; public static void init() { CABLE_SHOCK = getSound("cable_shock"); @@ -53,6 +55,8 @@ public class ModSounds { MACHINE_RUN = getSound("machine_run"); MACHINE_START = getSound("machine_start"); ALARM = getSound("alarm"); + ALARM_2 = getSound("alarm_2"); + ALARM_3 = getSound("alarm_3"); RecipeCrafter.soundHanlder = new SoundHandler(); } diff --git a/src/main/java/techreborn/lib/MessageIDs.java b/src/main/java/techreborn/lib/MessageIDs.java index f90d80c08..391e447d2 100644 --- a/src/main/java/techreborn/lib/MessageIDs.java +++ b/src/main/java/techreborn/lib/MessageIDs.java @@ -32,4 +32,5 @@ public class MessageIDs { public static int fluidPipeID = 1; public static int playerDetectorID = 2; public static int nanosaberID = 3; + public static int alarmID = 4; } diff --git a/src/main/java/techreborn/tiles/TileAlarm.java b/src/main/java/techreborn/tiles/TileAlarm.java index 6dbadcd8e..08c3508de 100644 --- a/src/main/java/techreborn/tiles/TileAlarm.java +++ b/src/main/java/techreborn/tiles/TileAlarm.java @@ -24,25 +24,67 @@ package techreborn.tiles; +import net.minecraft.client.resources.I18n; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ITickable; import net.minecraft.util.SoundCategory; +import net.minecraft.util.text.TextComponentString; +import net.minecraft.util.text.TextFormatting; +import reborncore.common.util.ChatUtils; import techreborn.blocks.BlockAlarm; import techreborn.init.ModSounds; +import techreborn.lib.MessageIDs; public class TileAlarm extends TileEntity implements ITickable { - boolean state = false; - int selectedSound; + private int selectedSound = 1; @Override public void update() { if (!world.isRemote && world.getTotalWorldTime() % 25 == 0 && world.isBlockPowered(getPos())) { BlockAlarm.setActive(true, world, pos); - world.playSound(null, getPos().getX(), getPos().getY(), getPos().getZ(), ModSounds.ALARM, SoundCategory.BLOCKS, 4F, 1F); - state = true; + switch(selectedSound){ + case 1: + world.playSound(null, getPos().getX(), getPos().getY(), getPos().getZ(), ModSounds.ALARM, SoundCategory.BLOCKS, 4F, 1F); + break; + case 2: + world.playSound(null, getPos().getX(), getPos().getY(), getPos().getZ(), ModSounds.ALARM_2, SoundCategory.BLOCKS, 4F, 1F); + break; + case 3: + world.playSound(null, getPos().getX(), getPos().getY(), getPos().getZ(), ModSounds.ALARM_3, SoundCategory.BLOCKS, 4F, 1F); + break; + } + } else if (!world.isRemote && world.getTotalWorldTime() % 25 == 0) { BlockAlarm.setActive(false, world, pos); - state = false; } } + + @Override + public NBTTagCompound writeToNBT(NBTTagCompound compound) { + if(compound == null){ + compound = new NBTTagCompound(); + } + compound.setInteger("selectedSound", this.selectedSound); + return super.writeToNBT(compound); + } + + @Override + public void readFromNBT(NBTTagCompound compound) { + if(compound != null && compound.hasKey("selectedSound")){ + this.selectedSound = compound.getInteger("selectedSound"); + } + super.readFromNBT(compound); + } + + public void rightClick() { + if (!world.isRemote){ + if(selectedSound < 3){ + selectedSound++; + }else{ + selectedSound = 1; + } + ChatUtils.sendNoSpamMessages(MessageIDs.alarmID, new TextComponentString(TextFormatting.GRAY + I18n.format("techreborn.message.alarm") + " " + "Alarm " + selectedSound)); + } + } } diff --git a/src/main/resources/assets/techreborn/lang/en_us.lang b/src/main/resources/assets/techreborn/lang/en_us.lang index 6621094cb..88a1efc20 100644 --- a/src/main/resources/assets/techreborn/lang/en_us.lang +++ b/src/main/resources/assets/techreborn/lang/en_us.lang @@ -654,6 +654,7 @@ techreborn.message.noCoordsSet=No Coordinates Set techreborn.message.coordsHaveBeen=Coordinates have been techreborn.message.cleared=Cleared techreborn.message.detects=Detects +techreborn.message.alarm=Switched to: techreborn.message.allPlayers=All Players techreborn.message.onlyOtherPlayers=Only Other Players techreborn.message.onlyYou=Only You diff --git a/src/main/resources/assets/techreborn/sounds.json b/src/main/resources/assets/techreborn/sounds.json index 4d4151eb1..f712c0c81 100644 --- a/src/main/resources/assets/techreborn/sounds.json +++ b/src/main/resources/assets/techreborn/sounds.json @@ -40,5 +40,17 @@ "sounds": [ "techreborn:alarm" ] + }, + "alarm_2": { + "category": "block", + "sounds": [ + "techreborn:alarm_2" + ] + }, + "alarm_3": { + "category": "block", + "sounds": [ + "techreborn:alarm_3" + ] } } \ No newline at end of file diff --git a/src/main/resources/assets/techreborn/sounds/Alarm credits.txt b/src/main/resources/assets/techreborn/sounds/Alarm credits.txt new file mode 100644 index 000000000..f5274fee9 --- /dev/null +++ b/src/main/resources/assets/techreborn/sounds/Alarm credits.txt @@ -0,0 +1,7 @@ +alarm_2 +by rene___ +https://freesound.org/people/rene___/sounds/56778/ + +alarm_3 +by plasterbrain +https://freesound.org/people/plasterbrain/sounds/242856/ diff --git a/src/main/resources/assets/techreborn/sounds/alarm_2.ogg b/src/main/resources/assets/techreborn/sounds/alarm_2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..82d9602f5a8f919485f0988b8e70a9f1b67fc5b2 GIT binary patch literal 31996 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 txv6HQ;pG` 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 W=ij>>W}Y+Bd+AYr*Ry%=5&sWkAm#4> literal 0 HcmV?d00001 From 27dacb327a058798c5b65d4a7ac8fdf4420e6612 Mon Sep 17 00:00:00 2001 From: Dimmerworld Date: Mon, 12 Feb 2018 00:59:52 +1100 Subject: [PATCH 2/2] Alarm cleanup + tooltip and techreborn manual UI (#1437) * Alarm cleanup and tooltip, Tech manual UI * add peskty comma * Compress png * Rename to wiki and asked user before opening browser --- .../java/techreborn/blocks/BlockAlarm.java | 26 ++-- .../java/techreborn/client/GuiHandler.java | 7 +- .../java/techreborn/client/gui/GuiManual.java | 117 ++++++++++++++++++ .../items/tools/ItemTechManual.java | 15 +-- src/main/java/techreborn/tiles/TileAlarm.java | 28 ++--- .../assets/techreborn/lang/en_us.lang | 7 ++ .../assets/techreborn/textures/gui/manual.png | Bin 0 -> 904 bytes src/main/resources/mcmod.info | 2 +- 8 files changed, 165 insertions(+), 37 deletions(-) create mode 100644 src/main/java/techreborn/client/gui/GuiManual.java create mode 100644 src/main/resources/assets/techreborn/textures/gui/manual.png diff --git a/src/main/java/techreborn/blocks/BlockAlarm.java b/src/main/java/techreborn/blocks/BlockAlarm.java index fc0fb9e98..0bbada331 100644 --- a/src/main/java/techreborn/blocks/BlockAlarm.java +++ b/src/main/java/techreborn/blocks/BlockAlarm.java @@ -29,14 +29,18 @@ import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.properties.PropertyDirection; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.resources.I18n; +import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumBlockRenderType; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import prospector.shootingstar.ShootingStar; @@ -47,7 +51,7 @@ import techreborn.lib.ModInfo; import techreborn.tiles.TileAlarm; import javax.annotation.Nullable; - +import java.util.List; public class BlockAlarm extends BaseTileBlock { public static PropertyDirection FACING; @@ -66,6 +70,7 @@ public class BlockAlarm extends BaseTileBlock { } private AxisAlignedBB[] bbs; + public BlockAlarm() { super(Material.ROCK); setUnlocalizedName("techreborn.alarm"); @@ -84,12 +89,12 @@ public class BlockAlarm extends BaseTileBlock { @Override public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { - TileAlarm tileEntity = (TileAlarm)worldIn.getTileEntity(pos); + TileAlarm tileEntity = (TileAlarm) worldIn.getTileEntity(pos); if (tileEntity == null) { return super.onBlockActivated(worldIn, pos, state, playerIn, hand, facing, hitX, hitY, hitZ); - }else { - if(!worldIn.isRemote) { - if(playerIn.isSneaking()) { + } else { + if (!worldIn.isRemote) { + if (playerIn.isSneaking()) { tileEntity.rightClick(); } } @@ -106,8 +111,8 @@ public class BlockAlarm extends BaseTileBlock { @Override public IBlockState getStateFromMeta(int meta) { - Boolean active = (meta&8)==8; - EnumFacing facing = EnumFacing.getFront(meta&7); + Boolean active = (meta & 8) == 8; + EnumFacing facing = EnumFacing.getFront(meta & 7); return this.getDefaultState().withProperty(FACING, facing).withProperty(ACTIVE, active); } @@ -116,7 +121,7 @@ public class BlockAlarm extends BaseTileBlock { } public static EnumFacing getFacing(IBlockState state) { - return (EnumFacing)state.getValue(FACING); + return (EnumFacing) state.getValue(FACING); } public static void setFacing(EnumFacing facing, World world, BlockPos pos) { @@ -161,8 +166,13 @@ public class BlockAlarm extends BaseTileBlock { } @Override + public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) { return this.bbs[getFacing(state).getIndex()]; } + @Override + public void addInformation(final ItemStack stack, final World world, final List tooltip, ITooltipFlag flag) { + tooltip.add(TextFormatting.GRAY + I18n.format("techreborn.tooltip.alarm")); + } } diff --git a/src/main/java/techreborn/client/GuiHandler.java b/src/main/java/techreborn/client/GuiHandler.java index 98b350453..c647124a7 100644 --- a/src/main/java/techreborn/client/GuiHandler.java +++ b/src/main/java/techreborn/client/GuiHandler.java @@ -33,6 +33,7 @@ import techreborn.client.container.ContainerDestructoPack; import techreborn.client.container.IContainerProvider; import techreborn.client.gui.*; import techreborn.client.gui.autocrafting.GuiAutoCrafting; +import techreborn.items.tools.ItemTechManual; import techreborn.tiles.*; import techreborn.tiles.fusionReactor.TileFusionControlComputer; import techreborn.tiles.generator.*; @@ -152,9 +153,11 @@ public class GuiHandler implements IGuiHandler { case AUTO_CRAFTING_TABLE: return new GuiAutoCrafting(player, (TileAutoCraftingTable) tile); case PLASMA_GENERATOR: - return new GuiPlasmaGenerator(player, (TilePlasmaGenerator) tile); + return new GuiPlasmaGenerator(player, (TilePlasmaGenerator) tile); case DISTILLATION_TOWER: - return new GuiDistillationTower(player, (TileDistillationTower) tile); + return new GuiDistillationTower(player, (TileDistillationTower) tile); + case MANUAL: + return new GuiManual(player); default: break; diff --git a/src/main/java/techreborn/client/gui/GuiManual.java b/src/main/java/techreborn/client/gui/GuiManual.java new file mode 100644 index 000000000..7878ad940 --- /dev/null +++ b/src/main/java/techreborn/client/gui/GuiManual.java @@ -0,0 +1,117 @@ +/* + * This file is part of TechReborn, licensed under the MIT License (MIT). + * + * Copyright (c) 2017 TechReborn + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package techreborn.client.gui; + +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.GuiConfirmOpenLink; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; +import techreborn.items.tools.ItemTechManual; + +import java.awt.*; + +public class GuiManual extends GuiScreen { + + ItemTechManual manual; + EntityPlayer player; + + private static final ResourceLocation texture = new ResourceLocation("techreborn", "textures/gui/manual.png"); + int guiWidth = 207; + int guiHeight = 195; + private static final String text1 = I18n.format("techreborn.manual.wiki"); + private static final String text2 = I18n.format("techreborn.manual.discord"); + + + public GuiManual(EntityPlayer player) { + this.player = player; + } + + @Override + public boolean doesGuiPauseGame() { + return false; + } + + @Override + public void initGui() { + this.buttonList.add(new GuiButton(1, (width / 2 - 30), (height / 2 - (guiHeight / 4)) + 17, 60, 20, I18n.format("techreborn.manual.wikibtn"))); + this.buttonList.add(new GuiButton(2, (width / 2 - 30), (height / 2) + 22, 60, 20, I18n.format("techreborn.manual.discordbtn"))); + } + + @Override + public void drawScreen(int mouseX, int mouseY, float partialTicks) { + this.drawDefaultBackground(); + this.mc.getTextureManager().bindTexture(GuiManual.texture); + int centerX = (width / 2) - guiWidth / 2; + int centerY = (height / 2) - guiHeight / 2; + drawTexturedModalRect(centerX, centerY, 0, 0, guiWidth, guiHeight); + this.fontRenderer.drawString(text1, ((width / 2) - this.fontRenderer.getStringWidth(text1) / 2), height / 2 - (guiHeight / 4), 4210752); + this.fontRenderer.drawString(text2, ((width / 2) - this.fontRenderer.getStringWidth(text2) / 2), height / 2 + 5, 4210752); + super.drawScreen(mouseX, mouseY, partialTicks); + } + + @Override + protected void actionPerformed(GuiButton button) { + switch (button.id) { + case 1: + this.mc.displayGuiScreen(new GuiConfirmOpenLink(this, "http://wiki.techreborn.ovh", 1, false)); + break; + case 2: + this.mc.displayGuiScreen(new GuiConfirmOpenLink(this, "http://discord.gg/0tCDWb77cvetwm0e", 2, false)); + break; + } + } + + @Override + public void confirmClicked(boolean result, int id) { + switch(id) { + case 1: + if(result == true) { + try { + Desktop.getDesktop().browse(new java.net.URI("http://wiki.techreborn.ovh")); + } catch (Exception e) { + System.err.print(e); + } + }else { + this.mc.displayGuiScreen(this); + } + break; + case 2: + if(result == true) { + try { + Desktop.getDesktop().browse(new java.net.URI("http://discord.gg/0tCDWb77cvetwm0e")); + } catch (Exception e) { + System.err.print(e); + } + }else { + this.mc.displayGuiScreen(this); + } + break; + } + } + } + + diff --git a/src/main/java/techreborn/items/tools/ItemTechManual.java b/src/main/java/techreborn/items/tools/ItemTechManual.java index a6a5d9160..305069af1 100644 --- a/src/main/java/techreborn/items/tools/ItemTechManual.java +++ b/src/main/java/techreborn/items/tools/ItemTechManual.java @@ -24,22 +24,18 @@ package techreborn.items.tools; -import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.ActionResult; import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumHand; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.client.resources.I18n; + import net.minecraft.world.World; import techreborn.Core; import techreborn.client.EGui; import techreborn.client.TechRebornCreativeTab; import techreborn.items.ItemTR; -import java.util.List; - public class ItemTechManual extends ItemTR { public ItemTechManual() { @@ -51,13 +47,8 @@ public class ItemTechManual extends ItemTR { @Override public ActionResult onItemRightClick(final World world, final EntityPlayer player, final EnumHand hand) { - player.openGui(Core.INSTANCE, EGui.MANUAL.ordinal(), world, (int) player.posX, (int) player.posY, - (int) player.posY); + player.openGui(Core.INSTANCE, EGui.MANUAL.ordinal(), world, (int) player.posX, (int) player.posY, (int) player.posY); + return new ActionResult<>(EnumActionResult.SUCCESS, player.getHeldItem(hand)); } - - @Override - public void addInformation(final ItemStack stack, final World world, final List tooltip, ITooltipFlag flag) { - tooltip.add(TextFormatting.RED + I18n.format("tooltip.wip")); - } } diff --git a/src/main/java/techreborn/tiles/TileAlarm.java b/src/main/java/techreborn/tiles/TileAlarm.java index 08c3508de..45b3beff6 100644 --- a/src/main/java/techreborn/tiles/TileAlarm.java +++ b/src/main/java/techreborn/tiles/TileAlarm.java @@ -43,15 +43,15 @@ public class TileAlarm extends TileEntity implements ITickable { public void update() { if (!world.isRemote && world.getTotalWorldTime() % 25 == 0 && world.isBlockPowered(getPos())) { BlockAlarm.setActive(true, world, pos); - switch(selectedSound){ - case 1: - world.playSound(null, getPos().getX(), getPos().getY(), getPos().getZ(), ModSounds.ALARM, SoundCategory.BLOCKS, 4F, 1F); + switch (selectedSound) { + case 1: + world.playSound(null, getPos().getX(), getPos().getY(), getPos().getZ(), ModSounds.ALARM, SoundCategory.BLOCKS, 4F, 1F); break; - case 2: - world.playSound(null, getPos().getX(), getPos().getY(), getPos().getZ(), ModSounds.ALARM_2, SoundCategory.BLOCKS, 4F, 1F); + case 2: + world.playSound(null, getPos().getX(), getPos().getY(), getPos().getZ(), ModSounds.ALARM_2, SoundCategory.BLOCKS, 4F, 1F); break; - case 3: - world.playSound(null, getPos().getX(), getPos().getY(), getPos().getZ(), ModSounds.ALARM_3, SoundCategory.BLOCKS, 4F, 1F); + case 3: + world.playSound(null, getPos().getX(), getPos().getY(), getPos().getZ(), ModSounds.ALARM_3, SoundCategory.BLOCKS, 4F, 1F); break; } @@ -62,7 +62,7 @@ public class TileAlarm extends TileEntity implements ITickable { @Override public NBTTagCompound writeToNBT(NBTTagCompound compound) { - if(compound == null){ + if (compound == null) { compound = new NBTTagCompound(); } compound.setInteger("selectedSound", this.selectedSound); @@ -71,20 +71,20 @@ public class TileAlarm extends TileEntity implements ITickable { @Override public void readFromNBT(NBTTagCompound compound) { - if(compound != null && compound.hasKey("selectedSound")){ + if (compound != null && compound.hasKey("selectedSound")) { this.selectedSound = compound.getInteger("selectedSound"); } super.readFromNBT(compound); } public void rightClick() { - if (!world.isRemote){ - if(selectedSound < 3){ + if (!world.isRemote) { + if (selectedSound < 3) { selectedSound++; - }else{ + } else { selectedSound = 1; } - ChatUtils.sendNoSpamMessages(MessageIDs.alarmID, new TextComponentString(TextFormatting.GRAY + I18n.format("techreborn.message.alarm") + " " + "Alarm " + selectedSound)); - } + ChatUtils.sendNoSpamMessages(MessageIDs.alarmID, new TextComponentString(TextFormatting.GRAY + I18n.format("techreborn.message.alarm") + " " + "Alarm " + selectedSound)); + } } } diff --git a/src/main/resources/assets/techreborn/lang/en_us.lang b/src/main/resources/assets/techreborn/lang/en_us.lang index 88a1efc20..65a771451 100644 --- a/src/main/resources/assets/techreborn/lang/en_us.lang +++ b/src/main/resources/assets/techreborn/lang/en_us.lang @@ -718,6 +718,13 @@ techreborn.tooltip.inventory=Inventory techreborn.tooltip.upgrades=Upgrades techreborn.tooltip.transferRate=Transfer Rate techreborn.tooltip.tier=Tier +techreborn.tooltip.alarm=Shift rightclick to change sound + +#ManualUI +techreborn.manual.wiki=Online wiki +techreborn.manual.discord=Our discord +techreborn.manual.wikibtn=Open +techreborn.manual.discordbtn=Join #Advancements diff --git a/src/main/resources/assets/techreborn/textures/gui/manual.png b/src/main/resources/assets/techreborn/textures/gui/manual.png new file mode 100644 index 0000000000000000000000000000000000000000..2724bea30907ea5331edfba06b5b497b56d4477a GIT binary patch literal 904 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Fq6j;1lBNUf=^{&YCsr*s)_A z92`PILO`yvvN8`350C)_|NsA=IdkUu^XCs8I&|mGouHr~F)^{o$Ve|QFB21!V+&x0jTZBqk=-8y?yO)WcO0Z8zk5&3-N?Yebl=m(F{I+w+ncw` zW;rl81V*WBxiaIUkjel5i*vIgnqov2nWlcLyrend%sURJNh*;~j585&<@D+ImRgRaw&7!gc$3h!;=$g<<6duxPL&w;cc?* zp8D#^7ot-CDwngon0d*fVawmnok^1gl^GanavKUH6=DqUe&A@>H@WV9=RdLVMzaH^ z;`ghWMdq_`)Uxj>Nz`4p=LgdV!2+QYNfw3&+4p#sZr>^Cwf~6t!oux`nbp4-Za>V= zwBsQ2#Al~Z^1H~f6g0ahrRy)Z6Z+lGa5jDR{927$zm8|}yPoH}{5RNEj2#?ZgNis{ zd;0p{x2HH5t{ruFZB*2tq_51b@#zNRH3o(=G6_Ee>*jpeR#o4@x*)53&WG%;`+CF^ zLicS4lHb2aCkX00$X)l`kj%=^A(Ie4|G&|()edp<>wE4qfBX9LI7fhPqw~yToIom8 zO55RUXo94!LoKHZ=Z00fjTZ0Ovb_~9-F|pks6*tz78WJu3h&w83G%!LzWq49!1-%k zea-%_+YeqXX?SkA