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
This commit is contained in:
parent
9349ffe264
commit
27dacb327a
8 changed files with 165 additions and 37 deletions
|
@ -29,14 +29,18 @@ import net.minecraft.block.properties.PropertyBool;
|
||||||
import net.minecraft.block.properties.PropertyDirection;
|
import net.minecraft.block.properties.PropertyDirection;
|
||||||
import net.minecraft.block.state.BlockStateContainer;
|
import net.minecraft.block.state.BlockStateContainer;
|
||||||
import net.minecraft.block.state.IBlockState;
|
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.EntityLivingBase;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumBlockRenderType;
|
import net.minecraft.util.EnumBlockRenderType;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.math.AxisAlignedBB;
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.text.TextFormatting;
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import prospector.shootingstar.ShootingStar;
|
import prospector.shootingstar.ShootingStar;
|
||||||
|
@ -47,7 +51,7 @@ import techreborn.lib.ModInfo;
|
||||||
import techreborn.tiles.TileAlarm;
|
import techreborn.tiles.TileAlarm;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class BlockAlarm extends BaseTileBlock {
|
public class BlockAlarm extends BaseTileBlock {
|
||||||
public static PropertyDirection FACING;
|
public static PropertyDirection FACING;
|
||||||
|
@ -66,6 +70,7 @@ public class BlockAlarm extends BaseTileBlock {
|
||||||
}
|
}
|
||||||
|
|
||||||
private AxisAlignedBB[] bbs;
|
private AxisAlignedBB[] bbs;
|
||||||
|
|
||||||
public BlockAlarm() {
|
public BlockAlarm() {
|
||||||
super(Material.ROCK);
|
super(Material.ROCK);
|
||||||
setUnlocalizedName("techreborn.alarm");
|
setUnlocalizedName("techreborn.alarm");
|
||||||
|
@ -84,12 +89,12 @@ public class BlockAlarm extends BaseTileBlock {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
|
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) {
|
if (tileEntity == null) {
|
||||||
return super.onBlockActivated(worldIn, pos, state, playerIn, hand, facing, hitX, hitY, hitZ);
|
return super.onBlockActivated(worldIn, pos, state, playerIn, hand, facing, hitX, hitY, hitZ);
|
||||||
}else {
|
} else {
|
||||||
if(!worldIn.isRemote) {
|
if (!worldIn.isRemote) {
|
||||||
if(playerIn.isSneaking()) {
|
if (playerIn.isSneaking()) {
|
||||||
tileEntity.rightClick();
|
tileEntity.rightClick();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -106,8 +111,8 @@ public class BlockAlarm extends BaseTileBlock {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IBlockState getStateFromMeta(int meta) {
|
public IBlockState getStateFromMeta(int meta) {
|
||||||
Boolean active = (meta&8)==8;
|
Boolean active = (meta & 8) == 8;
|
||||||
EnumFacing facing = EnumFacing.getFront(meta&7);
|
EnumFacing facing = EnumFacing.getFront(meta & 7);
|
||||||
return this.getDefaultState().withProperty(FACING, facing).withProperty(ACTIVE, active);
|
return this.getDefaultState().withProperty(FACING, facing).withProperty(ACTIVE, active);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,7 +121,7 @@ public class BlockAlarm extends BaseTileBlock {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EnumFacing getFacing(IBlockState state) {
|
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) {
|
public static void setFacing(EnumFacing facing, World world, BlockPos pos) {
|
||||||
|
@ -161,8 +166,13 @@ public class BlockAlarm extends BaseTileBlock {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
||||||
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) {
|
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) {
|
||||||
return this.bbs[getFacing(state).getIndex()];
|
return this.bbs[getFacing(state).getIndex()];
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
public void addInformation(final ItemStack stack, final World world, final List<String> tooltip, ITooltipFlag flag) {
|
||||||
|
tooltip.add(TextFormatting.GRAY + I18n.format("techreborn.tooltip.alarm"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,7 @@ import techreborn.client.container.ContainerDestructoPack;
|
||||||
import techreborn.client.container.IContainerProvider;
|
import techreborn.client.container.IContainerProvider;
|
||||||
import techreborn.client.gui.*;
|
import techreborn.client.gui.*;
|
||||||
import techreborn.client.gui.autocrafting.GuiAutoCrafting;
|
import techreborn.client.gui.autocrafting.GuiAutoCrafting;
|
||||||
|
import techreborn.items.tools.ItemTechManual;
|
||||||
import techreborn.tiles.*;
|
import techreborn.tiles.*;
|
||||||
import techreborn.tiles.fusionReactor.TileFusionControlComputer;
|
import techreborn.tiles.fusionReactor.TileFusionControlComputer;
|
||||||
import techreborn.tiles.generator.*;
|
import techreborn.tiles.generator.*;
|
||||||
|
@ -152,9 +153,11 @@ public class GuiHandler implements IGuiHandler {
|
||||||
case AUTO_CRAFTING_TABLE:
|
case AUTO_CRAFTING_TABLE:
|
||||||
return new GuiAutoCrafting(player, (TileAutoCraftingTable) tile);
|
return new GuiAutoCrafting(player, (TileAutoCraftingTable) tile);
|
||||||
case PLASMA_GENERATOR:
|
case PLASMA_GENERATOR:
|
||||||
return new GuiPlasmaGenerator(player, (TilePlasmaGenerator) tile);
|
return new GuiPlasmaGenerator(player, (TilePlasmaGenerator) tile);
|
||||||
case DISTILLATION_TOWER:
|
case DISTILLATION_TOWER:
|
||||||
return new GuiDistillationTower(player, (TileDistillationTower) tile);
|
return new GuiDistillationTower(player, (TileDistillationTower) tile);
|
||||||
|
case MANUAL:
|
||||||
|
return new GuiManual(player);
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
117
src/main/java/techreborn/client/gui/GuiManual.java
Normal file
117
src/main/java/techreborn/client/gui/GuiManual.java
Normal file
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,22 +24,18 @@
|
||||||
|
|
||||||
package techreborn.items.tools;
|
package techreborn.items.tools;
|
||||||
|
|
||||||
import net.minecraft.client.util.ITooltipFlag;
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.ActionResult;
|
import net.minecraft.util.ActionResult;
|
||||||
import net.minecraft.util.EnumActionResult;
|
import net.minecraft.util.EnumActionResult;
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.text.TextFormatting;
|
|
||||||
import net.minecraft.client.resources.I18n;
|
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import techreborn.Core;
|
import techreborn.Core;
|
||||||
import techreborn.client.EGui;
|
import techreborn.client.EGui;
|
||||||
import techreborn.client.TechRebornCreativeTab;
|
import techreborn.client.TechRebornCreativeTab;
|
||||||
import techreborn.items.ItemTR;
|
import techreborn.items.ItemTR;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class ItemTechManual extends ItemTR {
|
public class ItemTechManual extends ItemTR {
|
||||||
|
|
||||||
public ItemTechManual() {
|
public ItemTechManual() {
|
||||||
|
@ -51,13 +47,8 @@ public class ItemTechManual extends ItemTR {
|
||||||
@Override
|
@Override
|
||||||
public ActionResult<ItemStack> onItemRightClick(final World world, final EntityPlayer player,
|
public ActionResult<ItemStack> onItemRightClick(final World world, final EntityPlayer player,
|
||||||
final EnumHand hand) {
|
final EnumHand hand) {
|
||||||
player.openGui(Core.INSTANCE, EGui.MANUAL.ordinal(), world, (int) player.posX, (int) player.posY,
|
player.openGui(Core.INSTANCE, EGui.MANUAL.ordinal(), world, (int) player.posX, (int) player.posY, (int) player.posY);
|
||||||
(int) player.posY);
|
|
||||||
return new ActionResult<>(EnumActionResult.SUCCESS, player.getHeldItem(hand));
|
return new ActionResult<>(EnumActionResult.SUCCESS, player.getHeldItem(hand));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void addInformation(final ItemStack stack, final World world, final List<String> tooltip, ITooltipFlag flag) {
|
|
||||||
tooltip.add(TextFormatting.RED + I18n.format("tooltip.wip"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,15 +43,15 @@ public class TileAlarm extends TileEntity implements ITickable {
|
||||||
public void update() {
|
public void update() {
|
||||||
if (!world.isRemote && world.getTotalWorldTime() % 25 == 0 && world.isBlockPowered(getPos())) {
|
if (!world.isRemote && world.getTotalWorldTime() % 25 == 0 && world.isBlockPowered(getPos())) {
|
||||||
BlockAlarm.setActive(true, world, pos);
|
BlockAlarm.setActive(true, world, pos);
|
||||||
switch(selectedSound){
|
switch (selectedSound) {
|
||||||
case 1:
|
case 1:
|
||||||
world.playSound(null, getPos().getX(), getPos().getY(), getPos().getZ(), ModSounds.ALARM, SoundCategory.BLOCKS, 4F, 1F);
|
world.playSound(null, getPos().getX(), getPos().getY(), getPos().getZ(), ModSounds.ALARM, SoundCategory.BLOCKS, 4F, 1F);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
world.playSound(null, getPos().getX(), getPos().getY(), getPos().getZ(), ModSounds.ALARM_2, SoundCategory.BLOCKS, 4F, 1F);
|
world.playSound(null, getPos().getX(), getPos().getY(), getPos().getZ(), ModSounds.ALARM_2, SoundCategory.BLOCKS, 4F, 1F);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
world.playSound(null, getPos().getX(), getPos().getY(), getPos().getZ(), ModSounds.ALARM_3, SoundCategory.BLOCKS, 4F, 1F);
|
world.playSound(null, getPos().getX(), getPos().getY(), getPos().getZ(), ModSounds.ALARM_3, SoundCategory.BLOCKS, 4F, 1F);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ public class TileAlarm extends TileEntity implements ITickable {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NBTTagCompound writeToNBT(NBTTagCompound compound) {
|
public NBTTagCompound writeToNBT(NBTTagCompound compound) {
|
||||||
if(compound == null){
|
if (compound == null) {
|
||||||
compound = new NBTTagCompound();
|
compound = new NBTTagCompound();
|
||||||
}
|
}
|
||||||
compound.setInteger("selectedSound", this.selectedSound);
|
compound.setInteger("selectedSound", this.selectedSound);
|
||||||
|
@ -71,20 +71,20 @@ public class TileAlarm extends TileEntity implements ITickable {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void readFromNBT(NBTTagCompound compound) {
|
public void readFromNBT(NBTTagCompound compound) {
|
||||||
if(compound != null && compound.hasKey("selectedSound")){
|
if (compound != null && compound.hasKey("selectedSound")) {
|
||||||
this.selectedSound = compound.getInteger("selectedSound");
|
this.selectedSound = compound.getInteger("selectedSound");
|
||||||
}
|
}
|
||||||
super.readFromNBT(compound);
|
super.readFromNBT(compound);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void rightClick() {
|
public void rightClick() {
|
||||||
if (!world.isRemote){
|
if (!world.isRemote) {
|
||||||
if(selectedSound < 3){
|
if (selectedSound < 3) {
|
||||||
selectedSound++;
|
selectedSound++;
|
||||||
}else{
|
} else {
|
||||||
selectedSound = 1;
|
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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -718,6 +718,13 @@ techreborn.tooltip.inventory=Inventory
|
||||||
techreborn.tooltip.upgrades=Upgrades
|
techreborn.tooltip.upgrades=Upgrades
|
||||||
techreborn.tooltip.transferRate=Transfer Rate
|
techreborn.tooltip.transferRate=Transfer Rate
|
||||||
techreborn.tooltip.tier=Tier
|
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
|
#Advancements
|
||||||
|
|
||||||
|
|
BIN
src/main/resources/assets/techreborn/textures/gui/manual.png
Normal file
BIN
src/main/resources/assets/techreborn/textures/gui/manual.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 904 B |
|
@ -10,7 +10,7 @@
|
||||||
"authorList": [
|
"authorList": [
|
||||||
"modmuss50", "Gigabit101", "Prospector"
|
"modmuss50", "Gigabit101", "Prospector"
|
||||||
],
|
],
|
||||||
"credits": "Thanks to these contributors: TheMattaBase, Mj11jM, Mazdallier, tntrololol, joflashstudios, drcrazy, lclc98, Lordmau5, mezz, and Thog",
|
"credits": "Thanks to these contributors: TheMattaBase, Mj11jM, Mazdallier, tntrololol, joflashstudios, drcrazy, lclc98, Lordmau5, mezz, Thog, and Dimmerworld",
|
||||||
"logoFile": "logo.png",
|
"logoFile": "logo.png",
|
||||||
"screenshots": [
|
"screenshots": [
|
||||||
],
|
],
|
||||||
|
|
Loading…
Reference in a new issue