• 0

    posted a message on Totems (Original TCG for Minecraft) Dev Update/Discussion
    Added images finally
    Posted in: WIP Mods
  • 1

    posted a message on Totems (Original TCG for Minecraft) Dev Update/Discussion
    So this is my first time releasing information about this publicly :p. I've been working on this off and on for a couple of months now (my progress is pretty slow, I haven't been dedicated as of late) but I think I have a pretty good base set up (read on for details). This is an original trading card game of my own design implemented into Minecraft.

    Gameplay

    Totem Card - The resource in the game. Also, each provides a once per turn bonus during the totem phase (only one bonus per turn, being chosen from the pool of bonuses available from totem cards). Four Totem cards can be played per player, per turn. Can be destroyed, as common as monster cards



    Monster Card - Summoned during the Play Phase. Monsters can take up to three resources to summon. Monsters can not attack the turn they are summoned unless they have haste. They have health and attack, some have abilities, most have cool descriptions.



    Spell Card - Set during the Play Phase. Spell cards can be spells that are played during the Spell Phase, or traps that auto-activate when certain criteria are met.



    Will write more later, getting tired of doing this right now

    Development

    Listed as 'item (difficulty, reason/explanation)'. Basically here for my own note and for keeping track. difficulty == time, so expect less difficult tasks done sooner.



    DONE:

    Card System

    Card Pack System

    Card Storage System

    Game Table



    IN PROGRESS:

    Game Table multiplayer support (hard, having problems figuring this out, might be on to something)

    Game Table GUI (medium, GUIs suck, are just time consuming)



    NEXT:

    Game Table Game Logic (medium, I have a basic idea of how to do this, but not there yet)

    Currency System (easy, but takes time. Awarded on PvP wins and exchanged for card packs)

    More Cards (easy, have to make a lot of art though)



    PLANNED:

    Optimize card texture loading

    Bug test EVERYTHING

    Ability for moderators to be able to control economy (/pay, /take etc.)

    Make an AI for bot games (That's gonna be hard..)

    Images


    Everything at a glance


    Spell card Inspection GUI (early WIP), notice card rarity in top right corner. will make rarity table later.


    Monster card Inspection GUI (early WIP) Bottom left is health, bottom right is attack. Description and powers will go in the middle area soon.


    Card Stack GUI (WIP) damage value displays how full the inventory is. A card stack holds ten cards. This is an effective and easy way to organize cards, as inventories are saved safely, as well as reducing inventory space taken by all your cards, while still being able to access them at any time. You will be able to name these for organization later.


    Card Deck GUI (WIP) Damage value represents the amount of cards total that it holds. A Card Deck holds four Card Stacks, thus making it carry 40 cards in a single inventory slot, but you can still get to any single card you own in as little as 3 open inventory slots. You will be able to name these for organization later.


    Game Stage (early WIP) too complicated to explain via text, sorry. Let me know if this is ugly or not if you could?
    Posted in: WIP Mods
  • 0

    posted a message on [ForgeModloader] [1.7] Help: Items disappearing when removed from custom inventory
    Quote from coolAlias

    Heh, I remember now what that code does - it's to prevent the entire stack from disappearing when shift-clicking a stack into an inventory with a stack size limit of 1! Lol. As for your problem, I'm not sure what's causing it, as I just changed my inventory stack limit to 1 and was able to place, remove, shift-click etc. items in and out of the inventory without any trouble.

    You can check out the full source code for my inventory (the Magic Bag one) in my GitHub and try to see what doesn't match up with yours.

    I FOUND IT!
    public ItemStack decrStackSize(int slot, int amount) {
    ItemStack stack = getStackInSlot(slot);
    if(stack != null) {
    if(stack.stackSize>amount) {
    stack = stack.splitStack(amount);
    markDirty();
    } else {
    setInventorySlotContents(slot, null);
    }
    }
    return stack;
    }

    At the end where I return stack, I had it set to a default 'return null', so I changed that and it works now :)
    Posted in: Modification Development
  • 0

    posted a message on [ForgeModloader] [1.7] Help: Items disappearing when removed from custom inventory
    Quote from coolAlias

    Strange. Well, that was code I wrote for 1.6.4, so perhaps it needs to be changed for 1.7.2. I'll play around with it more some time and see if I can fix it.

    I will too :)
    Posted in: Modification Development
  • 0

    posted a message on [ForgeModloader] [1.7] Help: Items disappearing when removed from custom inventory
    Actually, I haven't noticed a change in behavior at all after adding your code in to my container class. It must be something different.
    Posted in: Modification Development
  • 0

    posted a message on [ForgeModloader] [1.7] Help: Items disappearing when removed from custom inventory
    Quote from coolAlias

    This is a problem with Minecraft's slotClick method - it does not like inventories with a stack size limit of 1.

    Here is my re-write of that method that fixes this problem - it goes in your Container class:
    /**
    * Vanilla method fails to account for stacks of size one, as well as whether stack
    * is valid for slot
    */
    @Override
    protected boolean mergeItemStack(ItemStack stack, int start, int end, boolean backwards)
    {
    boolean flag1 = false;
    int k = start;
    Slot slot;
    ItemStack itemstack1;
    
    if (backwards) { k = end - 1; }
    
    if (stack.isStackable()) {
    while (stack.stackSize > 0 && (!backwards && k < end || backwards && k >= start))
    {
    slot = (Slot) inventorySlots.get(k);
    itemstack1 = slot.getStack();
    
    if (!slot.isItemValid(stack)) {
    continue;
    }
    
    if (itemstack1 != null && itemstack1.getItem() == stack.getItem() &&
    (!stack.getHasSubtypes() || stack.getItemDamage() == itemstack1.getItemDamage()) &&
    ItemStack.areItemStackTagsEqual(stack, itemstack1))
    {
    int l = itemstack1.stackSize + stack.stackSize;
    
    if (l <= stack.getMaxStackSize() && l <= slot.getSlotStackLimit()) {
    stack.stackSize = 0;
    itemstack1.stackSize = l;
    pedestal.markDirty();
    flag1 = true;
    } else if (itemstack1.stackSize < stack.getMaxStackSize() && l < slot.getSlotStackLimit()) {
    stack.stackSize -= stack.getMaxStackSize() - itemstack1.stackSize;
    itemstack1.stackSize = stack.getMaxStackSize();
    pedestal.markDirty();
    flag1 = true;
    }
    }
    
    if (backwards) { --k; }
    
    else { ++k; }
    }
    }
    
    if (stack.stackSize > 0)
    {
    if (backwards) { k = end - 1; }
    
    else { k = start; }
    
    while (!backwards && k < end || backwards && k >= start) {
    slot = (Slot) inventorySlots.get(k);
    itemstack1 = slot.getStack();
    
    if (!slot.isItemValid(stack)) {
    continue;
    }
    
    if (itemstack1 == null) {
    int l = stack.stackSize;
    
    if (l <= slot.getSlotStackLimit()) {
    slot.putStack(stack.copy());
    stack.stackSize = 0;
    pedestal.markDirty();
    flag1 = true;
    break;
    } else {
    putStackInSlot(k, new ItemStack(stack.getItem(), slot.getSlotStackLimit(), stack.getItemDamage()));
    stack.stackSize -= slot.getSlotStackLimit();
    pedestal.markDirty();
    flag1 = true;
    }
    }
    
    if (backwards) { --k; }
    
    else { ++k; }
    }
    }
    
    return flag1;
    }

    Damn dude, thanks. Glad to know it wasn't an error on my part :)
    Posted in: Modification Development
  • 0

    posted a message on [ForgeModloader] [1.7] Help: Items disappearing when removed from custom inventory
    I have a custom inventory being called from an item that stores Card items inside of it. I can put the cards in the slots no problem and they stay there indefinitely, but when I try to pick them up by just left-clicking, they disappear completely from the game.

    Shift+clicking works as intended and is currently the only way to get items from the inventory

    Source:
    package com.hahaha466.totems.guis;
    
    import net.minecraft.client.gui.inventory.GuiContainer;
    import net.minecraft.client.renderer.texture.ITextureObject;
    import net.minecraft.inventory.Slot;
    import net.minecraft.util.ResourceLocation;
    import net.minecraft.util.StatCollector;
    
    import org.lwjgl.opengl.GL11;
    
    import com.hahaha466.totems.containers.ContainerCardStack;
    import com.hahaha466.totems.inventories.InventoryCardStack;
    
    public class GuiCardStack extends GuiContainer{
    
    public final int xSizeOfTexture = 176;
    public final int ySizeOfTexture = 88;
    
    /** ResourceLocation takes 2 parameters: ModId, path to texture at the location:
    * "src/minecraft/assets/modid/" */
    private static final ResourceLocation iconLocation = new ResourceLocation("hahaha466_totems", "textures/guis/CardStack.png");
    
    //the inventory to render on screen
    private final InventoryCardStack inventory;
    
    public GuiCardStack(ContainerCardStack containerCardStack) {
    super(containerCardStack);
    this.inventory = containerCardStack.inventory;
    }
    
    /**
    * Draw the foreground layer for the GuiContainer (everything in front of the items)
    */
    protected void drawGuiContainerForegroundLayer(int par1, int par2) {
    String s = inventory.getInventoryName();
    fontRendererObj.drawString(s, this.xSize / 2 - this.fontRendererObj.getStringWidth(s) / 2, 0, 4210752);
    fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 26, this.ySize - 96 + 4, 4210752);
    }
    
    /**
    * Draw the background layer for the GuiContainer (everything behind the items)
    */
    protected void drawGuiContainerBackgroundLayer(float f, int x, int y) {
    
    //drawDefaultBackground();
    
    //ITextureObject var4 = this.mc.renderEngine.getTexture(new ResourceLocation("hahaha466_totems", "textures/guis/BaseGui.png"));
    //GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    //this.mc.renderEngine.bindTexture(new ResourceLocation("hahaha466_totems", "textures/guis/BaseGui.png"));
    int posX = (this.width - xSizeOfTexture) / 2;
    int posY = (this.height - ySizeOfTexture) / 2;
    
    //drawTexturedModalRect(posX, posY, 0, 0, xSizeOfTexture, ySizeOfTexture);
    //super.drawScreen(x, y, f);
    }
    }



    package com.hahaha466.totems.inventories;
    
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.inventory.IInventory;
    import net.minecraft.item.ItemStack;
    import net.minecraft.nbt.NBTTagCompound;
    import net.minecraft.nbt.NBTTagList;
    import net.minecraftforge.common.util.Constants;
    
    import com.hahaha466.totems.items.ItemCard;
    
    public class InventoryCardStack implements IInventory{
    
    private String name = "Card Stack";
    
    public static final int INV_SIZE = 10;
    
    private ItemStack[] inventory = new ItemStack[INV_SIZE];
    
    private final ItemStack invItem;
    
    public InventoryCardStack(ItemStack stack) {
    this.invItem = stack;
    if(!stack.hasTagCompound())
    stack.setTagCompound(new NBTTagCompound());
    
    readFromNBT(stack.getTagCompound());
    }
    
    public int getSizeInventory() {
    return inventory.length;
    }
    
    public ItemStack getStackInSlot(int slot) {
    return inventory[slot];
    }
    
    public ItemStack decrStackSize(int slot, int amount) {
    ItemStack stack = getStackInSlot(slot);
    if(stack != null) {
    if(stack.stackSize>amount) {
    stack = stack.splitStack(amount);
    markDirty();
    } else {
    setInventorySlotContents(slot, null);
    }
    }
    return null;
    }
    
    public ItemStack getStackInSlotOnClosing(int slot) {
    ItemStack stack = getStackInSlot(slot);
    if(stack != null)
    setInventorySlotContents(slot, null);
    return stack;
    }
    
    public void setInventorySlotContents(int slot, ItemStack itemstack) {
    this.inventory[slot] = itemstack;
    if(itemstack != null && itemstack.stackSize > this.getInventoryStackLimit())
    itemstack.stackSize = this.getInventoryStackLimit();
    markDirty();
    }
    
    public String getInventoryName() {
    return name;
    }
    
    public boolean hasCustomInventoryName() {
    return name.length() > 0;
    }
    
    public int getInventoryStackLimit() {
    return 1;
    }
    
    public void markDirty() {
    for(int i=0; i<getSizeInventory(); i++) {
    if(getStackInSlot(i) != null && getStackInSlot(i).stackSize == 0)
    inventory[i] = null;
    writeToNBT(invItem.getTagCompound());
    }
    }
    
    public boolean isUseableByPlayer(EntityPlayer player) {
    return player.getHeldItem() == invItem;
    }
    
    public void openInventory() {
    openInventory();
    }
    
    public void closeInventory() {
    closeInventory();
    }
    
    public boolean isItemValidForSlot(int slot, ItemStack itemstack) {
    return itemstack.getItem() instanceof ItemCard;
    }
    
    public void readFromNBT(NBTTagCompound compound) {
    //gets custom taglist we wrote to this compound, if any
    NBTTagList items = compound.getTagList("ItemCardStack", Constants.NBT.TAG_COMPOUND);
    
    for(int i=0; i<items.tagCount(); i++) {
    NBTTagCompound item = items.getCompoundTagAt(i);
    byte slot = item.getByte("Slot");
    
    //double-checking if saved slot index is within our array bounds
    if(slot>=0 && slot < getSizeInventory())
    inventory[slot] = ItemStack.loadItemStackFromNBT(item);
    }
    }
    
    public void writeToNBT(NBTTagCompound compound) {
    //Create new NBT Tag List to store itemstacks as NBT flags
    NBTTagList items = new NBTTagList();
    
    for(int i=0; i<getSizeInventory(); ++i) {
    //Only write stacks that contain items
    if(getStackInSlot(i) != null) {
    //Make new NBT Tag Compound to write the itemstack and slot index to
    NBTTagCompound item = new NBTTagCompound();
    item.setInteger("Slot", i);
    //Writes the itemstack in slot(i) to the Tag Compound we just made
    getStackInSlot(i).writeToNBT(item);
    //add the tag compound to our tag list
    items.appendTag(item);
    }
    }
    //Add the TagList to the ItemStack's Tag Compound with the name "ItemCardStack"
    compound.setTag("ItemCardStack", items);
    }
    
    }



    package com.hahaha466.totems.containers;
    
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.entity.player.InventoryPlayer;
    import net.minecraft.inventory.Container;
    import net.minecraft.inventory.Slot;
    import net.minecraft.item.ItemArmor;
    import net.minecraft.item.ItemStack;
    
    import com.hahaha466.totems.inventories.InventoryCardStack;
    import com.hahaha466.totems.items.ItemCard;
    import com.hahaha466.totems.slots.SlotCardStack;
    
    public class ContainerCardStack extends Container {
    
    public final InventoryCardStack inventory;
    
    /** Using these will make transferStackInSlot easier to understand and implement
    * INV_START is the index of the first slot in the Player's Inventory, so our
    * InventoryItem's number of slots (e.g. 5 slots is array indices 0-4, so start at 5)
    * Notice how we don't have to remember how many slots we made? We can just use
    * InventoryItem.INV_SIZE and if we ever change it, the Container updates automatically. */
    private static final int INV_START = InventoryCardStack.INV_SIZE, INV_END = INV_START+26,
    HOTBAR_START = INV_END+1, HOTBAR_END = HOTBAR_START+8;
    
    public ContainerCardStack(EntityPlayer player, InventoryPlayer inventoryPlayer, InventoryCardStack inventoryCardStack) {
    this.inventory = inventoryCardStack;
    int i;
    
    //ITEM INVENTORY - you'll need to adjust the slot locations to match your texture file
    for(i=0; i<InventoryCardStack.INV_SIZE; i++) {
    //addSlotToContainer(new SlotCardStack(this.inventory, i, 80 + (18 * (int)(i/4)), 8 + (18*(i%4))));
    addSlotToContainer(new SlotCardStack(inventoryCardStack, i, i * 20, 20));
    }
    
    //PLAYER'S INVENTORY
    bindPlayerInventory(player.inventory);
    
    }
    
    @Override
    public boolean canInteractWith(EntityPlayer player) {
    return inventory.isUseableByPlayer(player);
    }
    
    /**
    * Called when a player shift-clicks on a slot. You must override this or you will crash when someone does that.
    * Only real change we make to this is to set needsUpdate to true at the end
    */
    @Override
    public ItemStack transferStackInSlot(EntityPlayer player, int par2) {
    ItemStack itemstack = null;
    Slot slot = (Slot) this.inventorySlots.get(par2);
    
    if(slot != null && slot.getHasStack()) {
    ItemStack itemstack1 = slot.getStack();
    itemstack = itemstack1.copy();
    //If item is in our custom inventory spot
    if(par2 < INV_START) {
    //Try to place in player inventory/action bar
    if(!this.mergeItemStack(itemstack1, INV_START, HOTBAR_END + 1, true))
    return null;
    slot.onSlotChange(itemstack1, itemstack);
    }
    //Item is in inventory/hotbar, try to place in custom inventory
    else {
    // Check that the item is the right type
    if (itemstack1.getItem() instanceof ItemCard) {
    // Try to merge into your custom inventory slots
    // We use 'InventoryItem.INV_SIZE' instead of INV_START just in case
    // you also add armor or other custom slots
    if (!this.mergeItemStack(itemstack1, 0, InventoryCardStack.INV_SIZE, false))
    return null;
    }
    }
    if(itemstack1.stackSize == 0)
    slot.putStack((ItemStack) null);
    else
    slot.onSlotChanged();
    if(itemstack1.stackSize == itemstack.stackSize)
    return null;
    slot.onPickupFromSlot(player, itemstack1);
    }
    return itemstack;
    }
    
    protected void bindPlayerInventory(InventoryPlayer inventoryPlayer) {
    for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 9; j++) {
    addSlotToContainer(new Slot(inventoryPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
    }
    }
    
    for (int i = 0; i < 9; i++) {
    addSlotToContainer(new Slot(inventoryPlayer, i, 8 + i * 18, 142));
    }
    }
    
    }

    Posted in: Modification Development
  • 0

    posted a message on [1.7.4] Puher Palace [Semi-Vanilla][MCMMO][Whitelisted]
    Quote from dinospy

    Application
    Minecraft IGN: dinospy10
    Name: Kyle
    Age: classified, but please trust me and I am being fully honest I am very mature
    Experience w/ Minecraft: well I remember first playing two years ago in 1.2.5 with my friend and, well I just got hooked from there on.
    Sell Yourself: im a nice upbeat guy who to be honest is not the best at this game. I am a sport player and a guy who cannot tolerate total mega giga immatureness. I would love to join this server and have some fun. I will accept all criticism and questions you have to ask. I am from Italy and Ireland and currently live in the USA and love playing with other people. well.... I guess that's all

    You seem pretty mature. You've been accepted! Have fun on the server! :)
    Posted in: PC Servers
  • 0

    posted a message on [1.7.4] Puher Palace [Semi-Vanilla][MCMMO][Whitelisted]
    Quote from ItsRomain

    IGN: ItsRomain
    Name: Romain Meerdink
    Age: 18

    Experience in minecraft:
    Well i have been playing like early alpha and played on numerous servers.
    The first server i played on i played 3 months until i got to be an Operator and helped manage the server for 4 more months after that untill the owner suddenly shut down and just dissapeared..

    The second one i have been hanging around was a RP server that was looking for builders/mods so i applied and joined.
    I built a great bit of the map on my own and earned the title of admin.
    That server went on for almost 3 months until the owner shut it down and me and the owner opened other minecraft servers but they were never a BIG succes.
    So eventually he let it go and i stopped playing minecraft for a while.

    I have played on numerous other server troughout the process but they were never able to give me that right feeling (if you know what i mean)

    I can build quite well when i take time for something and i love RPing a little now and then

    Sell yourself: Well i am a 18 year old boy from holland that has been playing minecraft for some time now :P I like building and mining and exploring with friends.
    I tend to build close to others cause i dont like to play alone.

    When it comes to redstone and potions i am no good at it xD but i still try now and then :)

    If you have more questions about me feel free to ask me anytime.

    Greetings From Romain

    Very very good application! :) You've been accepted! Can't wait to see you in game :)
    Posted in: PC Servers
  • 0

    posted a message on [1.7.4] Puher Palace [Semi-Vanilla][MCMMO][Whitelisted]
    Quote from DexteraXII

    Minecraft IGN: DexteraXII
    Name: John
    Age: 20
    Experience with Minecraft: I've been playing since about the Adventure Update or so, and used to be on a similar small, vanilla-like server before it closed.
    Sell yourself: I want to get to know how to use Redstone better, so I figured I would join a really small server and act as a freelance redstone technician, helping anyone who needs help with whatever projects they have. That way I can socialize, build like I would in a single player world, and practice with Redstone. As it stands, I can handle logic pretty well, and can make projects with complexities up to vertical triple piston extenders. I'm pretty amiable, and play often enough on the weekends. I'm looking forward to meeting a bunch of great people. Thank you for considering me.

    You've been approved! Thank you for considering my server, and you seem like a great likable person. Can't wait to see you online :)
    Posted in: PC Servers
  • 0

    posted a message on [1.7.4] Puher Palace [Semi-Vanilla][MCMMO][Whitelisted]
    Quote from LaughingCarrot

    Minecraft IGN: LaughingCarrot
    Name: Dmitriy
    Age: 17
    Experience with Minecraft: I've been playing since Beta 1.4.
    Sell yourself: I really enjoy the freedom that Minecraft gives its players and would love to join a vanilla-esque server where anyone can build freely without a care in the world. Now to be brutally honest, I can be a real cynical ***hole at times and I can understand why somebody wouldn't like me for that reason. I hope you'll accept me into this community of yours.

    Your brutal honesty has gotten you accepted! :) Take heed if you are unnecessarily rude to people often, I will have to start taking action.
    Posted in: PC Servers
  • 0

    posted a message on [1.7.4] Puher Palace [Semi-Vanilla][MCMMO][Whitelisted]
    Quote from homunculus84

    Thanks for whitelisting me! I can't however teleport from the spawn, it says i'm not allowed to use the teleport...

    Thank you for letting me know! I'll look in to it! :)
    Posted in: PC Servers
  • 0

    posted a message on [1.7.4] Puher Palace [Semi-Vanilla][MCMMO][Whitelisted]
    Quote from homunculus84

    Minecraft IGN: Homunculus84
    Name: Simon
    Age: 29 (I'm old, I know...)
    Experience w/ Minecraft: I played almost only vanilla servers, but since the early beta versions. I'm not a hardcore player, but I know my way around.
    Sell Yourself: I play to relax and I like to take my time when doing things on MC, therefore I'm welcoming and friendly when playing on multiplayer servers. To sum it up, I just want to have a good time with people i play with :) .

    Just a question: do you plan on adding a lot of mods to the server? Because I prefer to play on servers that are as vanilla as possibile.

    You've been accepted! You sound exactly like me xD and no, I will not be adding many server mods because I also like it being vanilla as possible! Have fun! :)

    Quote from Silvius

    Minecraft IGN: instantawesome
    Name: Jake Age: 21
    Experience w/ Minecraft: Since the beginning
    Sell Yourself: Well, when it comes to building i'm pretty minimalistic. I prefer mining and exploring compared to building and pvp. I've never had problems with other players and i consider myself to be quite friendly.

    You have also been accepted! I think you'll really enjoy this server!

    Sorry if the server is a bit slow in the beginning guys, I don't really have a playerbase at all right now, you four are the only ones so far. But four in one day is pretty good, we'll see how it goes today and if we can get populated :)
    Posted in: PC Servers
  • 0

    posted a message on [1.7.4] Puher Palace [Semi-Vanilla][MCMMO][Whitelisted]
    Quote from ClickCrisis

    Minecraft IGN: ClickACrisis
    Name: Joey (I prefer Click)
    Age: 15
    Experience w/ Minecraft: I've only had the game since my last birthday (July 24th), but I somehow know almost everything there is to know.
    Sell Yourself: I'm assuming this means what I'm like, but I'm a very kind person who's very welcoming. I enjoy the sandbox games, where I can unleash my creativity as I find that to be one of my most important traits. I'm a very joyful person, and I enjoy making people laugh whenever I can. Thanks! :D

    You've been accepted! Good application! :) I'll be looking forward to getting to know you!
    Posted in: PC Servers
  • 0

    posted a message on [1.7.4] Puher Palace [Semi-Vanilla][MCMMO][Whitelisted]
    Quote from Dannyman52

    My Server Application:

    Minecraft IGN: Dannyman52
    Name: Danny
    Age: 17
    Experience w/ Minecraft: Been playing for about three years.
    Sell Yourself: Umm, not sure what this means, but hi :D

    You've been accepted. I normally wouldn't accept applications this barebones, but I need a playerbase in the beginning to get started :)
    Posted in: PC Servers
  • To post a comment, please .