-
Added {item_enchants} placeholder
-
Added enchant-description options inside config.yml
-
Now anvils and enchanting tables are supported with custom items
![[IMG]](//proxy.spigotmc.org/a8846800dbb18833d13632874abdd90791938e47/68747470733a2f2f692e706f7374696d672e63632f6b3450644d3931772f323032362d30362d31382d31362d31372d31372e706e67)
-
Added mining-speed option for custom items 1.21+ only
-
Now Mining Fortune works with default generator drops and default block drops.
-
Added placeholders: {tool_mining_speed} {tool_total_mining_speed} {player_mining_speed} and {tool_total_mining_fortune}
![[IMG]](//proxy.spigotmc.org/1e44040fd3dfc86876f19166b7f80a5099c57e07/68747470733a2f2f692e706f7374696d672e63632f6a6a50723056354c2f323032362d30362d31372d31312d35352d33342e706e67)
-
Added player stats system and first stat: mining_fortune
-
Added 4 new config.yml options for Mining Fortune drops
-
Added mining-fortune option for items
-
Added {tool_mining_fortune} and {player_mining_fortune} placeholders
-
Now items have all hide flags enabled by default
-
Now if an item doesn't have a name set, the config key is used instead with Title Case formatting.
-
Fixed message not found errors for /orestack message send command
-
Fixed a bug where PlayerData would not be saved because of a new safety check I implemented in 3.52.0
-
Fixed a startup bug I overlooked in 26.1.2
-
Added particle in-line format:
Code (YAML):
# Before
rain_cloud:
- { particle
: cloud, amount
: 15, offset.y
: 1.5, range
:
{ x
: 0.3, z
: 0.3
}, repeat
: 8, interval
: 2
}
- { particle
: falling_water, amount
: 15, offset.y
: 1.5, range
:
{ x
: 0.2, z
: 0.2
}, repeat
: 12, interval
: 2
}
# After
rain_cloud
:
- cloud count=15 offsetY=1.5 rangeX=0.3 rangeZ=0.3 repeat=8 interval=2
- falling_water count=15 offsetY=1.5 rangeX=0.2 rangeZ=0.2 repeat=12 interval=2
Available mob options: type,
name, health,
max-health, speed,
damage, knockback-resistance,
equipment, always-show-name,
baby, color,
collidable, can-pickup-items,
glowing, gravity,
hasAi, invulnerable,
invisible, invulnerability-cooldown,
silent, size,
boss-bar, default-item-drops,
default-exp-drops, drops,
exp, attack-cooldown,
leashing, renaming,
sunburn, deal-damage,
random-equipment, slime-split,
slain-message,
disguises.
Available mob triggers: on-spawn,
on-damaged, on-death,
on-health-change, on-target,
on-attack, on-kill,
on-player-kill, on-jump,
on-land.
Available conditions and actions: addMobFlag,
addTemporaryMobFlag, removeMobFlag,
mobHasFlag, healMob,
damageTarget, damageAttackers,
dropItemAtMob, dropItemAtLastDamager,
dropItemAtTopDamager, dropItemAtAttackers,
spawnParticleAtMob, damageEntitiesInRange,
damageEntitiesInRadius, damageEntitiesInRing,
damageEntitiesInFront.
-
Now player data is only loaded if plugin is ready.
-
Fixed Generator/Gate placeholder conflicts
-
Fixed an exception in Virtual Structures
While it is still lacking some details this is a very promising system for RPG style worlds and dungeons, hope you enjoy. -
Added custom commands module
-
Added example /collections command and sub commands
All users who purchased CastleGates will be automatically added to the Orestack buyers list.
Handling one project will be much easier and will allow me to push updates faster instead of leaving one project behind and then having to catch up.
Also the complexity and amount of features/effects/configuration is overwhelming especially when both projects share the same stuff. By making Orestack a complete MMO RPG Core that handles everything that complexity is justified as you will no longer need any other plugin to create your MMO server.
Anyways that's the goal, for the time being you can disable any modules you don't need.
-
Merged gates into Orestack
-
Replaced enabled-modules with disabled-modules, so that when updating new modules are always enabled by default.
-
Improved dependency compatibly by fixing an issues related to PlotSquared
Regenerate menus/buttons.yml to avoid config errors when updating. If you haven't created any menus you can just delete the menus folder altogether.
-
Added custom collections system with default collections (farming, mining, combat, foraging, fishing)
-
Added default placeholder-fallback and custom-placeholder-fallbacks
-
Added nested condition statements
-
Added end of configuration message in config.yml
-
Added custom placeholders for chat messages
-
Added toggle option for all modules
-
Fixed exception when clicking slot 54 of a menu
-
Added menu actions: openPreviousMenu, openFirstMenu
-
Now you can no longer create an item with material air.
-
Merged growth-bars and health-bars into progress-bars.
-
Fixed not being able to call functions from inside other functions.
-
Now only commands of enabled modules are registered
-
Fixed issues when calling other plugin api's after they had disabled
Regenerate menus/buttons.yml to avoid config errors when updating. If you haven't created any menus you can just deleted the menus folder altogether.
-
Added custom collections system with default collections (farming, mining, combat, foraging, fishing)
-
Added default placeholder-fallback and custom-placeholder-fallbacks
-
Added nested condition statements
-
Added end of configuration message in config.yml
-
Added custom placeholders for chat messages
-
Added toggle option for all modules
-
Fixed exception when clicking slot 54 of a menu
-
Added menu actions: openPreviousMenu, openFirstMenu
-
Now you can no longer create an item with material air.
-
Merged growth-bars and health-bars into progress-bars.
-
Fixed not being able to call functions from inside other functions.
-
Now only commands of enabled modules are registered
-
Fixed issues when calling other plugin api's after they had disabled
-
Added unlockable/lockable recipes, that will be used in new collections system that is coming up
-
Added lockRecipe(s) and unlockRecipe(s) actions
-
Added player-data database system, this allows me to save per-player data easily. This will be used for features such as permanent flags, collections, etc...
-
Added unlockable/lockable recipes, that will be used in new collections system that is coming up
-
Added lockRecipe(s) and unlockRecipe(s) actions
-
Added player-data database system, this allows me to save per-player data easily. This will be used for features such as permanent flags, collections, etc...
-
Added 9 different triggers for custom items
-
Added max-uses and uses options for custom items
-
Added placeholder support for custom items
-
Added toolHasUses, toolHasUsesLeft conditions
-
Added consumeToolUses, grantToolUses, restoreToolUses and giveTemporaryFlag actions
Code (Java):
tool
:
type
: iron_pickaxe
unbreakable
:
true
flags
:
[hide_unbreakable, hide_attributes
]
name
:
'&7Tool'
lore
:
-
''
-
'&aUses: {tool_uses}/{tool_max_uses}'
-
'&dCreated by: {player}'
max
-uses
:
10
uses
:
10
on
-block
-
break
:
if
: toolHasUsesLeft #
default is
1
do
:
- consumeToolUses #
default is
1
else
:
- cancelEvent
- sendChat
&4Your tool is out of uses
on
-left
-click
: sendChat You left clicked
on
-right
-click
: sendChat You right clicked
on
-left
-click
-block
: sendChat You left clicked a block
on
-left
-click
-air
: sendChat You left clicked air
on
-right
-click
-block
: sendChat You right clicked a block
on
-right
-click
-air
: sendChat You right clicked air
on
-swap
: sendChat You swapped item with offhand
on
-drop
:
if
-not
: hasFlag confirm_drop
do
:
- cancelEvent
- giveTemporaryFlag confirm_drop duration
=
10
- sendChat
&4Press Q again to drop item
-
Added custom menus and buttons to orestack
-
Added openMenu and closeMenu actions
-
Added /orestack menu open <menu-name> command
-
Fixed a bug from the last update related to the keep config up to date feature
Code (YAML):
title
: '&7This is an example menu'
rows
: 3
layout
:
- 0 0 0 0 0 0 0 0 0
- 0 _ _ _ _ _ _ _ 0
- 0 0 0 0 C 0 0 0 0
buttons:
C:
type
: BARRIER
name
: '&cClose'
on-left-click
: closeMenu
When updating to this new version your config.yml will be automatically updated.
Check it out!
Let me brag a little, Orestack is now the plugin with the best yaml config system.
Not only the error system is the most detailed but it now also supports comments. So saving configurations will no longer remove your comments and it allowed me to add an auto updating config.yml that preserves comments!
-
YamlConfig now supports comments to be loaded/saved to/from yaml.
-
Added
keep-file-up-to-date option in config.yml, when enabled your config will be updated automatically while also keeping comments and key order.
-
Replaced dropItem with dropItemAtCoords, dropItem now works as a jolly by setting `default-item-drop-target` (block, player, coords) inside the config. It is faster to write and allows for better consistency across your project, while also allowing you to switch effortlessly between modes for all your generators at once.
Code (YAML):
# Default target is set in config.yml
on-break
: dropItem dirt
# Target override. dropItemAtPlayer should be preferred over this
on-break
: dropItem dirt target=player
-
Added growth bars to config.yml with 10 example styles
-
Fixed cancelEvent action not working with on-break trigger.
![[IMG]](//proxy.spigotmc.org/561957b3383eceb720358a0088e41ea8ee25df7f/68747470733a2f2f692e706f7374696d672e63632f42517a3430384c4a2f67726f7774682d626172732d73686f77636173652d657a6769662d636f6d2d6f7074696d697a652e676966)
-
Added damage-overflow options in config and per generator phase.
-
Now if overflow is enabled and damage exceeds current phase health it is passed to next phase. This allows to one hit generators that use health mechanic if the tool is powerful enough.
-
Now efficiency is a damage multiplier instead of adding 1 dmg per level.
-
Added
efficiency-damage-multiplier-by-level:
Code (YAML):
# The damage multiplier based on the efficiency enchant level.
[I
]
efficiency-damage-multiplier-by-level:
1
: 1.25
2
: 1.30
3
: 1.35
4
: 1.40
5
: 1.45
-
Added ignore-missing-translation-errors[/I]
Code (YAML):
# Whether to ignore missing translation errors from language file and use default values instead
ignore-missing-translation-errors
: true
-
Added support for block and item displays for FancyHolograms.
-
Fixed line height for FancyHolograms to match DecentHolograms.
-
Fixed existing generator y-offsets resulting too high for FancyHolograms.
-
Added toolIsExecutableItem <item_name> condition
-
Added toolIsEcoItem <item_name> condition
Code (Text):
on-break:
if: toolIsExecutableItem Free_Bucket5
do: sendChat &aTool is a free bucket!
Current requirements for per-player generators:
Paper server on 1.19.3+ with packetevents installed. Normal generators will work the same.
-
Added server side calculations for break time, player distance/facing from/at block. This fixes exploits from fake packets from clients.
-
Fixed exception on servers not running paper
-
Fixed exception on servers without packetevents installed
-
Fixed per-player generators being able to be created on servers which where missing requirements.
-
Fixed per-player generators blocks disappearing when mining a non-harvestable stage.
-
Added per-player-generators-barrier-layouts in config.yml
(Regenerate config to see new options)
Code (YAML):
# Customize Barrier Layout
# 1. Definition -> A fake block is a block that only exists on the client but not on the server.
# 2. Visual problem -> You might see entities/items/players walk into fake blocks.
# 3. Anticheat problem -> If a player stands on a fake block for too long, the server/anticheat will kick/ban the player for flying.
# 4. Solution -> Place barrier blocks on the server-side, the player will not see them, but they will act as a physical layout.
# 5. Limitation -> Players might not be able to reach certain blocks and might run into invisible barrier blocks.
# 6. Customization -> You can set the layout of the barrier blocks to anything you want while keeping in mind problems 2. and 3.
# WARNING: use at your own risk, read above and make sure you understand before using this option.
per-player-generators-barrier-layouts:
great_oak_tree
: great_oak_tree_silhouette
# generator_name: structure_name
wheat
:
none
# Use none, and no barrier blocks will be placed. (No barriers are placed for non-solid blocks by default)
-
Fixed decorative blocks check per-player generators.
- Non solid blocks no longer have a barrier block inside in per-player generators.
- Added per-player generators and virtual blocks and structures.
(Requires a paper server with PacketEvents installed)
- You can create a per-player generator with the new command parameter:
/orestack generator set <generator-name> per-player
Per-player generators are still lacking some features, and has some problems that need to be fixed, here is a list:
- Make crop generators walk-throughable. (barrier blocks)
- Fix decorative blocks check
- Add option to override server side generator layout.
- Fix default block drops and exp drops
- First block of cactus/sugar cane not being repaced with a barrier
- Add per-player holograms
Some features are still missing:
item and block holograms, and hologram rotation.
-
Added
preferred-hologram-supplier option inside
config.yml
Code (YAML):
# The hologram plugin used to create holograms (DecentHolograms, FancyHolograms)
preferred-hologram-provider
: FancyHolograms
-
Added
hologram-styles option inside
config.yml (only for FancyHolograms)
Code (YAML):
# Define custom hologram styles and reuse them anywhere. [1.19.4+ only]
hologram-styles:
default:
view-distance
: 15
update
: 3s
see-through
: true
billboard
: vertical
# fixed, vertical, horizontal, center
alignment
: center
# center, left, right
brightness
: 15
background-color
:
{ red
: 0, green
: 0, blue
: 0
}
# Better system is coming
scale
: x=1 y=1 z=1
shadow
: strength=1 radius=1.5
-
Added a fallback internal hologram implementation which uses invisible ArmorStands, this is only to dispaly the error message: Missing hologram provider. Instead of sending a message to the player.
-
Now simple functions no longer need the 'do' keyword, instead you can just type them out immediately:
Code (YAML):
# BEFORE
on-break:
do
:
- givePlayer diamond
- sendChat You mined a diamond!
# AFTER
on-break
:
- givePlayer diamond
- sendChat You mined a diamond!
- This looks particularly better when mixing functions calls and actions:
Code (YAML):
#BEFORE
on-hit
:
- requireAxe
- do
:
- damageTool
- damageGenerator
- sendHologram &7Chop! offsetY=1 rangeX=0.7 rangeY=0.4 rangeZ=0.7 duration=10
# AFTER
on-hit
:
- requireAxe
- damageTool
- damageGenerator
- sendHologram &7Chop! offsetY=1 rangeX=0.7 rangeY=0.4 rangeZ=0.7 duration=10
-
Updated all generators to use this new system.
-
Added silk touch enchant support and configuration (regen config.yml)
-
Added new in-line flags for actions: giveItem, dropItemAtBlock, dropItemAtPlayer, dropItem for special cases in which you need higher control.
Code (YAML):
on-break:
do
: dropItemAtBlock raw_iron silkDrop=iron_ore smeltedDrop=iron_ingot
-
Added raw_iron and raw_gold as aliases, now they are recognized in <1.17 as iron_ore and gold_ore respectively.
- Fixed hex color code support for (chat, actionbar, title, bossbar, hologram)
Code (YAML):
chat:
message
: '
#e1642cHex colored message'
- Removed XSeries dependency to allow me to support newer versions faster instead of waiting on them to update.
- Implemented compatibility utilities for material, particle, sound, attribute, and enchant instances by mapping changed names across versions or mapping all valid names all together.
- Skulls no longer support head texture until I find an alternative for XSeries/ allow XSeries only on compatible server.
- Fixed exception in 1.16.5 saying BigDripLeaf/Brushable class not exists.
This update breaks current message actions
(sendChat, sendActionbar, sendHologram, etc..)
Code (YAML):
# Old format
do
:
- sendChat <&aThis is a chat message> delay=3s
- sendTitle <This is a title> <subtitle=This is a subtitle> chance=0.5
# New format
do
:
- sendChat &aThis is a chat message delay=3s
- sendTitle This is a title subtitle=This is a subtitle chance=0.5
- The scripting system no longer supports <> brackets, commas are now used to separate parameters, and equals signs are used to define flags. Both must be escaped to be used normally in text:
Code (YAML):
do
: chatMessage This message contains ,, and == sings!
- The origin block of a generator is no longer considered part of the generator if the structure doesn't include a block there. Now you can place blocks there too.
- Fixed {error_count} placeholder not working.
-
Revamped the Orestack resource page.
Check it out and leave a like or a review if you can!!
- Added BuildStation, a station used to create/save custom structures very fast.
- Added block data compatibility for: Beehive (honeyLevel), BigDripLeaf (tilt), BrewingStand (bottles), Cake (bites), Campfire (lit, signalFire)
-
Removed debug messages when clicking a generator, which I forgot about after testing.
-
Added version 26.1 compatibility
-
Generators cannot be placed inside gate occupied blocks from CastleGates anymore.
-
Added GeneratorEvent#getOrigin() to all generator events to be used with OrestackAPI new methods.
-
Fixed left/right clicking a generator only triggering GeneratorHitEvent and GeneratorHarvestEvent, and not the GeneratorInteractEvent.
-
Fixed generator click cooldown and hit/harvest cooldowns logic.
Config.yml has new options:
hologram-view-distance, health-bars
Placeholders that contained stage in the name changed:
{stage_timer} -> {phase_timer}
-
Added new health placeholders and custom health bar placeholders
-
Added custom health bars to be used with placeholders. Instead of the neanderthal tricks used in chop_tree.yml
- Generator stage(s) is now referred to as Generator phase(s)
- Holograms now update when the health of the generator changes, instead of using a timer where a fast update is required.
-
Reworked placeholder/function system to be 99% nicer to look at and performant. Also allowing for future possibilities such as per action placeholders.
-
Added default hologram view distance in config.yml
-
Added
generatorRegrow action, this action sets the generator to it's max stage.
-
Reworked generator logic system completely, and preparations for per-player generators.
-
Added GeneratorPlaceEvent, called when an admin places a generator.
-
Fixed a bug where the GeneratorGrowthEvent would be called whenever the stage of a generator changed.
-
Added `unplaceable` option for items: prevents items from being placed
-
Added toolIdEquals condition (the id is the name of the item yaml section)
-
Added GeneratorEvent#getGenerator and GeneratorEvent#getGeneratorStage methods to the api
-
Refactoring and design changes to prepare for fake blocks/per player generators.
-
Fixed a bug where damageGenerator could throw an exception if the new health was between 0 and 1, i.e. 0.5
-
Fixed a bug on older version where Enchantment.EFFICIENCY could not be found.
-
Added toolEquals action, can be used instead of toolIsSimilar action, the only difference is that toolEquals checks both that the items match (name, lore, enchants, etc..) but it also checks the amount. While toolIsSimilar will be true even if the items have a different amount.
- Added
restore-original-blocks-on-remove option to config.yml. Now if you place a generator that removes existing blocks, those blocks will be saved temporarly so that they can be replaced if you decide to remove the generator. keep-blocks-on-remove overrides this feature.
- You can now
place blocks against a generator reducing frustration when building your map.
Must have the orestack.build.on.generator permission!
- Completely reworked the generator state and logic and decoupled it from the generator class.
- Fixed several issues and bugs related to version 1.16.5, if you find any other bugs I've missed please report them in the discord. For now this version should be stable.
-
Added config options:
experience, experience-aliases, exp-multiplier-by-level.
-
Added experience enchant support for actions:
giveExp, dropExpAtBlock, dropExpAtPlayer, dropExp.
Code (YAML):
# Experience is true by default, you can disable it in config.yml
on-break:
do
: dropExpAtBlock 10 experience=true
-
Added config.yml options:
telepathy, telepathy-aliases, telepathy-chance-by-level
-
Added telepathy enchant support for actions:
dropItemAtBlock, dropItemAtPlayer, dropItem
Code (YAML):
# telepathy is true by default, you can change it inside config.yml
# If a player has telepathy enchant on his tool, the drops will go to his inventory
on-break:
do
: dropItemAtBlock diamond telepathy=true
- You can no longer place blocks inside generator occupied blocks.
- Added hologram view-distance option for holograms.
Code (YAML):
hologram:
line
: 'This is a hologram'
view-distance
: 15
- The default hologram-view-distance can be set in config.yml
- Tested all older versions: 1.16.5, 1.17.1, 1.18.2, 1.19.4, 1.20.4, 1.20.6.
- Fixed an error at startup on versions 1.16-1.20.5
- Fixed amethyst generator files being generated on 1.16.5 servers. (Amethyst was added in 1.17)
- New console logging system for
startup/reload/shutdown:
![[IMG]](//proxy.spigotmc.org/613cef0620b952d19634d9f55b9da6e540a6c889/68747470733a2f2f692e706f7374696d672e63632f464863387a4833722f696d6167652e706e67)
You need to regenerate config.yml to see new auto-smelt enchant options
- The following actions now support auto-smelt:
giveItem,
dropItemAtBlock,
dropItemAtPlayer,
dropItem.
If the player's tool has the auto-smelt enchant, it has a chance to smelt the drops based on the enchant level. (configurable)
- YamlConfig API has been refactored to be more readable and smooth to use, so it can be released shortly.
- Fixed a bug where amethyst default direction would be north instead of up.
- Improvements to YamlConfig library
- Fixed multi message editor
This update breaks existing actionbar and bossbar messages. Check wiki for new system.
- You no longer need to define the type parameter when creating a message in yaml
- You can now create chat messages with multiple lines easily
- Fixed config path not showing sometimes in error log messages
- Fixed message commands auto complete with item instead of message names
- Fixed {online-player} placeholder not working in command messages
This update does not break existing YAML holograms
- Hologram type parameter is no longer necessary when defining a hologram:
Code (YAML):
hologram:
line
: '&a&l+1 Emerald'
offset
:
{ y
: 1
}
- Added easy multi-line holograms:
Code (Text):
hologram:
lines:
- 'Required Tool: Axe'
- '[Click to Chop]'
- '&8[&a||||||||||||||||||||&8]'
offset: { x: 1, y: 1.25 }
update: 0
- Adapted hologram message gui editor to the new system - Added sweet_berry_bush.yml generator
- Added harvest-only option for generator stages:
Code (YAML):
---
# ===== Stage 2 ===== #
type
: ripe
block
: dirt
harvest-only
: true
# This block is skipped during growth
# OLD
---
# ===== Stage 2 ===== #
type
: ripe
block
: dirt
growth
: 0
# This is still valid but it is a little harder to reason with for users that are not very experienced with this plugin.
- Added wiki command, executing it will send you a clickable link to the git-book website.
- Added support command, executing it will send you a clickable link to the discord server.
- Opening a gui with crop generators inside would throw an exception because you can't create an ItemStack from a material that is not an item.
- Blocks with extra data (age, direction, openable, etc..) did not have a default value set. So if two stages shared the same block i.e. oak_door, but one stage had the door set as open. Then when switching to the other stage the door would still result as open instead of returning to it's default closed state.
- Added support for cave_vines_plant and cave_vines blocks
- Added crops/glow_berries.yml generator for servers using 1.17+
- Turned version into int constants instead of enum for easier comparison
- Added support for chorus plant
- Added two generators: chorus_plant.yml and small_chorus_plant.yml
- Fixed a bug where block directions up and down result inverted when generator is rotated 180 degrees
- Saving a structure now supports items-adder, nexo, and craft-engine blocks.
- Typing 'esc' in chat when using an editor would not open back the gui.
- Sending a boss bar message with progress would throw an exception.
- The message delay button was missing the proper instructions/lore.
- You can now use EcoItems items in all
actions and
conditions that require an item:
Code (YAML):
# Examples
on-break:
if
: toolIsSimilar EcoItems:enchanted_cobblestone
do
: chatMessage <Nice looking cobblestone!
>
on-break
:
- giveItem ec:enchanted_cobblestone
# aliases: ecoitems, ec
- dropItemAtPlayer ec:enchanted_cobblestone
- dropItemAtBlock ec:enchanted_cobblestone amount=1-3
- You can now use ExecutableItems items in all
actions and
conditions that require an item:
Code (YAML):
# Examples
on-break:
if
: toolIsSimilar ExecutableItems:Free_Wifi_Crafting_Table
do
: chatMessage <Nice looking crafting table!
>
on-break
:
- giveItem ei:Free_Wifi_Crafting_Table
# aliases: executableitems, ei
- dropItemAtPlayer ei:Free_Wifi_Crafting_Table
- dropItemAtBlock ei:Free_Wifi_Crafting_Table amount=1-3
- You can now use MythicMobs items in all
actions and
conditions that require an item:
Code (YAML):
# Examples
on-break:
if
: toolIsSimilar MythicMobs:SkeletonKingSword
do
: chatMessage <Nice looking sword!
>
on-break
:
- giveItem mm:SkeletonKingSword
# aliases: mythicmobs, mm
- dropItemAtPlayer mm:SkeletonKingSword
- dropItemAtBlock mm:SkeletonKingSword amount=1-3
You can no longer define item amount like this:
Code (YAML):
# NO LONGER SUPPORTED
on-break:
do
: giveItem dirt:5
# Do this instead
on-break:
do
: giveItem dirt amount=5
- You can now use the following internal placeholders in messages and commands:
Code (Text):
{player} -> player's name
{player_id} -> player's unique id
They are compatible with all formatting styles.
- In 1.20.5+ you can now set an items max durability
Code (YAML):
generic_pickaxe:
type
: iron_pickaxe
name
: '&7&lGeneric Pickaxe'
max-durability
: 10
- Fixed a bug where setting an items damage/durability would always result in a damage of 10
- Fixed a bug that when using an item that doesn't support durability to mine a generator block it could throw an exception.
- You can now switch to a random rotation when holding a generator item, placing a generator in this state will result in a generator placed in a random rotation, making it faster to populate your worlds.
- Fixed bug where an admin changing the rotation on one generator item would cause it to also change for all other admins using that generator item. Especially annoying if on a team not being able to know the current rotation.
- Refactoring
- Added colored-console and show-reload-errors options in config.yml
- Updated xSeries dependency to the latest version.
- Added version 1.21.11 support
This update changes existing generator behavior:
If you install this update mining a generator will do 1 damage to the player's tool by default. (Compatible with unbreaking) (All configurable)
- Implemented Folia compatibility
(Officially not supported, and still experimental)
- Added default tool damage of 1 when mining a generator.
- You can now set tool-damage option inside a generator stage, to set the damage done to a tool when a block is broken.
- config.yml refactoring
- Added default-tool-damage option inside config.yml
- Added CraftEngine block support
Code (YAML):
craft-engine-block
: default:topaz_ore
# or alias
ce-block
: default:topaz_ore
- Added generators/examples/hooks/topaz_ore.yml
- Fixed inline structure definition:
Code (YAML):
blocks
:
# blocks or structure
- dirt
- itemsAdderBlock=ruby_ore offsetY=1
- nexoBlock=has_no_default_blocks offsetY=2
- craftEngineBlock=topaz_ore offsetY=3
# aliases: iaBlock, nxBlock, ceBlock
- Fixed a lot of medium/major and minor level bugs.
- Fixed title not appearing when entering value in chat from gui editor
- Fixed plugin configuration and data loading not happening async after startup/worlds loaded/etc.. which caused server to lag behind.
- Fixed plugin loading related unwanted behaviors
- Fixed autosave not working (forgot to add it to new system)
- Fixed tab command completions not showing up if player joins the server before Orestack is finished loading.
- Language and config.yml errors are now logged correctly the same as other configuration errors.
- Added world-load-timeout and player-cache-duration options inside config.yml
- Created new settings system for config.yml instead of using OptionsManager
- Great oak tree now drops items at the block mined.
- Player state is now cached when he leaves the server (duration customizable), this avoids players quitting and joining the server to reset their flags.
I have tested this version for 2-3 hours over a couple of days to check that compatibility with plugins hasn't broken but I could always have missed something,
if you find any bugs please report them in the discord.
- Added/fixed support for Multiverse and PlotSquared worlds.
- Fixed PlotSquared support, you can now place generators in admin owned plots and players will be able to gather them.
- Added a PluginInitialization system, the plugin will now only load it's data and generators when all BootPhases are finished. i.e. server:loaded, server:worlds_loaded, ItemsAdder:data_loaded, etc.. This new system is much more flexible and helps to integrate with weird stuff other plugins do.
- Fixed premium version registering as free on b-stats.
- Fixed not being able to disable premium config.yml options in the premium version, and also removed the message: PREMIUM required to disable.
- Fixed a bug where using the setStage, previousStage, or nextStage actions would change the default-drops to the ones of the changed stage not the current one. Bug found from magic_wheat.yml
- Published and using OrestackAPI version 1.1
- Improved logic of magic_wheat.yml example generator.
- Now the plugin waits for ItemsAdder to finish loading data.
- Fixed titles not appearing during GUI message creation by using Short.MAX_VALUE for title duration instead of Integer.MAX_VALUE which would fail silently because too large.
Veinminer
- To use veinminer you need to install an enchantment plugin that supports the vein miner enchant.Then you need to configure the veinminer options inside Orestack/config.yml.
Keep in mind that veinminer is still experimental and is disabled by default as there might be problems I didn't find during testing.
- Added vein miner integration
- Added vein miner related options inside config.yml: vein-miner, vein-miner-aliases, vein-generators, vein-size-by-level.
- Fixed an annoying bug which would not let you place a generator when clicking against another generator block.
- Fixed player related PAPI placeholders not working in chatMessage and sendChat actions.
- Fixed a bug where the cancelEvent action would not work when used inside the on-break trigger.
- Now messages sent through the action system that contain < or > are parsed correctly.
Example:
Code (Text):
on-break:
do: chatMessage <This is a message that contains <>.>
Regenerate config.yml to view new cooldown options: click-cooldown and harvest-cooldown.
- Added fibers category: cotton, flax, and hemp generators.
- Added amethyst generators.
- Managers now used colors in log messages.
- Added new trigger: 'on-harvest', it is triggered when a player right clicks a non-decorative generator block.
- Added cooldowns for on-click and on-harvest: click-cooldown and harvest-cooldown. They can be set in config.yml or inside each generator stage.
- Added some config checks: health must be greater than 0, when health is set idle must be true. - Added Nexo block support.
Warning: default-drops and drop-items are not compatible since nexo doesn't have an api for getting block drops, if you try to use them it will drop a noteblock
Warning: Nexo furniture is not supported since it's not a block.
Code (YAML):
nexo-block
: ruby_ore
- Fixed crop generators growth time mistake in format when I replaced units from ticks to seconds.
- Removed UpdateChecker dependency by jeffmedia, and made my own.
- The update checker no longer asks for donations, and is more subtle.
- Added a comment inside experience_ore.yml regarding radius-merge for exp found in spigot.yml which causes multiple orbs to unite.
- Refactoring config.yml
- Fixed a bug where using the sendHologram action without DecentHolograms installed would throw an exception.
- Fixed config.yml data not being loaded on first startup. Now it attempts to create the default config.yml first and then load.
Regenerate config.yml to view new options.
- Added health related mechanics. Usage Example:
- Added health option in generator stages
- Added two new triggers: on-hit and on-destroy
- Added damageTool and damageGenerator actions
- Added hit-cooldown per generator stage.
- Added 5 new options in config.yml related to the generator health mechanic: hit-cooldown, default-damage, efficiency-damage, reduced-cooldown-damage, damage-by-tool-type.
- You can now set the hologram offset inside sendHologram action. (Before only range)
- Added chop_tree.yml generator example
- Now on-click and on-hit are not triggered if the block is in the decorative-blocks list.
- Now dropItemAtBlock drops the item towards the player instead of above the block. To avoid glitching if the block above is not empty.
- Added ItemsAdder v4 support. (Might work with other versions but it has only been tested on v4 1.21.4 for now)
- Added ItemsAdder generators/examples/hooks/ruby_ore.yml example.
- You can now use itemsadder-block or ia-block option in generator blocks and structures.
Code (Text):
itemsadder-block: ruby_ore
- When ItemsAdder is enabled on your server, Orestack will wait for it to finish loading it's data (async) before loading structures and generators. This might cause a delay in generators appearing in your world on startup.
- Fixed some bugs related to the error debug system in chat/console.
- Added support for 1.21.9 and 1.21.10
- Players should now be able to harvest generators inside protected plots (I couldn't test it since I don't own PlotSquared)
- Plugin hooks are now logged as a list so as to not spam console as much.
-
Added
generators/examples/hooks/auraskills.yml. It will only generate if AuraSkills is enabled on your server. If you decide to uninstall Auraskills you will need to delete the generator file manually.
- Added mcMMO support, 1 condition and 4 actions:
Code (Text):
if: hasMcmmoLevel 3+ skill=mining
do: giveMcmmoExp 10-20 skill=mining
do: takeMcmmoExp 100 skill=mining
do: levelUpMcmmoSkill mining
do: resetMcmmoCooldowns
- Fixed an error thrown by AuraSkills conditions/actions when the specified skill was disabled inside plugins/Auraskills/skill.yml
- You can now use sneak option in clickTypeEquals condition:
Code (Text):
# aliases: shift, sneak, sneaking
if: clickTypeEquals left_click sneak=true
if: clickTypeEquals left_click, right_click sneak=true
- Added AuraSkills support:
https://www.spigotmc.org/resources/auraskills.81069/
- Added 2 conditions and 3 actions related to AuraSkills:
Code (YAML):
# Conditions
if
: hasAuraLevel 10+ skill=mining
if
: hasAuraMana 10-20
# Actions
do
: giveAuraExp 100;120;140 skill=foraging raw=true
# if raw, multipliers are ignored
do
: giveAuraMana 100
do
: takeAuraMana 100
All Aura skills: farming, foraging, mining, fishing, excavation, archery, fighting, defense, agility, endurance, alchemy, enchanting, sorcery, healing, forging. (Should be the same as in-game but anyways..)
- You can now use minus (-) and plus (+) for conditions that require an amount:
Code (YAML):
if
: hasExp 100+
# Player has 100 exp or more
if
: hasMoney 100-
# Player has 100 money or less
- Added {generator_rotation} placeholder I forgot
Warning: this is not a drag and drop update, if you decide to update you will have to become familiar the new system and fix your custom yaml files.
This update mainly affects generators and functions. The biggest changes are:
- There are now 5 stage types: depleted, growing, unripe, ripe, regrown
- Generators do not drop items/exp unless the default-drops, drop-items, drop-exp are used. This makes it less confusing.
Just these 2 changes are enough to break all generators and their logic. Since the destructive nature of this update I've decided to condense as many breaking changes as I could into this one update in order to create a more stable starting point for the future.
Wiki Update: The wiki will be updated today and into the next few days.
-
Added clickTypeEquals condition
-
Removed 'action' parameter from on-click functions. You now must use a condition to check the click type.
-
Added decorative-blocks option for generator stages
-
Growth option in generator stages now supports other units of time (1h 1m 1s, 1h, 1m, 1s)
- Reworked timer placeholders
- Reworked generator spawn logic
-
Renamed stages and
added a new one (depleted, growing,
unripe, ripe, regrown)
-
Added doFortune and amount flag for actions: dropItemAtBlock, dropItemAtPlayer, and dropItem.
-
Removed resetGenerator action
- Renamed generator actions: keepStage, nextStage, previousStage, setStage.
-
Added drop-exp option in generators and removed exp-to-drop.
-
Added default-drops option in generators
-
Added support for inline configuration of structures.
-
Moved great_oak_tree.yml to generator/examples.
-
Removed regex overhead of calling String#replaceAll and instead use String#replace for placeholders
-
Added do-fortune-whitelist option in config.yml. It enable player's tool fortune on specified items when using these actions: giveItem, dropItem, dropItemAtPlayer, dropItemAtBlock.
-
Removed duplicate OrestackOptionsManager, which caused generator-tool to load twice
-
Fixed config.yml not loading properly on reload, and removed redundant call to ConfigRoot#load when calling getConfiguration
-
Fixed multiple negated conditions (if-not) not being evaluated properly. Now all conditions under if-not must be false, while before only one had to be false.
-
Added a third result (null) for conditions which couldn't be evaluated for any reason (should rarely happen; user mistake). This fixes a bug where negating these invalid conditions would result as MET.
-
Renamed rock piles to deposits.
-
Improved all rock piles logic and renamed them as deposits
-
Fixed block related actions not working with on-click functions.
-
Fixed and re-added 'idle' option for generator stages. An idle stage will not change when mined, you will have to change the stage manually.
- The following placeholders are now deprecated and will be removed in future versions: {generator_timer_seconds}, {generator_timer_minutes}
- Added the following placeholders:
Code (Text):
{generator_next_timer} -> The time until the next stage i.e. 1m 20s
{generator_next_seconds} -> The seconds until the next stage
{generator_next_minutes} -> The minutes until the next stage
{generator_replenish_timer} -> The time until the replenished stage i.e. 1m 20s
{generator_replenish_seconds} -> The seconds until the replenished stage
{generator_replenish_minutes} -> The minutes until the replenished stage
- Added logo in console on startup and on reload. Added dump-logo option in config.yml to disable it.
- Renamed the following conditions:
Code (Text):
playerHasPermission -> hasPermission
playerHasFlag -> hasFlag
probability -> chance
There may be more, you can find a complete list of all conditions/actions
here. If updating from <3.30.0, read the 3.30.0 update log.
This updates makes reading config errors much easier by using smart color schemes.
- Added new color scheme for /orestack reload command in chat:
- Added new color scheme for errors in console:
- Added colors to logs in console, green for info, red for warnings This update breaks a lot of things: generators, item attributes, functions.
When updating you will immediately log 20+ configuration mistakes, of course running a clean install will not log any errors. I recommend you follow the How To Update Guide if you need to update.
This is one of the largest updates I've made, if you like it leave a review, or don't, here are the changes:
- Reworked in-line config system, it now supports flags:
Code (Text):
if: placeholderEquals example tag={generator} ingnoreCase=false
- Removed NBTAPI dependency and implemented my own multi-version attribute mapper/loader. Example:
Code (Text):
# Old
attributes:
- attribute: generic.max_health
amount: 10
operation: 0
slot: HAND
# New
attributes:
- max_health 10 operation=add slot=mainhand
-
Added in-line flags for actions: chance, delay, repetitions, interval:
Code (Text):
# Works on any action
do: chatMessage <Hello World!> chance=0.5 delay=20 repeat=3 interval=10
- Added in-line message actions: sendChat, sendActionbar, sendTitle, sendHologram (TO-DO sendBossbar)
Code (Text):
do:
- sendChat <This is a chat message>
- sendActionbar <This is an actionbar>
- sendTitle <This is a title> <subtitle=This is a subtitle> fadeIn=10 stay=70 fadeOut=20
- sendHologram <This is a hologram> duration=60 radiusX=3 radiusY=1.5 radiusZ=3
-
Overhauled YAML scripting system and rewrote many systems.
- Laid down most work for particle editors.
-
Fixed a bug where an exception would be thrown for all particles of type spell.
- Fixed a bug/bad behavior where not all errors would be logged to player/console.
-
Now multiple errors can be caught from a file that contains multiple elements (items, functions, particles, sounds, messages). Before loading would stop for the file at the first error found.
- Fixed all configurations to use the new config line system where needed.
- The logged errors (chat/console) now include a Line parameter if the error is found in an in-line configuration.
- Errors do not display in italic anymore in chat which made them hard to read.
- Refactoring and many more things I forgot about
- Added 88 new default particles: dust_spores, dust_clouds, dust_rise, dust_fall. 22 Colors for each type.
- Added an option to adjust view timer (time before menu reopens when viewing particles, messages, etc..) in the main menu gui.
- You can now use ranges in all particles parameters such as: color.red, color.green, color.blue, size, amount, range.x, range.y, range.z
- Added 'uniform' boolean option to dust and spell particles. If true the ranges used in: color and size will apply to all particles. If false each particle will be different in size and color depending on the range.
- amount now works for all particle types even those who don't natively support it in spigot.
- Added a new command: /orestack particle show-me-group <group-name> <particle-name>. It makes it easier to find particles sorting by group otherwise it's the same as the show-me command
- Reworked Command parameters in command framework
- Fixed a mistake where premium versions would show false on bstats premium chart.
- Added documentation in particles/special.yml
- Fixed group names missing middle folders in id. Now particles/dust/clouds turns into dust_clouds as intended, although I'm still looking at better alternatives.
- Added
new particle types: basic, dust, directional, spell, note, material, dust_transition
You can define a particle with the "type" option. If not set, the basic type will be used so that old particles you made will not break when updating.
Code (Text):
particle:
type: directional
particle: flame
speed: 0.1 # directional reserved option
direction: { x: 0, y: 1, z: 0 } # directional reserved option
- Added "particles/special.yml" which contains examples of all new particle types
- Fixed some particle related bugs caused by using certain particles: REDSTONE, MOB_SPELL, etc...
- Invalid generators (missing world, overlapped, generator template missing/broken) are now saved to the database and wait to be restored if they ever become valid again.
Explanation of the behavior
If you:
- Modify a generator YAML file and make a mistake
- Reload the plugin to apply changes
- Then that generator template will not load, and all placed generators in your world will be deleted.
But in the new version:
- The deleted generators are saved to the database as invalid_resources
- Now you have a chance to fix your mistake
- So when you reload the plugin all previously missing generators will be restored
- Refactoring and improvements to error/warning messages
- Refactoring
- Fixed a bug which would increment generator item when placing it in creative
- Now if you place a generator that no longer exists or is invalid you will get an error message
- Added generator-not-exists error message in en.yml
If you are updating from 3.29.0 read
the last update
- Updated hologram message editor
- Added Item Hologram Editor
- Added Block Hologram Editor
- Various small fixes/improvements to guis
This update
breaks all
old holograms:
Code (Text):
# Old
hologram:
text: This is a hologram
# New
hologram:
type: static
text: This is a hologram
# Old
hologram:
frames:
- This is a hologram
- This is not a hologram
# New
hologram:
type: animated
frames:
- This is a hologram
- This is not a hologram
- Hologram system now supports 4 types: static, animated, item_display, block_display
- Added DecentHolograms soft dependency
- Fixed bug in which removed generators would reappear when reloading plugin or restarting server
This update
breaks all
old holograms:
Code (Text):
# Old
hologram:
text: This is a hologram
# New
hologram:
type: static
text: This is a hologram
# Old
hologram:
frames:
- This is a hologram
- This is not a hologram
# New
hologram:
type: animated
frames:
- This is a hologram
- This is not a hologram
- Hologram system now supports 4 types: static, animated, item_display, block_display
- Added DecentHolograms soft dependency
- Fixed bug in which removed generators would reappear when reloading plugin or restarting server
- You will now get an error if an item/message/function/generator/particle/sound with duplicate name exists. Only the first will work.
- Fixed a bug in the multi-message editor which would break if you exited from the message creation
- Improved the multi-message editor buttons, it now uses as title the message/title/text from the underlying message.
- Changed position/design of some buttons
- The title in the bossbar editor if not set will now show 'none' like other message editors
- Removed main_menu buttons from editors and first level menus, to avoid confusion there will only be the 'back & save' button. Also pressing 'esc' will have the same behavior.
- Fixed ClassCastException when saving head via command
- '/orestack item add' changed to '/orestack item save'
- When saving an item to config via command an empty 'enchants' section is no longer created if the item has no enchants
- Added support for 1.21.6-1.21.8
- Fixed compatibility issues with new paper library loader system. For now some dependencies are included with the plugin, this will result in a slighter bigger jar size, this will not affect performance whatsoever.
- Added HologramMessageEditor
- Added HologramEditor
- Reworked guis looks, functionality
- Editors no longer close by pressing esc
- If you press esc while in a creation GUI you will be sent back to the previous menu
- Fixed player head texture for items, it now works across all versions
- Removed save and load buttons from all message editors
- Now when you exit an editor all changes are saved automatically
- Added load button in message groups menu
- You can now edit existing message with right-click
- Clicking the reload button now reopens the menu once completed
- Reloading the plugin no longer resets the player state
- Fixed various bugs/mistakes
- Improved debug mode, when a player reloads the plugin if debug is enabled in config.yml all errors are logged to the chat of the player who reloaded the plugin
- Added BossbarEditor
- Fixed a critical YamlConfig bug where existing sections/list would not be reused when calling ConfigSection#getSectionOrCreate or ConfigSection#getSequenceOrCreate, which would lead to loss of data.
- Changed colors and formatting in all menus
- refactoring
- Improved GUI messages and fixed some mistakes
- Reworked input system to support different input types: Chat, Gui
- Added message creation gui
- Added chat, actionbar and title editor guis
- Added "/orestack menu" command
- Added save and load config buttons
- You can now use the "back" button to go back to the main menu with shift + left click
- A lot of setup for in-game YAML editors
- You can now use /orestack to open the orestack gui
- Added guis for: generators, items, structures, functions, messages, particles, and sounds. Very basic functionality for now.
- Added reload, wand, close, back buttons
- File names are now also used as groups. i.e. The group for "/items/misc.yml" is no longer "default" but "misc". (Generators, and structures are excluded from this)
- Reworked how the database works
- Fixed /reload and /orestack reload integration with database
New error system
Code (Text):
[14:11:59 INFO]: [Orestack] Loading configuration and data...
[14:11:59 ERROR]: [Orestack] Generator Configuration -> invalid sound effect
File: generators\example.yml
Path: [2].on-break[1].do[1]
Details: Could not find sound effect with name: 'tin'
---------------------------------------------
[14:11:59 ERROR]: [Orestack] Generator Configuration -> invalid particle effect
File: generators\examples\magic_wheat.yml
Path: [7].on-break[0].do[1]
Details: Could not find any particle effect with name: 'rain_cloud'
---------------------------------------------
[14:11:59 ERROR]: [Orestack] Generator Configuration -> invalid item
File: generators\tutorials\tools_tutorial.yml
Path: [4].on-click.do[1]
Details: Could not find any item called: 'legendary_axe'
---------------------------------------------
Added toolNameEquals, toolLoreEquals, and toolLoreLineEquals conditions
- Hopefully fixed a bug where generators would disappear randomly
- Fixed a bug where players without command permission could still see command suggestions
- Fixed command usage message
- Added dropExp, dropExpAtPlayer and dropExpAtBlock actions
- Added exp_tutorial.yml
- Added experience_ore.yml
- Added support for coral blocks to be used as generators
This update breaks a lot of stuff, config.yml, language files, and internal placeholders (Format changed from %id% to {id}).
- Major changes to internal code
- Reworked language file
- Removed fr.yml and zh.yml for now
- Changed placeholder format from %id% to {id} for all internal placeholders
- Fixed 1.21.5 compatibility issues
- Updated NBTAPI and xSeries to the latest versions
- Updated bamboo.yml with latest scripting features
- More preparation for guis
- Fixed a Leaf compatibility issue
- Fixed a bug where players without permission would still be able to place blocks when trying to place a generator
- Internal code refactoring in preparation for the upcoming GUI system
- Fixed WorldGuard support, generator blocks can be broken inside protected regions. They will be broken normally like normal blocks increasing compatibility with other plugins that rely on breaking blocks such as: MMO Core and Aura Skills for skills exp.
- Added /orestack generator get-group <generator-group> command, the generator group is based on the folders in which the generator is located:
Code (Text):
/generators/crops -> crops
/generators/trees/vanilla -> trees_vanilla
With increasing number of generators this should make it easier to stay organized.
I also started developing a basic gui system to make the plugin easier to use.
- Added 7 rock pile generators and 70 structures
- Fixed dropItemsAtBlock spawning items inside the block
- Improved logic in magic_wheat.yml
- Improved backwards compability, copper.yml and copper_pile.yml examples only generate on 1.17+
- Added 'goto' action
Code (YAML):
testGotoLine:
- do
: goto 2
- do
: chatMessage <This function will be skipped!
>
- do
: chatMessage <You skipped function 1 and are now on function 2>
- Reworked return and stop actions, stop ends all execution everywhere, return if used inside a function it will only end execution in the current function
Code (YAML):
on-break
:
- giveIronIfPerm
- giveGoldIfPerm
- chatMessage <This will not be sent because stop was used
>
giveIronIfPerm:
- if-not
: hasPermission orestack.iron
do
: return
- do
: giveItemToPlayer IRON_INGOT
giveGoldIfPerm:
- if-not
: hasPermission orestack.gold
do
: stop
- do
: giveItemToPlayer GOLD_INGOT
- Yaml library now uses case sensitive keys
- functions.yml was removed and replaced with a folder
- Added misc.yml, tools.yml and trees.yml inside /functions/ folder
- Modified trees/vanilla/ generators, now if leaves are broken the generator remains unaltered
- Added resetGenerator action, it can be used in on-break
- Fixed 3 compability issues with 1.16.5
- Fixed a bug where breaking blocks very fast would cause the generator to break
- Added 6 vanilla trees with over 50 new structures
Dropped ItemsAdder/Nexo/Oraxen/etc.. support, I will not support any custom blocks plugins. I'll only add support for custom blocks if Mojang ever decides to get onto it.
- renamed items/items.yml to items/misc.yml
- renamed sounds/sounds.yml to sounds/misc.yml
- renamed messages/messages.yml to messages/misc.yml
- refactoring and code cleanup
Warning: This release is unsuitable for servers in production, it should only be used for testing purposes
I do not own ItemsAdder so I cannot test the plugins together at the moment.
When Orestack is enabled you should see this message if ItemsAdder was found:
Code (Text):
[Orestack] ItemsAdder Hook: created successfully
To use a block from items adder in a generator or structure use:
Code (YAML):
items-adder-block
: block_id
Or select a region and use the
/orestack structure save <file-name> <structure-name> command
If you find any problems please report them in my discord.
Warning: This release is unsuitable for servers in production, it should only be used for testing purposes
I do not own ItemsAdder so I cannot test the plugins together at the moment.
When Orestack is enabled you should see this message if ItemsAdder was found:
Code (Text):
[Orestack] ItemsAdder Hook: created successfully
To use a block from items adder in a generator or structure use:
Code (YAML):
items-adder-block
: block_id
Or select a region and use the
/orestack structure save <file-name> <structure-name> command
If you find any problems please report them in my discord.
How to update
1. Update YAML configuration files
- Shut down the server
- Make a copy of the plugin folder
- Delete the plugin folder
- Start up the server; the plugin will generate new files
- Add the YAML files you want from the backup (generators, items, particles, sounds, and functions)
- Use the /orestack reload command and fix any issues with your configurations
2. Update the database (generators placed in your world)
- Delete the database file (data.mv.db)
- Place the old database back into the plugin folder
- Start the server and check the console for warnings to make sure no generators have been removed due to a mistake
- Added magic_wheat.yml
- Added 'interval' option for functions and particles:
Code (YAML):
rain_cloud:
- { particle
: cloud, count
: 15, offset.y
: 1.5, range
:
{ x
: 0.3, z
: 0.3
}, repetitions
: 8, interval
: 2
}
- { particle
: falling_water, count
: 15, offset.y
: 1.5, range
:
{ x
: 0.2, z
: 0.2
}, repetitions
: 12, interval
: 2
}
- Added new particles in files misc.yml and flame.yml
if you're interested in examples regenerate the following files:
functions.yml,
great_oak_tree.yml, and
function_tutorial.yml
- Added 'if-any' function
- Added blockTypeEquals condition
- Added toolHasCustomModel condition
- renaming of conditions/actions
- refactoring and bug fixes
- Added global functions that can be reused across all generators
- Added functions.yml
- Updated function_tutorial.yml
- Balanced ore generators growth timers
- Added generators/ores/emerald.yml
- Added generators/tutorials/drops_tutorial.yml
- Added "generators/tutorials/flag_tutorial.yml"
- Renamed generators "examples" folder to "tutorials", remove the old folder to avoid duplicates
- Added generators/examples/function_tutorial.yml
- Added spigot persistent data support for items.
Supported Datatypes: byte, short, string, integer, long, float, double, byte_array, integer_array, (untested) tag_container_array, (untested) tag_container.
It can be added with '/orestack item add <file> <item>' command or manually:
Code (YAML):
diamond:
type
: DIAMOND
persistent-data:
- key
: orestack:name
type
: string
value
: Hello monos!
- key
: orestack:id
type
: integer
value
: 001
- Added 1.21.5 support
- Added examples/hologram_tutorial.yml, an example generator used to learn how to use holograms.
- added toolTypeIsEqual condition
- toolIsSimilar and toolTypeIsEqual now accept a list of valid materials/items
Code (Text):
on-break:
- if-not:
- toolTypeIsEqual <IRON_PICKAXE, GOLD_PICKAXE, DIAMOND_PICKAXE, NETHERITE_PICKAXE>
#- toolIsSimilar <IRON_PICKAXE, GOLD_PICKAXE, DIAMOND_PICKAXE, NETHERITE_PICKAXE>
do:
- chatMessage <&4You need at least an iron pickaxe to mine this generator>
- cancelEvent
- stop
- Refactoring of example.yml and great_oak_tree.yml
- added metrics option in config.yml to enable/disable bstats
Code (YAML):
metrics
: true or false
- added hologram message, a hologram that spawns and despawns after a set duration.
Code (YAML):
hologram-message:
type
: hologram
hologram:
text
: '&a&l+1 Emerald'
offset
:
{ y
: 0.5
}
duration
: 30
radius
:
{ x
: 1, y
: 1, z
: 1
}
- fixed bug where attached blocks would drop items sometimes (like buttons)
- Added 'directions' option for blocks like fences which can face multiple directions
- Removed flags.yml
This update breaks some things:
- Stage is now saved to the database so that it sticks across server restarts (
WARNING: You will need to
delete data.mv.db, doing so will
delete all placed
generators in your world)
- Sugar canes can now only be placed near water (Like in vanilla)
- Cactus can only be placed on sand (Like in vanilla)
- Sugar cane and cactus are now subject to physics.
- Crops can only be placed on tilted soil. (Like in vanilla)
- Cocoa can only be placed on jungle wood/logs (Like in vanilla)
- Generators are now removed if broken by water/lava, before fluid flow was interrupted.
Fixed bamboo not behaving properly
Fixed 'idle' option and renamed it to 'regrow' (if regrow is false when mined the block will not regenerate and you will have to do so manually using setStage, nextStage or previousStage in on-break trigger)
This update might seem like a downgrade but it is necessary to make a more solid and less buggy system. I hope to compensate with more interesting features in the future.
- Added "languages/zh.yml"
- Added "languages/fr.yml"
- Added leaves option for bamboo:
Code (YAML):
bamboo-leaves
: small, large,
none
- Added idle option for generator stages:
Code (YAML):
idle
: true or false
WARNING when an idle generator is mined you must set a new stage manually with setStage, nextStage or previousStage
- Fixed generator stage chance logic
- You can now set the chance on the last stage
- Fixed setStage, nextStage, and previousStage actions not being registered
- Added "generators/crops/bamboo.yml" example
Slabs are now supported with parameter:
Code (Text):
slab-type: bottom, double or top
or with command /orestack structure save name.yml
Reduced jar size by around 1.3mb
New block options:
Code (YAML):
open
: true or false
# for doors, trapdoors etc...
half
: top or bottom
# for blocks that are 2 blocks tall and stairs facing up/down
stair-shape
: straight, inner left, inner right, outer left or outer right
door-hinge
: left or right
bed-part
: head or foot
All of these can be added manually or with the command /orestack structure save name.yml after having selected the area.
- Fixed a small bug where it would say world not found with name: 'world' which would crash the plugin
- If you're updating from <3.20 read the last changelog
This update completely changes how you write functions and actions, it also adds some new actions like: 'return|stop' and 'cancel-event'.
How to update:
- Backup your generators and everything you want to save.
- Delete generators in folder and regenerate examples.
- Update your old generator functions to use the new system, and put them back in the folder.
I am sorry for the inconvenience, this should be the last time when an update breaks older versions so severely.
I will update the wiki completely later today, in the meantime here is an example of the changes:
Code (YAML):
# BEFORE
on-break:
- if
:
-
[ has permission, orestack.generator.harvest
]
do
:
-
[ give item, emerald
]
-
[ spawn particle at block, fire_ring
]
-
[ chat message,
"You mined emerald!"
]
or
:
-
[ cancel-event
]
# This action was only added in 3.21.0
-
[ chat message,
"&4You don't have permission to mine this block!"
]
# AFTER
on-break:
- if
: hasPermission orestack.generator.harvest
do
:
- giveItem emerald
- spawnParticleAtBlock fire_ring
- chatMessage <You mined emerald!>
or
:
- cancelEvent
- chatMessage <&4You don't have permission to mine this block!
>
# AFTER, Another Example
on-break:
do
:
# These examples are for actions, but it is exactly the same with conditions
- <chat message> <&aHere have an emerald!>
# if there is spaces you need to enclose it in <> brackets
- chat_message
NO!
# No spaces in the message so no need for brackets
- chatMessage <Hello Everyone!>
# This is the preferred format but others are also viable
- added support for sugar cane & cactus crops with examples (experimental but should work fine)
- fixed item enchantments not working in 1.21
- changed to an update checker compatible versioning
- fixed a visual glitch in structures (blocks are only updated if they change from one stage to the other, this reduces blocks changed as well)
- when you place a generator, if the first stage is just air/empty it will still spawn on the last stage not on the first.
- moved /orestack generator wand to /orestack wand since the wand is also used in /orestack structure
- wand now has two actions instead of one: left-click for first position and right-click for second position, this should make it faster to use
- added options in config.yml for generator-tool and wand-tool
- removed old options in en.yml for generator item and generator wand
- added structure rotation, you can now rotate structure with item before placement
- structure rotation was added to the database, if you get any errors you might need to delete the data.mv.dk file (this will delete all placed generators in your world)
- fixed 'drop-items' which wouldn't work and added an alias: 'drop-item'
- Fixed compability with 1.21
- Reduced jar size by almost 2mb
Removed 'op command' action because it poses a security risk, you can find other plugins that allow you to make players execute commands as op safely.
- added 2 commands:
/orestack structure save <file-path>
/orestack structure place
- bug fixes and other improvements
- added great_oak_tree.yml example
- you can now set the orientation of the block with 'orientation' parameter which can be set to: x, y or z.
- Since some blocks don't use direction but orientation. (like oak log)
- For some reason config.yml wouldn't load correctly while enabling if the directories and files where absent. An exception would be thrown saying the language field was not set. (In reality the field was set but not loaded in memory) This would disable the plugin.
- Temporarly fixed with redundancy now calling OrestackPlugin#getConfiguration will load the data before returning. This is a temporary fix, I will look into the issue.
- improved error messages
- improved logging in console
- added debug option in config.yml
- fixed language option in config.yml not working
- reworked how language system works internally
- InvalidConfigurationExceptions now look cleaner and are easier to read
- you will no longer get LangNotFoundExceptions, instead a warning will be sent in console and the default value will be used. The exception will only be thrown if a default value does not exist for that language tag. i.e. 'en'
- added a structure system, now each stage may have a structure or a single block
- added placeholder support to: command, op_command, and console_command
- fixed a bug where reloading wouldn't regenerate missing folders, and files
- added 'generator-overlap' to language file (error message sent when two generators overlap since now you can have multi block generators)
- refactoring
- Improved Database Performance:
- Switched to H2Database for better performance.
- Please note: generator data will be lost when updating to this version. This means any generators you had placed before will stop working. Sorry.
- You can safely delete the old `data.db` file and keep the `data.mv.db` file.
- Language File: - Added new language messages. Please regenerate your language file
- New Commands:
- `/orestack message send`
- `/orestack message broadcast`
- `/orestack sound play`
- `/orestack sound play-to`
- Other Improvements:
- Various fixes and improvements to the plugin.
- Fixed titles: the subtitle would be equal to the title and colors would not work
- added 'is_placeholder' condition
- changes to certain condition/action names for better readability
- added the following conditions: has_exp, has_exp_level, has_item, has_played_before, is_flying, is_sneaking, tool_is_similar
- added action: take_item
- added fire_ring and fire_spiral in particles.yml
- You can now use range in certain conditions/actions i.e 'amount: 1-10'
- for older versions check free resource page
- Compiled in java 16 and added support for 1.16.5
- No error message when mining generator in world guard region
- auto-save option added to config.yml
- added exp-to-drop option in generator stage configuration
- holograms don't spawn if chunk is not loaded