Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Expanding Status Screens #3548

Merged
merged 6 commits into from
Dec 8, 2019
Merged

Expanding Status Screens #3548

merged 6 commits into from
Dec 8, 2019

Conversation

Emperor-Koala
Copy link
Contributor

I've added a system very similar to the metadata system already in place to allow for other plugins to add their own fields to the Nation/Town/Resident status screens.

The point is that sometimes developers expanding on Towny will keep track of some extra information, but they might not want to require users to know a separate command just to display a single piece of information. Instead, this allows developers of other plugins to be able to register information with Towny that will display with the rest of any information requested.

The status field types that have been added are:

  • StringField
  • BooleanField
  • DecimalField
  • BalanceField
  • IntegerField

Each type has been handled in TownyFormatter to have different properties when displayed.

All new functionality has been tested and does work as intended. This image here shows a simple test of adding at least one of each type of field to test that the color formatting is working as intended.

Copy link
Member

@LlmDl LlmDl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needs additions added to sqlschema class.

@ghost
Copy link

ghost commented Dec 6, 2019

@Emperor-Koala this is awesome and is definitely needed, I was thinking that instead of having a separated logic for both metadata and the status fields, you could extend CustomDataField instead, which would remove code dependencies and eliminate redundant logic. For example, adding the status object as a field to CustomDataField.

@Emperor-Koala
Copy link
Contributor Author

Emperor-Koala commented Dec 6, 2019

@suneettipirneni I tried that at first, but I ran into the issue of needing to still store them separately. Though thinking about it now, I could still make it work. All I would need to do is have StatusField extend CustomDataField, then store some extra fields and maybe override the toString() method. I'm going to get to work on trying that now.

@ghost
Copy link

ghost commented Dec 6, 2019

@Emperor-Koala
Ah ok, I think you're approaching this differently than I am. My idea is that you don't have to store most of the things in the statusfield object with the exception of the label. So instead of creating a new object (CustomStatusField) you can simply add the field label to CustomDataField. And since all of the other fields you defined in CustomStatusField are defined in CustomDataField there's no need to store a separate object, just reference them in CustomDataField and create a status field whenever it's needed based of the values in the object. Then you can eliminate the extra object and decided whether to show a status depending on whether CustomDataField has a label or not. And just store the label as a part of the toString() method

@ghost
Copy link

ghost commented Dec 6, 2019

Here's a crude example:
https://paste.ubuntu.com/p/Hg9xrWkV7W/

@Emperor-Koala
Copy link
Contributor Author

Emperor-Koala commented Dec 6, 2019

@suneettipirneni that actually makes a lot more sense than what I was thinking. And doing it that way makes it way simpler.

I've written all the code to make it part of the metadata. Once I get the chance, I'll test it out and make sure it works the same way.

@Emperor-Koala
Copy link
Contributor Author

I have switched up the system so that it is included as part of the metadata system. When a status screen is selected, it checks if the TownyObject in question has metadata, then finds all the metadata fields with labels. Those are then appended to the status screen.

Copy link

@ghost ghost left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doing a quick look over


public IntegerDataField(String key, Integer value, String label) {
super(key, CustomDataFieldType.IntegerField, value, label);
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The main reason is so that it can be defined quickly when setting up the field in one line rather than requiring two lines.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok I didn't see that you kept the older constructor as well, that's fine


public IntegerDataField(String key, Integer value, String label) {
super(key, CustomDataFieldType.IntegerField, value, label);
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The main reason is so that it can be defined quickly when setting up the field in one line rather than requiring two lines.

@Emperor-Koala
Copy link
Contributor Author

Something else I should mention is that in switching to using the metadata, this would close ticket #3543 since it moves metadata to be part of TownyObject rather than part of only Town, though this system currently does not work for TownBlock

@ghost
Copy link

ghost commented Dec 6, 2019

Town, though this system currently does not work for TownBlock

It should work for townblocks, thats what it was initially made for.

@Emperor-Koala
Copy link
Contributor Author

I can add that in a few minutes. Since townblocks already have a metadata implementation, I should just need to add one line of code to get it to show labels the same way.

@ghost
Copy link

ghost commented Dec 6, 2019

This will be a little messy until I make improvements to the metadata structure, but for now this will do

@Emperor-Koala
Copy link
Contributor Author

I was wondering about that. I figured it would be fine since I noticed that you are planning on using a new Metadatable system, which would consolidate this down to one function instead of the two functions that do the exact same thing.

@ghost
Copy link

ghost commented Dec 6, 2019

Yup, an interface is needed since we're branching the system out.

Copy link
Member

@LlmDl LlmDl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just two really minor bits to change, then this will be merged. Nice work.

pom.xml Outdated Show resolved Hide resolved
src/com/palmergames/bukkit/towny/object/TownyObject.java Outdated Show resolved Hide resolved
@LlmDl
Copy link
Member

LlmDl commented Dec 8, 2019

@Emperor-Koala If you could give me a bit of a blurb to add to the Changelog for this commit that would be helpful. Your original PR comment is probably a bit out-dated.

@Emperor-Koala
Copy link
Contributor Author

Emperor-Koala commented Dec 8, 2019

“Added the ability to expand status screens for through the use of metadata. By giving the metadata field a label, it will then be displayed on the status screen for any object it is added to.”

@LlmDl LlmDl merged commit 72fb837 into TownyAdvanced:master Dec 8, 2019
LlmDl added a commit that referenced this pull request Dec 8, 2019
    - Added the ability to expand status screens for through the use of
metadata. By giving the metadata field, a label, it will then be
displayed on the status screen for any object it is added to.
    - Added metadata to worlds, nations and residents.
    - Closes ticket #3543.
Goosius1 pushed a commit to Goosius1/Towny that referenced this pull request Mar 19, 2020
Release contains:
- Towny 0.96.0.0
- TownyChat 0.68
- TownyNameUpdater 4.0

> Welcome to Towny 0.96.0.0. This release has some nice features added
and a mountain of fixes. Please remember that when you're updating your
config files, the only changes you *must* make are directly below in the
REQUIRED CHANGES section. All of the rest of the config additions will
be added auto-magically by Towny with their default settings. Important
links can be found at the bottom of this page, along with the actual
downloads in the Assests list.
>
> This Release marks the addition of two developers to the TownyAdvanced
organization, Siris & Silverwolfg11. You will find many great
contributions in the changelog below. If you haven't said hello to them
on the [Discord](https://discord.gg/U6FA8CG) yet, consider joining us
there.

  - REQUIRED CONFIG.YML CHANGE:
    - Villager should be added to the protection.mob_types list.
  - REQUIRED CONFIG.YML CHANGE:
    - Remove LECTERN from the protections.switch_ids list in the config.
    - This will make it possible for players to read books on lecterns
without having switch perms.
    - Players will still be unable to take the book (unless they have
destroy permissions in the plot.)
  - REQUIRED TOWNYPERMS.YML CHANGE:
    - towny.town.spawn.ally should be added to the default nation rank.
      - adding this will mean that when the config's
global_town_settings.allow_town_spawn_travel_ally will work properly
when set to true.
  - REQUIRED: amending towny\data\worlds\WORLDNAME.txt files
    - All existing Towny\data\worlds\WORLDNAME.txt files should have
their plotManagementDeleteIds lines changed to
WHITE_BED,ORANGE_BED,MAGENTA_BED,LIGHT_BLUE_BED,YELLOW_BED,LIME_BED,PINK_BED,GRAY_BED,LIGHT_GRAY_BED,CYAN_BED,PURPLE_BED,BLUE_BED,BROWN_BED,GREEN_BED,RED_BED,BLACK_BED,TORCH,REDSTONE_WIRE,ACACIA_SIGN,BIRCH_SIGN,DARK_OAK_SIGN,JUNGLE_SIGN,OAK_SIGN,SPRUCE_SIGN,WOODEN_DOOR,ACACIA_WALL_SIGN,BIRCH_WALL_SIGN,DARK_OAK_WALL_SIGN,JUNGLE_WALL_SIGN,OAK_WALL_SIGN,SPRUCE_WALL_SIGN,STONE_PLATE,IRON_DOOR_BLOCK,WOOD_PLATE,REDSTONE_TORCH_OFF,REDSTONE_TORCH_ON,DIODE_BLOCK_OFF,DIODE_BLOCK_ON
    - All existing Towny\data\worlds\WORLDNAME.txt files should have
their plotManagementIgnoreIds lines changed to
GOLD_ORE,LAPIS_ORE,LAPIS_BLOCK,GOLD_BLOCK,IRON_ORE,IRON_BLOCK,MOSSY_COBBLESTONE,TORCH,SPAWNER,DIAMOND_ORE,DIAMOND_BLOCK,ACACIA_SIGN,BIRCH_SIGN,DARK_OAK_SIGN,JUNGLE_SIGN,OAK_SIGN,SPRUCE_SIGN,ACACIA_WALL_SIGN,BIRCH_WALL_SIGN,DARK_OAK_WALL_SIGN,JUNGLE_WALL_SIGN,OAK_WALL_SIGN,SPRUCE_WALL_SIGN,GLOWSTONE,EMERALD_ORE,EMERALD_BLOCK,WITHER_SKELETON_SKULL,WITHER_SKELETON_WALL_SKULL,SHULKER_BOX,WHITE_SHULKER_BOX,ORANGE_SHULKER_BOX,MAGENTA_SHULKER_BOX,LIGHT_BLUE_SHULKER_BOX,LIGHT_GRAY_SHULKER_BOX,YELLOW_SHULKER_BOX,LIME_SHULKER_BOX,PINK_SHULKER_BOX,GRAY_SHULKER_BOX,CYAN_SHULKER_BOX,PURPLE_SHULKER_BOX,BLUE_SHULKER_BOX,BROWN_SHULKER_BOX,GREEN_SHULKER_BOX,RED_SHULKER_BOX,BLACK_SHULKER_BOX,BEACON

  - Event War addition: town conquering:
    - If war.event.winner_takes_ownership_of_town is set to true when a
town knocks another town out of the war, the losing town will join the
winning town's nation.
    - The losing town will enter a conquered state and be unable to
leave the nation until the conquered time has passed.
    - Add conquered & conqueredDays to Towns.
    - A town's conqueredDays will decrease each Towny new day.
    - Closes ticket TownyAdvanced#3477.
  - Placeholder added: %townyadvanced_nation_tag_town_formatted%
    - Shows the nation tag and the full town name.
    - If nation tag is not set, only the town name is shown.
  - Plot PVP now takes priority over the Town setting.
    - This means that PVP can be toggled on in plots while the rest of
the Town remains PVP free.
    - The PVP toggle cooldown means this cannot be abused.
  - Add permission nodes to /t list by x and /n list by x commands.
    - You can negate the new child nodes to limit which ways players are
allowed to sort towns.
  - Made most of the unprefixed messages Towny emits use prefixes,
either [Towny], [Townname] or [Nationname].
  - Add town_block_size to bstats charts.
  - Made the town & nation levels' town, nation, capital prefixes and
postfixes support the & colour codes.
  - Add database load time to startup.

  - New Feature: Plot Groups, courtesy of Siris with PR TownyAdvanced#3578.
    - Group plots together, which can be named, sold, set with a uniform
plot type, a uniform perm line.
    - Plot Groups which are claimed or unclaimed will have confirmation
messages showing number of plots in a group, as well as cost.
    - Groups appear in the Chunk Notifications in white.
    - Already priced plots which are added to a group will increase the
group price by the plot.
    - Closes ticket TownyAdvanced#472.
  - Confirmations can now be accepted/declined/confirmed/cancelled by
clicking on the text if you use Spigot.
    - Courtesy of Siris with PRs TownyAdvanced#3631 + TownyAdvanced#3639
    - Closes TownyAdvanced#3534.
    - Commands can still be used, clicking only for spigot servers, not
craftbukkit servers.
  - New Feature: smart tab-completion of most Towny commands, courtesy
of Siris with PR TownyAdvanced#3700.
    - Closes TownyAdvanced#3314.
  - QOL interface changes/redundancy removal, courtesy of Siris with PR
  - Flesh out .gitignore with OS specific (usually hidden) files,
courtesy of Siris with PR TownyAdvanced#3706.

  - Expansion of Metadata: courtesy of Emperor-Koala with PR TownyAdvanced#3548.
    - Added the ability to expand status screens for through the use of
metadata. By giving the metadata field, a label, it will then be
displayed on the status screen for any object it is added to.
    - Added metadata to worlds, nations and residents.
    - Closes ticket TownyAdvanced#3543.
  - Added remaining ExtraFields for metadata, courtesy of Emperor-Koala
with PR TownyAdvanced#3575.

  - Implementation of a trie data structure for residents, towns, and
nations; courtesy of stzups & Siris with PR TownyAdvanced#3712.
  - Added tab completion for /invite commands, courtesy of stzups with
PR TownyAdvanced#3705.
  - Updated & smarter /nation command tab-completion, courtesy of stzups
with PR TownyAdvanced#3710.
  - Updated & smarter tab-completion for remaining commands, courtesy of
stzups with PR TownyAdvanced#3714.

  - Object Allocation on player move reduced by Silverwolfg11 in PR
  - TownyPermission data rewritten to a 2d boolean array, courtesy of
Silverwolfg11 with PR TownyAdvanced#3600.

  - Update Reserve API, courtesy of thecreatorfromhell, with PR TownyAdvanced#3612.

  - /plot group [add|new|create] [groupname]
    - Creates a plot group where a player is standing.
    - Also adds plots to existing an existing group.
  - /plot group remove
    - Removes the plot you're standing in from its group.
  - /plot group rename [newname]
    - Renames a plot group.
  - /plot group set perm ....
    - Used to set the perm line of a group you are standing in.
  - /plot group set [townblocktype]
    - Used to set a group of plots to a shop, farm, embassy, etc.
  - /plot group toggle [fire|mobs|pvp|explosions]
    - Set the toggleable settings for townblocks across the entire
group.
  - /plot group [forsale|fs] [price]
    - Sets the group for sale at the set price.
  - /plot group [notforsale|nfs]
    - Sets the group not for sale.
  - /townyadmin nation new {name} {capital}
    - Creates a nation for the specified town.
    - Does not charge the town money.

  - war.event.winner_takes_ownership_of_town
    - default: false
    - If set to true when a town knocks another town out of the war, the
losing town will join the winning town's nation.
    - The losing town will enter a conquered state and be unable to
leave the nation until the conquered time has passed.
  - war.event.conquer_time
    - default: 7
    - Number of Towny new days until a conquered town loses its
conquered status.
  - notification.town_names_are_verbose
    - Default: true
    - When set to true, town's names are the long form
(townprefix)(name)(townpostfix) configured in the town_level section.
    - When false, it is only the town name.
  - notification.notifications_appear_in_action_bar
    - default: true
    - This setting only applies to servers running spigot, paper or
bungeecord.
    - On servers using craftbukkit.jar the notifications will always
appear in the chat.
    - When set to false the notifications will appear in the chat rather
than the action bar.
    - Closes TownyAdvanced#3636.

  - Changed required permission node for using /ta from towny.admin to
towny.command.townyadmin
    - Fixes scenario where an admin has other /townyadmin permission
nodes but not towny.admin.

  - towny.command.townyadmin
    - Used to view the /townyadmin screen.
    - Gateway permission node to all other townyadmin sub-commands
    - Child node of towny.command.townyadmin.*
  - towny.command.townyadmin.nation.new
    - Allows the use of the /ta nation new {name} {capital} command.
  - Child nodes of towny.command.nation.list, no townyperms.yml update
required.
    - towny.command.nation.list.residents
    - towny.command.nation.list.towns
    - towny.command.nation.list.open
    - towny.command.nation.list.balance
    - towny.command.nation.list.name
    - towny.command.nation.list.townblocks
    - towny.command.nation.list.online
  - Child nodes of towny.command.town.list, no townyperms.yml update
required.
    - towny.command.town.list.residents
    - towny.command.town.list.open
    - towny.command.town.list.balance
    - towny.command.town.list.name
    - towny.command.town.list.townblocks
    - towny.command.town.list.online

  - Added TownPreUnclaimEvent
    - Useful for getting the TownBlock object that will be unclaimed.
    - Cancellable but probably not a good idea.
  - Create ResidentUtil for resident-related methods.
  - Added TownyMessaging.sendPlainGlobalMessage() which doesn't use the
[Towny] prefix.
  - Create resident.getNamePostfix() & resident.getNamePrefix() for
gather pre/postfixes of kings and mayor residents

  - Reorganization of TownyFormatter, courtesy of Siris with PR TownyAdvanced#3715.
    - Deprecates a couple things that other plugins are unlikely to be
using, notes were made for new replacements.
  - API: PreNewTownEvent, courtesy of Siris with PR TownyAdvanced#3606.
    - Cancellable event.
  - Eco backend refactor courtesy of Siris with PR TownyAdvanced#3663.

  - Courtesy of Emperor-Koala with PR TownyAdvanced#3566:
    - API:
      - NationPreAddEnemyEvent - Cancellable
      - NationAddEnemeyEvent
      - NationPreRemoveEnemyEvent - Cancellable
      - NationRemoveEnemyEvent
      - New methods to get the cells under attack in Flag War.

  - Pom updates for javadocs courtesy of FlagCourier with PR TownyAdvanced#3672.

  - API: preNewDayEvent, courtesy of silverwolfg11 with PR TownyAdvanced#3770.
    - Closes TownyAdvanced#3765.

  - Fixed: Villagers protected from damage by other Entities when not
configured to be protected.
    - Pillagers were unable to harm villagers, even when villagers were
not in the protected list.
    - Closes TownyAdvanced#3580.
  - Fix keep inventory and keep experience features.
    - Closes ticket TownyAdvanced#3551.
  - Fix edge-case scenario where revoking invites couldn't be done
because we were matching the wrong player.
    - Closes TownyAdvanced#3635.
  - Fix message shown when a player tries to set their nation spawn in
the wilderness.
    - Closes TownyAdvanced#3640.
  - Fix for trees and mushrooms growing into plots they shouldn't.
    - Closes TownyAdvanced#3641.
  - Fix /ta set throwing error.
    - Closes ticket TownyAdvanced#3565.
  - Fixed explosion regen deleting the contents of BlockInventoryHolders
(chests, furnaces, hopper and more.)
    - Closes tickets TownyAdvanced#3569, TownyAdvanced#3570.
  - Fix Mysql databases not creating plotblocksnapshot files.
    - Closes TownyAdvanced#3589.
  - Fix WARZONE status overriding the allow_block_griefing: false
setting.
    - Closes TownyAdvanced#3577.
  - Fix Mysql databases not purging fallen towns.
    - Closes TownyAdvanced#3610.
  - Fix town_plotbased_upkeep_minimum_amount not working when
town_plotbased_upkeep_affected_by_town_level_modifier is set to false.
    - Closes TownyAdvanced#3616.
  - Fix renaming towns which have 0 plot groups.
    - Closes TownyAdvanced#3626.
  - Fix /ta town {townname} {command} not showing anything helpful when
the {command} used is not a valid command.
    - Closes TownyAdvanced#3667.
  - Fix ranks not being capitalized on /res, /town and /nation screens.
    - Closes TownyAdvanced#3669.
  - Fix for single-town nations when the winner_takes_ownership_of_town
is true.
    - Closes TownyAdvanced#3678.
  - Removed unneeded permission check for /n spawn.
    - towny.command.nation.spawn node is no longer tested for.
    - towny.nation.spawn.* nodes still remain in use.
  - Fix CombatUtil not disabling PVP in townblocks where PVP is off,
when PVP is still on in the town.
    - Towns will no longer override PVP settings for townblocks.
    - The below 3 fixes were required after adjusting this.
  - Fix lack of message when an unjailed player uses /res jail foo.
    - Closes TownyAdvanced#3726.
  - Fix revert-on-unclaim not respecting the PlotManagementSpeed set in
the config.
    - Closes TownyAdvanced#3759.
  - Fix Towny moving Citizens NPCs to server spawn when Towny loads in
safe mode.
    - Closes TownyAdvanced#3760, TownyAdvanced#3773.
  - Fix missing translation.
    - Closes TownyAdvanced#3777.
  - Fix using /plot perm in the wilderness just returning '[Towny] Not
registered' message. Towny will now display the World status page.
  - Fix ChunkNotification not displaying change of PVP status when
moving between two townblocks with differing PVP settings.
  - Fix /plot perm hud not displaying PVP setting for plots correctly.
  - Fix for eventwar war participants message using two lines when it
ought to only use one.
  - Fix eventwar wars that don't start properly leaving remainders in
the warringsTowns and warringNations.
  - Fix WARZONE status being given to townblocks when war is not active.
  - Improve debug messaging on flatfile database load.
  - Fix plot groups whose town doesn't exist anymore causing safe mode.
  - Translated cannot-kick-that-resident strings.
  - Fix bug with /plot group set {plottype}
  - Disallowed the use of /plot group set jail, jails can only be set
before grouping.
  - Fix plot groups not loading after server stop and start.
  - Clear out warringNations & warringTowns on war end.
  - Make sure world is properly handled when a town renames itself.
  - Fix /ta plot ? help screen.
  - Fix Null message when plots were claimed/unclaimed.
  - Fix error message for the /plot fs when used on a plot group.
  - Fix false-positive being shown when using /plot nfs on a plot group.
  - Fix error shown in console when entering a plot that is for sale but
is not part of a plot group.
  - Fix successful message when
economy.new_expand.price_claim_townblock_refund is set to a negative
value.
  - Fix no message being shown when an invalid subcommand of "/plot
group" is used.
  - Fix /ta rename not passing on NPC status to residents.
  - Fix /plot set perm showing the opposite PVP setting in its final
output.
  - Fix towny.admin players being limited by pvp cooldown timer.
  - Fix town/nation permissions missing on the /plot perm hud
scoreboard.
  - Fix NPE shown when player is using /plot perm hud, but has another
plugin's scoreboard show up.
  - Fix missing town/nation key values on /plot perm hud.
  - Fix missing townblock type on /plot perm hud.
  - Fix /n new name with out underscores not parsing spaces into
underscores.
  - Fix for revoking town invites on a player not actually revoking the
invite.
  - Fix null response when sending an invite to an offline player.
  - Fix lag caused by /t list and /n list.
  - Changed message shown at the end of the new day to print in the log
regardless of debug mode being true.
  - Readd economy lookups for town and nation banks, deprecated.
  - Fix for potentially causing too many file open exceptions on servers
with large databases and small Open File Limits.
  - Fix bug where renamed towns and nations would lose their bank
balances, introduced in 0.95.2.13.
  - Fix death_payments feature not working on mob-kills of players.
  - Fix PlayerCommandPreprocessEvent error seen in log when players chat
while Towny is in safe mode.
  - Fix edge-case scenario where a townblock could be null when listing
outposts.
  - Fix DailyTimerTask not resetting cosmetic list of removedTowns,
removedNations, totalUpkeeps.
  - Fix towns being kicked from a nation for non-payment of taxes being
included in the removedTowns.
  - Fix possible NPE when Nation taxes were collected from towns.
  - Fix BED_BLOCK in the default config's
new_world_settings.plot_management.block_delete.unclaim_delete list.
  - Fix Wither Skulls & Shulker Boxes not being in the
new_world_settings.plot_management.revert_on_unclaim.block_ignore list.
  - Fix allowing /t buy bonus to be used when the config has
using_economy: false.
  - Fix a couple missing options not showing under /plot set perm tab
completion.
  - Fix for Towny not clearing a residents' modes when they quit.
  - Fix /ta set capital {townname} {nationname} not working.
  - Fix possibility of residents getting duplicate town and nation
ranks.
  - Fix unhelpful debug messages when saving residents in sql.
  - Potential fix for /t and /n online commands not parsing their
outputs nicely.
  - Fix Towny safe-mode induced via /ta reload still allowing Towny
commands to be used.
  - Fix titles and surname losing their trailing and leading spaces.
  - Fix msg_changed_public in korean.yml not working.
  - Fix a couple missing child nodes for permissions in the plugin.yml.

  - Fix nether portals being created in areas the portal-creator cannot
build, courtesy of Siris with PR TownyAdvanced#3745.
    - Stops 'portal griefing'.
    - Closes TownyAdvanced#3412.
  - Fix for spawners not reverting properly courtesy of Siris with PR
    - Closes TownyAdvanced#3627.
  - Fix for plot groups sometimes throwing a CommandException, courtesy
of Siris with PR TownyAdvanced#3597.
    - Closes TownyAdvanced#3601.
  - Fix Ally invite sending to already allied nations, courtesy of Siris
with PR TownyAdvanced#3755.
    - Closes TownyAdvanced#3749.
  - Fix for 0.95.2.8 not running on Craftbukkit servers, courtesy of
Siris with PR TownyAdvanced#3642.
  - Fix NPE when '/plot group add' was used without any name, courtesy
of Siris with PR TownyAdvanced#3630.
  - Fix for /ta town meta not working on towns the admin doesnt own,
courtesy of Siris with PR TownyAdvanced#3549.
  - Fix for town invites from nation, courtesy of Siris with PR TownyAdvanced#3653.
  - Fix logger, courtesy of ArticDive/Siris with PR TownyAdvanced#3664.
  - Readd pay() and collect() to Towns and Nations, deprecated, courtesy
of Siris with PR TownyAdvanced#3697.
  - Fix any *possible* NPE's in NameUtil, courtesy of Siris with PR
  - Fix flagwar not transferring TownBlocks correctly, courtesy of Siris
with PR TownyAdvanced#3744.
  - Remove metadata raw access warnings, courtesy of Siris with PR

  - Pom and pom_deb updates by TheFlagCourier with PR TownyAdvanced#3632.
    - Javadocs should only build on the install phase.
    - Github actions should again function properly.
  - Fix for javadocs courtesy of TheFlagCourier with PR TownyAdvanced#3655.
  - Github Actions workflow adjustment courtesy of TheFlagCourier with
PR TownyAdvanced#3654.
  - Fix 'msg_modes_set' in ResidentCommand not being used for
translation, courtesy of TheFlagCourier with PR TownyAdvanced#3658.

  - Fix for more tab completions, courtesy of stzups with PR TownyAdvanced#3734.
    - Closes TownyAdvanced#3733.
  - Fix for root cause of issue solved with TownyAdvanced#3724, courtesy of stzups
with PR TownyAdvanced#3725.
  - Fix for Tab Completion leaving out some towns/nations/players, as
well as caring about upper/lower-case letters, courtesy of stzups with
PR TownyAdvanced#3728.
  - Further optimize Trie used in tab completion, courtesy of stzups
with PR TownyAdvanced#3739.

  - Fixes for Nation_Zones not working/not giving capitals their proper
bonus, courtesy of Goosius with PR TownyAdvanced#3567.

  - Missing apostrophe in error message fixed by Deuphic with PR TownyAdvanced#3645.

  - Continue != break, courtesy of creatorfromhell with PR TownyAdvanced#3690.

  - Fix to the preventPVP function, allowing for towns with PVP off to
set PVP true on individual plots, courtesy of silverwolfg11 with PR
  - Fix plot toggle tab-completion and remove unused code, courtesy of
silverwolfg11 with PR TownyAdvanced#3750.
  - Fix townyworld set messages for console not being used, courtesy of
silverwolfg11 with PR TownyAdvanced#3757.
  - Remove redundant arraylist creation for tab-completion, courtesy of
silverwolfg11 with TownyAdvanced#3756.

  - Fix a small typo, courtesy of introvertism with PR TownyAdvanced#3736.

  - Bump language files to 0.76
  - New Language: Portuguese (Brazilian) Translation, courtesy of
BannerGames with PR TownyAdvanced#3603.
    - use pt-br.yml as your language in the config to enable.
  - New Language: Taiwanese courtesy of shou692199 with PR TownyAdvanced#3689.
    - set language: zh-TW.yml in config to use.
  - PT-BR.yml updated by BannerGames with PR TownyAdvanced#3647.
  - Korean.yml updated by wolfwork with PR TownyAdvanced#3651.
  - Fix french.yml not parsing.
  - French translation updated by Mitsu13Ion with PR TownyAdvanced#3614 & TownyAdvanced#3680.
  - Chinese translation updated by qsefthuopq with PR TownyAdvanced#3703.
  - German.yml updated to 0.75 by enterih.

v0.64:
  - Removed "[Towny] Modes set: " line seen when a player changes
channels.

v0.65:
  - Altered behaviour:
    - Previously using the channel command for the channel you're
already speaking in would move you to the next default channel,
      or if non was found, the next global channel.
    - Ex: While being in townchat you use "/tc" you could find yourself
in globalchat.
    - Now you will be told you're already in the channel you just used
the command to enter into.
  - Fixed: GLOBAL channelTypes (default: general and local channels) are
no longer formatted by TownyChat if modify_chat.enabled is false.
    - DEFAULT, TOWN, NATION & ALLIANCE types are still formatted by
Towny when modify_chat.enable is false.
    - Closes: TownyAdvanced#3568

v0.66:
  - Fix for removed TownyFormatter methods, required for Towny 0.95.2.18
and newer.

v0.67:
  - Fix for TownyChat overwriting towny_default_modes player modes on
login.

v0.68:
  - Updated comments to reflect change with toggling chats, courtesy of
GenSecrets with PR TownyAdvanced#25.

sponsor](https://github.com/sponsors/LlmDl)

<blockquote>

<a title="Towny Changelog"
href="https://raw.githubusercontent.com/TownyAdvanced/Towny/master/resources/ChangeLog.txt"
target="_blank" rel="noopener">Click Here for a full changelog</a>

<a title="Install Guide"
href="https://github.com/TownyAdvanced/Towny/wiki/Installation">Towny
Install Guide</a>
<a title="Updating Towny"
href="https://github.com/TownyAdvanced/Towny/wiki/Updating-Towny">How to
Update and Existing Towny</a>
<a title="Permission Nodes"
href="https://github.com/TownyAdvanced/Towny/wiki/Towny-Permission-Nodes">Towny
Permission Nodes</a>
<a title="How Towny Works"
href="https://github.com/TownyAdvanced/Towny/wiki/How-Towny-Works">How
Towny Works</a>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants