Browse Source

Merge branch 'master' of github.com:mcMMO-Dev/mcMMO into tridentsxbows

nossr50 4 years ago
parent
commit
abcf6413f5

+ 18 - 0
Changelog.txt

@@ -97,6 +97,24 @@ Version 2.2.000
     Parties got unnecessarily complex in my absence, I have removed many party features in order to simplify parties and bring them closer to my vision. I have also added new features which should improve parties where it matters.
     Parties got unnecessarily complex in my absence, I have removed many party features in order to simplify parties and bring them closer to my vision. I have also added new features which should improve parties where it matters.
     About the removed party features, all the features I removed I consider poor quality features and I don't think they belong in mcMMO. Feel free to yell at me in discord if you disagree.
     About the removed party features, all the features I removed I consider poor quality features and I don't think they belong in mcMMO. Feel free to yell at me in discord if you disagree.
     I don't know what genius decided to make parties public by default, when I found out that parties had been changed to such a system I could barely contain my disgust. Parties are back to being private, you get invited by a party leader or party officer. That is the only way to join a party.
     I don't know what genius decided to make parties public by default, when I found out that parties had been changed to such a system I could barely contain my disgust. Parties are back to being private, you get invited by a party leader or party officer. That is the only way to join a party.
+Version 2.1.163
+    Fixed the translate URL pointing to the wrong place (thanks chew)
+    Fixed a bug where FlatFile databases would always attempt a UUID conversion task every save operation (every 10 minutes) causing console spam
+    mcMMO will no longer throw errors when incoming XP is below 0 (it will just silently cancel the operation)
+    COTW Summoned entities are now removed when the chunk they are in is unloaded (prevents some exploits)
+
+    NOTES:
+    I often test in SQL environments so I missed this bug, reminder to come bother me on discord if you find any annoying bugs!
+    Also work on T&C is going great lately, I feel great. Perhaps my depression is getting better!
+
+Version 2.1.162
+    Fixed a bug where Alchemy brew events were processed after setting brew results (thanks Wolf2323)
+
+Version 2.1.161
+    Fixed a bug where a bunch of text from mcMMO was never being sent and or being sent as blank messages
+
+    NOTES:
+    Adventure (the chat library we use) had an update that required shading in another new module, but there were no errors thrown without running a jvm debug flag and testing it, which is why I missed it. I also missed it because I don't read update notes very closely
 Version 2.1.160
 Version 2.1.160
     Fixed another 9+ year old exploit
     Fixed another 9+ year old exploit
     Silenced a harmless "error" related to Rupture/Bleed often produced when using mcMMO and crazy enchantments together
     Silenced a harmless "error" related to Rupture/Bleed often produced when using mcMMO and crazy enchantments together

+ 13 - 7
pom.xml

@@ -115,6 +115,7 @@
                             <include>net.kyori:adventure-text-serializer-legacy</include>
                             <include>net.kyori:adventure-text-serializer-legacy</include>
                             <include>net.kyori:adventure-text-serializer-bungeecord</include>
                             <include>net.kyori:adventure-text-serializer-bungeecord</include>
                             <include>net.kyori:adventure-text-serializer-craftbukkit</include>
                             <include>net.kyori:adventure-text-serializer-craftbukkit</include>
+                            <include>net.kyori:adventure-text-serializer-gson-legacy-impl</include>
                             <include>co.aikar:acf-bukkit</include>
                             <include>co.aikar:acf-bukkit</include>
                             <include>com.neetgames:mcMMO-API</include>
                             <include>com.neetgames:mcMMO-API</include>
                             <include>com.neetgames:jmal</include>
                             <include>com.neetgames:jmal</include>
@@ -123,6 +124,10 @@
                     </artifactSet>
                     </artifactSet>
 <!--                    <dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation>-->
 <!--                    <dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation>-->
                     <relocations>
                     <relocations>
+                        <relocation>
+                            <pattern>net.kyori.adventure</pattern>
+                            <shadedPattern>com.gmail.nossr50.mcmmo.kyori.adventure</shadedPattern>
+                        </relocation>
                         <relocation>
                         <relocation>
                             <pattern>com.neetgames.neetlib</pattern>
                             <pattern>com.neetgames.neetlib</pattern>
                             <shadedPattern>com.gmail.nossr50.neetlib</shadedPattern>
                             <shadedPattern>com.gmail.nossr50.neetlib</shadedPattern>
@@ -147,10 +152,6 @@
                             <pattern>org.apache.tomcat</pattern>
                             <pattern>org.apache.tomcat</pattern>
                             <shadedPattern>com.gmail.nossr50.mcmmo.database.tomcat</shadedPattern>
                             <shadedPattern>com.gmail.nossr50.mcmmo.database.tomcat</shadedPattern>
                         </relocation>
                         </relocation>
-                        <relocation>
-                            <pattern>net.kyori.adventure</pattern>
-                            <shadedPattern>com.gmail.nossr50.mcmmo.kyori.adventure</shadedPattern>
-                        </relocation>
                         <relocation>
                         <relocation>
                             <pattern>org.bstats</pattern>
                             <pattern>org.bstats</pattern>
                             <shadedPattern>com.gmail.nossr50.mcmmo.metrics.bstat</shadedPattern>
                             <shadedPattern>com.gmail.nossr50.mcmmo.metrics.bstat</shadedPattern>
@@ -229,17 +230,17 @@
         <dependency>
         <dependency>
             <groupId>net.kyori</groupId>
             <groupId>net.kyori</groupId>
             <artifactId>adventure-text-serializer-gson</artifactId>
             <artifactId>adventure-text-serializer-gson</artifactId>
-            <version>4.3.0-SNAPSHOT</version>
+            <version>4.3.0</version>
         </dependency>
         </dependency>
         <dependency>
         <dependency>
             <groupId>net.kyori</groupId>
             <groupId>net.kyori</groupId>
             <artifactId>adventure-api</artifactId>
             <artifactId>adventure-api</artifactId>
-            <version>4.2.0</version>
+            <version>4.3.0</version>
         </dependency>
         </dependency>
         <dependency>
         <dependency>
             <groupId>net.kyori</groupId>
             <groupId>net.kyori</groupId>
             <artifactId>adventure-nbt</artifactId>
             <artifactId>adventure-nbt</artifactId>
-            <version>4.2.0-SNAPSHOT</version>
+            <version>4.3.0</version>
         </dependency>
         </dependency>
         <dependency>
         <dependency>
             <groupId>net.kyori</groupId>
             <groupId>net.kyori</groupId>
@@ -256,6 +257,11 @@
             <artifactId>adventure-platform-common</artifactId>
             <artifactId>adventure-platform-common</artifactId>
             <version>4.0.0-SNAPSHOT</version>
             <version>4.0.0-SNAPSHOT</version>
         </dependency>
         </dependency>
+        <dependency>
+            <groupId>net.kyori</groupId>
+            <artifactId>adventure-text-serializer-gson-legacy-impl</artifactId>
+            <version>4.3.0</version>
+        </dependency>
         <dependency>
         <dependency>
             <groupId>org.apache.maven.scm</groupId>
             <groupId>org.apache.maven.scm</groupId>
             <artifactId>maven-scm-provider-gitexe</artifactId>
             <artifactId>maven-scm-provider-gitexe</artifactId>

+ 0 - 2
src/main/java/com/gmail/nossr50/datatypes/experience/ExperienceManager.java

@@ -125,8 +125,6 @@ public class ExperienceManager {
      * @param xp Experience amount to process
      * @param xp Experience amount to process
      */
      */
     public void beginXpGain(@NotNull PrimarySkillType primarySkillType, float xp, @NotNull XPGainReason xpGainReason, @NotNull XPGainSource xpGainSource) {
     public void beginXpGain(@NotNull PrimarySkillType primarySkillType, float xp, @NotNull XPGainReason xpGainReason, @NotNull XPGainSource xpGainSource) {
-        Validate.isTrue(xp >= 0.0, "XP gained should be greater than or equal to zero.");
-
         if (xp <= 0.0) {
         if (xp <= 0.0) {
             return;
             return;
         }
         }

+ 1 - 1
src/main/java/com/gmail/nossr50/datatypes/json/McMMOUrl.java

@@ -6,7 +6,7 @@ public class McMMOUrl {
     public static final String urlPatreon   = "https://www.patreon.com/nossr50";
     public static final String urlPatreon   = "https://www.patreon.com/nossr50";
     public static final String urlWiki      = "https://www.mcmmo.org/wiki/";
     public static final String urlWiki      = "https://www.mcmmo.org/wiki/";
     public static final String urlSpigot    = "http://spigot.mcmmo.org";
     public static final String urlSpigot    = "http://spigot.mcmmo.org";
-    public static final String urlTranslate = "https://www.mcmmo.org/translate/";
+    public static final String urlTranslate = "https://translate.mcmmo.org/";
 
 
     public static String getUrl(McMMOWebLinks webLinks)
     public static String getUrl(McMMOWebLinks webLinks)
     {
     {

+ 30 - 0
src/main/java/com/gmail/nossr50/listeners/ChunkListener.java

@@ -0,0 +1,30 @@
+package com.gmail.nossr50.listeners;
+
+import com.gmail.nossr50.mcMMO;
+import com.gmail.nossr50.util.compat.layers.persistentdata.MobMetaFlagType;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.LivingEntity;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.world.ChunkUnloadEvent;
+
+public class ChunkListener implements Listener {
+
+    @EventHandler(ignoreCancelled = true)
+    public void onChunkUnload(ChunkUnloadEvent event) {
+        for(Entity entity : event.getChunk().getEntities()) {
+            if(entity instanceof LivingEntity) {
+                LivingEntity livingEntity = (LivingEntity) entity;
+                if(mcMMO.getCompatibilityManager().getPersistentDataLayer().hasMobFlag(MobMetaFlagType.COTW_SUMMONED_MOB, livingEntity)) {
+
+                    //Remove from existence
+                    if(livingEntity.isValid()) {
+                        mcMMO.getCompatibilityManager().getPersistentDataLayer().removeMobFlags(livingEntity);
+                        livingEntity.setHealth(0);
+                        livingEntity.remove();
+                    }
+                }
+            }
+        }
+    }
+}

+ 1 - 0
src/main/java/com/gmail/nossr50/mcMMO.java

@@ -559,6 +559,7 @@ public class mcMMO extends JavaPlugin {
         pluginManager.registerEvents(new InventoryListener(this), this);
         pluginManager.registerEvents(new InventoryListener(this), this);
         pluginManager.registerEvents(new SelfListener(this), this);
         pluginManager.registerEvents(new SelfListener(this), this);
         pluginManager.registerEvents(new WorldListener(this), this);
         pluginManager.registerEvents(new WorldListener(this), this);
+        pluginManager.registerEvents(new ChunkListener(), this);
 //        pluginManager.registerEvents(new CommandListener(this), this);
 //        pluginManager.registerEvents(new CommandListener(this), this);
     }
     }
 
 

+ 1 - 0
src/main/java/com/gmail/nossr50/runnables/database/UUIDUpdateAsyncTask.java

@@ -102,6 +102,7 @@ public class UUIDUpdateAsyncTask implements Runnable {
         if (position == userNames.size()) {
         if (position == userNames.size()) {
             mcMMO.getUpgradeManager().setUpgradeCompleted(UpgradeType.ADD_UUIDS);
             mcMMO.getUpgradeManager().setUpgradeCompleted(UpgradeType.ADD_UUIDS);
             awaiter.countDown();
             awaiter.countDown();
+            plugin.getLogger().info("UUID checks completed");
         } else
         } else
             this.runTaskLaterAsynchronously(plugin, Misc.TICK_CONVERSION_FACTOR * DELAY_PERIOD); // Schedule next batch
             this.runTaskLaterAsynchronously(plugin, Misc.TICK_CONVERSION_FACTOR * DELAY_PERIOD); // Schedule next batch
     }
     }

+ 8 - 1
src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyPotionBrewer.java

@@ -113,6 +113,7 @@ public final class AlchemyPotionBrewer {
         }
         }
 
 
         List<AlchemyPotion> inputList = new ArrayList<>();
         List<AlchemyPotion> inputList = new ArrayList<>();
+        ItemStack[] outputList = new ItemStack[3];
 
 
         for (int i = 0; i < 3; i++) {
         for (int i = 0; i < 3; i++) {
             ItemStack item = inventory.getItem(i);
             ItemStack item = inventory.getItem(i);
@@ -127,7 +128,7 @@ public final class AlchemyPotionBrewer {
             inputList.add(input);
             inputList.add(input);
 
 
             if (output != null) {
             if (output != null) {
-                inventory.setItem(i, output.toItemStack(item.getAmount()).clone());
+                outputList[i] = output.toItemStack(item.getAmount()).clone();
             }
             }
         }
         }
 
 
@@ -138,6 +139,12 @@ public final class AlchemyPotionBrewer {
             return;
             return;
         }
         }
 
 
+        for (int i = 0; i < 3; i++) {
+            if(outputList[i] != null) {
+                inventory.setItem(i, outputList[i]);
+            }
+        }
+
         removeIngredient(inventory, player);
         removeIngredient(inventory, player);
 
 
         for (AlchemyPotion input : inputList) {
         for (AlchemyPotion input : inputList) {

+ 1 - 0
src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java

@@ -570,6 +570,7 @@ public class TamingManager extends SkillManager {
 
 
                 //Remove from existence
                 //Remove from existence
                 if(livingEntity != null && livingEntity.isValid()) {
                 if(livingEntity != null && livingEntity.isValid()) {
+                    mcMMO.getCompatibilityManager().getPersistentDataLayer().removeMobFlags(livingEntity);
                     livingEntity.setHealth(0);
                     livingEntity.setHealth(0);
                     livingEntity.remove();
                     livingEntity.remove();
                 }
                 }

+ 1 - 0
src/main/resources/upgrades.yml

@@ -11,3 +11,4 @@ Upgrades_Finished:
     FIX_SPELLING_NETHERITE_REPAIR: false
     FIX_SPELLING_NETHERITE_REPAIR: false
     FIX_NETHERITE_SALVAGE_QUANTITIES: false
     FIX_NETHERITE_SALVAGE_QUANTITIES: false
     ADD_SQL_2_2: false
     ADD_SQL_2_2: false
+    ADD_UUIDS: false