<?xml version="1.0"?>
<rss version="2.0"><channel><title>Tutorials Latest Topics</title><link>https://f.classicube.net/forum/3-tutorials/</link><description>Tutorials Latest Topics</description><language>en</language><item><title>Tutorial /Model</title><link>https://f.classicube.net/topic/1299-tutorial-model/</link><description><![CDATA[
<p>
	<strong>Hello Guys</strong>, Welcome To This Tutorial!
</p>

<p>
	How To Use /Model?
</p>

<p>
	First Thing if you said /Model Humanoid:Any Numbers
</p>

<p>
	Then You will change your size, Now You Will ask Is there more Models?
</p>

<p>
	Yeah There is Like these [Creeper Model] [Skeleton Model] [Zombie Model] [chibi Model] [More!]
</p>

<p>
	Now If you have any thing you want to say Reply Me!
</p>

<p>
	Good Luck <span>:D</span>
</p>
]]></description><guid isPermaLink="false">1299</guid><pubDate>Sun, 06 Jun 2021 11:13:30 +0000</pubDate></item><item><title>How to Change your skin.</title><link>https://f.classicube.net/topic/1361-how-to-change-your-skin/</link><description><![CDATA[
<p>
	Are you tired of steve skin?
</p>

<p>
	Well i got you! First thing Go to Classicube, Now click on your username and scroll down a little bit until you Something says Change skin
</p>

<p>
	 
</p>

<p>
	Enjoy!
</p>
]]></description><guid isPermaLink="false">1361</guid><pubDate>Wed, 07 Jul 2021 03:58:58 +0000</pubDate></item><item><title>How to host MCGalaxy server on android (2025 edition)</title><link>https://f.classicube.net/topic/3199-how-to-host-mcgalaxy-server-on-android-2025-edition/</link><description><![CDATA[<p>Why?</p><p>So... the only tutorial on how to host a mcg server on android is [1] by <a href="https://f.classicube.net/profile/65-megaboi/" class="ipsMention" data-mentionid="65" data-ipshover="" data-ipshover-target="https://f.classicube.net/profile/65-megaboi/?&amp;do=hovercard" rel="">@megaboi</a>. But the steps they took could be simplified further. Also running on proot is unnecessary. We don't need apps like anlinux just to get the link for a rootfs dl script as there is proot distro. Also there can be ppl who want to just host it for their friends or just want to do random stuff like me. Also Quoting [1], no one is going to join your potato na2 clone anyway.</p><p>We will see two ways of running a server.</p><p>##requirements: termux, min 700 mb storage and some internet.</p><p><span data-ips-font-size="150">Way 1 : The ez way</span></p><p>In this way, we are gonna setup the standalone version of mcg. It's good if you don't want Microsoft flavoured java to stay on your device or want to save some space. No, we won't use the one provided by cc, as it won't work. So, we need to use the one I provide ; Its built for termux.</p><p>at first, install git and clone my repo:</p><pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>apt update &amp;&amp; apt install git -y
git clone --depth=1 https://github.com/tbapknoob12mc/standalone-galaxy</code></pre><p>now, move to the folder and run the install script:</p><pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>cd standalone-galaxy
bash install.sh</code></pre><p>Then run the server with:</p><pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>./MCGLinux</code></pre><p>If you don't trust the binaries, a build script is provided:</p><p>move to the folder and run the build script:</p><pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>cd standalone-galaxy
bash build.sh install</code></pre><p>And run the server.</p><p>The problem with this approach is that you can't install plugins. This is for the ones who only wants to build with friends and nothing else.</p><hr><p></p><p><span data-ips-font-size="150">Way 2 : The normal way</span></p><p>In this way, we will use the mono dependent, official build of mcg. If you think you can run plugins, sorry... Some plugins won't even compile because mono distributed in termux has its limits. This is for the ones who don't mind mono installed. This will take 700 mb storage.</p><p>At first, install mono, wget,unzip, libsqlite and then download mcg:</p><pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>apt update &amp;&amp; apt install wget mono-static mono unzip libsqlite -y
wget https://cdn.classicube.net/client/mcg/release/MCGalaxy.zip
unzip MCGalaxy.zip</code></pre><p>Now move to the dir and run:</p><pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>cd MCGalaxy
mono MCGalaxyCLI.exe</code></pre><hr><p>Now, if you want someone outside your network to actually join your server,use a port forwarding of tunneling like ngrok,zrok,localhost run or localtunnel which will take a 100 more mb because of nodejs. I use playit gg btw.</p><p></p><p>If you want any tutorial on administration and management, search on google ok.</p><p>If you want to compile mcg from source, you will need proot...but no need of that. Right?</p><p>Also I would like to thank megaboi, author of [1].</p><p>Again quoting [1], type /blockdb disable [level] to save space.</p><p>I hope this helps some1.</p><p>Thanks for reading.</p><p>Have a nice day :) .</p><hr><p>[1]: <a rel="" href="https://f.classicube.net/topic/931-how-to-host-a-mcgalaxy-server-on-android-not-recommended/">https://f.classicube.net/topic/931-how-to-host-a-mcgalaxy-server-on-android-not-recommended/</a></p><hr>]]></description><guid isPermaLink="false">3199</guid><pubDate>Sun, 21 Sep 2025 09:17:12 +0000</pubDate></item><item><title>How to create MCGalaxy plugins, 2025 Edition</title><link>https://f.classicube.net/topic/3100-how-to-create-mcgalaxy-plugins-2025-edition/</link><description><![CDATA[<p><em>[transmission started]</em></p><p>You might want to create a server, and you've also read some tutorials involving the server creation guide, and how to get new players, but what you realize as a major part is, <strong>you need custom content</strong>. This custom content would mean some unique game mode, or some cool maps that distinct yourself from being a regular free build server. This is where <strong>plugins</strong> come in.</p><p><strong>What are plugins?</strong></p><p>Plugins are custom code written by you or someone else, and when loaded, will execute code to modify the server's behavior (which can include, but is not limited to, triggering additional actions upon events being called, registering a new command, registering a new TopStat (/top), modifying what the TabList looks like, etc).</p><p><strong>How are they made?</strong></p><p>Plugins are <strong>.dll</strong> files (dynamic-link libraries), aka program extensions that are compiled from source files, which in other words are human-readable text/code. Generally, these source files are written in C#, but there is also options for writing these plugins in other .NET programming languages. The DLL file is produced by a compiler, which could be the built-in server compiler on MCGalaxy (using the <strong>/Compile</strong> command), your IDE (the code editor), or the <strong>dotnet</strong> command line tools. In this tutorial, we will be looking at <strong>using the server</strong> and <strong>using Visual Studio 2019</strong> to compile code.</p><p>NOTE: <strong>MCGalaxy is targeted at .NET framework 4.0, which is an older .NET framework. Meaning, you cannot use newer syntaxes/features unless you re-target MCGalaxy and self-compile the server software, which is strongly not recommended.</strong> If you have Visual Studio 2019 Community or Professional installed on your personal computer, and given that you are hosting the server on your personal computer, the server will look and use the compiler from Visual Studio, however.</p><p></p><p>Now with the two major questions answered, let's get to the process.</p><hr><h2>Setting up your workspace.</h2><p>Before we start talking about the code structure of how plugins are written, let's get the software required set up. <strong>IDEs</strong> (Integrated development environment) are software used to write your code on, you can say they are a more advanced text editor, given we are really just editing plain text files that have a fancy file extension (in this case, the file extension is <strong>.cs</strong>). The following software are what I recommend for using to write your code on.</p><p>1) Visual Studio 2019 (Windows users only)</p><p>2) SharpDevelop (Windows users only)</p><p>3) MonoDevelop (Linux users only)</p><p>4) Visual Studio Code (Cross platform, there's also a <a rel="external nofollow" href="https://vscode.dev/">web version</a> but it has limited functionalities)</p><p></p><p>In this tutorial, we will only be using Visual Studio 2019, so unfortunately if you would like to use the other software, you will need to ask someone else for assistance to that software.</p><p><strong>How to install Visual Studio 2019:</strong></p><p>Unfortunately, Microsoft is a poop head who decided to remove the installation packages for Visual Studio 2019 from their website. So, you will need to source the installer from somewhere else. <strong>Chocolatey</strong> happens to have sourced the installer to VS 2019, which you can find from this link: <a rel="external nofollow" href="https://community.chocolatey.org/packages?q=visual%20studio%202019">https://community.chocolatey.org/packages?q=visual%20studio%202019</a></p><p>You can choose any edition of Visual Studio, because there are already keys online that can be repeatedly used to give you access to any edition. (It's not like Microsoft is trying to make money off the older edition anyways, why do you think they removed it from their website?). I found the keys <a rel="external nofollow" href="https://gist.github.com/ansarizafar/7234695e0837c92283144699c3f27532">https://gist.github.com/ansarizafar/7234695e0837c92283144699c3f27532</a></p><p>Chocolatey is a package manager, which is simply software that manages the installations of other software. However, the process to install it is slightly confusing. For our case, we are not setting this up as an organization, and it is assumed that you're using Windows. So, you can open the installation page for Choloatey <a rel="external nofollow" href="https://chocolatey.org/install">https://chocolatey.org/install</a> and then select the <strong>Individual</strong> option. Then, you will open <strong>Windows Powershell</strong> in Administrator mode, copy and paste the line of code from the website (where it says <strong>Set-Execution-Policy</strong>) into Powershell, and press enter.</p><p>Once Chocolatey installs, navigate back to the Chocolatey package search web page, and copy the command to the edition of Visual Studio you would like to install, and paste that into Windows Powershell, and press enter. After this finishes, you're all good to go!</p><p></p><p><strong>Installing Git Version Control / GitHub Desktop (optional)</strong></p><p>Version control is used to synchronize the copy of the code from your computer to a remote server. This allows for you and other people to collaborate together. The popular options for the remote servers are GitHub and GitLabs.</p><p>You can use your IDE's built in Git features, the <strong>git</strong> command line tools, or <strong>GitHub Desktop</strong> to synchronize your code. Both the IDE Git features and GitHub Desktop features are very self explanatory and easy to navigate through, so I will save time on explaining that part.</p><p></p><p>1) We will be creating an account on either GitLab or GitHub first.</p><p>2) Once you've verified your email, we are now going to create a <strong>repository</strong>, which is basically our project.</p><p>2a) You might want to make this repository private so no one else besides you and your invited members see the code.</p><p>3) Change your working directory to the folder you want to set up your project in (<strong>cd [directory]</strong>), then use <strong>git clone [url]</strong> to set up the repository.</p><p>3a) You might be asked to authenticate yourself. If you are using GitHub, you can put in your username, but then for the password, you will need to paste in your GitHub API Token, which you can get here: <a rel="external nofollow" href="https://github.com/settings/tokens">https://github.com/settings/tokens</a>. You should select <strong>repo</strong> and <strong>read:org</strong>. Make sure you <strong>SAVE THIS TOKEN TO SOMEWHERE SAFE, PREFERABLY YOUR PASSWORD MANAGER.</strong> This can allow dangerous people to access your repositories, which is not good.</p><p>3b) If you are using GitHub, it is recommended you also install this software, as it will save your time from having to paste in your token each time: <a rel="external nofollow" href="https://cli.github.com/">https://cli.github.com/</a>. When this is installed, all you need to do is to follow steps 1-2, but you will need to type <strong>gh auth login</strong> and then type <strong>gh repo clone</strong>. Read <a rel="external nofollow" href="https://cli.github.com/manual/">https://cli.github.com/manual/</a> for how GitHub CLI works.</p><p>4) voila! Your repository is set up.</p><p>Just a few important commands to remember:</p><p>1) <strong>git add .</strong> - Adds all your changed files</p><p>2) <strong>git commit -m "your message here"</strong> - Creates a commit with "your message here" being the summary of what you've changed. You can think of commits as</p><p>3) <strong>git push</strong> - Sends your commits to the server.</p><p>You will run these three commands in order each time you would like to make a change to the Git repository.</p><p><strong>PLEASE NOTE ABOUT MERGE CONFLICTS!</strong> If someone else updated the code, you will need to make sure their changes do not conflict with what you're syncing to the remote. Read <a rel="external nofollow" href="https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line">https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line</a> for more info.</p><p></p><p><strong>Creating your solution, and the CSharp project (.csproj)</strong></p><p>If you are using MonoDevelop/SharpDevelop/Visual Studio 2019, you will see an option for creating a new project/solution. You will need to click on that, and then give a name to your project, and click "Create".</p><p>Then, you'll need to download the <strong>MCGalaxy_.dll</strong> file, and reference it.</p><p><strong>In Visual Studio 2019,</strong> you can reference the file by expanding the project, right click <strong>References</strong>, and click "<strong>Add Reference</strong>". Then, you'll select the location to the DLL file.</p><p><img class="ipsImage ipsRichText__align--block" data-fileid="2720" src="https://f.classicube.net/uploads/monthly_2025_07/image.png.bef3446102a7b85228f3fb185ee78d6f.png" alt="image.png" width="501" height="346" loading="lazy"></p><p>What we are doing here is adding MCGalaxy's main code as a package. This will allow for the IDE to help you with auto-filling methods, and giving hints to the method parameters related to specific parts of the software. It will also allow you to compile the software.</p><hr><h2>Writing the code</h2><p>If you do not know how to write code, or if you know how to write code but this is your first time touching C#, that's fine. Please take a look at the below resources available to you:</p><ul><li><p><a rel="external nofollow" href="https://www.w3schools.com/cs/index.php">https://www.w3schools.com/cs/index.php</a></p></li><li><p><a rel="external nofollow" href="https://www.codecademy.com/learn/learn-c-sharp">https://www.codecademy.com/learn/learn-c-sharp</a></p></li><li><p><a rel="external nofollow" href="https://essentialcsharp.com/">https://essentialcsharp.com/</a></p></li></ul><p>The fundamental concepts covered in the two websites are very important to what we will be doing.</p><p></p><p><strong>Starting off with a plugin</strong></p><p>We will be creating an example plugin called "NotifyPlayer", which will alert players if our mascot, John ClassiCube has problem with the player because that player has "cubed" too much.</p><p>Below is the file "NotifyPlayer.cs":</p><p><a href="https://f.classicube.net/uploads/monthly_2025_07/image.png.e5ec7a90b0d59ce82fa6c3c505790d16.png" class="ipsAttachLink ipsAttachLink_image ipsRichText__align--block" data-fileid="2721" data-fileext="png" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="2721" src="https://f.classicube.net/uploads/monthly_2025_07/image.thumb.png.4c0cb97a72f2514fa0ddd976ba544104.png" alt="image.png" width="1000" height="760" loading="lazy"></a></p><p>In the above screenshot, we have done the following:</p><p>1) Defined our namespace, <strong>JohnClassiCubeLand</strong>. Namespaces often times help organize our code, and say if we have a large program/plugin we are making, then the namespace generally stays the same for all files in the program/plugin. You can also section your code to multiple namespaces, e.g. <strong>JohnClassiCubeLand.HeIsAngry</strong>, for if John ClassiCube is really mad at one of our players, and a part of the plugin (if it's multi-file) decides he wants to chop up the player.</p><p>Note that most times, plugins are <strong>single-filed</strong>. The reason why this is the case is because <strong>a)</strong> This allows us to reference other plugins, and <strong>b)</strong> Many smaller plugins/projects can be compiled quickly with the built-in <strong>/compile</strong> command, which will save our time from having to locate the compiled DLL and then drag and drop it to our server's plugins folder. In this case, the code can have multiple classes in one single file, and/or have <strong>regions</strong> defined allowing us to collapse/expand different sections of the code.</p><p>Example of using regions:</p><p><a href="https://f.classicube.net/uploads/monthly_2025_07/image.png.5960d4bb633ff493edbf2a8ad1213115.png" class="ipsAttachLink ipsAttachLink_image ipsRichText__align--block" data-fileid="2723" data-fileext="png" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="2723" src="https://f.classicube.net/uploads/monthly_2025_07/image.thumb.png.d8a7140c6fa4d217ec6ae750e4aba933.png" alt="image.png" width="1000" height="505" loading="lazy"></a></p><p>2) We have created the class NotifyPlayer. However, as you see in the screenshot, the class name is underlined red, and on the bottom of the IDE we see there are 3 errors. The reason why this is happening can be explained by the concept of <strong>Inheritance</strong>.</p><p></p><p><strong>Inheritance comes into play</strong></p><p>The idea of inheritance or metamorphism can be explained by giving you this analogy:</p><p>Suppose we are creating a video game and we need to create two objects in the game, a car and a horse. It is agreed that both the car and the horse are <strong>vehicles</strong>, because they move, but it's just that the way they move are different. Hence, in programming, we can represent both the car and the horse as <strong>vehicles</strong>, but because the way they move are different, and the noises they make are also different, we need to have a way to define how they function. <strong>That is where interfaces and abstract classes come in!</strong></p><p>This analogy can be associated to what we are doing. There are many plugins on the server, and while not all of them do the same thing, they all need to register and unregister things upon being loaded and unloaded. Therefore, the <strong>Plugin</strong> abstract class is created for the management of the plugins, and serves as the parent class of them.</p><p>Using Visual Studio, pressing <strong>Ctrl + .</strong> will bring up a context menu, and clicking <strong>Implement abstract class</strong> should fill the body of the NotifyPlayer class with the following code:</p><pre spellcheck="" class="ipsCode language-csharp" data-language="C#"><code>        public override string name =&gt; throw new System.NotImplementedException();

        public override void Load(bool auto)
        {
            throw new System.NotImplementedException();
        }

        public override void Unload(bool auto)
        {
            throw new System.NotImplementedException();
        }</code></pre><p></p><p>I want you to notice two things:</p><p>1) All of these throws exceptions, which we'll replace with what is needed to make the plugin work, and</p><p>2) The exceptions all have <strong>System.</strong> in front of them. The reason why this is happening is because, at least for my file, the <strong>using </strong>statements were all deleted. In any circumstance, you can choose to include the using statement at the very top of the file, or you can choose to retrieve a method/use anything from a class by typing <strong>Namespace.Class</strong> instead.</p><p></p><p>Below is how the above code was fixed.</p><pre spellcheck="" class="ipsCode language-csharp" data-language="C#"><code>        public override string name { get { return "NotifyPlayer"; } }
        public override string creator { get { return "75"; } }

        public override void Load(bool auto)
        {

        }

        public override void Unload(bool auto)
        {
            
        }</code></pre><p>Explanations to what I've done above:</p><p>1) We're using <strong>get</strong> <strong>return</strong> because we're overriding a string, and the parent class, <strong>Plugin</strong>, is expecting a getter method so it can retrieve the name of the plugin. You can also use a fat arrow lambda expression (=&gt;) instead to do the same thing, which would be <strong>public override string name =&gt; "NotifyPlayer";</strong> Lambdas are complex expressions that are used to create anonymous functions, and that is out of the scope of this guide. You can view more about them here: <a rel="external nofollow" href="https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/lambda-expressions">https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/lambda-expressions</a>. Please do note that lambdas are not compilable via the standard MCGalaxy compilers.</p><p>2) I have also overridden the <strong>creator</strong> property, which allows us to put the author name (sadly it's not John ClassiCube himself). This will mention our name if the plugin fails to load or unload. I also want you to notice this property was not included in by default, as over the years properties like <strong>welcome</strong>, <strong>MCGalaxy_version</strong>, <strong>Help</strong>, and <strong>creator</strong> have become optional. These are called <strong>virtual</strong> properties/methods, which can be viewed here: <a rel="external nofollow" href="https://github.com/ClassiCube/MCGalaxy/blob/86af8c8f270f9cfb90798890e829de374c9e412a/MCGalaxy/Scripting/Plugin.cs">https://github.com/ClassiCube/MCGalaxy/blob/86af8c8f270f9cfb90798890e829de374c9e412a/MCGalaxy/Scripting/Plugin.cs</a></p><p>3) Given that the properties mentioned in (2) are optional/virtual, the property <strong>name</strong>, and the methods <strong>Load</strong> and <strong>Unload</strong> are required/<strong>abstract</strong> methods, which can be seen from the above link to the Plugin.cs file.</p><p>By typing the <strong>override</strong> keyword however, you will be able to see all available options to override from.</p><p></p><p>Now, let's start with what we want to do with the plugin. We want to let the player know upon joining the server whether or not that John ClassiCube is mad at them, we want there to be a command for the player to check the reason(s) why John ClassiCube is mad at the player, and give the options for staff member, and even JohnClassiCube himself (who is AndrewPH in disguise, who in reality does not even exist!) to add/delete/view the reason why the player is now on John ClassiCube's not-so-good player list.</p><p></p><p><strong>Events</strong></p><p>I've updated the Load and Unload methods with the following things:</p><pre spellcheck="" class="ipsCode language-csharp" data-language="C#"><code>        public override void Load(bool auto)
        {
            OnPlayerConnectEvent.Register(HandlePlayerConnect, Priority.Low);
            Command.Register(new CmdJohnClassiCubeNotifications());
        }

        public override void Unload(bool auto)
        {
            OnPlayerConnectEvent.Unregister(HandlePlayerConnect);
            Command.Unregister(Command.Find("JohnClassiCubeNotifications"));
        }

        private void HandlePlayerConnect(Player p)
        {

        }</code></pre><p></p><p>I've done the following:</p><p>1) I registered the OnPlayerConnectEvent. Different events, and what they do are all outlined in MCGalaxy's events folder: <a rel="external nofollow" href="https://github.com/ClassiCube/MCGalaxy/tree/86af8c8f270f9cfb90798890e829de374c9e412a/MCGalaxy/Events">https://github.com/ClassiCube/MCGalaxy/tree/86af8c8f270f9cfb90798890e829de374c9e412a/MCGalaxy/Events</a></p><p>These events allow you to perform an action when a player performs certain action, for example, running a command, sending a chat message, moving, joining another level. Hooking into events would allow you to do a certain action based on what is provided to you. In our case, we will be notifying the player of them having a notification from John ClassiCube.</p><p>2) We've registered and unregistered a Command class that we will be making soon. Registering a command is simple, all we are doing is passing a newly instantiated command to the <strong>Register</strong> method. Unregistering the command though will require us to find the loaded instance first.</p><p>For this bit, I will need to give you one note: Do NOT unregister new CmdJohnClassiCubeNotifications(); This will not work because Unregister acts like removing items from a list. This newly instantiated object is not the same as the one we registered before! One way to avoid using Command.Find is to store CmdJohnClassiCubeNotifications into a static variable, and unregister <em>that variable</em> instead.</p><p><strong>Storing user's data</strong></p><p>Because we need to store the player's notifications, we will need some way to write each player's notifications into the server files. Thankfully, with MCGalaxy, we are given a built in feature, namely <strong>PlayerExtList</strong> and also <strong>PlayerList</strong>. These two classes allows us to retrieve data from a text file.</p><ul><li><p><strong>PlayerList</strong> stores player names into a text file, with each line having one player. You can use <strong>Contains</strong>, <strong>Add</strong>, <strong>Remove</strong> to manipulate the data. Each time <strong>Add or Remove</strong> is called, you must call the <strong>Save</strong> method so it can update the data to the text file, if not it will be stored only temporarily in memory.</p></li><li><p><strong>PlayerExtList</strong> stores player names and some corresponding data into a text file, with each line being the player's name, followed by a space, and some data. You can use <strong>Contains</strong>, <strong>Update, Get, Remove </strong>to manipulate the data. Each time <strong>Update or Remove</strong> is called, you must call the <strong>Save</strong> method so it can update the data to the text file, if not it will be stored only temporarily in memory.</p></li></ul><p>TL;DR PlayerList retrieves data from a text file and creates a temporary List to store the data, and allows you to do read/write to the list, and you need to call Save() each time for the data to be updated to the text file.</p><p>PlayerList retrieves data from a text file and creates a temporary Dictionary to store the data, and allows you to do read/write to the Key-value pairs, and you need to c all Save() each time for the data to be updated to the text file.</p><p>So, now we will be setting up a PlayerExtList to store each player's notifications.</p><pre spellcheck="" class="ipsCode language-csharp" data-language="C#"><code>    public class NotifyPlayer : Plugin
    {
        public override string name { get { return "NotifyPlayer"; } }
        public override string creator { get { return "75"; } }

        public const string PATH = "plugins/NotifyPlayer/";
        public const string PATH_NOTIFICATIONS = PATH + "notifications.txt";
        public static PlayerExtList notificationsList;

        public override void Load(bool auto)
        {
            notificationsList = PlayerExtList.Load(PATH_NOTIFICATIONS);

            OnPlayerConnectEvent.Register(HandlePlayerConnect, Priority.Low);
            Command.Register(new CmdJohnClassiCubeNotifications());
        }

        public override void Unload(bool auto)
        {
            OnPlayerConnectEvent.Unregister(HandlePlayerConnect);
            Command.Unregister(Command.Find("JohnClassiCubeNotifications"));
        }

        private void HandlePlayerConnect(Player p)
        {
            string data = notificationsList.Get(p.name);
            if (!string.IsNullOrEmpty(data))
                p.Message("You have &amp;e{0}&amp;S notifications from John ClassiCube. &amp;WView it immediately, or else. &amp;T/jccn", data.Split(',').Length);
        }
    }</code></pre><p>WOW! That was a lot of changes. I will take some time to explain to you what each line does.</p><ul><li><p>We've created two constant variables. Constant variables are read-only, compile time variables that store data that can only be read and not modifiable during run time, and does not require a object reference (meaning it's basically <strong>static</strong>!). These two variables are the paths to our plugin's folder, and the notifications text file to store data</p></li><li><p>I added a <strong>public static PlayerExtList</strong> which stores player notifications. It is <strong>public static</strong> because it needs to be accessible outside of the class without being instantiated in an object.</p></li><li><p>I added one line before registering the OnPlayerConnectEvent handler, which is <strong>PlayerExtList.Load</strong>. This will retrieve the data and load it into memory, or if the text file does not exist, it will create a new empty text file and instantiate an empty list of Key-value pairs.</p></li><li><p>I updated the body of HandlePlayerConnect, and it will now check for if a player has notifications and alert the player upon connect to view the notifications. We're using a extension method from MCGalaxy, namely <strong>Split</strong>, to split the string by chopping it by where there is a comma (,), and then getting the number of items there are. The notifications in the text file would then look like this:</p></li></ul><pre spellcheck="" class="ipsCode language-plaintext" data-language="Plain Text"><code>75+ Notification1,Notification2,Notification3</code></pre><p><strong>Custom Command</strong></p><p>Now it's the time to create our command!</p><pre spellcheck="" class="ipsCode language-csharp" data-language="C#"><code>    public class CmdJohnClassiCubeNotifications : Command2
    {
        public override string name { get { return "JohnClassiCubeNotifications"; } }
        public override string shortcut { get { return "jccn"; } }
        public override CommandPerm[] ExtraPerms
        {
            get
            {
                return new[] { new CommandPerm(LevelPermission.Operator, "can set and view all players' notifications") };
            }
        }
        public override string type { get { return CommandTypes.Information; } }

        public string[] GetNotifications(string player)
        {
            string data = NotifyPlayer.notificationsList.Get(player);

            if (string.IsNullOrEmpty(player)) return null;
            else return data.Split(',');
        }

        public void NotificationPrinter(Player p, string notification)
        {
            p.Message("- &amp;f" + notification);
        }

        public override void Use(Player p, string message, CommandData data)
        {
            string[] args = message.SplitSpaces(3);

            if (args[0].CaselessEq("add"))
            {
                if (!CheckExtraPerm(p, data, 1)) return;

                if (3 &gt; args.Length) { p.Message("You need more parameters."); return; }

                string matched = PlayerInfo.FindMatchesPreferOnline(p, args[1]);
                if (string.IsNullOrEmpty(matched)) return;

                List&lt;string&gt; notifications = new List&lt;string&gt;(GetNotifications(matched));
                notifications.Add(args[2]);
                NotifyPlayer.notificationsList.Update(matched, notifications.Join(","));
                NotifyPlayer.notificationsList.Save();
                p.Message("Notification was added.");
            } 
            else if (args[0].CaselessEq("del"))
            {
                if (!CheckExtraPerm(p, data, 1)) return;

                if (3 &gt; args.Length) { p.Message("You need more parameters."); return; }

                string matched = PlayerInfo.FindMatchesPreferOnline(p, args[1]);
                if (string.IsNullOrEmpty(matched)) return;

                List&lt;string&gt; notifications = new List&lt;string&gt;(GetNotifications(matched));
                string notification = Matcher.Find(p, args[2], out int matches,
                    notifications, null, null, "notification");
                bool removed = false;
                if (notification != null)
                {
                    notifications.Remove(notification);
                    NotifyPlayer.notificationsList.Update(matched, notifications.Join(","));
                    NotifyPlayer.notificationsList.Save();
                    removed = true;
                }

                p.Message("{0} rmoved the notification from {1}.", removed ? "&amp;aSuccessfully" : "&amp;cCould not", p.FormatNick(matched));
            }
            else
            {
                //elvis operator
                string player = message.Length == 0 ? p.name : PlayerInfo.FindMatchesPreferOnline(p, message);
                if (string.IsNullOrEmpty(player)) return;

                if (player != p.name &amp;&amp; !CheckExtraPerm(p, data, 1)) return;

                string[] items = GetNotifications(player);
                Paginator.Output(p, items, (p_, notification) =&gt; NotificationPrinter(p_, notification),
                    "JohnClassiCubeNotifications " + player, "notifications", args.Length &gt; 2 ? args[1] : "");
            }
        }

        public override void Help(Player p)
        {
            p.Message("&amp;T/JohnClassiCubeNotifications &lt;player&gt;");
            p.Message("&amp;HViews the notifications that you or another player has from John ClassiCube.");
            p.Message("&amp;T/JohnClassiCubeNotifications add [player] [notification]");
            p.Message("&amp;HAdds a notification to the player");
            p.Message("&amp;T/JohnClassiCubeNotifications del [player] [notification]");
            p.Message("&amp;HDeletes a notification from the player");
        }
    }</code></pre><p>WOAH! That's so much more stuff to take in. You might be asking, what is all this?</p><p>Well, let's sort this all through one by one.</p><p><strong>A. General structure of the code</strong></p><p>All commands generally will follow the same class header, with it being <strong>Cmd[name] : Command</strong> or <strong>Cmd[name] : Command2</strong>. When I say generally, I mean it because there are abstract classes that inherit either <strong>Command</strong> or <strong>Command2</strong>, and does something specific. This can be seen with the example of <strong>EntityPropertyCmd</strong> and <strong>RoundsGameCmd</strong>, where one is used for changing properties of a bot or a player (e.g. skins and models), or <strong>RoundsGameCmd</strong> where the command inherits this for unified functionality as a RoundsGame game mode command.</p><p>The general differences between Command and Command2 is this:</p><ul><li><p>Command requires you to override <strong>name</strong>, <strong>type</strong>, <strong>Use(Player p, string message)</strong>, and <strong>Help(p)</strong>.</p></li><li><p>Command2 requires you to override <strong>name</strong>, <strong>type</strong>, and <strong>Help(p)</strong>, with <strong>Use(Player p, string message)</strong> being optional, and also allows you to override another optional overload of Use, being <strong>Use(Player p, string message, CommandData data)</strong>. The CommandData object passed provides information about where the command is ran, the coordinates of the Message Block if available, and the rank that the player ran as (in which, we don't check for the rank of the player because the player could be running the command via /sendcmd and extra permissions needs to be bypassed).</p></li></ul><p>We're using <strong>Command2</strong> because we need to check for extra command permissions using the method <strong>CheckExtraPerms</strong> to check if the player has staff permissions to manipulate player data.</p><p>As said earlier, typing just the <strong>override</strong> keyword will show up the properties and methods you are allowed to override...</p><ul><li><p><strong>Help(Player p, string message)</strong> is an overridable method for providing additional information for the command if they player types <strong>/help command &lt;args&gt;</strong>, where the <strong>message</strong> parameter is <strong>&lt;args&gt;</strong></p></li><li><p>most others are self explanatory, so I will just leave it at that</p></li></ul><p></p><p><strong>B. The Body of the Use Method, and the two helper methods</strong></p><p>The <strong>string.SplitSpaces</strong> extension method is also a feature that comes from MCGalaxy. This method allows us to split a string into a string array by chopping it up by where there is a space. It also has an overload to limit the maximum of items we can have in that array. In this case as we specified 3 as the parameter, the method will chop at space A, and space B, and then leave the rest as the 3rd item.</p><p>Then, we use args[0].<strong>CaselessEq(...)</strong> to check for if the string caseless equals a certain subcomand. In which, <strong>CaselessEq</strong> is also a built in method. There is also <strong>CaselessStarts</strong>, <strong>CaselessEnds</strong>, <strong>CaselessContains</strong> for strings. <strong>CaselessContains</strong> is also available for enumerable lists.</p><p>We use <strong>PlayerInfo.FindMatchesPreferOnline(Player p, string name)</strong>, which is a built in MCGalaxy method to find the exact name of a player as it is stored in the server database so to find the data matching the exact name of the player, and this method returns null if no players of the name is found, which is why we return when that is the case. You can simply check if it equals null, but I just prefer using <strong>string.IsNullOrEmpty</strong> because it sounds very fancy.</p><p>...and that's mostly it</p><p><strong>Wrap up</strong></p><p>That's it! You can view the full code here: <a rel="external nofollow" href="https://gist.github.com/SpicyCombo/a9034c4912d82b082378aa08a789e2f2">https://gist.github.com/SpicyCombo/a9034c4912d82b082378aa08a789e2f2</a></p><p>Now of course, that was not everything. There may be a comment or a follow up post either by me, or some other community in the community. For other developers, a few other topics you can talk about are:</p><ul><li><p>//reference and //pluginref, the usage of external libraries and referencing other plugins</p></li><li><p>Manipulating the Database</p></li><li><p>Registering/Unregistering TopStat (which is easy, someone can just post the links down to an example)</p></li><li><p>Custom events (which Venk has done, and I've done so as well.. idk If I'd like to share it though)</p></li></ul><hr><h2>Other Tidbits</h2><p>1) Reading the GitHub MCGalaxy wiki, and expanding the section "<strong>Technical info (for developers)</strong>" will provide information on commands to compile and load the plugin using the built-in compiler, and API changes/breakages: <a rel="external nofollow" href="https://github.com/ClassiCube/MCGalaxy/wiki/Scripting">https://github.com/ClassiCube/MCGalaxy/wiki/Scripting</a>. You should check here if you see something built in not working, and you need to fix it.</p><p>2) If you are using Visual Studio 2019, it's recommended to use the hotkey <strong>Ctrl + Shift + S</strong> every now and then to save all files in your project. This will avoid surprises if your computer suddenly loses power, this is so your changes are saved before anything out of ordinary happens.</p><hr><h2>Final words</h2><p>With anything in life, the more effort you put into something, the more you will get out of it. If you ever get stuck writing code, or need some concept explained to you, feel free to ask someone in the community for help. The forums, ClassiCube Discord, server owners/developers will be here when you need it. With all that being said, I wish you all, the readers the best of luck, and hope your next project will succeed (with a lot of glory).</p><p>:D</p><hr><p></p><p>75 is your <strong>H</strong>elpful <strong>C</strong>oding <strong>A</strong>ssistant <strong>(HCA)</strong></p><p><em>[transmission ended]</em></p>]]></description><guid isPermaLink="false">3100</guid><pubDate>Sat, 26 Jul 2025 06:29:31 +0000</pubDate></item><item><title>(OUTDATED) How to set up authentication for players on BetaCraft</title><link>https://f.classicube.net/topic/1590-outdated-how-to-set-up-authentication-for-players-on-betacraft/</link><description><![CDATA[<p>
	<span style="font-size:36px;"><strong>OUTDATED!</strong></span>
</p>

<p>
	BetaCraft V1 heartbeat has been nonfunctional for a long while and will be sunset on October 1st 2024. You can view the new instructions for setting up the heartbeat <a href="https://betacraft.uk/heartbeat-tutorial#mcgalaxy" rel="external nofollow">here</a>. You however still have to configure the auth service for ClassiCube to avoid username conflicts.
</p>

<p>
	 
</p>

<p>
	This tutorial shows you how to set up a server running MCGalaxy 1.9.3.5+ to allow players to connect from BetaCraft, or other services.
</p>

<p>
	Step 1. Open up server.properties inside the properties folder, and under "Other settings" you should find a variable called "HeartbeatURL".
</p>

<p>
	<img alt="image.png.acd8d782197065ce5d64737187ea9fc0.png" class="ipsImage ipsImage_thumbnailed" data-fileid="1417" style="height:auto;" width="441" src="https://f.classicube.net/uploads/monthly_2021_11/image.png.acd8d782197065ce5d64737187ea9fc0.png" loading="lazy" height="88.2">
</p>

<p>
	Step 2. Change HeartbeatURL to
</p>

<pre class="ipsCode">
http://www.classicube.net/heartbeat.jsp,https://betacraft.uk/heartbeat.jsp</pre>

<p>
	After doing that, the following area should look like this.
</p>

<p>
	<img alt="image.png.c0238b92800aec31e0b637511430461d.png" class="ipsImage ipsImage_thumbnailed" data-fileid="1418" style="height:auto;" width="721" src="https://f.classicube.net/uploads/monthly_2021_11/image.png.c0238b92800aec31e0b637511430461d.png" loading="lazy" height="86.52">
</p>

<p>
	Step 3. Save the file, and do /server reload to generate the necessary configuration.
</p>

<p>
	Step 4 (MCGalaxy 1.9.3.6+). Open up authservices.properties inside the properties folder, and look for a line that says
</p>

<pre class="ipsCode">
URL = http://www.classicube.net/heartbeat.jsp</pre>

<p>
	Under it change
</p>

<pre class="ipsCode">
name-suffix =</pre>

<p>
	to
</p>

<pre class="ipsCode">
name-suffix = +
</pre>

<p>
	And under
</p>

<pre class="ipsCode">
URL = https://betacraft.uk/heartbeat.jsp
</pre>

<p>
	change
</p>

<pre class="ipsCode">
skin-prefix = </pre>

<p>
	to
</p>

<pre class="ipsCode">
skin-prefix = https://minotar.net/skin/
</pre>

<p>
	(MCGalaxy 1.9.4.8+) along side changing
</p>

<pre class="ipsCode">
mojang-auth = false</pre>

<p>
	to
</p>

<pre class="ipsCode">
mojang-auth = true</pre>

<p>
	The file should now look like this.
</p>

<p>
	<img alt="image.png.2ec9cdc60bdc6a211d02015200093e36.png" class="ipsImage ipsImage_thumbnailed" data-fileid="1419" style="height:auto;" width="829" src="https://f.classicube.net/uploads/monthly_2021_11/image.png.2ec9cdc60bdc6a211d02015200093e36.png" loading="lazy" height="331.6">
</p>

<p>
	Doing these changes allows the server to know and properly store player info for each player on each authentication service, and allows ClassiCube players to see Minecraft player skins.
</p>

<p>
	Step 5. Save the file and do /server reload, and wait for a while.
</p>

<p>
	Step 6. Check both of the server lists if your server is listed.
</p>

<p>
	Step 7. Join the server using the same username on both BetaCraft and ClassiCube to see if everything works.
</p>
]]></description><guid isPermaLink="false">1590</guid><pubDate>Mon, 29 Nov 2021 19:14:22 +0000</pubDate></item><item><title>Block Texture pack tutorial</title><link>https://f.classicube.net/topic/2097-block-texture-pack-tutorial/</link><description><![CDATA[
<p>
	Hello everyone, nice to see you'all in another lovely day!
</p>

<p>
	So recently some people asked me (And the other too) On how to make a texture pack, please note that making texture packs can take some time but it can be also used to make <strong>awesome designs!</strong> In that case, this tutorial will show you how to make a great texture pack!
</p>

<p>
	<strong>1. </strong>Basics
</p>

<p>
	Firstly to make a texture pack you will need a drawing application that supports transparent, let's say for example (paint-net).
</p>

<p>
	Secondly you will need to have the default zip file and to get that you will need to go to the texpack folder and find default.zip. Copy and paste the zip somewhere and extract it, there you can change the texture pack, however since this is a block texture pack tutorial, we will focus on terrain.png to make our new blocks.
</p>

<p>
	<strong>2. </strong>Creating block textures
</p>

<p>
	Open paint-net and click on the "File" button on the top corner, then select Open and select the terrain.png then you can add new blocks or change the blocks!
</p>

<p>
	Note: (All the blocks on terrain.png are 16x16, if you try to add a block higher than 16x16, let's say maybe 20x20 then you probably have to resize it.)
</p>

<p>
	<strong>3. </strong>Testing your texture pack
</p>

<p>
	Once you have finished making your texture pack, drop the terrain.png to the zip file, you can also rename the zip file. (If it tells you that there is already a terrain.png inside the zip, click replace.)
</p>

<p>
	After that, put your .zip texture pack to the texpacks folder, then run ClassiCube, hop on a singleplayer world or a multiplayer, go to the Game menu and click Choose texture pack, then select your texture pack and it will instantly change the texture pack to yours!
</p>

<p>
	<strong>4. </strong>Making your texture pack public for everyone!
</p>

<p>
	This step is very simple, all you need is Dropbox or any other app, drop your .zip file to there, then wait till it finishes uploading, then copy the link that it gave you, after that hop on a multiplayer world, go to your Overseer world and type /os map texture and paste the link, then hit enter, it will tell you to download the texture pack, click Yes or Always Yes, then you will see your texture pack in your Overseer map, and everyone can see your texture pack in your Overseer map too (Only if they click the Yes button) 
</p>

<p>
	I hope you all enjoyed this tutorial, goodbye and have a lovely day!
</p>
]]></description><guid isPermaLink="false">2097</guid><pubDate>Fri, 24 Feb 2023 13:33:24 +0000</pubDate></item><item><title>How to fully transfer a map between servers in MCGalaxy</title><link>https://f.classicube.net/topic/1901-how-to-fully-transfer-a-map-between-servers-in-mcgalaxy/</link><description><![CDATA[
<p>
	<br>
	We will be working with the assumption that your map is named mylevel. If it's not, replace occurances of "mylevel" with your map's name when following this tutorial.
</p>

<p>
	You must have server file access to both servers to accomplish this.
</p>

<p>
	<br>
	In order to fully move mylevel to another server you will need:
</p>

<p>
	<strong>For blocks and zones,</strong><br>
	    mylevel.lvl file in `levels`<br>
	    <br><strong>For blockdefs (custom blocks),</strong><br>
	    <em>if the level only uses local blocks and does not use any globally defined blocks:</em><br>
	        lvl_mylevel.json in `blockdefs`<br>
	    <em>if the level only uses global blocks:</em><br>
	        Clone global.json from `blockdefs` and rename it to lvl_mylevel.json before cloning the file to the other server<br>
	    <em>if the level uses both global and local blocks:</em><br>
	        use ClassiCube to save the level as temp.cw, import it into a server (/help import), then grab lvl_temp.json and rename it to lvl_mylevel.json before cloning that file to the other server<br>
	        this servers the purpose of combining local and global blocks into one blockdef file<br>
	    <br><strong>For blockprops (slab stacking and etc),</strong><br>
	    _mylevel.txt in `blockprops`<br>
	    <br><strong>For message blocks,</strong><br>
	    1. Extract the messages from the server database with /server backup table Messagesmylevel<br>
	    2. Messagesmylevel.sql will now be in the root folder of your server. Bring this file to the root folder in the other server.<br>
	    3. In the other server, use /server import Messagesmylevel<br><strong>For Portals,</strong><br>
	    Repeat the steps for message blocks, but instead of "Messagesmylevel" use "Portalsmylevel"<br><strong>For bots,</strong><br>
	    extra/bots/mylevel.json<br>
	    <br><strong>For all the remaining level properties (env, settings from /map, etc),</strong><br>
	    mylevel.properties in `levels/level properties`<br>
	   
</p>
]]></description><guid isPermaLink="false">1901</guid><pubDate>Mon, 18 Jul 2022 19:12:42 +0000</pubDate></item><item><title>How to make your server popular</title><link>https://f.classicube.net/topic/2083-how-to-make-your-server-popular/</link><description><![CDATA[
<p>
	Ever wanted to make your server popular? and gain players.
</p>

<p>
	This is really simple. 
</p>

