Commit Graph

52 Commits (master)

Author SHA1 Message Date
blablubbabc a72b1bf657 Version 2.12.0
Updated for MC 1.16.4.
2020-11-03 22:37:52 +01:00
blablubbabc f12af66246 Bumped Towny dependency and use Jitpack repository. 2020-08-31 19:28:23 +02:00
blablubbabc d370b6251a Update for MC 1.16.2.
Config: Added piglin brute to the by default enabled mob types.
2020-08-13 02:46:56 +02:00
blablubbabc 186711941b Update for MC 1.16.1
* Bumped version to 2.10.0-SNAPSHOT.
* Added zombified piglin, piglin, hoglin, zoglin and strider to the by default enabled mob types. If you are updating, you will have to manually add these to your config's 'enabled-living-shops' setting.
* During my quick initial testing I did not encounter any major issues with these new mobs, but there are some oddities you might want to be aware of:
  * We don't support changing the baby property of piglin and zoglin shopkeepers yet. However, we at least ensure that they always spawn as adult.
  * The zombified piglin, hoglin and strider already support changing the baby property.
  * The strider constantly shakes when being spawned outside the nether and randomly spawns with saddle.
* The pig zombie mob type has been removed from the by default enabled mob types. If you are updating to MC 1.16, it will get automatically removed from your config. To prevent your config from losing its comments and formatting during this small migration, consider manually removing this mob type before your update.
* If you are updating to MC 1.16, your pig zombie shopkeepers get automatically converted to zombified pigman shopkeepers.
* Internal: Any internal references to the pig zombie mob type have been removed to prevent any kind of binary problems to arise.

Other changes:
* Improved/Fixed: Some mobs randomly spawn with passengers. We remove those passengers now.
2020-06-26 13:01:42 +02:00
blablubbabc 5b99037944 Update for Minecraft 1.15.1
Added bees to the by default enabled mob types.
If you are migrating from a previous version, you will have to manually enable them in the config.
2019-12-27 05:29:44 +01:00
blablubbabc d1a10563e6 Added support for Spigot specific text features (not used yet).
Those will only be available when run on a Spigot-based server.

Other changes:
* Added a few new utility methods to TextUtils.
* Slightly changed how TextUtils#getPlayerString deals with a missing player name.
* Made CollectionUtils#getIdealHashMapCapacity public.
2019-11-11 18:26:21 +01:00
blablubbabc 2a197e439e Trying to solve some issue Eclipse is having with our 'unconventional'
maven project structure by also compiling the source code at the root
project.
2019-08-19 23:14:34 +02:00
blablubbabc 37b68085f8 Changed how items are getting defined in the config.
Internally this new format uses Bukkit's item serialization for parsing
the item data, which allows it to support the specification of arbitrary
item data and hopefully not require any major updating/maintenance for
future minecraft versions. At the same time it tries to stay (slightly)
more user-friendly than Bukkit's item serialization by omitting any data
that can be restored by the plugin, by avoiding one level of nesting
between the item type and item data, by translating ampersand ('&')
color codes in display name and lore, and by offering a compact
representation for specifying an item only by its type.

This change also allows a more detailed specification of some of the
editor button items. However, many editor buttons still miss
corresponding config settings. Also keep in mind that the display name
and lore for these button items get specified via corresponding message
settings, so any specified item display name and lore will get replaced
by that.

When checking if an in-game item matches the item data specified in the
config, only the specified data gets compared. So this does not check
for item data equality, but instead the checked item is able to contain
additional data but still get matched (like before, but previously this
was limited to checking display name and lore).

The previous item data gets automatically migrated to the new format
(config version 2).

Other changes:
* Internal: Moved config migrations into a separate package.
* Internal: Moved some function(s) into ConfigUtils.
* Internal: Slightly changed how the plugin checks whether the high
currency is enabled.
* Internal: Avoiding ItemStack#hasItemMeta calls before getting an
item's ItemMeta, since this might be heavier than simply getting the
ItemMeta directly and performing only the relevant checks on that.
Internally ItemStack#hasItemMeta checks emptiness for all item
attributes and might (for CraftItemStacks) even first copy all the
item's data into a new ItemMeta object. And even if the item actually
has no data (Bukkit ItemStack with null ItemMeta), ItemStack#getItemMeta
will simply create a new empty ItemMeta object without having to copy
any data, so this is still a similarly lightweight operation anyways.
* Internal: Added ItemData tests. Unfortunately this requires
CraftBukkit as test dependency.
2019-08-18 04:51:49 +02:00
blablubbabc 3e888f4d56 Added a test to ensure consistency between ShopkeepersPlugin and
ShopkeepersAPI.

Adjusted Eclipse classpath to make tests work. There seems to be
something off with the maven setup for the individual child modules
though.
2019-08-12 20:55:32 +02:00
blablubbabc 7a1e5dd3e2 Updated bstats to 1.5 2019-06-17 16:14:38 +02:00
blablubbabc 075a5371c3 WorldGuard/Edit leaks some implementation dependencies which are missing
from our and their repositories.
2019-05-29 11:58:51 +02:00
blablubbabc f6bc00e5af Update for MC 1.14 (Spigot 1.14-pre5)
* Dropped support for MC 1.13. This version only supports MC 1.14.
* If you are upgrading, make sure that you have successfully updated
shopkeepers to 1.13 first. Migration from older MC are not supported and
might not work. Reverting to older versions isn't supported either.
  * Removed pre 1.13 sheep color migration.
* Villager shopkeepers:
  * Changed default profession from farmer to 'none'.
  * Priest villagers get converted to 'cleric' and blacksmiths become
'armorer'. Previous regular farmer villagers stay farmers (but they look
different now).
  * Changed the items representing the villager professions in the
editor.
  * Note: Wandering traders are not a villager sub-variant, but a
different mob type.
* Ocelot shopkeepers of cat types have been converted to corresponding
cat shopkeepers. You might have to adapt your players' permissions,
since cat and ocelot shopkeepers require different permissions now. With
this migration players can end up with cat shopkeepers even though they
don't have the permission to freshly create those if they wanted. The
different cat types are represented by colored leather armor inside the
editor.
* Any settings affecting regular villagers will affect wandering traders
as well now. There are no settings (for now?) to handle wandering
traders differently. When preventing regular villagers from spawning,
the trader llamas of the wandering trader are prevented from spawning as
well. When hiring a wandering trader its leashed llama should get
unleashed due to the removal of the wandering trader.
* Added: Sign shops can now switch between different wood types.

TODO:
* This has not yet been tested. Spigot 1.14-pre5 seems to still have
some other issues which prevent me from testing this currently.
* New entities have not yet been tested.
* Support for changing between different villager biome types would be
nice.
2019-04-25 03:18:01 +02:00
blablubbabc e957885865 Updated for WorldGuard 7.0.0.
Might not be backwards compatible with older versions of WorldGuard.
2018-11-16 01:43:22 +01:00
blablubbabc 1f15bcba67 Update for MC 1.13.1
* Updated for MC 1.13.1. Dropped support for 1.13, since 1.13.1 is a bug
fix release and there should be no reason not to update.
* Bumped Bukkit dependency to 1.13.1-R0.1.
* Removed additional version check again (added in a recent commit).
* Fixed: There might have been some trading issue related to undamaged
damageable items not being considered matching since 1.13.
2018-08-26 19:10:54 +02:00
blablubbabc 2dbc06886d Initial update for 1.13.
This is not yet complete! This is still missing:
* Importing and validating previous trades data! (blocking)
* Testing and adding the various new mobs.
* The MC 1.11 migration code inside the shopkeeper storage can be
removed now. Some other old offers/costs migration code as well.
* This is completely untested so far.

Overview of the changes so far:
* Dropped all backwards compatibility support (1.8 - 1.12). It is only
compatible with the latest versions of Spigot/CraftBukkit 1.13.
* Some older migration code has been removed, so it is
recommended/required to first update to MC 1.12 and Shopkeepers v2.2.1
before installing this or any later versions.
* Added a config migration to update previous materials and data values
to the new materials.
* Item ids in the config are no longer supported at all. Those will have
to be updated manually before installing this update.

Other changes:
* Since only 1.13 and above is supported now, various code was cleaned
up and updated that was only there for backwards compatibility reasons.
  * Removed skip-custom-head-saving setting: Previously this was meant
to workaround some issue with saving custom head items (head items with
custom texture and no player name) causing corrupted save data. The data
corruption / crashing should be fixed by bukkit by now. However, bukkit
also completely dropped 'support' for those custom head items.
  * Removed support for loading old serialized item attributes.
  * Reduced the amount of version specific code since for many things
there are bukkit alternatives available by now.
  * Slightly improved the chest and sign protection to take block
explosions into account.
* Improvement: Added warning messages when not able to load a cat type
or sheep color and falling back to the default in that case.
* Internal: Sheep colors were previous saved by using the old wool data
values. They are now converted and saved by their color names.
* Improvement: When testing if a player can access a chest, it now
clears the off hand as well during the check (making the check more
accurate).
* Internal: Using player ids instead of player names for temporary data
at a few places now.
2018-07-17 04:19:50 +02:00
blablubbabc a5abcdafed Initial 1.13-pre7 support (for testing).
This is not much tested yet and relies on bukkit being forwards
compatibility (which it isn't fully).
2018-07-16 18:00:32 +02:00
blablubbabc 48d5e67191 Replaced version range in parent declarations with ${revision}. 2018-07-02 22:53:29 +02:00
blablubbabc ed2e20dff0 No need to include the parent here right now. 2018-06-06 04:18:40 +02:00
blablubbabc 34fe627e3f More maven project restructuring:
* Removed reference to old Cube-Nation repository.
* Added a separate parent pom and renamed the old parent to 'sk-root'.
Only sk-main uses sk-root as parent now. The api project therefore
relies only on a minimal set of dependencies now.
* Shopkeepers and ShopkeepersAPI get installed and deployed with a
flattened pom now. This should allow depending on those without having
to also deploy the various versions of the parent poms or child modules.
* The different child modules that get bundled and deployed as part of
the final plugin jar use the 'provided' scope now, in order to not be
transitive for projects depending on Shopkeepers internals.
* Added a separate nms-parent pom, to further reduce duplicate contents
in the nms handler child modules.
2018-06-06 04:14:42 +02:00
blablubbabc f771443680 Prepared working on the next version. 2018-06-05 03:19:57 +02:00
blablubbabc 614e8db4fb Version 2.0.0-beta 2018-06-05 03:18:18 +02:00
blablubbabc 522d187c6a Added an API module.
* All api source code was moved into a separate source folder (added a
corresponding entry in the classpath of the root eclipse project, so it
finds it).
* A separate ShopkeepersAPI artifacts gets created and installed and
deployed.
* The main module depends and bundles the api artifact.

Moved various distribution related configuration into the parent pom.
2018-06-03 19:18:19 +02:00
blablubbabc a83a8b1e8b Moved scm information into parent pom. 2018-06-02 18:15:02 +02:00
blablubbabc b5b6077d7a Further restructuring of the maven project layout:
* The old 'API' module is now called 'main' and is responsible for fully
building everything related to the core plugin contents.
* The old 'Shopkeepers' module is now called 'dist' and only responsible
for creating the assembly containing all the different module outputs
(main and various version-specific contents).
* The plugin version is now automatically propagated from the parent
project to the child modules by letting maven inherit the parent
version. To not have to update the parent versions with every new
release, the parent is specified with an open ranged version (should
therefore always pick the latest version it finds).
* To not pollute the local maven repository with the build artifacts of
the various child modules of various different versions, all modules
except 'dist' skip the install goal. (TODO maybe also install sk-main,
in case something wants to depend on that alone?).
* All common plugins configuration is now located in the parent and any
plugins that are configured by maven by default are omitted in the child
modules.
2018-06-02 17:48:10 +02:00
blablubbabc 3bbbd98148 Minor refactoring of all maven poms:
* Fixed: The LICENSE file gets properly included in the plugin jar now.
* Using ${project.parent.relativePath} variable everywhere, removing
unneeded/inherited entries and properties, moved a bunch of general
information into properties in the parent pom (version, urls, etc.),
updated scm information to point to the new repository.
* The plugin.yml now uses the dbo url defined in the maven pom.
2018-06-01 20:37:21 +02:00
blablubbabc ed1cafa512 Added bStats metrics.
* Added custom charts for supported third-party plugins, used (vault)
economy, usage of various features and total shopkeeper count.
* Added a few plugins as soft dependencies: Vault, WorldGuard, Towny,
Gringotts.
* Added an additional config setting 'enable-metrics', with which bStats
metrics can be disabled for Shopkeepers only.

Maven cleanup:
* All scopes are now explicitly specified.
* Removed duplicate group-ids form child-modules.
* Moved junit dependency into parent.
2018-05-20 22:38:01 +02:00
blablubbabc 621342931f Pointing to new repository, issue tracker and wiki. 2017-10-20 11:52:11 +02:00
blablubbabc 73142bf9dd Removed outdated bukkit repo.
Explicitly specify java 1.8 as target.
2017-09-21 17:14:44 +02:00
blablubbabc 9931434bb4 Updated to 1.12 (pre2).
From a quick test, illusioner and parrot seem to work fine.
Updating player inventory after cancelling interaction. This helps in
cases whe the interaction would modify the inventory(ex. animal
feeding).
2017-05-17 16:34:23 +02:00
blablubbabc 2e44726a47 Updated cube-nation repository information + added deploy repositories. 2017-03-19 23:32:07 +01:00
blablubbabc d6a1d3930f Initial update for MC 1.11.
Not yet updated to bukkit API changes (especially entity variants
related stuff).
2016-11-17 21:38:20 +01:00
blablubbabc 1b3fe5e1f0 Updated for MC 1.10.
Due to some villager profession changes in bukkit, data about villager
professions gets converted to a new storage format (stored by name
instead of id) (not backwards compatible!).
Using bukkit's new API for setting entities silent on MC 1.10.
Minor changes to the compatibility mode, which didn't work for the past
few minecraft updates. Might still not work, as it wasn't fully tested.

Removed support for MC 1.7.10.
Removed 'use-strict-item-comparison' setting (minecraft is performing a
strict item comparison already itself since MC 1.8).
Removed uuid conversion related code: PlayerShops are expected to have a
valid owner uuid by now.
Slightly refactored handling of issues during shop creation and loading,
so that shopkeepers with invalid data (ex. missing owner uuids) can now
communicate to the loading procedure that the loading failed.
2016-06-10 17:13:59 +02:00
blablubbabc 4bfca05d85 Updated for MC 1.9.4 2016-05-10 17:06:57 +02:00
blablubbabc 885099a3f0 Updated for MC 1.9.
Dropped support for nearly all versions of bukkit 1.7. Only bukkit
v1.7.10 is still supported.
2016-03-01 16:19:43 +01:00
blablubbabc 4b4994d766 Dropped module for CB 1.6 R3. 2015-10-25 21:11:11 +01:00
blablubbabc 2583e1044b Updated WorldGuard dependency version to 6.1.
This fixes an issue if running on MC 1.8 with WorldGuard 6.1.
2015-10-25 21:03:50 +01:00
blablubbabc b6181e6b7b Improved WorldGuard hook:
Players are now also allowed to place a shopkeeper if the region they
are in has WorldGuard's ALLOW_SHOP flag set (regardless if they can
build in that region).

Updated WorldGuard dependency to 5.9, added dependency to WorldEdit 5.6
(otherwise it wouldn't let me compile..) and added sk89q's official
maven repository.
2015-10-24 03:07:51 +02:00
blablubbabc 83e4075824 Fixed: Updated to latest version of citizens. 2015-06-08 02:03:26 +02:00
blablubbabc 05f025c28a Update for MC 1.8.4 2015-05-17 12:45:35 +02:00
blablubbabc 66609ff4e2 Updated to craftbukkit 1.8.3 R0.1 2015-03-07 20:09:06 +01:00
blablubbabc 51b50d4435 Added spigot repository, for 1.8. 2015-01-22 14:41:58 +01:00
blablubbabc 8c2416f070 Attempt of making shopkeepers backwards compatible again by compiling
the core with bukkit 1.6.2 R1.0 again and moving all bukkit version
specific stuff into the NMSCallProvider (maybe rename it to something
like 'VersionProvider' or similar, as it is not only used for NMS
related stuff anymore..?).
2015-01-05 07:19:21 +01:00
blablubbabc e206b9a966 Updated version to v1.29.
Added support for Craftbukkit (Spigot) v1.8R1
2014-11-28 21:29:01 +01:00
blablubbabc 8861289688 Added first try of 1.7.10 support. (Untested) 2014-07-10 01:47:43 +02:00
blablubbabc 62d8eaffbb Attempting to add support for most living entities. Untested yet and
could probably be improved: instead of having to go through all the
available mob types with the creation item, it might be better to just
create a living entity shop of some type the player is allowed to use,
and then given him the option to change the type via the editor menu.

Also a few small things in direction of adding the citizen support (like
some setting) are already included in this commit.

The different entity type settings were removed and replaced with a list
of 'disabled entity types', also the selected messages were replaced
with a generic one.
2014-06-14 01:07:07 +02:00
blablubbabc 1763396664 Removed the new introduced apache collections dependecy again and
replaced the LinkedMap with a linear search (which shouldn't have any
impact for our very few entry we need iterate through).
2014-05-17 23:53:04 +02:00
blablubbabc baac106b13 Started restructuring: Tried to separate things into additional classes,
especially move things out of the main plugin class and make some things
slightly more abstract:
* all living shopkeeper types share one listener now
* made the shopkeeper types more abstract
* made the shop object types more abstract
* tried to make the user interface stuff (trading, hiring, editor
windows) more abstract (though, I am not quite sure yet if that was an
improvement..)
* many more tiny changes everywhere..

Work in progress.
2014-05-17 19:45:56 +02:00
blablubbabc ea90d2b6fe Updated to use player uuids. UUID for shops get stored as soon as the
player logs in. The playername gets used for display purposes and as
identifier for the owner as long as we don't have an owner uuid yet.

Caveat which is probably left: the 'remove shopkeeper after certain time
of inactivity of player' gets an OfflinePlayer to determine when the
player was last online. This however can now (since 1.7.8) freeze the
server when it has to lookup the name or uuid via the mojang services.
However, this is currently considered a minor 'issue' as those lookups
can only happen once per plugin load (and reload), and the server might
cache the result from those lookups.
2014-04-14 04:41:01 +02:00
blablubbabc 2949396dfa Updated to 1.7.8 (if I dind't miss anything). 2014-04-13 15:10:15 +02:00
Xephi dd498fadb8 Update to CB 1.7.5 2014-03-24 21:49:03 +01:00