Rework folder structure in frontend
Pages are now grouped per group they appear in on in the header (where possible) Utilities used by multiple pages in the project are grouped in folders such as services/pipes/etc
This commit is contained in:
@@ -0,0 +1,176 @@
|
||||
<ng-container>
|
||||
<app-header [current_page]="'claiming'" height="460px" background_image="/public/img/backgrounds/trees.jpg"
|
||||
[overlay_gradient]="0.5">
|
||||
<div class="title" header-content>
|
||||
<h1>Claiming</h1>
|
||||
<h2>Claiming allows you to protect your items and builds from other players.</h2>
|
||||
</div>
|
||||
</app-header>
|
||||
|
||||
<main>
|
||||
<section class="darkmodeSection">
|
||||
<section class="columnSection">
|
||||
<div class="columnContainer">
|
||||
<div class="columnParagraph">
|
||||
<h2>Getting Started</h2>
|
||||
<p>You can “claim” land on Altitude to protect your builds. When you claim a section of land, other players
|
||||
will be unable to place or break blocks, kill animals, take crops, or open chests. Everything will be
|
||||
completely protected!</p>
|
||||
<p>To claim land, you will need some basic tools: a golden shovel, and a stick. You can craft these items
|
||||
yourself or do <b>/claim</b> to receive them for free. The shovel is used for modifying claims and the
|
||||
stick is used for viewing claim information.</p>
|
||||
<img ngSrc="/public/img/items/shovel.png" alt="Minecraft golden shovel" style="width: 25%;" height="114"
|
||||
width="114">
|
||||
<p>Players start with an allowance of 500 “claim blocks” and can purchase additional “claim blocks” with
|
||||
in-game currency using <span style="font-family: 'opensans-bold', sans-serif;">/buyclaimblocks</span>. How
|
||||
many claims you can create depends on the rank you have - the amount can be found on the <a
|
||||
[routerLink]="['/ranks']">ranks</a> page. Additionally, there is also a limit on how many blocks in
|
||||
total you can
|
||||
claim.</p>
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>Creating a Claim</h2>
|
||||
<p>Before creating any claim, we should check if there are other claims by other players nearby. Claims by
|
||||
different people should be at least 100 blocks apart unless both parties discuss otherwise. To do this,
|
||||
hold a stick in your hand and <b>shift + right click</b> to visualize all nearby claims. Claims are
|
||||
visualized using dotted lines of gold blocks, so look around for any dotted lines on the ground around
|
||||
you.</p>
|
||||
<p>Once you've confirmed that there are no claims too close, we can begin claiming! A claim doesn't go down
|
||||
all the way. The lowest point of the claim starts at 5 blocks below the lower corner you made. It'll keep
|
||||
expanding down as you place blocks lower and lower in the claim, but it may reset when you change the
|
||||
claim size, trust, subclaims etc. If you want to make sure your claim stays extended all the way down,
|
||||
make one of the initial corners at bedrock level. Remember to not claim further down than you need to.</p>
|
||||
<p>If a claim is within 100 blocks you will be unable to create your claim. If the original claim owner is
|
||||
fine with you having a claim closer than the 100 blocks, then they can trust you using <span
|
||||
style="font-family: 'opensans-bold', sans-serif;">/claimnearbytrust</span>. You will need to be trusted
|
||||
in order to claim and resize. The trust expires on every server reboot, this is to remind you that there
|
||||
are nearby claims.</p>
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>Automatic Claim Deletion</h2>
|
||||
<p>When a player has been inactive for 60 consecutive days, on a server (not cross-server), their claim(s)
|
||||
on that server will be transferred into an admin claim(s). The claim will be in that state for 24 hours
|
||||
after which is will be fully unclaimed. During the time the claim is an admin claim everyone will be
|
||||
trusted. This means that you will be able to raid the claim, but not claim it. If you wish to claim the
|
||||
build you will have to return 24 hours later.</p>
|
||||
<p>If you are planning on being gone this long, all you need to do is join for a couple of minutes within
|
||||
those 60 days to reset the timer. Unclaimed land is fair game to loot, so make sure your claims are active
|
||||
and properly sized!</p>
|
||||
<p>Any containers (i.e shulker, chest) that are placed within an active raid-claim are fair game - this also
|
||||
includes containers that raiders place. This means that items a raider puts into their personal shulker
|
||||
aren't safe while placed down or when on the ground as an item after being broken, as anyone that comes by
|
||||
can take it.</p>
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>Useful Commands</h2>
|
||||
<ul>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/buyclaimblocks -</span> Buy more claim
|
||||
blocks
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/sellclaimblocks -</span> Sell claim blocks
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/unclaim -</span> Remove a protection</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/claimslist -</span> List all of your
|
||||
protections
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/expandclaim <number> -</span> Expand
|
||||
the claim the direction you're facing (can also be used with negative numbers to downsize the claim)
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/containertrust <player> -</span> Give
|
||||
someone access to chests in your claim
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/permissiontrust <player> -</span> Give
|
||||
someone the ability to trust and untrust others in your claim
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/accesstrust <player> -</span> Give
|
||||
someone access to doors and trapdoors in your claim
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/subdivide -</span> Create claims within your
|
||||
main claim that you can trust people to
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/restrictsubclaim -</span> Sets subclaim NOT
|
||||
to inherit perms from the parent claim
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/trust <player> -</span> Allow someone
|
||||
to build and use chests within your claim
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/trustlist -</span> See who is trusted in your
|
||||
claim
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/untrust <player> -</span> Remove a
|
||||
player from your protection
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/kickfromclaim <player> -</span> Kick a
|
||||
player outside of your claim
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/petkick -</span> Enter pet kicking mode
|
||||
(right click pets you don't want in your claim)
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="columnContainer">
|
||||
<div class="columnParagraph">
|
||||
<h2>Resizing Your Claim</h2>
|
||||
<p>You can make your claim bigger or smaller any time by using a golden shovel. The process is similar to
|
||||
creating the claim. To make things easier, start by right clicking within the claim with a stick. This
|
||||
will show the border of the claim so you can see where the corners are.</p>
|
||||
<p>To resize a claim, right click a corner you would like to move. Then, right click again wherever you
|
||||
would like to move that corner to. To make things easier, you don't need to right click the actual block,
|
||||
you can just point your crosshair at the block and right click from a distance.</p>
|
||||
<p>If you don't have the needed amount of claim blocks to expand (or create) your claim, you will need to
|
||||
purchase additional claim blocks. The price for purchasing claim blocks is different depending on how many
|
||||
you have:</p>
|
||||
<ul>
|
||||
<li>0-10,000 blocks = $0.50/block</li>
|
||||
<li>10,000-50,000 blocks = $0.75/block</li>
|
||||
<li>50,000-300,000 blocks = $1.00/block</li>
|
||||
<li>300,000-1,000,000 blocks = $2.00/block</li>
|
||||
<li>1,000,000+ blocks = $5.00/block</li>
|
||||
</ul>
|
||||
<p>If you have left over claim blocks you can sell them using <span
|
||||
style="font-family: 'opensans-bold', sans-serif;">/sellclaimblocks</span>. The return will always be
|
||||
$0.50/block. This means that you need to be mindful of purchasing large amounts of claim blocks; don't
|
||||
purchase them unless you actually need them.</p>
|
||||
<img ngSrc="/public/img/backgrounds/claim.png" alt="Screenshot showing claim border in-game"
|
||||
style="width: 100%;"
|
||||
width="480" height="250">
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>Subdividing Claims</h2>
|
||||
<p>Subdividing claims allows you to give players access to specific parts of your claim. This is the best
|
||||
way to manage a town or shop!</p>
|
||||
<p>The idea behind subdivisions is easy. You are creating mini-claims within your main claim so that you can
|
||||
trust people to certain areas, but not the entire claim. You are still in control of the border of these
|
||||
mini-claims (size and location). Once a subdivision is created you can trust people the same way as
|
||||
before. Just stand in the mini-claim and use the trust commands. It will only trust them to the
|
||||
mini-claim. (To trust someone to your main claim you will need to stand outside of any mini-claims you've
|
||||
created.)</p>
|
||||
<p>To create a subdivision you need to go into "subdivision mode". You can access this mode with <b>/subdivideclaims</b>.
|
||||
Once you are in this mode you can create the subdivisions the same way you would make a regular claim,
|
||||
just right click two corners. Subdivisions will be outlined with a white dotted line. To leave subdivision
|
||||
mode use <b>/basicclaims</b>.</p>
|
||||
<img ngSrc="/public/img/backgrounds/townsubdivisions.png" alt="Screenshot of town subdivided"
|
||||
style="width: 100%;"
|
||||
width="480" height="250">
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>Trusting Others</h2>
|
||||
<p>You can add other players to your protected area with various levels of access. To trust everyone on the
|
||||
server replace <player> with "all". This works with all of the commands below.</p>
|
||||
<ul>
|
||||
<li>To give someone full access to your claim (break, build, access chests, etc) do: <b>/trust <player></b>
|
||||
</li>
|
||||
<li>To give someone just the ability to access storage items, but NOT build, do: <b>/containertrust <player></b>
|
||||
</li>
|
||||
<li>To give someone visitor access (opening the doors, but not take anything or build anything) do: <b>/accesstrust
|
||||
<player></b></li>
|
||||
<li>To give someone permission to manage your claim (trusting other players) do: <b>/permissiontrust <player></b>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</main>
|
||||
</ng-container>
|
||||
@@ -0,0 +1,9 @@
|
||||
main ul {
|
||||
font-family: opensans, sans-serif;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
main li {
|
||||
margin-left: 30px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { ClaimingComponent } from './claiming.component';
|
||||
|
||||
describe('ClaimingComponent', () => {
|
||||
let component: ClaimingComponent;
|
||||
let fixture: ComponentFixture<ClaimingComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [ClaimingComponent]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(ClaimingComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,18 @@
|
||||
import {Component} from '@angular/core';
|
||||
import {HeaderComponent} from '@header/header.component';
|
||||
import {NgOptimizedImage} from '@angular/common';
|
||||
import {RouterLink} from '@angular/router';
|
||||
|
||||
@Component({
|
||||
selector: 'app-claiming',
|
||||
imports: [
|
||||
HeaderComponent,
|
||||
NgOptimizedImage,
|
||||
RouterLink
|
||||
],
|
||||
templateUrl: './claiming.component.html',
|
||||
styleUrl: './claiming.component.scss'
|
||||
})
|
||||
export class ClaimingComponent {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,179 @@
|
||||
<ng-container>
|
||||
<app-header [current_page]="'skyblock'" height="460px" background_image="/public/img/backgrounds/path.jpg"
|
||||
[overlay_gradient]="0.5">
|
||||
<div class="title" header-content>
|
||||
<h1>Custom Features</h1>
|
||||
<h2>A list of custom features created specifically to enhance the survival experience on Altitude.</h2>
|
||||
<h3
|
||||
style="font-family: 'minecraft-text', sans-serif; font-size: 0.8rem; margin-top: 10px; color: #FFFFFF !important;">
|
||||
Commands for the features are listed <a [routerLink]="['/commandlist']">here</a></h3>
|
||||
</div>
|
||||
</app-header>
|
||||
|
||||
<main>
|
||||
<section class="darkmodeSection">
|
||||
<section class="columnSection">
|
||||
<div class="columnContainer">
|
||||
<div class="columnParagraph">
|
||||
<h2>Blocks</h2>
|
||||
<p style="padding-bottom: 0 !important;">Beacons can be activated by redstone</p>
|
||||
<ul class="full-page-list">
|
||||
<li>Powering the block above a beacon disables the beam</li>
|
||||
</ul>
|
||||
<p>Glow lichen can be silk touched</p>
|
||||
<p>Vines can be silk touched and bonemealed</p>
|
||||
<p>Coral and coral fans can be bonemealed to grow a new coral tree</p>
|
||||
<p>Mushroom blocks can be stripped with an axe</p>
|
||||
<p>Candles can be placed without a block beneath them</p>
|
||||
<p>Crying obsidian can be used to create nether portals</p>
|
||||
<p style="padding-bottom: 0 !important;">Gravel and sand are craftable in stonecutters</p>
|
||||
<ul class="full-page-list">
|
||||
<li>Cobblestone -> Gravel</li>
|
||||
<li>Gravel -> Sand</li>
|
||||
</ul>
|
||||
<p>Sponges can remove lava - wet sponges remove more (Note: the sponge will be consumed)</p>
|
||||
<p>Item frames can be made invisible using a diamond</p>
|
||||
<p>Rotation of item frames can be locked using a slime ball</p>
|
||||
<p>Copper can be oxidized using a cauldron of water</p>
|
||||
<p>Pink petals can be placed on any surface</p>
|
||||
<p>Wither roses can be bonemealed</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section class="darkmodeSectionThree">
|
||||
<section class="columnSection">
|
||||
<div class="columnContainer">
|
||||
<div class="columnParagraph">
|
||||
<h2>Containers</h2>
|
||||
<p>Dispensers can interact with campfires</p>
|
||||
<p>Dispensers can interact with cauldrons</p>
|
||||
<p>Dispensers can place pumpkins</p>
|
||||
<p>Dispensers can carve pumpkins</p>
|
||||
<p>Barrels have 54 inventory slots</p>
|
||||
<p>Furnaces have a built in item filter, this moves any item they can't process to the output</p>
|
||||
<p>Naming a container or villager "public" makes them publically available</p>
|
||||
<p>Natual loot chests (in dungeons, etc.) are not protected by claims (but can only be broken by the claim
|
||||
owner)</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section class="darkmodeSection">
|
||||
<section class="columnSection">
|
||||
<div class="columnContainer">
|
||||
<div class="columnParagraph">
|
||||
<h2>Compostable items</h2>
|
||||
<ul class="full-page-list">
|
||||
<li>leather: 0.10</li>
|
||||
<li>wooden_shovel: 0.10</li>
|
||||
<li>rotten_flesh: 0.15</li>
|
||||
<li>salmon: 0.15</li>
|
||||
<li>cod: 0.15</li>
|
||||
<li>porkchop: 0.15</li>
|
||||
<li>beef: 0.15</li>
|
||||
<li>chicken: 0.15</li>
|
||||
<li>rabbit: 0.15</li>
|
||||
<li>mutton: 0.15</li>
|
||||
<li>bamboo: 0.15</li>
|
||||
<li>wooden_sword: 0.20</li>
|
||||
<li>wooden_hoe: 0.20</li>
|
||||
<li>wooden_pickaxe: 0.30</li>
|
||||
<li>wooden_axe: 0.30</li>
|
||||
<li>poisonous_potato: 0.35</li>
|
||||
<li>leather_boots: 0.40</li>
|
||||
<li>flowering_azalea_leaves: 0.50</li>
|
||||
<li>leather_helmet: 0.50</li>
|
||||
<li>leather_leggings: 0.70</li>
|
||||
<li>leather_chestplate: 0.80</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section class="darkmodeSectionThree">
|
||||
<section class="columnSection">
|
||||
<div class="columnContainer">
|
||||
<div class="columnParagraph">
|
||||
<h2>Ender Dragon</h2>
|
||||
<p>First kill of the month awards a dragon egg</p>
|
||||
<p style="padding-bottom: 0 !important;">Can drop items when killed</p>
|
||||
<ul class="full-page-list">
|
||||
<li>elytra: 30%</li>
|
||||
<li>dragon_head: 30%</li>
|
||||
<li>dragon_breath: 40%</li>
|
||||
<li>and seperately from the rest, a 0.1% chance for a dragon_egg</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section class="darkmodeSection">
|
||||
<section class="columnSection">
|
||||
<div class="columnContainer">
|
||||
<div class="columnParagraph">
|
||||
<h2>Mobs</h2>
|
||||
<p>Bats can spawn above sea level (bat spawning only enabled during halloween)</p>
|
||||
<p style="padding-bottom: 0 !important;">Mobs can respawn in structures</p>
|
||||
<ul class="full-page-list">
|
||||
<li>Shulker -> End City</li>
|
||||
<li>Piglin Brute, Piglin -> Bastion</li>
|
||||
<li>Evoker, Vindicator, Allay -> Woodland Mansion</li>
|
||||
<li>Allay -> Pillager Outpost</li>
|
||||
<li>Camel -> Desert Village</li>
|
||||
</ul>
|
||||
<p>Naming a mob "muted", "silenced", "silent" or "silence me" silences a mob</p>
|
||||
<p>Naming a mob "muted", "silenced", "silent", "silence me", "protected" or "protect me" prevents it from
|
||||
being damaged by non-trusted players in a claim</p>
|
||||
<p>Naming a mob "baby" prevents it from growing up</p>
|
||||
<p>Wither health bar is removed when silenced</p>
|
||||
<p>Turtles can hatch during daytime</p>
|
||||
<p>Unclaim vanilla player pets (dogs, cats, parrots, horses) if the owner has been offline for 60+ days by
|
||||
right clicking with a lead</p>
|
||||
<p>Fisherman villagers can sell Bucket of Salmon</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section class="darkmodeSectionThree">
|
||||
<section class="columnSection">
|
||||
<div class="columnContainer">
|
||||
<div class="columnParagraph">
|
||||
<h2>Restrictions & disabled vanilla features</h2>
|
||||
<p>Restricted iron golem spawning (10 golems spawning in a radius of 112 blocks in a time span of 1
|
||||
minute)</p>
|
||||
<p>Disabled stacking raids (having multiple raids going on at once)</p>
|
||||
<p>Disabled TNT duping</p>
|
||||
<p>Disabled bat spawning</p>
|
||||
<p>Disabled patrol spawning</p>
|
||||
<p>Zombies don't attack villagers</p>
|
||||
<p>Disabled processing of most things around AFK players</p>
|
||||
<p>Disabled AI for villagers in a 1x1 area</p>
|
||||
<p>Shulkers shooting each other does not spawn a new shulker since they respawn naturally in End Cities</p>
|
||||
<p>Pigmen cannot spawn from portals</p>
|
||||
<p>Allay duplication is disabled since they respawn natually in Mansions and Outposts</p>
|
||||
<p>Players cannot claim land within 100 blocks of another claim without the owner's permission</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section class="darkmodeSection">
|
||||
<section class="columnSection">
|
||||
<div class="columnContainer">
|
||||
<div class="columnParagraph">
|
||||
<h2>Miscellaneous</h2>
|
||||
<p>Grindstones can strip shulker box & beehive NBT data</p>
|
||||
<p>Sneak click mending</p>
|
||||
<p>/iwanttobreakthisblock, required to break some natural generated blocks</p>
|
||||
<p>/sneakclickmending, allows you to mend your items by right clicking while sneaking</p>
|
||||
<p>Swift Sneak enchantment can be found in villager trades</p>
|
||||
<p>Nether portals can be as small as 1x2 (1x2 portal, 3x4 base)</p>
|
||||
<p>Lootchests refill once for every player</p>
|
||||
<p>Empty maps can be duplicated using paper in a cartography table</p>
|
||||
<p>Eating glowberries gives you a glowing effect</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</main>
|
||||
</ng-container>
|
||||
@@ -0,0 +1,9 @@
|
||||
main ul {
|
||||
font-family: opensans, sans-serif;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
main li {
|
||||
margin-left: 30px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { CustomfeaturesComponent } from './customfeatures.component';
|
||||
|
||||
describe('CustomfeaturesComponent', () => {
|
||||
let component: CustomfeaturesComponent;
|
||||
let fixture: ComponentFixture<CustomfeaturesComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [CustomfeaturesComponent]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(CustomfeaturesComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,16 @@
|
||||
import {Component} from '@angular/core';
|
||||
import {HeaderComponent} from "@header/header.component";
|
||||
import {RouterLink} from '@angular/router';
|
||||
|
||||
@Component({
|
||||
selector: 'app-customfeatures',
|
||||
imports: [
|
||||
HeaderComponent,
|
||||
RouterLink
|
||||
],
|
||||
templateUrl: './customfeatures.component.html',
|
||||
styleUrl: './customfeatures.component.scss'
|
||||
})
|
||||
export class CustomfeaturesComponent {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
<ng-container>
|
||||
<app-header [current_page]="'economy'" height="460px" background_image="/public/img/backgrounds/trees.jpg"
|
||||
[overlay_gradient]="0.5">
|
||||
<div class="title" header-content>
|
||||
<h1>Economy</h1>
|
||||
<h2>Altitude features a dynamic in-game economy that uses virtual currency to allow for easier trading between
|
||||
players.</h2>
|
||||
</div>
|
||||
</app-header>
|
||||
|
||||
<main>
|
||||
<section class="darkmodeSection">
|
||||
<section class="columnSection">
|
||||
<div class="columnContainer">
|
||||
<div class="columnParagraph">
|
||||
<h2>What is the Economy?</h2>
|
||||
<p>Altitude uses a combination of simple player shops and dynamic NPC merchants to create a truly
|
||||
one-of-a-kind experience for our players. Shops and Merchants allow you to exchange items for virtual
|
||||
currency, and vice-versa. The spawn of each server has some items that can be bought or sold by talking to
|
||||
the various merchants, but player shops are the backbone of the system. These shops are created and run by
|
||||
our players, and they allow those players to determine and set their own prices for their goods.</p>
|
||||
<p>The virtual currency on Altitude has no value outside of the server, nor any item in-game representing
|
||||
it. Each player has a number representing how much in-game currency they have. You can check this any time
|
||||
with <span style="font-family: 'opensans-bold', sans-serif;">/bal</span>.</p>
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>Player Shops</h2>
|
||||
<p>Altitude allows players to create chest shops, which other players can either buy or sell items to. It’s
|
||||
a really simple task to create your shops. There’s no complex commands or multi-line sign setups -
|
||||
everything is done using a GUI.</p>
|
||||
<p>To get started, grab a sign and place it on a container (does not work on double chests). Write [shop] on
|
||||
the first line and you’re ready to go. Exit the sign interface and the GUI will open. With these simple
|
||||
steps you will have successfully created your first shop!
|
||||
Right click the sign to manage the shop. From there you can control the shop balance, item, item amount
|
||||
and price.</p>
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>Shop Balance</h2>
|
||||
<p>Every shop will have its own balance. The balance is used to for making changes in the shop management
|
||||
GUI, paying players if they sell items to the shop and receiving money when players buy items from the
|
||||
shop.</p>
|
||||
</div>
|
||||
<!-- <div class="columnparagraph">
|
||||
<h2>Shop Upkeep</h2>
|
||||
<p>Once a week shop upkeep need to be paid. The amount depends on the amount of shops you have; the higher the amount of shops, the higher the fee.
|
||||
The fee will be taken from the shop’s balance. Should there not be enough money in the balance to pay the upkeep fee the shop will be deactivated. Once it had been deactivated other players will no longer be able to interact with it until the shop owner has reactivated it.</p>
|
||||
<p>A shop that hasn’t been interacted with (players using the shop) for three weeks, even if it has the balance to pay for upkeep, will be deactivated and will also need to be reactivated. This is done to prevent dormant and forgotten shops.</p>
|
||||
</div> -->
|
||||
<div class="columnParagraph">
|
||||
<h2>Economist's Tips</h2>
|
||||
<p>To get the most of the in-game economy, keep these tips in mind!</p>
|
||||
<ul>
|
||||
<li>Use the spawn merchants to buy and sell as a last resort! These merchants have intentionally worse
|
||||
prices to allow for player markets to emerge for those same items.
|
||||
</li>
|
||||
<li>Build multiple, smaller farms for different types of items to sell rather than one massive farm that
|
||||
only generates one type of item. You’ll earn more money because of the dynamic prices!
|
||||
</li>
|
||||
<li>Keep track of the points you have with each merchant! Knowing how many points you have will allow you
|
||||
to time your buying and selling for the biggest potential profit!
|
||||
</li>
|
||||
<li>Remember that player shops have flat prices, while the spawn merchants have dynamic prices.</li>
|
||||
<li>Try not to buy or sell when your points are at the worst levels! You will get a huge penalty for
|
||||
having such an extreme amount of points and the transaction will likely not be worth it.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="columnContainer">
|
||||
<div class="columnParagraph">
|
||||
<h2>Spawn Merchants</h2>
|
||||
<p>Every merchant at spawn buys and sells certain types of items. You can interact and trade with them
|
||||
similar to how you would trade emeralds with a regular villager. Each of these merchants are located
|
||||
around each of the server spawn, which you can conveniently get to by doing <span
|
||||
style="font-family: 'opensans-bold', sans-serif;">/spawn</span>!</p>
|
||||
|
||||
<!-- INSERT IMAGE OF VILLAGER MERCHANT -->
|
||||
|
||||
<p>These merchants buy and sell directly from the server, not from other players. Prices from these
|
||||
merchants are typically quite high for buying, and quite low for selling. This means that they should be
|
||||
used as a last resort for some quick cash or some quick materials; player shops will generally be a much
|
||||
better value, especially because the prices are static.</p>
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>The Point System</h2>
|
||||
<p>The prices offered by the merchants at spawn are dynamic in nature. This means that they change based on
|
||||
the amount and type of items that you've bought or sold recently. Every merchant at spawn keeps track of
|
||||
how many items you’ve traded with it using ‘points’. The amount of points you currently have with each
|
||||
merchant is shown in the trading screen. To understand the point system, all you need to know is:</p>
|
||||
<ul>
|
||||
<li>Positive points = higher buy prices, higher sell prices</li>
|
||||
<li>Negative points = lower buy prices, lower sell prices</li>
|
||||
<li>Points decay naturally over time. The decay is faster if you are online</li>
|
||||
</ul>
|
||||
<p>For most players, this dynamic point system won’t affect you much at all. As long as you aren’t buying or
|
||||
selling huge quantities of items, you won’t notice a large change in the prices as you use the spawn
|
||||
merchants.</p>
|
||||
<p>However, players can take advantage of the point system to make the most amount of profit possible if
|
||||
they are so inclined. To do this, you need to understand the multipliers that affect prices at different
|
||||
price levels. You can see your current price multipliers and points at each merchant by doing <span
|
||||
style="font-family: 'opensans-bold', sans-serif;">/villagerui points</span>.</p>
|
||||
<p style="padding-bottom: 0;">There are different thresholds for each price multiplier to take effect.
|
||||
Between -500 and 500 points, prices will be unaltered. Once your points go above or below that range,
|
||||
prices will become more and more extreme. You can see where these thresholds are based on your current
|
||||
points here:</p>
|
||||
<img ngSrc="/public/img/random/pointbracket.png" alt="Visualization of the point bracket."
|
||||
style="width: 100%; padding: 0 0 15px 0;"
|
||||
height="100" width="800">
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>Useful Commands</h2>
|
||||
<ul>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/bal -</span> Check your current balance</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/pay <player> <amount> -</span>
|
||||
Pay other players
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/shop -</span> Click on settings, from there
|
||||
you can change notification settings
|
||||
</li>
|
||||
<li><span
|
||||
style="font-family: 'opensans-bold', sans-serif;">/villagerui points <villagerType> -</span>
|
||||
Allows you to check your current points with each spawn merchant, or any specific one. Also shows your
|
||||
current buy/sell price multipliers for those merchants
|
||||
</li>
|
||||
<li><span
|
||||
style="font-family: 'opensans-bold', sans-serif;">/villagerui buy/sell <item_name> -</span> Tells
|
||||
you if a spawn merchant buys or sells that item, and where that merchant is located
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</main>
|
||||
</ng-container>
|
||||
@@ -0,0 +1,9 @@
|
||||
main ul {
|
||||
font-family: opensans, sans-serif;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
main li {
|
||||
margin-left: 30px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { EconomyComponent } from './economy.component';
|
||||
|
||||
describe('EconomyComponent', () => {
|
||||
let component: EconomyComponent;
|
||||
let fixture: ComponentFixture<EconomyComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [EconomyComponent]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(EconomyComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,16 @@
|
||||
import {Component} from '@angular/core';
|
||||
import {HeaderComponent} from '@header/header.component';
|
||||
import {NgOptimizedImage} from '@angular/common';
|
||||
|
||||
@Component({
|
||||
selector: 'app-economy',
|
||||
imports: [
|
||||
HeaderComponent,
|
||||
NgOptimizedImage
|
||||
],
|
||||
templateUrl: './economy.component.html',
|
||||
styleUrl: './economy.component.scss'
|
||||
})
|
||||
export class EconomyComponent {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
<ng-container>
|
||||
<app-header [current_page]="'map'"
|
||||
[background_image]="'public/img/backgrounds/map.jpg'"
|
||||
[overlay_gradient]=0.65>
|
||||
<div class="title" header-content>
|
||||
<h1>Dynamic Server Maps</h1>
|
||||
<h2>Which server would you like to see?</h2>
|
||||
<div>
|
||||
<a href="https://gmap.alttd.com">
|
||||
<div style="background-color: #F547B2;" class="button-outer map-button">
|
||||
<span class="button-inner">Grove</span>
|
||||
</div>
|
||||
</a>
|
||||
<a href="https://cmap.alttd.com">
|
||||
<div style="background-color: #C46213;" class="button-outer map-button">
|
||||
<span class="button-inner">Creative</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</app-header>
|
||||
</ng-container>
|
||||
@@ -0,0 +1,13 @@
|
||||
.map-button {
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.title h2 {
|
||||
width: 80%;
|
||||
max-width: 600px;
|
||||
font-family: 'open-sans', sans-serif;
|
||||
text-shadow: none;
|
||||
font-size: 1.2em;
|
||||
padding-bottom: 25px;
|
||||
font-weight: 100;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { MapComponent } from './map.component';
|
||||
|
||||
describe('MapComponent', () => {
|
||||
let component: MapComponent;
|
||||
let fixture: ComponentFixture<MapComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [MapComponent]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(MapComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,17 @@
|
||||
import {Component} from '@angular/core';
|
||||
import {CommonModule} from '@angular/common';
|
||||
import {HeaderComponent} from '@header/header.component';
|
||||
|
||||
@Component({
|
||||
standalone: true,
|
||||
imports: [
|
||||
CommonModule,
|
||||
HeaderComponent
|
||||
],
|
||||
selector: 'app-map',
|
||||
templateUrl: './map.component.html',
|
||||
styleUrl: './map.component.scss'
|
||||
})
|
||||
export class MapComponent {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,221 @@
|
||||
<ng-container>
|
||||
<app-header [current_page]="'mypet'" height="460px" background_image="/public/img/backgrounds/babywither.png"
|
||||
[overlay_gradient]="0.5">
|
||||
<div class="title" header-content>
|
||||
<h1>MyPet</h1>
|
||||
<h2>Tame almost any mob in-game as your pet and train it to fight along your side, collect dropped items for you,
|
||||
and more!</h2>
|
||||
</div>
|
||||
</app-header>
|
||||
|
||||
<main>
|
||||
<section class="darkmodeSection">
|
||||
<section class="columnSection">
|
||||
<div class="columnContainer">
|
||||
<div class="columnParagraph">
|
||||
<h2>Claim a Pet</h2>
|
||||
<p>To claim a pet you will need to find the mob you want in the survival world and <span
|
||||
style="font-family: 'opensans-bold', sans-serif;">kill it with a lead in your hand</span>. You must have a
|
||||
lead in your hand when you kill the mob or it will die instead of becoming your pet.</p>
|
||||
<p>New players can have up to 3 pets in storage and 1 active pet at a time. More pets can be stored by
|
||||
ranking up. To claim an additional pet you must first store your current pet with <span
|
||||
style="font-family: 'opensans-bold', sans-serif;">/petstore</span>. Once you have stored your current
|
||||
pet you can simply kill another mob to make it your pet. You will not be able to call it or interact with
|
||||
your other pets while they are in storage. To interact with your MyPet you will need to make it your
|
||||
active MyPet by doing <span style="font-family: 'opensans-bold', sans-serif;">/petswitch</span> and
|
||||
selecting the one you want to use.</p>
|
||||
<img ngSrc="/public/img/items/lead.png" alt="Minecraft lead/leash" style="width: 20%;" height="96"
|
||||
width="96">
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>Skilltrees and Levels</h2>
|
||||
<p>Pets can be assigned to a skilltree with <span
|
||||
style="font-family: 'opensans-bold', sans-serif;">/pcst</span>, which allows it to level up and unlock new
|
||||
skills. There are 8 skilltrees to choose from, but Mage, Tank, Marksman, and Warrior all require you to
|
||||
start with "Fighter". Pets earn XP when they kill mobs, and also earn a small amount of XP any time you
|
||||
kill a mob.</p>
|
||||
<p><b>Note:</b> pets with inventories will drop it on player death.</p>
|
||||
<ul>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">Utility</span> - Specializes in mining with
|
||||
pickup and inventory skills + a Haste II beacon at level 150. (150 levels)
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">Mount</span> - A rideable pet specializes in
|
||||
speed and jump height + jump beacon at level 150, and inventory at level 200. (200 levels)
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">Defender</span> - Specializes in defending
|
||||
you, it absorbs damage dealt towards you. High HP + regen beacon at level 200. (200 levels)
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">Fighter</span> - Starter rank for all other
|
||||
fighter categories. Increases pet attack damage. (50 levels)
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">Mage</span> - Specializes in specialty attacks
|
||||
like fireballs and lightning. No melee abilities. (100 levels)
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">Tank</span> - Specializes in defense with
|
||||
lots of HP, redirecting damage, and sweeping attacks. Resistance beacon at level 100. (100 levels)
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">Marksman</span> - Specializes in ranged
|
||||
attacks with arrow and poison damage, no melee abilities + invisibility beacon at level 50. (100 levels)
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">Warrior</span> - An all-around class with no
|
||||
speciality, has some skills from every other class + a strength beacon at level 100. (100 levels)
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>Equip Your Pet</h2>
|
||||
<p>Some pets can hold items in their hands or wear armor. To equip a pet with something to hold or wear,
|
||||
simply right click on your pet while shifting with the item in your hand. To remove the equipment right
|
||||
click on your MyPet while shifting with shears in your hand.</p>
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>Naming Your Pet</h2>
|
||||
<p>You can name your pet with <span
|
||||
style="font-family: 'opensans-bold', sans-serif;">/petname <name></span>. Please note that
|
||||
inappropriate names (anything that wouldn't be allowed to be said in chat) are not allowed.</p>
|
||||
<p>Duke members and above can change the color of their pet's name. To get a list of all the color codes
|
||||
please do <span style="font-family: 'opensans-bold', sans-serif;">/colors</span> in-game.</p>
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>Pet Behavior</h2>
|
||||
<p>You can change the way your pet attacks by changing its behavior. Different behaviors are unlocked as
|
||||
your pet levels up. The available behaviors are listed below.</p>
|
||||
<ul>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">Friendly:</span> Won't fight, even if it's
|
||||
attacked by anything
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">Normal:</span> Acts like a normal wolf</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">Aggressive:</span> Attacks everything within
|
||||
15 blocks of the owner
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">Farm:</span> Attacks every hostile mob within
|
||||
15 blocks of the owner
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">Raid:</span> Like normal, but the MyPet won't
|
||||
attack players and their pets
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">Duel</span> Attacks other pets with active
|
||||
duel behavior within a 5 block radius
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="columnContainer">
|
||||
<div class="columnParagraph">
|
||||
<h2>Feed Your Pet</h2>
|
||||
<p>You must feed your pet to keep its health up or it will die from hunger! If your pet is hungry it will
|
||||
also be weaker and will deal less damage when attacking.</p>
|
||||
<p>Each pet has a special food that it must be fed. You can see which food is right for your pet by doing
|
||||
<span style="font-family: 'opensans-bold', sans-serif;">/petinfo</span>.</p>
|
||||
<div class="inlineIcons">
|
||||
<img ngSrc="/public/img/items/potato.png" alt="Minecraft potato" height="81" width="77">
|
||||
<img ngSrc="/public/img/items/carrot.png" alt="Minecraft carrot" height="81" width="89">
|
||||
<img ngSrc="/public/img/items/steak.png" alt="Minecraft steak" height="81" width="88">
|
||||
</div>
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>How to Hide/Disable a MyPet</h2>
|
||||
<p>There are two ways to disable a pet, and they work very differently. The first, <span
|
||||
style="font-family: 'opensans-bold', sans-serif;">/petsendaway</span>, will hide your active MyPet until
|
||||
you un-hide it with <span style="font-family: 'opensans-bold', sans-serif;">/petcall</span>. A pet that
|
||||
has been hidden is still considered your "active MyPet", it just isn't visible right now. It also only
|
||||
hides your pet during your current session.</p>
|
||||
<p>The second way to disable a pet is to put it into storage with <span
|
||||
style="font-family: 'opensans-bold', sans-serif;">/petstore</span>. Pets that are in storage are
|
||||
completely deactivated until you use <span
|
||||
style="font-family: 'opensans-bold', sans-serif;">/petswitch</span> to choose one you want to use. If
|
||||
all of your pets are in storage, the server will tell you that you do not have a MyPet. This is also how
|
||||
you can claim additional MyPets - by completely deactivating your current one first.</p>
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>Blocked Mob Types</h2>
|
||||
<p>The following mobs are not allowed to be claimed as a pet: the enderdragon, villagers and villager-like
|
||||
mobs, shulkers, ghasts, and elder guardians. If you kill any of these mobs it will die and will NOT become
|
||||
your pet.</p>
|
||||
<p>Furthermore, all horses (including donkeys and mules) are currently disabled as pets due to them being
|
||||
buggy.</p>
|
||||
<div class="inlineIcons">
|
||||
<img ngSrc="/public/img/items/enderdragon.png"
|
||||
style="padding: 25px 25px;"
|
||||
alt="Minecraft enderdragon mob"
|
||||
height="100" width="100">
|
||||
<img ngSrc="/public/img/items/villager.png"
|
||||
style="padding: 25px 25px;"
|
||||
alt="Minecraft villager mob"
|
||||
height="100" width="100">
|
||||
<img ngSrc="/public/img/items/zombievillager.png"
|
||||
style="padding: 25px 25px;"
|
||||
alt="Minecraft zombie villager mob"
|
||||
height="100" width="100">
|
||||
<img ngSrc="/public/img/items/shulker.png"
|
||||
style="padding: 25px 25px;"
|
||||
alt="Minecraft shulker mob"
|
||||
height="100" width="100">
|
||||
<img ngSrc="/public/img/items/ghast.png"
|
||||
style="padding: 25px 25px;"
|
||||
alt="Minecraft ghast mob"
|
||||
height="100" width="100">
|
||||
<img ngSrc="/public/img/items/elderguardian.png"
|
||||
style="padding: 25px 25px;"
|
||||
alt="Minecraft elder guardian mob"
|
||||
height="100" width="100">
|
||||
</div>
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>Disclaimer</h2>
|
||||
<p>When you die with your MyPet out, the MyPet will drop all of the items in its inventory. This means that
|
||||
if your MyPet is in a dangerous area when you die, your items can be lost. And if you die in pvp the items
|
||||
won't be protected. If your MyPet dies on it’s own, it will not drop it’s inventory.</p>
|
||||
<p>Some skill trees require a base skill to be able to select them. The fighter skill tree is a base skill
|
||||
and will not level beyond 50. When you reach level 50, you will need to switch to one of the secondary
|
||||
skill trees with <span style="font-family: 'opensans-bold', sans-serif;">/pcst.</span></p>
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>Useful Commands</h2>
|
||||
<ul>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/petcall -</span> Make your pet come to you if
|
||||
it vanished
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/petsendaway -</span> Make your pet vanish
|
||||
temporarily
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/petrelease <name>-</span> Release
|
||||
your pet forever
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/petinfo -</span> Check your pet's health and
|
||||
food as well as other stats
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/pcst -</span> Choose a skilltree for your
|
||||
pet.
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/petskill -</span> Check your pet's skills and
|
||||
strengths
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/petname <name>-</span> Change the name
|
||||
of your pet (see Naming Your Pet above)
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/petinventory -</span> Open your pet's
|
||||
inventory to see what it has picked up
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/petpickup -</span> Toggle whether your pet
|
||||
will pick up items or not
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/petbehavior -</span> Change the behavior
|
||||
class of your pet (see Pet Behavior above)
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/petbeacon -</span> Turn your pet into a
|
||||
walking beacon to give you strength, speed, and other power-ups
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/petswitch -</span> Allows you to switch
|
||||
between your MyPets
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/petstore -</span> Store your current pet to
|
||||
claim another
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</main>
|
||||
</ng-container>
|
||||
@@ -0,0 +1,15 @@
|
||||
main ul {
|
||||
font-family: opensans, sans-serif;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
main li {
|
||||
margin-left: 30px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.inlineIcons {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { MypetComponent } from './mypet.component';
|
||||
|
||||
describe('MypetComponent', () => {
|
||||
let component: MypetComponent;
|
||||
let fixture: ComponentFixture<MypetComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [MypetComponent]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(MypetComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,16 @@
|
||||
import {Component} from '@angular/core';
|
||||
import {HeaderComponent} from '@header/header.component';
|
||||
import {NgOptimizedImage} from '@angular/common';
|
||||
|
||||
@Component({
|
||||
selector: 'app-mypet',
|
||||
imports: [
|
||||
HeaderComponent,
|
||||
NgOptimizedImage
|
||||
],
|
||||
templateUrl: './mypet.component.html',
|
||||
styleUrl: './mypet.component.scss'
|
||||
})
|
||||
export class MypetComponent {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
<ng-container>
|
||||
<app-header [current_page]="'skyblock'" height="460px" background_image="/public/img/backgrounds/babywither.png"
|
||||
[overlay_gradient]="0.5">
|
||||
<div class="title" header-content>
|
||||
<h1>Skyblock</h1>
|
||||
<h2>A skyblock server blending vanilla gameplay with unique enhancements for an elevated, community-driven sky
|
||||
adventure.</h2>
|
||||
</div>
|
||||
</app-header>
|
||||
<main>
|
||||
<section class="darkmodeSection">
|
||||
<section class="columnSection">
|
||||
<div class="columnContainer">
|
||||
<div class="columnParagraph">
|
||||
<h2>Discover Comet</h2>
|
||||
<p>Welcome to Comet, a skyblock server that offers players a unique blend of the features you know and love
|
||||
with a dash of exiciting enhancements to elevate your sky-high adventure.</p>
|
||||
<p>The heart of the skyblock challenge is the same as your traditional experience: start on a small island
|
||||
in the sky with limited resources and aim to expand your domain and conquer the endless void. However,
|
||||
Comet is not your ordinary skyblock experience. We've carefully introduced a selection of enhancements to
|
||||
enrich the gameplay without overwhelming the core vanilla experience that players love and cherish.</p>
|
||||
<p style="padding-bottom: 5px !important;">Some of the key features and enhancements includes:</p>
|
||||
<ul>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">Explorable Biomes:</span> All islands are on
|
||||
the same public seed, you can expand your island and explore to find different biomes. Certain mobs only
|
||||
spawn in certain biomes.
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">Dynamic Economy:</span> Engage with our
|
||||
vibrant server economy, where you can trade items with other players, visit the spawn shops or even set
|
||||
up your own shops on your island.
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">Custom Achievements:</span> Beyond the
|
||||
traditional skyblock objectives, Comet introduces a series of custom achievements which will test your
|
||||
skills and reward you with valuable resources and unique items.
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">Cooperative Play:</span> Team up with friends
|
||||
or make new allies to build your sky empire together.
|
||||
</li>
|
||||
</ul>
|
||||
<p style="padding-top: 10px;">Comet is the perfect experience for those who love skyblock but crave a bit
|
||||
more excitement and community interaction. Whether you're a seasoned player or new to the sky life, Comet
|
||||
provides a rich platform for exploration, creativity and fun.</p>
|
||||
<p>Join Comet today and discover that in the world of skyblock, the sky is just the beginning.</p>
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>Useful commands</h2>
|
||||
<ul>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/island -</span> Opens a GUI where you can see
|
||||
information about your island, change settings and do upgrades
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/island go -</span> Start a new island or go
|
||||
to your current island
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/island invite <username> -</span>
|
||||
Invite a player to your island
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/island kick <username> -</span> Kick a
|
||||
player from your island
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/island leave -</span> Leave your current
|
||||
island
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/island restart -</span> Reset your island
|
||||
without affecting removing your island members
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/island setowner <username> -</span> Set
|
||||
a new owner of your current island
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/island visit <username> -</span> Visit
|
||||
the specificed player's island
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="columnContainer">
|
||||
<div class="columnParagraph">
|
||||
<h2>Cobble Generator Levels</h2>
|
||||
<p><span style="font-family: 'opensans-bold', sans-serif;">Note:</span> Did you mess up your generator and
|
||||
accidentally made an obsidian block? No fear, simply right click the obsidian with your bucket and it will
|
||||
change lava in your bucket!</p>
|
||||
<ul>
|
||||
<p style="padding-bottom: 5px !important;">Level 1, coal</p>
|
||||
<li>Island level 20</li>
|
||||
<li>64 cobblestone</li>
|
||||
<p style="padding-bottom: 5px !important;">Level 2, iron</p>
|
||||
<li>Island level 35</li>
|
||||
<li>128 cobblestone</li>
|
||||
<li>35 coal</li>
|
||||
<p style="padding-bottom: 5px !important;">Level 3, redstone</p>
|
||||
<li>Island level 50</li>
|
||||
<li>192 cobblestone</li>
|
||||
<li>50 iron</li>
|
||||
<p style="padding-bottom: 5px !important;">Level 4, lapis</p>
|
||||
<li>Island level 60</li>
|
||||
<li>256 cobblestone</li>
|
||||
<li>60 redstone</li>
|
||||
<p style="padding-bottom: 5px !important;">Level 5, copper</p>
|
||||
<li>Island level 70</li>
|
||||
<li>320 cobblestone</li>
|
||||
<li>70 lapis</li>
|
||||
<p style="padding-bottom: 5px !important;">Level 6, gold</p>
|
||||
<li>Island level 80</li>
|
||||
<li>384 cobblestone</li>
|
||||
<li>80 copper</li>
|
||||
<p style="padding-bottom: 5px !important;">Level 7, emerald</p>
|
||||
<li>Island level 90</li>
|
||||
<li>448 cobblestone</li>
|
||||
<li>90 gold</li>
|
||||
<p style="padding-bottom: 5px !important;">Level 8, diamond</p>
|
||||
<li>Island level 100</li>
|
||||
<li>512 cobblestone</li>
|
||||
<li>100 emerald</li>
|
||||
<p style="padding-bottom: 5px !important;">Level 9, ancient debris</p>
|
||||
<li>Island level 150</li>
|
||||
<li>576 cobblestone</li>
|
||||
<li>150 diamond</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</main>
|
||||
</ng-container>
|
||||
@@ -0,0 +1,9 @@
|
||||
main ul {
|
||||
font-family: opensans, sans-serif;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
main li {
|
||||
margin-left: 30px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { SkyblockComponent } from './skyblock.component';
|
||||
|
||||
describe('SkyblockComponent', () => {
|
||||
let component: SkyblockComponent;
|
||||
let fixture: ComponentFixture<SkyblockComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [SkyblockComponent]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(SkyblockComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,14 @@
|
||||
import {Component} from '@angular/core';
|
||||
import {HeaderComponent} from '@header/header.component';
|
||||
|
||||
@Component({
|
||||
selector: 'app-skyblock',
|
||||
imports: [
|
||||
HeaderComponent
|
||||
],
|
||||
templateUrl: './skyblock.component.html',
|
||||
styleUrl: './skyblock.component.scss'
|
||||
})
|
||||
export class SkyblockComponent {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,223 @@
|
||||
<ng-container>
|
||||
<app-header [current_page]="'economy'" height="460px" background_image="/public/img/backgrounds/path.jpg"
|
||||
[overlay_gradient]="0.5">
|
||||
<div class="title" header-content>
|
||||
<h1>Player Warps</h1>
|
||||
<h2>Set up your own public warp to let everyone visit your town, shop, and more!</h2>
|
||||
</div>
|
||||
</app-header>
|
||||
|
||||
<main>
|
||||
<section class="darkmodeSection">
|
||||
<section class="columnSection">
|
||||
<div class="columnContainer">
|
||||
<div class="columnParagraph">
|
||||
<h2>What are Warps?</h2>
|
||||
<p>Warps allow everyone to teleport to a specific place within the world. They work just like homes
|
||||
(/sethome), but everyone has access to the warps. We are very excited to have our own custom warp system
|
||||
that allows players to easily apply for their own warp wherever they want and maintain their warp (the
|
||||
name, description, and icon) on their own! This lets you easily promote your town, shop, farm, or just
|
||||
about anything else.</p>
|
||||
<p>All warps are separated into categories so it's easy to find the category of warp you're looking for.</p>
|
||||
<img ngSrc="/public/img/random/warpgui.png"
|
||||
alt="In-game warp GUI"
|
||||
style="width: 80%; padding-bottom: 15px;"
|
||||
height="232" width="356">
|
||||
</div>
|
||||
</div>
|
||||
<div class="columnContainer">
|
||||
<div class="columnParagraph">
|
||||
<h2>Applying for a Warp</h2>
|
||||
<p>Once you've built something that you want to share, and made sure that it meets the "Warp Requirements",
|
||||
you can apply for a warp in-game! Applying is easy, just do <span
|
||||
style="font-family: 'opensans-bold', sans-serif;">/warps apply</span> and follow the prompts.</p>
|
||||
<p>The application process will ask you for a name, description, icon, category, and location for your warp.
|
||||
Before beginning the application process, be sure you are standing where you want the warp to be! Make
|
||||
sure you are also facing the direction you want players to face when they teleport to your warp. Don't
|
||||
look at the ground! Your warp name must be under 30 characters and your description must be under 120. Do
|
||||
not use any color codes. When it asks for the item you want to have as an icon, simply hold the desired
|
||||
item in your hand.</p>
|
||||
<p><span style="font-family: 'opensans-bold', sans-serif;">Attention</span>: Warps cost $25000. If your
|
||||
application is denied, you will be refunded $15000. To continue, type continue, or to cancel, type cancel.
|
||||
However, if your warp is approved, but you fail to maintain it, your warp will be deleted without a
|
||||
refund!</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="columnSection" style="padding-top: 0;">
|
||||
<div class="columnParagraph" style="padding-left: 15px;">
|
||||
<h2>Warp Requirements</h2>
|
||||
<p>You need to be the owner of the claim your warp is placed in. It should look good, and be as finished as
|
||||
your warp type allows you to have it. Safety is an important aspect as well, visitors should not be
|
||||
accidently dying by falling in dangerous areas or having mobs spawn on them. Phantoms are an exception to
|
||||
this rule as you can't easily prevent those spawns. Your warp should be in one claim*, and divided with
|
||||
subclaims if you need to allow different levels of trust in different areas (house plots in towns, shop
|
||||
plots in malls, etc).</p>
|
||||
<p><sub>*If a warp cannot be done in one claim due to surrounding claims, you are allowed to use up to 3
|
||||
separate claims to claim everything. If you can reduce the total size of your claim by at least roughly 30%
|
||||
by using an extra claim, you may do so for up to a total of 3 claims.</sub></p>
|
||||
<p>It should be easy for players to find where they want to go. You can accomplish this through signs or by
|
||||
designing it in such a way that players can see their destination when they warp in. Your warp's claim
|
||||
border should be 500 blocks away from any other warp's claim border, and two warps can not lead to the same
|
||||
area. We encourage making it possible for players to leave the warp, either by walking or elytra use, so
|
||||
that they can use it as a starting point for exploring as well.</p>
|
||||
<p>If you have any farms in the area of your warp that players don't benefit from through your warp it should
|
||||
not be possible for players to load those farms during regular use. We don't want players being used as
|
||||
chunkloaders.</p>
|
||||
<p>It's important to make sure your warp is as lag friendly as possible. Our rules on lag can be found here on
|
||||
the <a [routerLink]="['/lag']">lag</a> page. If we find your warp creates more lag than necessary for its
|
||||
function
|
||||
we will deny the application.</p>
|
||||
</div>
|
||||
<div class="columnContainer">
|
||||
<div class="columnParagraph">
|
||||
<h3>Towns</h3>
|
||||
<span
|
||||
style="font-family: 'opensans-bold', sans-serif;">Any warp that is designed to house other players</span>
|
||||
<ul>
|
||||
<li>It should be clear how to navigate the town and how to get a plot</li>
|
||||
<li>You need to be active enough to regularly assign players new plots</li>
|
||||
<li>Your town must have a community that actively participates in your town by living/building there or
|
||||
using your towns features both before applying and while it's a warp (Minimum 3 active players other
|
||||
than you)
|
||||
</li>
|
||||
<li>Players should be able to leave the town area in order to use the warp as a travel hub</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h3>Shops</h3>
|
||||
<span style="font-family: 'opensans-bold', sans-serif;">Any warp that sells/trades/buys items using shops. This also includes malls.</span>
|
||||
<ul>
|
||||
<li>It should be clear where to go to find the items that are being sold from the warp spawn point</li>
|
||||
<li>Your shops should sell items players want and aren’t readily available elsewhere</li>
|
||||
<li>Your prices should be competitive with spawn and other warps</li>
|
||||
<li>You are responsible for keeping stock up. Staff will regularly check random shops within your warp, if
|
||||
they find understocked shops they will issue warnings for it and eventually remove it. This counts for
|
||||
mall owners as well!
|
||||
</li>
|
||||
<li>Players should be able to leave the area in order to use the warp as a travel hub</li>
|
||||
</ul>
|
||||
<span style="font-family: 'opensans-bold', sans-serif;">General stock requirements</span>
|
||||
<ul>
|
||||
<li>Easily obtainable items such as concrete: full chest</li>
|
||||
<li>Hard to obtain, common items such as diamonds: 1 stack</li>
|
||||
<li>Hard to obtain, uncommon items such as netherite/beacons: 16</li>
|
||||
<li>Maps: 16 for 1x1, 8 for anything over 1x1 up to 2x2, and 4 for anything over 2x2</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>Warp Notes</h2>
|
||||
<p><span style="font-family: 'opensans-bold', sans-serif;">-</span> If a new warp application has
|
||||
improvements or additional, useful features that a current warp lacks, the current warp may be replaced
|
||||
with the new one. For example, if there already is a single-spawner spider farm that offers drops at a
|
||||
certain price, and a warp application is submitted for a spider farm with multiple spawners and offers
|
||||
free drops, the new warp is likely to be favored.</p>
|
||||
<p><span style="font-family: 'opensans-bold', sans-serif;">-</span> Warps that are malls (primarily focused
|
||||
on having many shop plots for many players) are limited to 2.</p>
|
||||
<p><span style="font-family: 'opensans-bold', sans-serif;">-</span> Smaller shop warps are limited to 1 shop
|
||||
per type. For example, only 1 warp for redstone-related shops.</p>
|
||||
<p><span style="font-family: 'opensans-bold', sans-serif;">-</span> In order to always keep our warps fair
|
||||
and updated, we will automatically remove a warp if the warp owner has been offline for 30+ days. We need
|
||||
to be able to contact our warp owners in a timely manner incase any issues with the warp happen to pop up.
|
||||
If we notice that a player is fairly inactive and another warp application comes in for a similar warp,
|
||||
the application will be more likely to be accepted if the warp meets all of our requirements. If you plan
|
||||
on being gone for an extended period of time, 14+ days, you can let a staff member know and they will note
|
||||
it down and try to work with you.</p>
|
||||
<p><span style="font-family: 'opensans-bold', sans-serif;">-</span> The staff team does weekly warp checks
|
||||
to make sure our warps continue to stay up to meet our requirements. They will mail a warp owner if they
|
||||
notice an issue (low stock, sudden lighting issue, farm isn't working, etc.), and we expect all issues to
|
||||
be fixed within a week of receiving that mail. If an issue goes unfixed, we will remove the warp due to
|
||||
the lack of upkeep. If the issue is something you need help fixing or you're unable to work on it during
|
||||
the week, you can reach out to any member of the staff team and they will work with you!</p>
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>Useful Commands</h2>
|
||||
<ul>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/warps -</span> Open a GUI showing all warps
|
||||
</li>
|
||||
<li><span style="font-family: 'opensans-bold', sans-serif;">/warps apply -</span> Apply for your own warp
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="columnContainer">
|
||||
<div class="columnParagraph">
|
||||
<h3>Farms</h3>
|
||||
<span style="font-family: 'opensans-bold', sans-serif;">Any warps that give XP</span>
|
||||
<ul>
|
||||
<li>It should be easy to find where to go and how to use the farm</li>
|
||||
<li>Players should have access to all of the drops either through shops with competitive prices, or for
|
||||
free
|
||||
</li>
|
||||
<li>XP farms should not attempt to bypass our anti lag systems</li>
|
||||
<li>Kill chambers should be 1x1 or 1x2, exceptions to this rule are listed below</li>
|
||||
<li>Amount of farms allowed as warps:
|
||||
<ul>
|
||||
<li>Skeleton/spider - 1 each</li>
|
||||
<li>Zombie/drowned - 1</li>
|
||||
<li>Bad Omen - 1</li>
|
||||
<li>Raid - 2</li>
|
||||
<li>Guardian - 2</li>
|
||||
<li>Endermen - 2</li>
|
||||
<li>Creeper - 2</li>
|
||||
<li>Shulker - 2</li>
|
||||
<li>Wither skeleton - 2</li>
|
||||
</ul>
|
||||
</li>
|
||||
<p>Exceptions can be made for this rule if the farms have different, unique designs (such as a one-player
|
||||
vs two-player farm). Head Staff will approve these exceptions on a case-by-case basis</p>
|
||||
</ul>
|
||||
<span style="font-family: 'opensans-bold', sans-serif;">Kill chamber size exceptions</span>
|
||||
<ul>
|
||||
<li>Magma kill chamber may be up to 3x3</li>
|
||||
<li>Hoglin kill chamber may be up to 2x2</li>
|
||||
<li>Ravagers during pillager raids must be killed automatically and the kill chamber should still be 2x1
|
||||
for the rest of the mobs
|
||||
</li>
|
||||
<li>Enderman kill chamber may be up to 3x3</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h3>Other</h3>
|
||||
<span style="font-family: 'opensans-bold', sans-serif;">Any warp that doesn't fit in the other categories can go in here</span>
|
||||
<ul>
|
||||
<li>Warps designed for player events need to look aesthetically pleasing and accommodate a large amount of
|
||||
players
|
||||
</li>
|
||||
<li>Casino warps should, at a minimum, display or list the prizes that can be won from each game
|
||||
<ul>
|
||||
<li style="padding-top: 2px;">If the game allows you to win crate items, listing the rarity of prizes
|
||||
that can be won is acceptable
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Casino warps should have a disclaimer posted visibly that tells players that they can lose money and
|
||||
should expect to lose money playing any gambling machines
|
||||
</li>
|
||||
<li>Portal warps need to be the only one of its kind</li>
|
||||
<li>Villager trading areas have their villagers on no AI blocks and be named public for public
|
||||
accessibility
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="columnParagraph">
|
||||
<h2>Maintaining a Warp</h2>
|
||||
<p>We've made it easy for you to maintain your warp on your own. As the warp owner you can change the name,
|
||||
description, and icon anytime. There is no charge for modifying a warp. To access the GUI to manage your
|
||||
warp, just do <span style="font-family: 'opensans-bold', sans-serif;">/warps</span> and click on the chest
|
||||
labeled "<span style="font-family: 'opensans-bold', sans-serif;">My Warps</span>" in the bottom left
|
||||
corner.</p>
|
||||
<img ngSrc="/public/img/random/editwarpgui.png"
|
||||
alt="In-game warp edit GUI"
|
||||
style="width: 80%;"
|
||||
width="384" height="170">
|
||||
<p>Maintaining a warp also involves making sure it looks nice, shops are well stocked, and, if it's a town,
|
||||
open plots are always available for residents to move in. Make sure you keep up on maintaining your warp
|
||||
or it could be deleted! If a warp is deleted by a staff member you will not receive a refund for the
|
||||
creation cost.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</main>
|
||||
</ng-container>
|
||||
@@ -0,0 +1,14 @@
|
||||
main ul {
|
||||
font-family: opensans, sans-serif;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
main li {
|
||||
margin-left: 30px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.columnParagraph > span {
|
||||
color: var(--font-color);
|
||||
transition: 0.5s ease;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { WarpsComponent } from './warps.component';
|
||||
|
||||
describe('WarpsComponent', () => {
|
||||
let component: WarpsComponent;
|
||||
let fixture: ComponentFixture<WarpsComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [WarpsComponent]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(WarpsComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,18 @@
|
||||
import {Component} from '@angular/core';
|
||||
import {HeaderComponent} from '@header/header.component';
|
||||
import {NgOptimizedImage} from '@angular/common';
|
||||
import {RouterLink} from '@angular/router';
|
||||
|
||||
@Component({
|
||||
selector: 'app-warps',
|
||||
imports: [
|
||||
HeaderComponent,
|
||||
NgOptimizedImage,
|
||||
RouterLink
|
||||
],
|
||||
templateUrl: './warps.component.html',
|
||||
styleUrl: './warps.component.scss'
|
||||
})
|
||||
export class WarpsComponent {
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user