<p>
	(1 Add mini-games, fun and more. 
</p>

<p>
	(2 Be kind and don't break your own server rules
</p>

<p>
	(3 Protect server 
</p>

<p>
	(4 Make a discord server about it and be active
</p>

<p>
	(5 Gain player's trust and make them staff.
</p>

<p>
	(6 Listen and respect your community.
</p>

<p>
	(7 Link your server to betacraft, (if you want a mini game, add classic games like lava survival, countdown, etc.)
</p>

<p>
	(8 Freebuild, themed builds
</p>

<p>
	(9 Version supports
</p>

<p>
	(10 Don't admin abuse.
</p>

<p>
	 
</p>

<p>
	Hope it helps. It's like easy stuff man!
</p>
]]></description><guid isPermaLink="false">2083</guid><pubDate>Fri, 10 Feb 2023 14:19:59 +0000</pubDate></item><item><title>Building Guide.</title><link>https://f.classicube.net/topic/2046-building-guide/</link><description><![CDATA[
<p>
	</p>

<p>
	<strong>Heya everyone, this guide will make you learn how to improve your buildings!</strong>
</p>

<p>
	<strong>1. Basics</strong>
</p>

<p>
	There are 65 unique blocks in the game, many including stone, etc. To open up your inventory, press "B" on the keyboard, if you are on mobile, you should find three dots on your hotbar, tap on it to open the inventory, here will show you all the blocks you can use.
</p>

<p>
	<strong>2. Texture packs</strong>
</p>

<p>
	There are many Texture packs made by people, which can help you make a design, decorations, etc. These texture packs can be found on servers and websites, if you want to put the texture pack into your Overseer (which can be done by /os map create) Then type /mi env in the world that has a texture pack, and copy the link, go to your Overseer by typing /os go, then type /os map texture (URL), if the texture pack has a .png, it will only copy the terrain texture, if it is a .zip, it will copy the texture pack. If you want to see the terrain, press F10
</p>

<p>
	<strong>3. Creating new blocks</strong>
</p>

<p>
	custom blocks allow you to make new blocks, edit them, and much more! Let's see how to make one. first, you need to type /os lb add, this will ask you questions about what your block name wants to be, etc. To answer any of those questions, say /os lb answer [answer], and if you want to cancel, just simply type /os lb abort, now if you made a mistake you can revert it by doing /os lb revert.
</p>

<p>
	Once you have made your block, you have done it! You made a block, however, if you want to edit it at any time, you can do /os lb edit [ID] [property] [value].
</p>

<p>
	<strong>4. Buildings</strong>
</p>

<p>
	When you are making a build, you can mess it up at any time, and sometimes it would look bad, Here are some tips that can help you improve it!
</p>

<p>
	Ideas. Make sure to have an idea for your buildings (e.g a house, hospital, gas station). This might improve your buildings if you have no idea what you are doing.
</p>

<p>
	Inspiration. You can get some inspiration from people, and the internet and this will improve your buildings.
</p>

<p>
	Patient. I know this might be a little funny, but I'm serious, being patient helps a lot in buildings.
</p>

<p>
	<strong>And that's it, a simple guide that helps your buildings, if you want a version showcasing everything about Custom blocks, I highly recommend watching Bruceja's building tutorial. You can watch it here at <a href="https://www.youtube.com/watch?v=DG9JgmdiJ-k" style="color:#4a6ee0;" rel="external nofollow"><span style="color:#4a6ee0;">https://www.youtube.com/watch?v=DG9JgmdiJ-k</span></a>, anyways good luck and have a nice day!!</strong>
</p>
]]></description><guid isPermaLink="false">2046</guid><pubDate>Fri, 16 Dec 2022 10:44:43 +0000</pubDate></item><item><title>Full Custom Block Guide by Bruceja</title><link>https://f.classicube.net/topic/1734-full-custom-block-guide-by-bruceja/</link><description><![CDATA[
<p>
	Hello everyone,
</p>

<p>
	I have recently made a full in depth custom block guide for ClassiCube. People have asked for it and it's finally here, enjoy:
</p>

<p>
	<a href="https://www.youtube.com/watch?v=DG9JgmdiJ-k" rel="external nofollow">https://www.youtube.com/watch?v=DG9JgmdiJ-k</a>
</p>
]]></description><guid isPermaLink="false">1734</guid><pubDate>Wed, 02 Mar 2022 10:12:27 +0000</pubDate></item><item><title>Venk's Build School Chapter 2 - Familiarity with common commands/usages</title><link>https://f.classicube.net/topic/1731-venks-build-school-chapter-2-familiarity-with-common-commandsusages/</link><description><![CDATA[<div data-controller="core.front.core.articlePages">
	<div data-role="contentPage">
		<p>
			Here are a list of other tutorials in the series:
		</p>

		<p>
			<em><a href="https://f.classicube.net/topic/1016-venks-build-school-chapter-1-introduction-to-buildingbuilding-philosophy/" rel="">Chapter 1 - Introduction to building/building philosophy</a></em>
		</p>

		<p>
			<em><s>Chapter 2 - Familiarity with common commands/usages</s></em>
		</p>

		<p>
			<em>Chapter 3 - Basic geometries and build styles <strong>COMING SOON!</strong></em>
		</p>

		<p>
			<em>Chapter 4 - Detailing your builds <strong>COMING SOON!</strong></em>
		</p>

		<p>
			<em>Chapter 5 - Creating and landscaping terrain <strong>COMING SOON!</strong></em>
		</p>

		<p>
			<strong><span style="font-size:24px;">Chapter 2 - Familiarity with common commands/usages</span></strong>
		</p>

		<p>
			Now that we've set up our building environment and we have an idea on what we want to build, we can utilize some common building commands to make our builds look a lot nicer, faster. Do keep in mind that the software I am using throughout this tutorial series is <strong>MCGalaxy </strong>as it is the most predominant server software. As such, other server softwares may have different names for these commands or perhaps not even have them at all.
		</p>

		<p>
			Before we start, here is a key for command syntaxes:
		</p>

		<p>
			<strong>[ ] = Required.</strong>
		</p>

		<p>
			<strong>&lt; &gt; = Optional.</strong>
		</p>

		<p>
			<strong>( ) = Common shortcut/alias.</strong>
		</p>

		<p>
			<span style="font-size:18px;"><b>Miscellaneous commands</b></span>
		</p>

		<p>
			<span style="font-size:16px;"><strong>/ReachDistance [distance] (/reach)</strong></span>
		</p>

		<p>
			I started building in around early 2010 when building was a very difficult task. We had to get very close to place blocks and we couldn't fly without using a client or the /fly command. Luckily, nowadays we have the ability to fly and the ability to use <em>/reach</em>. I always found myself cramped or even confined to the restrictions of the default reach distance <em>(5 blocks)</em>. What /reach essentially does, is allow you to place and delete blocks from further away. The ideal range for the majority of people is around 7-15 however myself and a few others prefer to have /reach over 128+. There is no perfect distance as it is entirely subjective to your own build style, so play around with it until you find a distance that you are most comfortable with.
		</p>

		<p>
			<img alt="giphy.gif" class="ipsImage" data-ratio="75.81" height="608" style="height:auto;width:401px;" width="802" src="https://media.giphy.com/media/TXy4oFi7UsaQBPxABa/giphy.gif" loading="lazy"></p>

		<p>
			<span style="font-size:16px;"><strong>/Center (/centre)</strong></span>
		</p>

		<p>
			This command isn't the most useful command on the list but it is still a big help for build calculations and geometries. The command will place a gold block in the centre of your selection. We will discuss this command more in chapter 3.
		</p>

		<p>
			<img alt="giphy.gif" class="ipsImage" data-ratio="75.81" height="608" style="height:auto;width:401px;" width="802" src="https://media.giphy.com/media/1reFD8bKexJbqvMSLY/giphy.gif" loading="lazy"></p>

		<p>
			<span style="font-size:16px;"><strong>/Hold [block name or ID] &lt;locked&gt;</strong></span>
		</p>

		<p>
			<em>/hold</em> is a pretty simple command. It basically allows us to hold a block from the block list without having to dig through and select it manually. I'd recommend trying to memorize the IDs as some block names are extremely long. For instance 'Dark Wood Slab-D' could easily be replaced to something like <em>/hold 100</em> for short.<br><span style="font-size:16px;"><strong>/Place [block name or ID] &lt;x&gt; &lt;y&gt; &lt;z&gt; (/pl)</strong></span>
		</p>

		<p>
			From what I've seen, there are a lot of you that still build pillars to place a block. Whilst there's nothing really wrong with doing this, it takes so long and can easily be shortened to about 2 seconds. Instead of doing pillars, we can place a block under your feet using the <em>/place</em> command. It works in the air and you can finally stop pillaring to mark a point.
		</p>

		<p>
			<span style="font-size:16px;"><strong>/Static (/t)</strong></span>
		</p>

		<p>
			Arguably, one of the most useful commands when building larger maps. You can use <em>/Static </em>to repeat a drawing operation without having to type it. Just make sure to type <em>/a</em> to cancel it when you are finished.
		</p>

		<p>
			<span style="font-size:16px;"><strong>/Abort (/a)</strong></span>
		</p>

		<p>
			<span>This command is super useful for drawing commands which you will learn about shortly. If you type <em>/Abort</em>, it will cancel your current drawing operation.</span>
		</p>
	</div>

	<div data-role="contentPage">
		<hr data-role="contentPageBreak"><p>
			<span style="font-size:18px;"><b>Basic drawing commands</b></span>
		</p>

		<p>
			<strong><span style="font-size:16px;">/Mark &lt;x&gt; &lt;y&gt; &lt;z&gt; (/m)</span></strong>
		</p>

		<p>
			<span>The next couple of commands are called <em>drawing operations</em> and will require you to either place/delete a block or use <em>/mark</em> to mark out positions for the operation. In the following examples, we could left click to delete/place the block or we could stand where the red/yellow blocks are and use /mark. I'll cover more about /mark and show more examples in the following commands as it is hard to show the command, without requiring a draw operation. The best part about /mark is that you can use it anywhere inside the map, meaning you could be standing in the air and it will still work.</span>
		</p>

		<p>
			<span>It is also worth adding that you can use <em>/ma </em>to mark the whole map.</span>
		</p>

		<p>
			<strong><span style="font-size:16px;">/Cuboid (/z)</span></strong>
		</p>

		<p>
			<span>Some might say that this is the most crucial command for building, and they wouldn't be wrong. <em>/cuboid</em> allows us to make a rectangular shape which fills in everything inside of the bounds. As I mentioned above, you can also use /mark to specify the bounds of the draw operation so instead of clicking on the red/yellow blocks, you could just stand there instead. This works for all drawing commands.</span>
		</p>

		<p>
			<span><img alt="giphy.gif" class="ipsImage" data-ratio="75.81" height="608" style="height:auto;width:401px;" width="802" src="https://media.giphy.com/media/u1SaddwXaeA9dTxQDX/giphy.gif" loading="lazy"></span>
		</p>

		<p>
			<strong><span style="font-size:16px;">/Replace [block] &lt;new&gt; (/r)</span></strong>
		</p>

		<p>
			<em>/Replace </em>is a must-have command in your arsenal. What this command does is replaces all blocks of the same type within your selection. In this example, I am replacing white with blue. As mentioned above, you can also use /ma for this if you want to replace [type] blocks in your map. If you want to make it even easier, MCGalaxy has the command <em>/ReplaceAll (/ra) </em>which does exactly that.
		</p>

		<p>
			<strong><span style="font-size:16px;"><img alt="giphy.gif" class="ipsImage" data-ratio="75.83" height="364" style="height:auto;width:401px;" width="480" src="https://media.giphy.com/media/HpCueEFepzZGT7OgmR/giphy.gif" loading="lazy"></span></strong>
		</p>

		<p>
			<strong><span style="font-size:16px;">/ReplaceNot [block] &lt;new&gt; (/rn)</span></strong>
		</p>

		<p>
			<em>/ReplaceNot </em>does the exact opposite of <em>/Replace</em> and replaces all blocks except the ones you mention. In this example, I did <em>/ReplaceNot white</em> and as you can see, all of the blocks except the white were replaced.
		</p>

		<p>
			<img alt="giphy.gif" class="ipsImage" data-ratio="75.81" height="608" style="height:auto;width:401px;" width="802" src="https://media.giphy.com/media/mGYgfgWs03glDZ2bzA/giphy.gif" loading="lazy"></p>

		<p>
			<strong><span style="font-size:16px;">/ReplaceBrush [block] [brush name] &lt;percentages&gt; (/rb)</span></strong>
		</p>

		<p>
			<em>/ReplaceBrush </em>is arguably one of the hardest commands to learn and it is recommended that you practice this a bunch before applying it into your builds. Do not be intimidated by this command, however. Yes, it is a difficult command to learn but the results are a masterpiece and it is by far, one of my favourite commands to use when building. There are a lot of ways this command can be used but I will only be showing you the ones I use the most.
		</p>

		<p>
			Here are some examples of common brushes. You can see all brushes available using <em>/Brushes</em>. Play around with them and see which ones you like.
		</p>

		<p>
			<em>/rb white random</em>
		</p>

		<p>
			<img alt="giphy.gif" class="ipsImage" data-ratio="75.81" height="608" style="height:auto;width:401px;" width="802" src="https://media.giphy.com/media/usOVk1HgOdYf5gxaIq/giphy.gif" loading="lazy"></p>

		<p>
			<em>/rb white cloudy</em>
		</p>

		<p>
			<em><img alt="giphy.gif" class="ipsImage" data-ratio="75.81" height="608" style="height:auto;width:401px;" width="802" src="https://media.giphy.com/media/kkJ9HLljlGXLmXWT9C/giphy.gif" loading="lazy"></em>
		</p>

		<p>
			Now is where things get pretty tricky. We can use percentages with these brushes to control how much of each block we want to cover. To do this, we can add [block/percentage] to the end of the command. For example, if I wanted <strong>50% stone</strong>, I could do<strong> stone/50</strong>. You can do this for as many blocks as you want and the percentages don't even need to add up to 100, though you should try for the best result.
		</p>

		<p>
			<em>/rb white random red/25 yellow/25 blue/25 lime/25</em>
		</p>

		<p>
			<em><img alt="giphy.gif" class="ipsImage" data-ratio="75.83" height="364" style="height:auto;width:401px;" width="480" src="https://media.giphy.com/media/V21ix1v6ITfSxGKEV5/giphy.gif" loading="lazy"></em>
		</p>

		<p>
			This might look like a mouthful and it might be scary but it is actually simpler than you think!
		</p>

		<p>
			<strong><span style="font-size:16px;">/Fill (/f)</span></strong>
		</p>

		<p>
			<em>/Fill </em>is similar to <em>/Replace </em>but it has some differences. /Fill essentially replaces all blocks of the same type that are connected to the mark you set. In this example, I am clicking on a <strong>white block</strong> whilst holding a <strong>red block </strong>in my hotbar. This will make it so all white blocks that are touching the block I clicked will be replaced with red blocks. Do note how the dark gray blocks have not been affected because they are not of the same type.
		</p>

		<p>
			<img alt="giphy.gif" class="ipsImage" data-ratio="75.83" height="364" style="height:auto;width:401px;" width="480" src="https://media.giphy.com/media/uPvg7NNDwwht4ZbYnc/giphy.gif" loading="lazy"></p>

		<p>
			You may also find yourself wondering <em>"How can I fill only one layer?" </em>and there is a simple answer to that: <em>/Fill 2d (/f2d)</em>. Keep in mind though that you need to be looking directly at the surface you wish to fill, see below.
		</p>

		<p>
			<img alt="giphy.gif" class="ipsImage" data-ratio="75.83" height="364" style="height:auto;width:401px;" width="480" src="https://media.giphy.com/media/Ps6x5x29YzqnCBozaM/giphy.gif" loading="lazy"></p>

		<p>
			<strong><span style="font-size:16px;">/FixGrass (/fg)</span></strong>
		</p>

		<p>
			How many of us have had to deal with grass blocks turning into dirt blocks and messing up our builds? With <em>/FixGrass</em>, this command will turn all dirt blocks into grass blocks again, if there is no block on top of it. Do note that on <strong>Not Awesome 2</strong>, this command does not take a selection and instead applies the operation to the whole map.
		</p>

		<p>
			<img alt="giphy.gif" class="ipsImage" data-ratio="75.81" height="364" style="height:auto;width:401px;" width="480" src="https://media.giphy.com/media/uiMdd6x2LvSZFPug3U/giphy.gif" loading="lazy"></p>

		<p>
			<strong><span style="font-size:16px;">/Outline [block]</span></strong>
		</p>

		<p>
			<em>/Outline </em>is a pretty slept-upon command. If used in the right way, it can be a powerful tool. You can use it to outline certain blocks and you can even use it in some advanced methods such as grass/foliage for terrain. We will cover this more in chapter 5. In this example, I replaced the dark gray blocks with white blocks to give it a white outline.
		</p>

		<p>
			<img alt="giphy.gif" class="ipsImage" data-ratio="75.83" height="364" style="height:auto;" width="480" src="https://media.giphy.com/media/tL2cbm3j5QxQOYwk2R/giphy.gif" loading="lazy"></p>
	</div>

	<div data-role="contentPage">
		<hr data-role="contentPageBreak"><p>
			<span style="font-size:18px;"><b>Geometric/shape commands</b></span>
		</p>

		<p>
			These commands will help you to create shapes of various different styles and sizes. A large number of these commands will also be useful to you in chapter 3 so I suggest learning these in particular if you haven't already.
		</p>

		<p>
			<strong><span style="font-size:16px;">/Line (/l)</span></strong>
		</p>

		<p>
			<em>/Line </em>essentially draws a line between two points. Nothing more, nothing less. You can use <em>/Line connected </em>to connect all lines to give some sort of polygon tool effect.
		</p>

		<p>
			<span><img alt="giphy.gif" class="ipsImage" data-ratio="75.81" height="608" style="height:auto;width:401px;" width="802" src="https://media.giphy.com/media/E5Z5kDIHip56nO67bS/giphy.gif" loading="lazy"></span>
		</p>

		<p>
			<strong><span style="font-size:16px;">/Bezier (/curve)</span></strong>
		</p>

		<p>
			Similarly to <i>/Line</i>, <em>/Bezier </em>also creates a line between two points. The key difference between the two is that /Bezier takes a third argument which bends/curves the line.
		</p>

		<p>
			<img alt="giphy.gif" class="ipsImage" data-ratio="75.81" height="608" style="height:auto;width:401px;" width="802" src="https://media.giphy.com/media/tk9riVgjpSPsUS1LCG/giphy.gif" loading="lazy"></p>

		<p>
			<strong><span style="font-size:16px;">/Sphere (/sp)</span></strong>
		</p>

		<p>
			There are <em>a lot</em> of subsections of <em>/Sphere</em> that should probably be their own commands so I'm not going to cover <em>all</em> of them, only the ones that are the most useful.
		</p>

		<p>
			<img alt="giphy.gif" class="ipsImage" data-ratio="75.83" height="364" style="height:auto;width:401px;" width="480" src="https://media.giphy.com/media/1wbU9Q8kL6qre4ehxs/giphy.gif" loading="lazy"></p>

		<p>
			<strong><span style="font-size:16px;">/Sphere (/sphereh or /sph)</span></strong>
		</p>

		<p>
			Pretty much does the same thing as <em>/Sphere</em> but makes it hollow on the inside.
		</p>

		<p>
			<img alt="giphy.gif" class="ipsImage" data-ratio="75.83" height="364" style="height:auto;width:401px;" width="480" src="https://media.giphy.com/media/VbUCs4Oxnxx2jKWlo7/giphy.gif" loading="lazy"></p>

		<p>
			<strong><span style="font-size:16px;">/Sphere circle (/circle)</span></strong>
		</p>

		<p>
			Makes a circle instead of a sphere.
		</p>

		<p>
			<img alt="giphy.gif" class="ipsImage" data-ratio="75.81" height="608" style="height:auto;width:401px;" width="802" src="https://media.giphy.com/media/aPX2OQmpQsTPcF7pBF/giphy.gif" loading="lazy"></p>

		<p>
			<strong><span style="font-size:16px;">/Sphere circleh (/circleh)</span></strong>
		</p>

		<p>
			Pretty much does the same thing as <em>/Circle </em>but makes it hollow. Very useful for creating rings and outlines of circles.
		</p>

		<p>
			<img alt="giphy.gif" class="ipsImage" data-ratio="75.81" height="608" style="height:auto;width:401px;" width="802" src="https://media.giphy.com/media/mmo6BeiyYKKuAMYzSE/giphy.gif" loading="lazy"></p>

		<p>
			<strong><span style="font-size:16px;">/Torus (/tor or /donut)</span></strong>
		</p>

		<p>
			I don't particularly use this command too much but I have found it to be super unique and interesting because of all of the different shapes you can make with it. For instance if you have a layout like this, you can make a diamond or egg shape.
		</p>

		<p>
			<img alt="giphy.gif" class="ipsImage" data-ratio="75.83" height="364" style="height:auto;width:401px;" width="480" src="https://media.giphy.com/media/tLWpPyG5SdRi714ps0/giphy.gif" loading="lazy"></p>

		<p>
			And if you have a layout like this, you can make a donut shape.
		</p>

		<p>
			<span><img alt="giphy.gif" class="ipsImage" data-ratio="75.83" height="364" style="height:auto;width:401px;" width="480" src="https://media.giphy.com/media/1y4tf1q8VlYY23Zur3/giphy.gif" loading="lazy"></span>
		</p>

		<p>
			<strong><span style="font-size:16px;">/Triangle (/tri)</span></strong>
		</p>

		<p>
			<em>/Triangle </em>is a pretty rad command, especially if you are looking at making diagonal buildings. It takes three arguments <em>(as that makes sense for a triangle)</em>.
		</p>

		<p>
			<span><img alt="giphy.gif" class="ipsImage" data-ratio="75.83" height="364" style="height:auto;width:401px;" width="480" src="https://media.giphy.com/media/qhdwrsQE3xPc3PbDR0/giphy.gif" loading="lazy"></span>
		</p>
	</div>

	<div data-role="contentPage">
		<hr data-role="contentPageBreak"><p>
			<span style="font-size:18px;"><b>Storage commands</b></span>
		</p>

		<p>
			The following commands are all super useful and a great builder should be using these consistently. They store things into the server's memory so you can retrieve it later on.
		</p>

		<p>
			<strong><span style="font-size:16px;">/Copy (/c)</span></strong>
		</p>

		<p>
			<em>/Copy</em> is a huge help when you want to make multiple of the same thing, think of it as a cloning command. What I like to do is use gold blocks in the corners of the things I want to copy and then click on them, but you are more than welcome to use <em>/mark</em> here as well.
		</p>

		<p>
			<img alt="giphy.gif" class="ipsImage" data-ratio="75.83" height="364" style="height:auto;width:401px;" width="480" src="https://media.giphy.com/media/4Gk8Y9apzWKALYga03/giphy.gif" loading="lazy"></p>

		<p>
			A super useful thing about this command that very few people know about is that you can actually save copies between sessions! Once you have copied your build, you can type <em>/Copy save [name] </em>which will save it into the server's memory and you can retrieve it whenever you want by typing <em>/Copy load [name]</em>. For example, let's say I wanted to save this tree as "pine", I could do <em>/Copy save pine</em> and then to retrieve it again, <em>/Copy load pine</em>. I cannot tell you how useful this is, especially when you are working on bigger worlds and need to copy/paste lots of different things.
		</p>

		<p>
			<strong><span style="font-size:16px;">/Paste &lt;block&gt; &lt;block 2&gt; (/v)</span></strong>
		</p>

		<p>
			Now that we have our build copied, we need to use /paste to finish the process. Wherever you click, the build will be loaded from the server's memory and applied into your world. The reason I like to keep the gold blocks is so I can visually see where I want my paste to go.
		</p>

		<p>
			<img alt="giphy.gif" class="ipsImage" data-ratio="75.83" height="364" style="height:auto;width:401px;" width="480" src="https://media.giphy.com/media/VISwR7HTWgXhd7OJGL/giphy.gif" loading="lazy"></p>

		<p>
			You may have noticed the optional <em>&lt;block&gt; </em>argument in the title there, all this does is makes it so these are the only blocks that are pasted. If not specified, all blocks will be pasted. You can also use <em>/PasteNot</em><em> [block]</em> to paste all but the blocks specified.
		</p>

		<p>
			<strong><span style="font-size:16px;">/Spin &lt;axis&gt; &lt;degrees&gt; (/rotate)</span></strong>
		</p>

		<p>
			Before using <em>/Paste, </em>you can choose whether or not to rotate your build. In this example, I rotated my build 180 degrees and then executed /Paste. We will learn more about axes and the mathematical aspect of building in chapter 3.
		</p>

		<p>
			<img alt="giphy.gif" class="ipsImage" data-ratio="75.83" height="364" style="height:auto;width:401px;" width="480" src="https://media.giphy.com/media/jVoaNHgwMz7GG1Hljh/giphy.gif" loading="lazy"></p>

		<p>
			<strong><span style="font-size:16px;">/Mirror &lt;axis&gt;</span></strong>
		</p>

		<p>
			<em>/Mirror</em> is super useful command to mirror your builds. There isn't a whole lot of explaining that needs to be done here but do note that this command is relatively new and used to be a subsection of <em>/Spin</em>. If you are playing on a newer version of MCGalaxy, you don't need to worry about this. 
		</p>

		<p>
			<img alt="giphy.gif" class="ipsImage" data-ratio="75.83" height="364" style="height:auto;width:401px;" width="480" src="https://media.giphy.com/media/AtT2wtZcqBLXbmDQVu/giphy.gif" loading="lazy"></p>

		<p>
			<strong><span style="font-size:16px;">/Undo &lt;time&gt; (/u)</span></strong>
		</p>

		<p>
			Made a mistake and want to get rid of it? You can use <em>/undo </em>to revert the build and try again. By default, this does your last operation <em>only</em> but if you specify a time period <em>(e.g, 5m for 5 minutes)</em>, then all operations performed in the last 5 minutes will be undone.
		</p>

		<p>
			<img alt="giphy.gif" class="ipsImage" data-ratio="75.83" height="364" style="height:auto;width:401px;" width="480" src="https://media.giphy.com/media/VhpLD6qYhbmP6IrQtF/giphy.gif" loading="lazy"></p>

		<p>
			<strong><span style="font-size:16px;">/Redo</span></strong>
		</p>

		<p>
			Made a mistake of your fixing of the first mistake? You can use <em>/redo </em>to bring back your build. Do note though, that this command is known to have issues when used too frequently such as build overlaps. It is recommended that you only use this command where needed and not immediately after each use.
		</p>

		<p>
			<img alt="giphy.gif" class="ipsImage" data-ratio="75.83" height="364" style="height:auto;width:401px;" width="480" src="https://media.giphy.com/media/6C1Tl3sE6JzVc86Y2z/giphy.gif" loading="lazy"></p>
	</div>

	<div data-role="contentPage">
		<hr data-role="contentPageBreak"><p>
			<span style="font-size:18px;"><b>Conclusion</b></span>
		</p>

		<p>
			<span>You may have known about a good deal of these commands but hopefully you were able to learn something new or some newer applications on how to use them. If you have any building commands that you are unsure about, feel free to comment below and I will update the thread.</span>
		</p>
	</div>
</div>]]></description><guid isPermaLink="false">1731</guid><pubDate>Sun, 27 Feb 2022 23:54:43 +0000</pubDate></item><item><title>how to go to spectator</title><link>https://f.classicube.net/topic/1324-how-to-go-to-spectator/</link><description><![CDATA[<p>
	all you gotta do is just say /spectate <span style="background-color:#ffffff;color:#222222;font-size:14px;">to show what block a spectated player is holding.</span>
</p>]]></description><guid isPermaLink="false">1324</guid><pubDate>Fri, 18 Jun 2021 00:06:23 +0000</pubDate></item><item><title>How to Create Maps On Not Awesome 2!!!</title><link>https://f.classicube.net/topic/1328-how-to-create-maps-on-not-awesome-2/</link><description><![CDATA[
<p>
	1. Join The Server Not Awesome 2
</p>

<p>
	2. type /os map add
</p>

<p>
	3. type /goto "insert user"+"if maps created"
</p>

<p>
	And Your Done!!!!!
</p>

<p>
	PS : its a tutorial for noobs who doesnt now how to create maps dont take it seriously
</p>
]]></description><guid isPermaLink="false">1328</guid><pubDate>Fri, 18 Jun 2021 19:41:10 +0000</pubDate></item><item><title>How to create Custom blocks with custom textures</title><link>https://f.classicube.net/topic/976-how-to-create-custom-blocks-with-custom-textures/</link><description><![CDATA[
<p>
	(If you won't add textures skip to step 3)
</p>

<p>
	<em><strong>Requirements:</strong></em>
</p>

<p>
	- Copy paste knowledge
</p>

<p>
	- Acces to classicube files
</p>

<p>
	- A program to open .zip files
</p>

<p>
	- paint.net  or gimp (Don't use Microsoft paint /3D or the transparency will be gone from the entire image) 
</p>

<p>
	- A classicube server with /gb or /lb and textures (in my case I use MCGalaxy)
</p>

<p>
	 
</p>

<p>
	<em><strong>Step 1: </strong></em><span style="color:#2ecc71;">Creating the texture</span>
</p>

<p>
	First, you need to get the textures to be able to modify them.
</p>

<p>
	Go to the folder where all your classicube files are. There try to find a folder named: <img alt="image.png.ed912ee13b7a2742f1ccfa309e4de640.png" class="ipsImage ipsImage_thumbnailed" data-fileid="839" style="height:auto;" width="75" src="https://f.classicube.net/uploads/monthly_2021_03/image.png.ed912ee13b7a2742f1ccfa309e4de640.png" loading="lazy" height="19.5"></p>

<p>
	In <img alt="image.png.ed912ee13b7a2742f1ccfa309e4de640.png" class="ipsImage ipsImage_thumbnailed" data-fileid="839" style="height:auto;" width="75" src="https://f.classicube.net/uploads/monthly_2021_03/image.png.ed912ee13b7a2742f1ccfa309e4de640.png" loading="lazy" height="19.5">there is a file named: <img alt="image.png.7fbe62c244a90aaf4090867a1ffe3388.png" class="ipsImage ipsImage_thumbnailed" data-fileid="840" style="height:auto;" width="89" src="https://f.classicube.net/uploads/monthly_2021_03/image.png.7fbe62c244a90aaf4090867a1ffe3388.png" loading="lazy" height="25.81"></p>

<p>
	<strong>Copy</strong> the file and<strong> paste</strong> it into your desktop or anywhere else that is not in the classicube files.
</p>

<p>
	Open <img alt="image.png.7fbe62c244a90aaf4090867a1ffe3388.png" class="ipsImage ipsImage_thumbnailed" data-fileid="840" style="height:auto;" width="89" src="https://f.classicube.net/uploads/monthly_2021_03/image.png.7fbe62c244a90aaf4090867a1ffe3388.png" loading="lazy" height="25.81">with the program you use to open .zip file.<span> </span>
</p>

<p>
	There, try to find <img alt="image.png.4f4ec272ac5f407daeedcf0761424915.png" class="ipsImage ipsImage_thumbnailed" data-fileid="841" style="height:auto;" width="84" src="https://f.classicube.net/uploads/monthly_2021_03/image.png.4f4ec272ac5f407daeedcf0761424915.png" loading="lazy" height="21">and extract the file from <img alt="image.png.7fbe62c244a90aaf4090867a1ffe3388.png" class="ipsImage ipsImage_thumbnailed" data-fileid="840" style="height:auto;" width="89" src="https://f.classicube.net/uploads/monthly_2021_03/image.png.7fbe62c244a90aaf4090867a1ffe3388.png" loading="lazy" height="25.81">.
</p>

<p>
	Open <img alt="image.png.4f4ec272ac5f407daeedcf0761424915.png" class="ipsImage ipsImage_thumbnailed" data-fileid="841" style="height:auto;" width="84" src="https://f.classicube.net/uploads/monthly_2021_03/image.png.4f4ec272ac5f407daeedcf0761424915.png" loading="lazy" height="21">and start editing.
</p>

<p>
	<img alt="terrain.png.14557b58246dd0cbc96fe5b17588886f.png" class="ipsImage ipsImage_thumbnailed" data-fileid="842" style="height:auto;" width="256" src="https://f.classicube.net/uploads/monthly_2021_03/terrain.png.14557b58246dd0cbc96fe5b17588886f.png" loading="lazy" height="256"> To create a new texture replace <img alt="image.png.0a1834b5f84f395616ebae7c9c5bb5e8.png" class="ipsImage ipsImage_thumbnailed" data-fileid="843" style="height:auto;" width="16" src="https://f.classicube.net/uploads/monthly_2021_03/image.png.0a1834b5f84f395616ebae7c9c5bb5e8.png" loading="lazy" height="16"> with the texture/textures you will add                                                                                                                                                                                                   (If you will add an animation read<span> </span> <img alt="image.png.2c35391e18ca12a875387277646d2d38.png" class="ipsImage ipsImage_thumbnailed" data-fileid="847" style="height:auto;" width="101" src="https://f.classicube.net/uploads/monthly_2021_03/image.png.2c35391e18ca12a875387277646d2d38.png" loading="lazy" height="19.19">to understand how to add animations work)
</p>

<p>
	After adding the texture save the changes and take<img alt="image.png.4f4ec272ac5f407daeedcf0761424915.png" class="ipsImage ipsImage_thumbnailed" data-fileid="841" style="height:auto;" width="84" src="https://f.classicube.net/uploads/monthly_2021_03/image.png.4f4ec272ac5f407daeedcf0761424915.png" loading="lazy" height="21">again inside in<img alt="image.png.7fbe62c244a90aaf4090867a1ffe3388.png" class="ipsImage ipsImage_thumbnailed" data-fileid="840" style="height:auto;" width="89" src="https://f.classicube.net/uploads/monthly_2021_03/image.png.7fbe62c244a90aaf4090867a1ffe3388.png" loading="lazy" height="25.81"> and upload <img alt="image.png.7fbe62c244a90aaf4090867a1ffe3388.png" class="ipsImage ipsImage_thumbnailed" data-fileid="840" style="height:auto;" width="89" src="https://f.classicube.net/uploads/monthly_2021_03/image.png.7fbe62c244a90aaf4090867a1ffe3388.png" loading="lazy" height="25.81"> to google drive or anything else
</p>

<p>
	 
</p>

<p>
	<strong><em>Step 2: </em></strong><span style="color:#2ecc71;">Enable the textures</span>
</p>

<p>
	Go to you server's files
</p>

<p>
	In your server's files go to <img alt="image.png.f2d7d49ca0f2033f4e83edc5672534df.png" class="ipsImage ipsImage_thumbnailed" data-fileid="849" style="height:auto;" width="85" src="https://f.classicube.net/uploads/monthly_2021_03/image.png.f2d7d49ca0f2033f4e83edc5672534df.png" loading="lazy" height="22.95">and in the folder find <img alt="image.png.3d4e6f4caf4c16ec4ee6427de5b20555.png" class="ipsImage ipsImage_thumbnailed" data-fileid="850" style="height:auto;" width="109" src="https://f.classicube.net/uploads/monthly_2021_03/image.png.3d4e6f4caf4c16ec4ee6427de5b20555.png" loading="lazy" height="23.98"></p>

<p>
	Open the file and find: <img alt="image.png.4f418b24687c0b42f2cd9de4958f52c5.png" class="ipsImage ipsImage_thumbnailed" data-fileid="851" style="height:auto;" width="261" src="https://f.classicube.net/uploads/monthly_2021_03/image.png.4f418b24687c0b42f2cd9de4958f52c5.png" loading="lazy" height="20.88"></p>

<p>
	Set the url with the url of the place you uploaded <img alt="image.png.7fbe62c244a90aaf4090867a1ffe3388.png" class="ipsImage ipsImage_thumbnailed" data-fileid="840" style="height:auto;" width="89" src="https://f.classicube.net/uploads/monthly_2021_03/image.png.7fbe62c244a90aaf4090867a1ffe3388.png" loading="lazy" height="25.81"> 
</p>

<p>
	Start the server and join your server
</p>

<p>
	 
</p>

<p>
	<strong><em>Step 3:</em></strong><span style="color:#2980b9;"> Block creation</span>
</p>

<p>
	The server will ask you if you want to use their textures. If not, press F10 to check if the textures are enabled 
</p>

<p>
	To add the block in a specific level use /lb.
</p>

<p>
	To add the block in the entire the server use /gb
</p>

<p>
	then use
</p>

<p>
	<strong>/gb add</strong>
</p>

<p>
	then <strong> /gb (name of the block)</strong>
</p>

<p>
	then <strong>/gb 0</strong> if it is a solid block like stone or type <strong>/gb 1</strong> if its a sprite like flowers
</p>

<p>
	It will ask for textures of the block. To know wich texture is wich press F10. Each one has its own texture id 
</p>

<p>
	<img alt="image.png.4f65a4dee31ebb012bd38c3cb8b98a8d.png" class="ipsImage ipsImage_thumbnailed" data-fileid="852" style="height:auto;" width="127" src="https://f.classicube.net/uploads/monthly_2021_03/image.png.4f65a4dee31ebb012bd38c3cb8b98a8d.png" loading="lazy" height="93.98"> EXAMPLE: The bedrock texture has an ID of 17
</p>

<p>
	The other things <strong>/gb</strong> will explain to you
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Reply to this if you need help
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">976</guid><pubDate>Thu, 18 Mar 2021 16:02:12 +0000</pubDate></item><item><title>How to make a server</title><link>https://f.classicube.net/topic/1342-how-to-make-a-server/</link><description><![CDATA[
<p>
	in order to make a server, you need to download McGalaxy on your computer by clicking <a href="https://github.com/UnknownShadow200/MCGalaxy/releases" rel="external nofollow">here</a>. Download it and then once your done, then click "McGalaxy.exe" Then you will see another window pop up. 
</p>

<p>
	Now, click settings in the upper right corner. Change your server name. now visit all of the tabs and once your done editing them, go back to he first tab. Now below your server's name, click Port forward. Now you should follow what it said because I never got to that point. Now your server should be ready!
</p>
]]></description><guid isPermaLink="false">1342</guid><pubDate>Sat, 26 Jun 2021 18:07:00 +0000</pubDate></item><item><title>Downloading CC</title><link>https://f.classicube.net/topic/1162-downloading-cc/</link><description><![CDATA[
<p>
	So I have seen alot of people have chromebooks so heres a how to, on downloading cc on your chromebook  
</p>

<div class="ipsEmbeddedVideo">
	<div>
		<iframe allowfullscreen="" frameborder="0" height="113" width="200" src="https://www.youtube.com/embed/x6X0yPo5jwU?feature=oembed" loading="lazy"></iframe>
	</div>
</div>

<p>
	Your friendly neighborhood noob <br>
	Tet
</p>
]]></description><guid isPermaLink="false">1162</guid><pubDate>Sun, 25 Apr 2021 11:22:50 +0000</pubDate></item><item><title>How to download maps</title><link>https://f.classicube.net/topic/195-how-to-download-maps/</link><description><![CDATA[
<p>
	Did you know you can download maps buy uploading to mediafire? oyu can even do it without an account! just go to www.mediafire.com click upload and choose your file, click on when is done copy the link, and your done.
</p>

<p>
	here is my map: <a href="http://www.mediafire.com/file/x8r3aa0yb7swoue/nothing_in_existince_except_water_brick_bedrock_steve_air.cw/file" rel="external nofollow">http://www.mediafire.com/file/x8r3aa0yb7swoue/nothing_in_existince_except_water_brick_bedrock_steve_air.cw/file</a>
</p>
]]></description><guid isPermaLink="false">195</guid><pubDate>Tue, 23 Jun 2020 15:01:31 +0000</pubDate></item><item><title><![CDATA[How to set up a server->irc->discord bridge]]></title><link>https://f.classicube.net/topic/1096-how-to-set-up-a-server-irc-discord-bridge/</link><description><![CDATA[
<p style="text-align:center;">
	<span style="font-size:26px;">If you are only planning on using IRC to connect your ClassiCube server to Discord and you are running MCGalaxy, you're better off just using its inbuilt Discord relay bot. More info can be found <a href="https://github.com/UnknownShadow200/MCGalaxy/wiki/Discord-relay-bot" rel="external nofollow">here</a>.</span>
</p>

<p style="text-align:center;">
	<span style="font-size:26px;">This tutorial is still valid, however, and you can still use IRC if you wish.</span>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;">Hello!</span>
</p>

<p>
	<span style="font-size:18px;">In this tutorial, I will be showing you how to set up a bridge between a ClassiCube server, IRC, Discord and back.</span>
</p>

<p>
	<span style="font-size:20px;">Prerequisites:</span>
</p>

<ul><li>
		A server running software which supports IRC (<a href="https://github.com/UnknownShadow200/MCGalaxy/releases/latest" rel="external nofollow">MCGalaxy</a> is the most common one)
	</li>
	<li>
		A computer which has a terminal prompt and supports Node.js/npm (this is unlikely, but possible to work on chromebooks)
	</li>
	<li>
		A Discord account (so you can create the bot)
	</li>
	<li>
		A brain
	</li>
</ul><p>
	 
</p>

<p>
	<span style="font-size:20px;">1. Set up IRC on your ClassiCube server</span>
</p>

<p>
	<span style="font-size:18px;">On MCGalaxy, this is somewhere in properties/server.properties. Just enable IRC, keep the server and port as they are, don't put anything in OP channel and put whatever you want for channel. (Make sure that it starts with # though). I'll use #example for this tutorial.</span>
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;">2. Install npm </span><span style="font-size:12px;"><a href="https://www.w3schools.com/whatis/whatis_npm.asp" rel="external nofollow">(what is npm?)</a></span>
</p>

<p>
	<span style="font-size:18px;">On Linux, you can use your package manager of choice to install npm. Examples:</span>
</p>

<p>
	<span style="font-size:18px;">Ubuntu (and other Debian-based distros)</span>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted">
<span class="pln">sudo apt install npm</span></pre>

<p>
	 
</p>

<p>
	<span style="font-size:18px;">Arch:</span>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted">
<span class="pln">sudo pacman -S npm</span></pre>

<p>
	<span style="font-size:11px;">Note: you may need to additionally install Node.js as well, haven't tried it myself.</span>
</p>

<p>
	<span style="font-size:18px;">On Windows and macOS, you will have to download and install it from <a href="https://nodejs.org/en/download/" rel="external nofollow">Node.js's</a> download page. It is recommended that you use the LTS version, but "Current" works as well.</span>
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;">3. Create a configuration file for discord-irc</span>
</p>

<p>
	<span style="font-size:18px;">Go to a new directory which you'll use for your bot and create a new .json file. Here is what you'll put in it (explanations for the numbers will be given below):</span>
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted">
<span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="str">"nickname"</span><span class="pun">:</span><span class="pln"> </span><span class="str">"1"</span><span class="pun">,</span><span class="pln">
    </span><span class="str">"server"</span><span class="pun">:</span><span class="pln"> </span><span class="str">"2"</span><span class="pun">,</span><span class="pln">
    </span><span class="str">"discordToken"</span><span class="pun">:</span><span class="pln"> </span><span class="str">"3"</span><span class="pun">,</span><span class="pln">
    </span><span class="str">"channelMapping"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="str">"4"</span><span class="pun">:</span><span class="pln"> </span><span class="str">"5"</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	<span style="font-size:18px;">1 - Replace this with the nickname of the bot. This will be seen in-game and from the IRC channel. It is recommended that you just set this to "Discord".</span>
</p>

<p>
	<span style="font-size:18px;">2 - Replace this with the IRC server you're using. MCGalaxy uses "irc.esper.net" by default.</span>
</p>

<p>
	<span style="font-size:18px;">3 - Replace this with your Discord bot's token (NEVER SHARE IT WITH ANYONE ELSE!). More instructions in step 4.</span>
</p>

<p>
	<span style="font-size:18px;">4 - Replace this with the Discord channel's ID. Essentially, all messages will be sent in that channel. To get a channel's ID, right-click it and click "Copy ID". If you don't see this, enable Developer Mode from the Advanced section of the Discord settings.</span>
</p>

<p>
	<span style="font-size:18px;">5 - Replace this with the IRC channel's name. If you set your MCGalaxy server's IRC channel to #example, put #example there.</span>
</p>

<p>
	<span style="font-size:18px;"><a href="https://github.com/reactiflux/discord-irc#configuration" rel="external nofollow">Note: you can expand this file with more options if you want. This is just the very minimal version.</a></span>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;">4. Create a new Discord bot and get its token</span>
</p>

<p>
	<span style="font-size:18px;">Creating a Discord bot is easy, you just have to go to <a href="https://discord.com/developers/applications" rel="external nofollow">My Applications on the Discord Developer Portal</a>, create a new application, then create a bot for it. Once that is done, click the button to copy the token and insert it into the json file you made above. Once again, do NOT share your token with anyone, ever.</span>
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;">5. Install discord-irc and run the bot</span>
</p>

<p>
	<span style="font-size:18px;">Open a terminal prompt (cmd.exe or powershell works on Windows) and cd to the directory in which the .json file is located, then install discord-irc using npm by writing this:</span>
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted">
<span class="pln">npm i </span><span class="pun">-</span><span class="pln">g discord</span><span class="pun">-</span><span class="pln">irc</span></pre>

<p>
	<span style="font-size:18px;">and pressing Enter/Return. After this, wait until it's installed. If it doesn't let you install it, try putting sudo before npm. (so sudo npm i -g discord-irc). This will give you root permissions and works only on Linux, you will also need to input your user password.</span>
</p>

<p>
	 
</p>

<p>
	<span style="font-size:18px;">Once discord-irc is installed, make sure that you are in the .json file's directory and run this from the terminal:</span>
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted">
<span class="pln">discord</span><span class="pun">-</span><span class="pln">irc </span><span class="pun">--</span><span class="pln">config </span><span class="pun">&lt;</span><span class="pln">name</span><span class="pun">&gt;.</span><span class="pln">json</span></pre>

<p>
	<span style="font-size:18px;">The bot should be running and should be relaying messages to/from the IRC, which by itself is connected to the ClassiCube server. To stop the bot, press Ctrl+C.</span>
</p>

<p>
	<span style="font-size:18px;">You can also run discord-irc from different directories, just use --config /path/to/&lt;name&gt;.json as the arguments.</span>
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;">That's it!</span>
</p>

<p>
	<span style="font-size:18px;">If you have any questions, extra tips or have anything to say about this, please let me know. Have a nice day and I hope this helps you!</span>
</p>

<p>
	<span style="font-size:18px;">~Alex</span>
</p>
]]></description><guid isPermaLink="false">1096</guid><pubDate>Mon, 12 Apr 2021 16:21:36 +0000</pubDate></item><item><title>Server Creation Guide: How to make a server</title><link>https://f.classicube.net/topic/401-server-creation-guide-how-to-make-a-server/</link><description><![CDATA[
<p>
	<em><strong><span style="font-size:26px;">Before we start:</span></strong></em>
</p>

<p>
	<em><strong>* Welcome to the MCGalaxy guide. Before reading onward, please do note that this guide is initially made for MCGalaxy version 1.9.0.6, as such, some of the things stated below may not work in either past versions. If not, tell me and I will update it.</strong> *</em>
</p>

<p>
	<span style="font-size:24px;">Starting the server</span>
</p>

<p>
	Starting the server and actually making it so it's online is the most crucial thing you're going to need to do in this guide. Everything else will be informative and/or optional.
</p>

<p>
	To start the server, make sure you download your release from <strong><a href="https://github.com/UnknownShadow200/MCGalaxy/releases" rel="external nofollow">here</a></strong>, keeping in-mind I will be using <strong>1.9.0.6</strong> to explain things. Once downloaded, you will need to extract the contents into a folder somewhere.
</p>

<p>
	Once complete, you will then need to run either<em> <strong>MCGalaxy.exe</strong></em> or <strong><em>MCGalaxyCLI.exe</em></strong>. This will open up a GUI/CLI menu allowing you to edit the server.
</p>

<p>
	Next, you will need to port forward. If your router does not support UPnP portforwarding, you can find a guide on how to port forward <strong><a href="http://pcworld.com/article/244314/how_to_forward_ports_on_your_router.html/" rel="external nofollow">here</a></strong>. If it does support UPnP port-forwarding then proceed to read on further. Upon opening the GUI, click the <strong>properties</strong> button. A menu like this should open <em>(yours will likely be different)</em>:
</p>

<p>
	<img alt="6crd2Ad.png" style="height: auto;" width="506" src="https://imgur.com/6crd2Ad.png" loading="lazy" height="602.14"></p>

<p>
	Next, you will need to enter a port in the port box <em>(or keep it as 25565)</em> and then click <strong>Server Port Utilities</strong>. Another GUI menu should pop up, here you will need to enter the previous port number into the box and then click <strong>Forward</strong>. If the forward was successful, you will receive a green <strong>Ports forwarded successfully using UPnP</strong> message. If not, then you will need to port forward manually by visiting the link above.
</p>

<p>
	Once you've done that, click out of that and press <strong>Save</strong> to save your progress. <em>Voilà</em>! Your server is ready to play. It should be around the bottom area of the server list, if it isn't try refreshing.
</p>

<p>
	<span style="font-size:24px;">Configuring your server</span>
</p>

<p>
	Editing server properties is probably the most fun part of starting a server, you have full access to features and you can toggle things you want enabled/disabled on the server. To do this, you need to open up that folder we were talking about earlier and navigate to the <strong>/properties</strong> folder. In here there will be 8 files that you can edit customize. You can also edit things from the GUI, but this gives you a bit more options to choose from.
</p>

<p>
	The only one you really need to check out is <strong>server.properties</strong>, if you've never edited a <em>.properties</em> file, you can open it in any text editing program. A guide is already waiting for you inside the file.
</p>

<p>
	A great way to display information is via the use of text files. You can modify the text files by going to the <strong>/text</strong> folder. Here you can edit things like the server welcome message, rules, news etc. All files can be opened via text editing software as well.
</p>

<p>
	<span style="font-size:24px;">Using the console</span>
</p>

<p>
	The console is used as a way of executing commands without having to be in-game. It also bypasses permissions so you can use any command from any rank with ease, though keep in mind, some commands purposely disable use from the console. Using commands is similar to in-game, which uses <em><strong>/[command]</strong></em>. If a <strong><em>/</em></strong> or <strong><em>!</em> </strong>isn't present at the start, it will be treated as a chat message.
</p>

<p>
	You should probably give yourself the <strong>superop</strong> or <strong>nobody </strong>rank to get full control of the server. See below for more information on assigning ranks.
</p>

<p>
	<span style="font-size:24px;">Ranks</span>
</p>

<p>
	Ranks are the assortment of players into hierarchical groups. To modify ranks, you will need to open the <strong>properties menu</strong> and then click on <strong>Ranks</strong>. Here you will be able to edit permission levels and colours etc.
</p>

<p>
	To rank a player to a specific rank, you will need to use <em><strong>/rank [username] [rank]</strong></em>. This will give them access to all the commands and permissions the specified rank has.
</p>

<p>
	<span style="font-size:24px;">Commands and Permissions</span>
</p>

<p>
	Commands are a great way of doing things in-game, but if everyone has the same permissions, the server could be come anarchic quite fast. One of the commands you will need to become familiar with is <em><strong>/cmdset</strong></em> which is the nobody rank by default. Using your console knowledge from before, typing <em><strong>/cmdset cmdset [rank name] </strong></em>will allow the rank of your choice and above to execute it from in-game. You can either keep the permissions as is (not recommended) or you can modify the permissions to your choosing.
</p>

<p>
	You can allow specific ranks to use a command by using <strong>/cmdset [command] +[rank name]</strong>, this will allow the rank to use the command even if they are not above the default command rank. You can also do <strong>/cmdset [command] -[rank name]</strong> to prevent a specific rank from using the command. And lastly for setting command permissions is <strong>/cmdset [command] [rank name] [extra permission number]</strong> which will allow the rank specified and above to be able to use the command's extra permission.
</p>

<p>
	A full list of commands can be found via <strong>/commands</strong> all all and each are colour-coded to their respective rank colours. Information can be found for each command using <strong>/help [command]</strong>.
</p>

<p>
	<span style="font-size:24px;">Levels (or worlds/realms/maps)</span>
</p>

<p>
	Levels are a world that players can visit/build on. By default the main level will be called main, but you can change that later by doing <em><strong>/main [level]</strong></em>.
</p>

<p>
	Most MCGalaxy servers support overseer levels which allow players to have their own private world that only they can build in. To allow this, just set the <em><strong>/overseer </strong></em>command to the lowest rank you want to be able to use the command. This will allow people to use <em><strong>/os map add</strong></em> and <em><strong>/os go</strong></em> as well as other overseer commands.
</p>

<p>
	To create a new level that isn't a realm world, you can type <em><strong>/newlvl create [map name] &lt;width&gt; &lt;height&gt; &lt;length&gt; &lt;theme&gt; &lt;seed&gt;</strong></em> (the ones in angled brackets are optional).
</p>

<p>
	If you're unhappy with the map size, you can change the size via <em><strong>/resizelvl [map name] [new width] [new height] [new length]</strong></em>. Keeping in mind, that decreasing a level size may remove blocks.
</p>

<p>
	Levels can be renamed via <em><strong>/renamelvl [map name] [new map name]</strong></em> and can be deleted via <em><strong>/deletelvl [map name]</strong></em>.
</p>

<p>
	<span style="font-size:24px;">Conclusion</span><br>
	There you have it, you now know everything you need to about setting up your very own MCGalaxy server.
</p>

<p>
	Something not making sense? Still confused about something? I'm usually around the community and am quite happy to help. You can find me on Discord via <strong><span>@</span>Venk#2020</strong> or on ByteIRC via <em>#PuissantRoyale</em>.
</p>
]]></description><guid isPermaLink="false">401</guid><pubDate>Fri, 30 Oct 2020 02:49:51 +0000</pubDate></item><item><title>Venk's Build School Chapter 1 - Introduction to building/building philosophy</title><link>https://f.classicube.net/topic/1016-venks-build-school-chapter-1-introduction-to-buildingbuilding-philosophy/</link><description><![CDATA[<div data-controller="core.front.core.articlePages">
	<div data-role="contentPage">
		<p>
			Here are a list of other tutorials in the series:
		</p>

		<p>
			<s><em>Chapter 1 - Introduction to building/building philosophy</em></s>
		</p>

		<p>
			<em>Chapter 2 - Familiarity with common commands/usages <strong>COMING SOON!</strong></em>
		</p>

		<p>
			<em>Chapter 3 - Basic geometries and build styles <strong>COMING SOON!</strong></em>
		</p>

		<p>
			<em>Chapter 4 - Detailing your builds <strong>COMING SOON!</strong></em>
		</p>

		<p>
			<em>Chapter 5 - Creating and landscaping terrain <strong>COMING SOON!</strong></em>
		</p>

		<p>
			<span style="font-size:24px;"><strong>Chapter 1 - Introduction to building/building philosophy</strong></span>
		</p>

		<p>
			Having been a builder for around 11 years now, I think it's safe to say I've definitely learned some things and techniques through the years and these guides will hopefully help you improve on becoming a better builder. Before we start, I'm aware that many of you are eager to get to building - which is great! - and will likely skip this first chapter. I can safely say that this chapter is the most crucial and essential chapter in the series and skipping it will make the building process harder than it has to be.
		</p>

		<p>
			<strong><span style="font-size:18px;">Planning your builds</span></strong>
		</p>

		<p>
			Many people like to rush into building without having an idea of what they're actually going to build. While this may work for some, for the rest of us, it makes building awkward and oftentimes we will lose inspiration quite quickly or head in a direction that we're not happy with. You should have a mental image of what you're wanting to build in your head. The more detail you provide, the better your build will be. Here are some examples taken from the <strong>Not Awesome 2</strong> server. Keywords are highlighted in bold.
		</p>

		<p>
			"I'm going to build a <strong>cozy, Elven house </strong>with some <strong>trees surrounding it</strong>."
		</p>

		<p>
			<img alt="Oo1q0Gq.png" class="ipsImage" data-ratio="41.75" height="215" style="height:auto;" width="515" src="https://i.imgur.com/Oo1q0Gq.png" loading="lazy"></p>

		<p>
			<em>Build created by <strong>Westbeam</strong>. Map: <strong>westbeam+2</strong> on <strong>Not Awesome 2</strong>.</em>
		</p>

		<p>
			"I'm going to build a <strong>European village</strong> with lots of buildings and <strong>next to some hills</strong>."
		</p>

		<p>
			<img alt="T7D6ieZ.png" class="ipsImage" data-ratio="41.75" height="215" style="height:auto;" width="515" src="https://i.imgur.com/T7D6ieZ.png" loading="lazy"></p>

		<p>
			<em>Build created by <strong>okias (saiko)</strong>. Map: <strong>okias+11</strong> on <strong>Not Awesome 2</strong>.</em>
		</p>

		<p>
			"I'm going to build a <strong>suburban neighbourhood</strong> with a <strong>city backdrop</strong>."
		</p>

		<p>
			<img alt="rhxug7M.png" class="ipsImage" data-ratio="41.75" height="215" style="height:auto;" width="515" src="https://i.imgur.com/rhxug7M.png" loading="lazy"></p>

		<p>
			<span><em>Build created by <strong>StarlightGlimmer</strong>. Map: <b>novacity</b> on <strong>Not Awesome 2</strong>.</em></span>
		</p>
	</div>

	<div data-role="contentPage">
		<hr data-role="contentPageBreak"><p>
			 
		</p>

		<p>
			<span style="font-size:18px;"><b>Gathering inspiration</b></span>
		</p>

		<p>
			Much like all great art pieces, artists need to gather inspiration from somewhere. Whether it be from your friends, builders you look up to or from the internet, inspiration can be found literally anywhere. A method I use quite often is going onto Google images and searching for "<em>[whatever you're after]<strong> ArtStation</strong></em>". The reason I use ArtStation for inspiration is because it is home to some of the craziest artists I've ever seen and there is an endless supply of inspiration to be found there.
		</p>

		<p>
			<img alt="llHNOAa.png" class="ipsImage" data-ratio="50.47" height="504" style="height:auto;width:535px;" width="1000" src="https://i.imgur.com/llHNOAa.png" loading="lazy"></p>

		<p>
			After you've found some inspiration, it's important to know the <em><strong>three Rs of building</strong></em>: <em>Remixing, Replicating and Ripping Off</em>.
		</p>

		<p>
			<span style="font-size:16px;"><b>Remixing</b></span>
		</p>

		<p>
			Remixing occurs when you find a source of inspiration and you put your own spin on it to make it look unique. It's probably the most common of the three. It doesn't have to look exactly the same but you should be getting inspiration towards certain things from the source. For example in the images below, I wanted to make a medieval gate for my city so I decided to use a similar shape as the original image in my build.
		</p>

		<p>
			<img alt="jonathan-dufresne-design-sketch02-jdufresne-week06-01-finish.jpg?1408399282" class="ipsImage" data-ratio="54.01" height="540" style="height:auto;width:535px;" width="1000" src="https://cdna.artstation.com/p/assets/images/images/000/172/076/large/jonathan-dufresne-design-sketch02-jdufresne-week06-01-finish.jpg?1408399282" loading="lazy"></p>

		<p>
			<em>"<a href="https://www.artstation.com/artwork/v11oY" rel="external nofollow">Castle Gate</a>" created by <a href="https://www.artstation.com/dufresnejo" rel="external nofollow">Jonathan Dufresne</a> sourced from: <b><a href="https://www.artstation.com/" rel="external nofollow">ArtStation</a></b>.</em>
		</p>

		<p>
			<em><img alt="i0jZ12t.png" class="ipsImage" data-ratio="60.37" height="603" style="height:auto;width:535px;" width="1000" src="https://i.imgur.com/i0jZ12t.png" loading="lazy"></em>
		</p>

		<p>
			<em>Build created by <strong>Venk</strong>. Map: <b>venk+1 </b>on <strong>Not Awesome 2</strong>.</em>
		</p>

		<p>
			<span style="font-size:16px;"><b>Replicating</b></span>
		</p>

		<p>
			To replicate something is to remake it almost the exact same as the source. I like to replicate things to learn new styles and from there, I can incorporate those styles into my future builds.
		</p>

		<p>
			<span style="font-size:14px;"><img alt="daniel-riise-stump-finished.jpg?1566758550" class="ipsImage" data-ratio="86.04" height="750" style="height:auto;width:535px;" width="872" src="https://cdna.artstation.com/p/assets/images/images/020/186/128/large/daniel-riise-stump-finished.jpg?1566758550" loading="lazy"></span>
		</p>

		<p>
			<em>"<a href="https://www.artstation.com/artwork/W2QnDG" rel="external nofollow">Statue Forest</a>" created by <b><a href="https://www.artstation.com/danielriise" rel="external nofollow">Daniel Riise</a></b> sourced from: <b><a href="https://www.artstation.com/" rel="external nofollow">ArtStation</a></b>.</em>
		</p>

		<p>
			<span style="font-size:14px;"><img alt="yMjLl4l.png" class="ipsImage" data-ratio="49.39" height="493" style="height:auto;width:535px;" width="1000" src="https://i.imgur.com/yMjLl4l.png" loading="lazy"></span>
		</p>

		<p>
			<em>Build created by <strong>Venk</strong>. Map: <b>riise</b> on <strong>Not Awesome 2</strong>.</em>
		</p>

		<p>
			As you can see, I've started to replicate the image here by building it to look the same. 
		</p>

		<p>
			<span style="font-size:16px;"><b>Ripping Off</b></span>
		</p>

		<p>
			Ripping Off is something you should not do, ever. Similarly to replicating, ripping off is making something exactly the same as something somebody else did, but claiming you made it entirely yourself without even acknowledging the original source. I've had a couple of instances of my maps being plagiarized over the years and it's definitely not a great feeling.
		</p>
	</div>

	<div data-role="contentPage">
		<hr data-role="contentPageBreak"><p>
			<span style="font-size:18px;"><b>Mapping out your builds</b></span>
		</p>

		<p>
			<span style="font-size:16px;"><b>Labelling</b></span>
		</p>

		<p>
			Now that you've got an idea in your head and some inspiration, let's put it to work and start building it. When starting a build, you should always try and map out what is going to go where before actually starting to build. To do this, most servers have a command to write text. In MCGalaxy, it is /write, for others it may be /writetext or something else. Below is an image of one of my maps after labelling what I want to go where.
		</p>

		<p>
			<img alt="qwXDpwo.png" class="ipsImage" data-ratio="41.75" height="215" style="height:auto;" width="515" src="https://i.imgur.com/qwXDpwo.png" loading="lazy"></p>

		<p>
			<em>Build created by <strong>Venk</strong>. Map: <b>venk+</b> on <strong>Not Awesome 2</strong>.</em>
		</p>

		<p>
			As you can see, I've labelled things like <strong>library</strong> and <strong>tavern</strong> so I know that a library and tavern will go here.
		</p>

		<p>
			<span style="font-size:16px;"><b>Creating assets</b></span>
		</p>

		<p>
			Assets are a nice and easy way to fill up your map quickly. While most people like to make all of their buildings unique and individualistic, using the same building once or twice isn't harmful at all. Away from your build - often in the sky -, you should make buildings or trees, essentially whatever assets you're planning on using later. This is so we can /copy them easily without getting the nasty excess blocks that we would  get just copying from within the build itself.
		</p>

		<p>
			<em><img alt="Ynuke8K.png" class="ipsImage" data-ratio="41.75" height="215" style="height:auto;" width="515" src="https://i.imgur.com/Ynuke8K.png" loading="lazy"></em>
		</p>

		<p>
			<em>Build created by <strong>Venk</strong>. Map: <b>venk2</b> on <b>Puissant Royale</b>.</em>
		</p>

		<p>
			After you've created an asset bundle, you can start copying and pasting some of these builds into your main build.
		</p>

		<p>
			<em><b><img alt="Up49ASE.png" class="ipsImage" data-ratio="41.75" height="215" style="height:auto;" width="515" src="https://i.imgur.com/Up49ASE.png" loading="lazy"></b></em>
		</p>

		<p>
			<em>Build created by <strong>Venk</strong>. Map: <b>venk2</b> on <b>Puissant Royale</b>.</em>
		</p>

		<p>
			<span style="font-size:16px;"><b>Colour coordination</b></span>
		</p>

		<p>
			Colour coordination is a great way to identify things and assort them into groups. You should try and use blocks and colours that you aren't using in your build as it can be quite confusing when removing the labels. Below is an example of using colour coordination to plan directions for a road system.
		</p>

		<p>
			<em><b><img alt="fYSAAQP.png" class="ipsImage" data-ratio="77.94" height="417" style="height:auto;" width="535" src="https://i.imgur.com/fYSAAQP.png" loading="lazy"></b></em>
		</p>

		<p>
			<em>Build created by <strong>okias (saiko)</strong>. Map: <strong>okias+15</strong> on <strong>Not Awesome 2</strong>.</em>
		</p>

		<p>
			Of course, this technique can be used in many different ways. For example, I use it to focus on areas that need to be worked on more than others.
		</p>

		<p>
			<img alt="ZKFpeN4.png" class="ipsImage" data-ratio="29.16" height="291" style="height:auto;width:535px;" width="1000" src="https://i.imgur.com/ZKFpeN4.png" loading="lazy"></p>

		<p>
			<img alt="A61ym9Y.png" class="ipsImage" data-ratio="48.60" height="486" style="height:auto;width:535px;" width="1000" src="https://i.imgur.com/A61ym9Y.png" loading="lazy"></p>

		<p>
			<em>Build created by <strong>Venk</strong>. Map: <strong>ombshire_old</strong> on <strong>Puissant Royale</strong>.</em>
		</p>

		<p>
			 
		</p>

		<p>
			<span style="font-size:16px;"><b>To-do lists</b></span>
		</p>

		<p>
			To-do lists are probably the best method of monitoring your progress and knowing which areas need to be worked on. Surprisingly, not many people use this technique in their builds but you'll notice that the best builders use this technique quite often. Using that /write command we discussed earlier, we can make checkboxes which we can cross off after we've finished an area.
		</p>

		<p>
			<em><img alt="jN1FRd2.png" class="ipsImage" data-ratio="62.11" height="572" style="height:auto;width:535px;" width="921" src="https://i.imgur.com/jN1FRd2.png" loading="lazy"></em>
		</p>

		<p>
			<em>Build created by <strong>okias (saiko)</strong>. Map: <strong>ochre2</strong> on <strong>Not Awesome 2</strong>.</em>
		</p>
	</div>

	<div data-role="contentPage">
		<hr data-role="contentPageBreak"><p>
			<span style="font-size:18px;"><b>Maintaining focus and motivation</b></span>
		</p>

		<p>
			Oftentimes when I build, I lose a lot of motivation on a project. In-fact, I'm notoriously known for having so many unfinished projects, it's scary. The reason for this is because I am constantly coming up with new ideas and want to build them all before I lose the flow, which I do recommend. If you're losing motivation on one of your builds, take a break from it and come back another time. If you keep going with no motivation/interest to keep going, chances are it will make the build seem like a chore and eventually, your build may start to go down-hill and you'll be unhappy with your project. Building is something you should do for fun, not as a chore.
		</p>

		<p>
			 
		</p>
	</div>
</div>]]></description><guid isPermaLink="false">1016</guid><pubDate>Fri, 26 Mar 2021 01:29:30 +0000</pubDate></item><item><title>Sick forum tricks to let you do kickflips and be better than the other posters</title><link>https://f.classicube.net/topic/16-sick-forum-tricks-to-let-you-do-kickflips-and-be-better-than-the-other-posters/</link><description><![CDATA[
<p>
	sick kickflip numero uno: you can hover over the reaction button in the bottom right to show a list of reactions you can use. <strong>negative reactions will take away from the user's points, positive will add, and the more neutral/joke-y reactions don't do anything.</strong>
</p>

<p>
	epic kickflip dos: you can switch between the default theme and an experimental dark theme at the bottom of every page
</p>

<p>
	 
</p>

<p>
	post more sick kickflips here and maybe i'll add them to the list
</p>
]]></description><guid isPermaLink="false">16</guid><pubDate>Sat, 11 Apr 2020 14:46:13 +0000</pubDate></item><item><title>How to have CC chrome short cut on your desktop</title><link>https://f.classicube.net/topic/752-how-to-have-cc-chrome-short-cut-on-your-desktop/</link><description><![CDATA[
<p>
	Step 1: Click on this link <a href="https://www.classicube.net/server/list/" rel="external">https://www.classicube.net/server/list/</a>
</p>

<p>
	Stop 2: Click the icon on chrome with 3 dots on up right corner
</p>

<p>
	Step 3: Click more tools
</p>

<p>
	Step 4: Click create shortcut
</p>

<p>
	Step 5: Set a name as what ever you want to 
</p>

<p>
	Step 6: Click Create
</p>

<p>
	Now on your desktop it will be a Icon with CC logo that means you have made a shortcut on your desktop
</p>

<p><a href="https://f.classicube.net/uploads/monthly_2021_02/322187788_Step2.png.8be03194235f32ccf6d959ee392ebefd.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="590" src="https://f.classicube.net/uploads/monthly_2021_02/322187788_Step2.png.8be03194235f32ccf6d959ee392ebefd.png" width="128" class="ipsImage ipsImage_thumbnailed" alt="Step 2.png" loading="lazy" height="101.12"></a></p>
<p><a href="https://f.classicube.net/uploads/monthly_2021_02/2136480536_Step4and5.png.e928d6cc79ae3b0eb97a7e4c8e0d88a8.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="591" src="https://f.classicube.net/uploads/monthly_2021_02/2136480536_Step4and5.png.e928d6cc79ae3b0eb97a7e4c8e0d88a8.png" width="616" class="ipsImage ipsImage_thumbnailed" alt="Step 4 and 5.png" loading="lazy" height="61.6"></a></p>
<p><a href="https://f.classicube.net/uploads/monthly_2021_02/1575342943_Step6.png.6a7d979f302f16185121ca9974739f35.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="592" src="https://f.classicube.net/uploads/monthly_2021_02/1575342943_Step6.png.6a7d979f302f16185121ca9974739f35.png" width="531" class="ipsImage ipsImage_thumbnailed" alt="Step 6.png" loading="lazy" height="207.09"></a></p><p>
	Ups when i was making a arrow for step 4 and 5 i pointed it to "save page as" that a mastake r+that i made click the other one create shortcut
</p>]]></description><guid isPermaLink="false">752</guid><pubDate>Mon, 01 Feb 2021 09:35:07 +0000</pubDate></item><item><title>how to build by reference</title><link>https://f.classicube.net/topic/723-how-to-build-by-reference/</link><description><![CDATA[
<p>
	why hello people. Imma show u how to make a kinda simple Medieval themed house.This tutorial might help you build by an reference. NOTE: this tutorial might be a bit challenging.
</p>

<p>
	First look in the internet and look for a reference of an Medieval house,
</p>

<p>
	My reference for today:
</p>

<p>
	<img alt="f471d7e1fb622ab880e1b2c4505f22e1.jpg" class="ipsImage" data-ratio="56.25" height="562" style="height:auto;" width="1000" src="https://i.pinimg.com/originals/f4/71/d7/f471d7e1fb622ab880e1b2c4505f22e1.jpg" loading="lazy"></p>

<p>
	Now you have a reference. GREAT!
</p>

<p>
	Quick tip: When building by an reference you want to plan out where you are building? how big is it going to be?
</p>

<p>
	This part is the most trickiest
</p>

<p>
	Next, do the blueprints of your reference 
</p>

<p>
	Example:
</p>

<p>
	<img alt="b1cffe7aee50ce2ba3c5ba32b5220a0c07bd3df2" class="ipsImage" data-ratio="56.25" height="562" style="height:auto;" width="1000" src="https://pm1.narvii.com/6205/b1cffe7aee50ce2ba3c5ba32b5220a0c07bd3df2_hq.jpg" loading="lazy"></p>

<p>
	ps: this is not my build, if u want to see my builds go on furiousfiregirl+ 2 or 3 in N2a or go in furiousfiregirl+ in police sever
</p>

<p>
	You dont want to start by just building the house well the outside of it and not to think of the inside of the house or else it would get tickier than it already is.
</p>

<p>
	Next start build the whole house, add the block u think should be at, and if the sever doesn't have the blocks you need that competently fine just change it up a bit.
</p>

<p>
	(i dont have an example screenshots were a bit to big)
</p>

<p>
	Once your done, do the inside, try to do those little details bc they will make a difference.
</p>

<p>
	BOOM your done u have a Medieval house.
</p>

<p>
	This tutorial is not only just Medieval houses this can be used in all builds you want to do.
</p>

<p>
	This doesnt help srry, not much I can do the screenshots were to big.
</p>

<p>
	-Furious
</p>
]]></description><guid isPermaLink="false">723</guid><pubDate>Tue, 26 Jan 2021 22:32:11 +0000</pubDate></item><item><title>How to create a server (Legit edition)</title><link>https://f.classicube.net/topic/621-how-to-create-a-server-legit-edition/</link><description><![CDATA[<p>
	Port forward
</p>]]></description><guid isPermaLink="false">621</guid><pubDate>Tue, 05 Jan 2021 02:04:45 +0000</pubDate></item><item><title>Why Your Server Isn't Bringing in Players</title><link>https://f.classicube.net/topic/402-why-your-server-isnt-bringing-in-players/</link><description><![CDATA[<div data-controller="core.front.core.articlePages">
<div data-role="contentPage">
<p>
	Having been a server owner for over 9 years now, I think it's safe to say I've been around long enough to see what works and what doesn't. Many people think having their own server makes them "cool" or "special" and rush into creating a server without knowing any of the essentials. Hopefully upon reading this guide, you'll understand what to do and what not to do.
</p>

<p>
	<strong><span style="font-size:24px;">Knowing what your server will be about</span></strong>
</p>

<p>
	This is the most integral part in coming up with your own server. Before starting your server, you should have a general idea on what you want your server's purpose to be. The majority of servers on this site are effortless and generic freebuilds that offer little-to-nothing except for a freebuild map and overseer maps. You'll notice that these types of servers rarely get players because they are inherently boring and bring nothing new to the table.
</p>

<p>
	If you really want to stick with the freebuild genre, you should at least come up with some ideas on extra features to add to the server to ensure people don't get bored. Here are some ideas you could try:
</p>

<ul><li>
		Themed freebuild maps 
	</li>
	<li>
		An economy/money system
	</li>
	<li>
		Unique commands/plugins
	</li>
	<li>
		A server theme. <em>E.g, oriental/fantasy, sci-fi/futuristic, modern, medieval etc.</em>
	</li>
</ul></div>
<div data-role="contentPage">
<hr data-role="contentPageBreak" /><p>
	<strong><span style="font-size:24px;"><i>Your server's image</i></span></strong>
</p>

<p>
	<em><span style="font-size:18px;">Server name</span></em>
</p>

<p>
	So you've come up with your server idea, now you just need a fancy name to lure the players in. You should include something related to your server's genre in your server's name. For example, if you are running a zombie survival server, you could set it to something like this: <span style="background-color:#ecf0f1;"> <strong>[Zombie Survival]</strong> Reign of Blood </span>. This will tell people what your server is about and improve your chances of getting them to join.
</p>

<p>
	You should try and stay away from names that include your username. For example, <span style="background-color:rgb(236,240,241);">Venk's Server</span>. This is very boring and people probably won't join.
</p>

<p>
	<span style="font-size:18px;"><i>Maturity and professionalism</i></span>
</p>

<p>
	The way your server comes across is very important. If you want your server do well, you should typically stay away from messages that are rude or contain swearing/slurs. Don't get me wrong, there are a bunch of toxic servers out there that occasionally do well but at the end of the day, they all die out eventually. Grammar and punctuation is optional but it helps a lot. You should avoid stuff like this in any form of representations of the server:
</p>

<p>
	<em><strong>Bad:</strong> if u guys wanna go to other maps u should type the cmd /goto map</em>
</p>

<p>
	<em><strong>Good: </strong>You can join other maps by typing /goto [map].</em>
</p>

<p>
	In regards to maturity, you should at least try and act mature but you do you... Below is an example of what to include and not to include in your rules.
</p>

<p>
	<em><strong>Bad:</strong> dont grief or u'll be banned!! WE DONT ALLOW GRIEFERS ON THIS SERVER SO JUST DONT!!!</em>
</p>

<p>
	<span><em><strong>Good:</strong> Griefing is not allowed on the server.</em></span>
</p>

</div>
<div data-role="contentPage">
<hr data-role="contentPageBreak" /><p>
	<strong><em><span style="font-size:24px;">Hiring the right staff</span></em></strong>
</p>

<p>
	Chances are, you're not going to be on the server all the time, right? Having trustworthy staff online is a huge help and will heavily benefit you further down the track. Every server has their own expectations of staff but here is a template on what to look for in a staff member:
</p>

<ul><li>
		Have they been active on the server? If they've only been on for like a couple of hours total, they're probably not a great choice as you may not know much about them.
	</li>
	<li>
		If they ask for staff, <em><strong>don't</strong></em> give it to them. Back in the day we used to call these people "Leeches" and muted them right off the bat...
	</li>
	<li>
		Are they respectful towards other players? You should probably refrain from hiring someone who is constantly carrying on and being rude to other people.
	</li>
</ul><p>
	This should ultimately go without saying but <em><u><strong>don't abuse your power</strong></u></em>. Just because you have a higher rank than someone doesn't mean you can behave like an ignoramus. I've seen countless instances where staff members abuse players and it's just despicable. You should also put your personal feelings towards someone aside and only punish them if they've actually violated the rules. "I just don't like them." is not a valid reason to punish somebody.
</p>

</div>
<div data-role="contentPage">
<hr data-role="contentPageBreak" /><p>
	<strong><em><span style="font-size:24px;">Aesthetic</span></em></strong>
</p>

<p>
	<em><span style="font-size:18px;">Server hub</span></em>
</p>

<p>
	If you want to provide a memorable experience for your players, you should make the server visually pleasing. A good-looking server hub or lobby is a great start as it immediately shows players that you've put some time into the server. If you don't consider yourself a good enough builder, I recommend asking a friend that you think is a good builder and see if they are willing to help.
</p>

<p>
	<em><span style="font-size:18px;">Colour scheme</span></em>
</p>

<p>
	This might not seem to be that important but colours also help promote visual aesthetic. You should try and stay away from setting colours that are so bold and defining such as black, gray, maroon or navy. These colours are quite irritating to look at when used frequently. In MCGalaxy servers, you can add your own colours with the <strong><em>/customcolours</em> </strong>command.
</p>

<p>
	<span style="font-size:18px;"><em>Textures and block palette</em></span>
</p>

<p>
	If your server software doesn't support these features, feel free to skip this section.
</p>

<p>
	As much as the default textures provide a sense of nostalgia, it gets old fast and people want to try something new.
</p>

<p>
	<strong>More tips coming soon!</strong>
</p>

<p>
	 
</p>
</div>
</div>]]></description><guid isPermaLink="false">402</guid><pubDate>Fri, 30 Oct 2020 04:21:06 +0000</pubDate></item></channel></rss>
