diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 566d31bbf..339e925ac 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,13 +7,13 @@ If you'd like to contribute, this document will guide you through the most impor There are a lot of things that you can do to help the project. And contributions don't necessarily have to involve coding. -Below I've written a short checklist of things that you can check: +Below, I've written a short checklist of things that you can check: - Help to keep translations up to date or add a new language. [Guide to creating translations](https://github.com/oddlama/vane/wiki/Creating-a-Translation). - Submit your ideas or discuss existing ideas on the [Issue Tracker](https://github.com/oddlama/vane/issues) - Join our [Discord](https://discord.gg/RueJ6A59x2) and try helping people in the support channel. - Check if you'd like to implement a feature from the [Issue Tracker](https://github.com/oddlama/vane/issues). -- Help us to build a documentation for the internal framework (vane-core) +- Help us to build documentation for the internal framework (vane-core) - Or discuss your own ideas with us on our [Discord](https://discord.gg/RueJ6A59x2). - ... @@ -31,15 +31,15 @@ us to provide early feedback on your implementation. #### Before submitting your final PR 1. Make sure everything compiles -2. Make sure that your commits have meaningful messages and follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) style. Just look into the commit history to see examples of good messages. -3. Rebase your changes on the newest develop branch, if necessary. Usually, GitHub can do that for you. +2. Make sure that your commits have meaningful messages and follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) style. Look into the commit history to see examples of good messages. +3. Rebase your changes on the newest development branch, if necessary. Usually, GitHub can do that for you. If you need help with anything, don't hesitate to ask. ## Some things to keep in mind - Vane is opinionated. If you want to make a contribution, please communicate with us before you start implementing, - so we can help you design the feature in vane's spirit. We also want to avoid that two people unknowingly work on the same thing. + so we can help you design the feature in vane's spirit. We also want to avoid it that two people unknowingly work on the same thing. - By submitting a PR, you accept that your contributions will be published under the same [LICENSE](./LICENSE) as the rest of vane. But most importantly: Have fun! You don't need to work on anything just for the sake of contributing. diff --git a/README.md b/README.md index 9c25249ab..44e65330f 100644 --- a/README.md +++ b/README.md @@ -12,19 +12,19 @@ # About vane -Vane is a plugin-suite which provides many immersive and lore friendly additions to vanilla minecraft. +Vane is a plugin-suite that provides many immersive and lore-friendly additions to vanilla minecraft. It will run on any [PaperMC](https://papermc.io) based minecraft server. [**For a comprehensive feature overview, visit the official website.**](https://oddlama.github.io/vane/) - Lore friendly and properly integrated immersive features. Vane augments the classic vanilla experience, and doesn't try to replace it. - Generally, player's are not supposed to notice which features were introduced by vane. + Generally, players are not supposed to notice which features were introduced by vane. - Countless quality-of-life, gameplay and system improvements - Fully-configurable. Disable or configure anything you dislike - Several carefully designed custom items - Many custom enchantments for a selection of tools, including the elytra -- The best portals you can imagine. Expensive but worthwile for long distance travel. Supports all entities including minecarts! +- The best portals you can imagine. Expensive but worthwhile for long distance travel. Supports all entities including minecarts! - A simple but powerful region system for grief protection - [BlueMap](https://bluemap.bluecolored.de/), [Dynmap](https://www.spigotmc.org/resources/dynmap%C2%AE.274/) and [Pl3xMap](https://github.com/BillyGalbreath/Pl3xMap) integration - [And a lot more!](https://oddlama.github.io/vane/) @@ -45,14 +45,14 @@ refer to [**the official website**](https://oddlama.github.io/vane/) for a compl

-(And a whole lot more!) +(And a lot more!) ## 📥 Installation If you are setting up a new server, check out our [Server Installer](https://oddlama.github.io/minecraft-server) -for an easy way to properly setup a minecraft server with vane, autostart, 3D online map, and more awesome features. +for an easy way to properly set up a minecraft server with vane, autostart, 3D online map, and more awesome features. -Simply download all desired jars files from the [Releases](https://github.com/oddlama/vane/releases/latest) and put them into the `plugins/` directory. +Download all desired jars files from the [Releases](https://github.com/oddlama/vane/releases/latest) and put them into the `plugins/` directory. Grab the `all-plugins.zip` if you don't want to download each file by hand. You can also download vane from [Modrinth](https://modrinth.com/plugin/vane). Make sure that: - You are using the correct Paper (or Purpur) server version (compatible versions are listed in the title on the download page) @@ -72,13 +72,13 @@ permissions plugin, such as [LuckPerms](https://luckperms.net). ## Building from source -You can of course build the plugin yourself. To do that you need at least JDK 17. +You can, of course, build the plugin yourself. To do that, you need at least JDK 17. 1. Execute `./gradlew build` 2. All resulting jar files that can be used on a server will be in `target/`. -If you experience "peer not authenticated" issues from gradle, just retry. -Seems to be a skittish integration between gradle and maven repositories. +If you experience "peer not authenticated" issues from Gradle, just retry. +Seems to be a skittish integration between Gradle and Maven repositories. ## FAQ diff --git a/TODO b/TODO index 3c1fcc15b..03b002777 100644 --- a/TODO +++ b/TODO @@ -1,6 +1,6 @@ #### Important -- Wrong world name in config should issue warning --> hazard protection doesnt do this on wither worlds +- Wrong world name in config should issue warning --> hazard protection doesn't do this on wither worlds #### IDEAS @@ -11,8 +11,8 @@ - [ ] trampelpfad (a trail of path-block that is created automatically when players take a route often, could get fancy.) - [ ] add a mechanic to update in-game maps (e.g. with a custom item, or redstone) - [ ] player heads from /heads -- [ ] lodestone portal scrolls teleport ontop of the stone -- [ ] world rebuild check for armorstands and item frames. dont let them be destroyed +- [ ] lodestone portal scrolls teleport on top of the stone +- [ ] world rebuild check for armor stands and item frames. don't let them be destroyed - [ ] minecart speed ++++++ only if player in minecart, or maybe with an extra type of minecart. is it time for the netherite minecart? - [ ] on first join message: e.g. for link to map and discord link diff --git a/UPDATING.md b/UPDATING.md index b622a2863..c544e32a5 100644 --- a/UPDATING.md +++ b/UPDATING.md @@ -1,9 +1,9 @@ ## Updating vane to a new minecraft release -There are some things that need to be done in order +There are some things that need to be done to make vane compatible with a new minecraft release. -1. First of all, we need to compile against the newest paper API and mojang mappings. +1. First, we need to compile against the newest paper API and mojang mappings. Make sure you are on the latest `develop` branch. In `build.gradle.kts` the version of `io.papermc.paperweight.userdev` needs to be bumped @@ -13,12 +13,13 @@ to make vane compatible with a new minecraft release. 2. If any other dependencies seem out of date (ProtocolLib, dynmap API, bluemap API, ...) those should also be bumped. This is not always necessary, since it depends on whether the - respective API changed in that release - so this is on-demand. If there was a new API and + respective API changed in that release—so this is on-demand. If there was a new API and you forget to update this, you'll probably run into errors when testing with the new version later on. (So you'll notice) -3. `./gradlew build` once. There will be a lot of compile errors, but that's fine. - This is to ensure that there is nothing else missing and we get to the compilation step now. +3. `./gradlew build` once. + There will be a lot of compiler errors, but that's fine. + This is to ensure that there is nothing else missing, and we get to the compilation step now. 4. Point all imports to the new version. All occurrences of `org.bukkit.craftbukkit.v1_19_R2` will have to be replaced with `org.bukkit.craftbukkit.v1_19_R3` (or whatever version we are at now). @@ -27,21 +28,21 @@ to make vane compatible with a new minecraft release. 5. `./gradlew build` again. There may still be some errors, depending on whether the API changed or not. In any case, definitely read the latest thread on [SpigotMC](https://www.spigotmc.org/) (search for developer notes) to get - an understanding of what has changed in the bukkit API. Sometime's its nothing, sometimes it's a lot. - Sometimes there is no error but things should still be adjusted (like when the now-legacy chat coloring was deprecated). + an understanding of what has changed in the bukkit API. Sometimes It's nothing, sometimes it's a lot. + Sometimes there is no error, but things should still be adjusted (like when the now-legacy chat coloring was deprecated). 6. The real pain begins now. Since vane depends heavily on mojang's internal API, there might - be changes that nobody could have anticipated and that will not be documented. Often there + be changes that nobody could have expected and that will not be documented. Often there are breakages regarding entity/enchantment registration, since mojang often restructures things in the background 5 times over. - You will need access to the decompiled code in order to understand many of these errors, - since there is no documentation and you need to look at how it was used before and how it is used now. + You will need access to the decompiled code to understand many of these errors, + since there is no documentation, and you need to look at how it was used before and how it is used now. Open a new folder, grab spigot's `BuildTools.jar` and run `java -jar BuildTools.jar --rev 1.19.4`. - Beware that this tool is fucking shite and sets your global git name and email if you are using per-repo + Beware that this tool is fucking shit and sets your global git name and email if you are using per-repo configuration - undo that if necessary. When it's done, you'll have a folder `work/decompile-latest` - with the source. Also important are `work/bukkit--members.csrg` and `work/minecraft_server.1.19.4.txt` - which contain the remapped names for some functions. We'll come back to that that later. + with the source. Also, important are `work/bukkit--members.csrg` and `work/minecraft_server.1.19.4.txt` + which contain the remapped names for some functions. We'll come back to that later. **Example:** 1.19.3 -> 1.19.4, 1 error: @@ -59,16 +60,19 @@ to make vane compatible with a new minecraft release. - View `work/decompile-latest/net/minecraft/server/SharedConstants.java` - Follow definition of `getCurrentVersion()` to `WorldVersion.java` - Observer that there is no more `getWorldVersion()`. - `getDataVersion()` and `getProtocolVersion()` look promising as they contain "version". - - To see what we need, look where we originally used that value. Go to vane source, + `getDataVersion()` and `getProtocolVersion()` look promising as they contain "version" + - To see what we need, look where we originally used that value. + Go to vane source, observe that it was used in `DataFixers.getDataFixer().getSchema(HERE)`. - Search for uses of `getSchema()` to see how it is used now: `rg getSchema"\(" work/decompile-latest` - Observe that it is now used like `DataConverterRegistry.getDataFixer().getSchema(DataFixUtils.makeKey(SharedConstants.getCurrentVersion().getDataVersion().getVersion()))`. - Conclusion: Indeed we need to use `.getDataVersion().getVersion()` instead. - Seems tedious because it is fucking tedious. That was also still comparatively easy, - sometimes things just cease to exist and you need to understand what the code in vane - want's to do and figure out a new way to do it now. That's the price to pay for doing + It seems tedious because it is fucking tedious. + That was also still comparatively easy, + sometimes things just cease to exist, and you need to understand what the code in vane + wants to do and figure out a new way to do it now. + That's the price to pay for doing things that the official API doesn't support. 7. `./gradlew build` again. If you still have errors, re-apply method from (6) until done. @@ -77,48 +81,56 @@ to make vane compatible with a new minecraft release. 8. There are some parts of vane that use runtime reflection to access/modify values that are not even exposed via mojang's new mappings. Those are currently just two, but it is crucial - to update them. We basically refer to variable names at runtime and since the names of + to update them. We basically refer to variable names at runtime, and since the names of obfuscated variables are always expected to change between releases, those need to be adjusted. Using the wrong name will not allow vane to do what it needs to do. To find those in vane, search for `MAGIC VALUE` by `rg "MAGIC VALUE"`. Usually it's a call to `MappedRegistry.class.getDeclaredField("l" /* frozen */)` or similar. The comment tells you what clear-text variable is called. You can find the new mapped names in `work/minecraft_server.1.19.4.txt`. - Careful, the file is big (>5MB), so use a editor that can handle this. + Carefully, the file is big (>5MB), so use an editor that can handle this. Search for `MappedRegistry`, then look out for `frozen` on the following lines (`boolean frozen -> l`). Repeat for all magic values. For 1.19.3 -> 1.19.4 we can see that this particular mapping didn't change. -9. Update the resource pack version. As you probably know, vane generates it's own resource pack. - Resource packs have a version that tells minecraft for which version it was made. A new update - often includes new possibilites for resource packs and thus we need to make sure it still is - compatible. Read the changelog to see whether anything crucial (file layout, override rules) - has changed and ajust the resource pack generator if necessary. Often there are no breaking changes - and we just need to bump the resource pack version in the mcmeta file. To do that, - open `ResourcePackGenerator.java` (search for `pack_format`) and enter the [newest value](https://minecraft.fandom.com/wiki/Pack_format). - You'll see in testing wether that worked or not. +9. Update the resource pack version. + As you probably know, vane generates its own resource pack. + Resource packs have a version that tells minecraft for which version it was made. + A new update + often includes new possibilities for resource packs, and thus we need to make sure it still is + compatible. + Read the changelog to see whether anything crucial (file layout, override rules) + has changed and adjust the resource pack generator if necessary. + Often there are no breaking changes, + and we just need to bump the resource pack version in the mcmeta file. + To do that, + open `ResourcePackGenerator.java` (search for `pack_format`) + and enter the [newest value](https://minecraft.fandom.com/wiki/Pack_format). + You'll see in testing whether that worked or not. 10. Make a commit detailing the update and what issues were encountered if any. Don't push yet. -11. Now comes testing. Build one more time `./gradlew build`, and start a testserver - with the latest paper build and ProtocolLib. Disable resource pack distribution. +11. Now comes testing. + Build one more time `./gradlew build`, and start a test server + with the latest paper build and ProtocolLib. + Disable resource pack distribution. Generate the resource pack with `vane generate_resource_pack`, copy it to your client. Enter the server. Now it is important to test those parts of vane which interface with the mojang mappings, since those are the most likely to break. - `/customitem give vane_trifles:golden_sickle` should display as a sickle, should work when used on wheat. (Tests custom item registration and event dispatching) - - Take an elytra in your hand, run `/enchant vane_enchantments:angel`, test whether you can accelerate by sneaking. (Tests custom enchantment registration) - - Duplicate the elytra, go into survival mode (IMPORTANT!) then combine them on an anvil. You should get Angel II. + - Take an elytra in your hand, run `/enchant vane_enchantments:angel`, test whether you can speed up by sneaking. (Tests custom enchantment registration) + - Duplicate the elytra, go into survival mode (IMPORTANT!) then combine them using an anvil. You should get Angel II. - Take a smithing table, combine the elytra with a netherite ingot. (Test's complex smithing recipe integration) - Put some random blocks and items in a chest, place a button next to it and press it. The chest should now be sorted. Fix issues and make a new commit if necessary. 12. Copy the generated resource pack to `docs/resourcepacks/.zip`, and update - vane's version numer in `build.gradle.kts` (always bump minor version for mojang version updates). + vane's version number in `build.gradle.kts` (always bump minor version for mojang version updates). Commit and add signed tag: `git commit -S -m 'chore: version bump' && git tag -s -m '' v1.11.0`. 13. Push to main: `git push && git push --tags && git switch main && git merge --ff-only develop && git push && git switch develop`. @@ -127,8 +139,10 @@ to make vane compatible with a new minecraft release. 15. `./sign_and_zip.sh` (sorry, but you need to be me to get the correct signature.) -16. Draft a new github release, and write a CHANGELOG. Format can be copied from previous releases, - see `git log` to see what changed. Upload final artifacts to GitHub releases first. +16. Draft a new GitHub release, and write a CHANGELOG. + Format can be copied from previous releases, + see `git log` to see what changed. + Upload final artifacts to GitHub releases first. Afterwards entertain modrinth.com and hangar.papermc.io. Congratulations, you are now awake and can start implementing new features. diff --git a/build.gradle.kts b/build.gradle.kts index 2f833c35f..ce8c23429 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -25,7 +25,7 @@ subprojects { group = "org.oddlama.vane" version = "1.14.0" - repositories() { + repositories { mavenLocal() mavenCentral() maven("https://papermc.io/repo/repository/maven-public/") @@ -122,7 +122,7 @@ configure(subprojects.filter { }) { dependencies { // https://imperceptiblethoughts.com/shadow/multi-project/#depending-on-the-shadow-jar-from-another-project - // In a multi-project build there may be one project that applies Shadow and another that requires the shadowed + // In a multi-project build, there may be one project that applies Shadow and another that requires the shadowed // JAR as a dependency. In this case, use Gradle's normal dependency declaration mechanism to depend on the // shadow configuration of the shadowed project. implementation(project(path = ":vane-core", configuration = "shadow")) diff --git a/docs/index.html b/docs/index.html index 878d81c99..666d603f4 100644 --- a/docs/index.html +++ b/docs/index.html @@ -37,7 +37,7 @@ Vane logo

Vane

-

Vane is a plugin-suite which provides many immersive and lore friendly additions to vanilla minecraft. It will run on any PaperMC based minecraft server. Check out our Server Installer for an easy way to setup vane together with autostart, 3D online map, and more awesome features.

+

Vane is a plugin-suite that provides many immersive and lore-friendly additions to vanilla minecraft. It will run on any PaperMC based minecraft server. Check out our Server Installer for an easy way to set up vane together with auto-start, 3D online map, and more awesome features.

@@ -113,8 +113,7 @@

@@ -140,8 +139,8 @@

Have you ever wondered, where you put those pesky ender pearls which you need like right now? Don't worry, the item finder has got you covered.

Use /finditem minecraft:enderpearl (or any other material) to search for the given item in all nearby containers and entity inventories. (Also smite your friends if they stole it)

-

If you already have an item of the same type in your inventory, you can also just -shift-rightclick it in your open inventory to perform a search for that item type.

+

If you already have an item of the same type in your inventory, you can also +shift-right-click it in your open inventory to perform a search for that item type.

@@ -236,7 +235,9 @@

@@ -258,7 +259,7 @@

@@ -342,7 +343,7 @@

-

Do you have a big field? Craft a sickle to easily harvest larger parts of a field. And while the sickle comes in all material variants, the golden sickle is obviously the best. Wood and stone are the worst materials and therefore harvest only in a smaller radius.

+

Do you have a big field? Craft a sickle to easily harvest larger parts of a field. And while the sickle comes in all material variants, the golden sickle is the best. Wood and stone are the worst materials and therefore harvest only in a smaller radius.

@@ -404,7 +405,7 @@

Want to build with gradients? Craft a trowel and save yourself from getting RSI syndrome. The trowel will place a random block from your hotbar when you right-click another block.

-

By right-clicking the trowel in your inventory, you can change the "feed source" i.e. the inventory row +

By right-clicking the trowel in your inventory, you can change the "feed source" i.e., the inventory row from where it takes the blocks. You can choose any inventory rows or your hotbar.

@@ -461,8 +462,8 @@

Why is the Bundle so useless? Here, take a proper early-game Pouch. -Hold it in your hand and right-click to open it, or simply drop items +Hold it in your hand and right-click to open it, or drop items directly into it by right-clicking the pouch with an item.

@@ -701,7 +702,7 @@

-

This is a powerful scroll that teleports you to your last death location, if it is recent (last 20 minutes). Beware that it only has two uses!

+

This is a powerful scroll that teleports you to your last death location if it is recent (last 20 minutes). Beware that it only has two uses!

@@ -766,7 +767,7 @@

-

Save your experience in experience bottles. Craft an empty experience bottle and right click. A small part of the experience will be lost when you fill it, but you can use the experience at a later time.

+

Save your experience in experience bottles. Craft an empty experience bottle and right-click. A small part of the experience will be lost when you fill it, but you can use the experience at a later time.

@@ -1023,7 +1024,8 @@

-

You can craft this better variant of an Ancient Tome yourself, as shown in the picture, or find it as well. This can then be used to obtain some of the enchantments.

+

You can craft this better variant of an Ancient Tome yourself, as shown in the picture, or find it as well. +This can then be used to get some enchantments.

@@ -1214,7 +1216,10 @@

-

The divine variant of the Ancient Tome. Crafted from the previous level or rarely found. This tome is used for the strongest enchantments, so don't leave them lying around if you find any! When crafting it, you may use any two enchanted books, the exact enchantments don't matter.

+

The divine variant of the Ancient Tome. +Crafted from the previous level or rarely found. +This tome is used for the strongest enchantments, so don't leave them lying around if you find any! +When crafting it, you may use any two enchanted books; the exact enchantments don't matter.

@@ -1331,7 +1336,7 @@

-

The ultimate enchantment for the elytra. Sneak to accelerate!

+

The ultimate enchantment for the elytra. Sneak to speed up!

@@ -1429,7 +1434,7 @@

-

Your head through the wall? AGAIN? Don't worry, your pighead can take it. (Prevents damage when you hit a wall with the Elytra)

+

Your head through the wall? AGAIN? Don't worry, your bighead can take it. (Prevents damage when you hit a wall with the Elytra)

@@ -1632,7 +1637,7 @@

-

Soulbound items remain in your inventory upon death. They also cannot be dropped accidentally. The book must be a curse of binding book, which you can obtain from a villager.

+

Soulbound items remain in your inventory upon death. They also cannot be dropped accidentally. The book must be a curse of binding book, which you can get from a villager.

@@ -1935,7 +1940,7 @@

Overview

-

Portals are structures that let you travel to specific other portals - as many times as you want. +

Portals are structures that let you travel to specific other portals—as many times as you want. You can build them in almost any shape, and style them to externally match your building style. It is the best way to travel great distances quickly. But beware, portals are expensive!

Right-clicking the portal console will open a menu where you can select any visible destination portal. @@ -1943,7 +1948,7 @@

Trivia

  • Portals close automatically after 10 seconds.
  • -
  • Any entity can traverse a portal, including items horses and minecarts!
  • +
  • Any entity can traverse a portal, including items, horses and minecarts!
  • Portals can be built horizontally.
  • A portal cannot be activated if the destination portal is already connected somewhere else.
  • Public portals can be activated by a redstone repeater.
  • @@ -2012,14 +2017,14 @@

    Portal Frame

    -

    First you need to construct the frame of the portal. +

    First, you need to construct the frame of the portal. It can be built either vertically or horizontally, but typically a vertical variant will be more convenient to use.

    A portal frame is formed by a closed loop of blocks of any shape. -Like a nether portal it doesn't count edge-blocks, but only blocks +Like a nether portal, it doesn't count edge-blocks, but only blocks that touch the inside of the portal with at least one side. The enclosed air will become the portal area.

    -

    The netherite block, also called the origin block, marks the block on which a travelling player arrives. +

    The netherite block, also called the origin block, marks the block on which a traveling player arrives. There have to be at least 1x3 blocks of portal area above the netherite block, so a player can pass through without suffocating. With horizontal portals, the nethrite block location doesn't matter as the player always arrives in the middle.

    Console & Lever

    @@ -2029,10 +2034,11 @@

    Console & Lever

    Create the portal by shift-right-clicking on the enchantment table, and then right-click on the frame. If all necessary conditions are met, you will be prompted to enter a name for the portal.

    -

    Finally place your lever on any portal frame block, -or on a block near the console (a 3x3x3 cube with console in the middle) so you can activate it.

    +

    Finally, place your lever on any portal frame block, +or on a block near the console (a 3x3x3 cube with the console in the middle) so you can activate it.

    Note that the portal is private by default, which means that only you can use it as the destination -from other portals. To change that, right click the console to open the menu and change the visibility in the settings.

    +from other portals. +To change that, right-click the console to open the menu and change the visibility in the settings.

    If you want, you can add additional consoles in the same way as you added the first console.

    @@ -2042,7 +2048,8 @@

    Activation

    If the destination portal is private, the destination selection will be reset afterwards. If you selected a public portal, it will stay selected after the portal deactivates.

    Portals can also be activated by a redstone repeater facing directly into a portal block. -The portal is activated on a rising signal edge. Deactication occurs after 10 seconds as usual. +The portal is activated on a rising signal edge. +Deactivation occurs after 10 seconds as usual. This only works if the destination portal is not in a vane-region that restricts portal access from the public!

    It can be very handy to activate a portal from a detector rail ;)

    @@ -2071,23 +2078,23 @@

    Portal Settings

    You as the owner of the portal will see additional entries in the menu to personalize or delete the portal. -The settings menu allows you change several things about the portal:

    +The settings menu allows you to change several things about the portal:

    Name: Change the name of your portal

    Icon: Choose any item from your inventory as the portal icon. This item will be used in the target selector, and will be displayed above consoles of portals where it is set as the destination. You can also use one of the many decorative heads from /heads.

    -

    Style: In the style selector, you can either use one of the predefined styles, or create your own. -Every type of block used in the portal frame can be disguised as any other block - at no cost. +

    Style: In the style selector, you can either use one of the predefined styles or create your own. +Every type of block used in the portal frame can be disguised as any other block—at no cost. By default, everything is made of obsidian. You can even apply a different block based on whether the portal is currently active or not. Please share the styles you've created on our discord!

    -

    Don't forget to press Apply at the end to make your changes visible.

    +

    Remember to press Apply at the end to make your changes visible.

    -

    You can hide your portal by changing the inavtive portal area block.

    +

    You can hide your portal by changing the inactive portal area block.

    Orientation lock: Activate this to ensure that entities always exit the portal on the front-side. Usually portals behave relative to one another: Enter front, exit front - enter back, exit back. This locking can be useful when there's a wall behind your portal, and exiting on the back makes no sense.

    @@ -2123,17 +2130,17 @@

    Overview

    Vane's region module allows you to purchase a piece of land. -This allow you assign rights to other players, like building rights or container rights, +This allows you assign rights to other players, like building rights or container rights, as well as to set some environmental conditions within the region (disable explosions, monster spawn, PVP, ...).

    Permission Management

    There are some important concepts related to regions, which allow you to manage multiple regions easily:

    • A region is an actual purchased piece of land.
    • A so-called region-group is where you configure the environmental permissions and player permissions.
    • -
    • Multiple regions can be governed by the same permissions simply by assinging them to the same region-group.
    • +
    • Multiple regions can be governed by the same permissions simply by assigning them to the same region-group.

    Each region belongs to exactly one region-group which determines the rules in that region. -If you create a new region, it will belong to your default default region-group. This is a region-group that exists +If you create a new region, it will belong to your default region-group. This is a region-group that exists by default and where only you have permissions to do anything.

    To avoid having to give each player permissions separately, roles exists to manage player permissions. Available permissions are intentionally kept simple to allow quick configuration, and should be everything @@ -2145,10 +2152,10 @@

    Permission Management

  • admins can do everything including permission management.
-
  • Exactly one role can be assigned to each player in that region-group. Unassigned players automatically belong to the others role.
  • +
  • Exactly one role can be assigned to each player in that region-group. Unassigned players automatically belong to the others' role.
  • Portals & Regions

    -

    If a portal is inside of a region, some additional things apply:

    +

    If a portal is inside a region, some additional things apply: