mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Delete patches/removed directory
This commit is contained in:
@@ -1,120 +0,0 @@
|
||||
From 0c20fdc1cc34d29b9135326be5db514107bb6766 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Sat, 4 May 2019 00:57:16 -0500
|
||||
Subject: [PATCH] Ridables
|
||||
|
||||
---
|
||||
.../paper/entity/ai/VanillaGoal.java | 4 ++
|
||||
.../event/entity/RidableSpacebarEvent.java | 37 ++++++++++++++++++
|
||||
src/main/java/org/bukkit/entity/Entity.java | 38 +++++++++++++++++++
|
||||
3 files changed, 79 insertions(+)
|
||||
create mode 100644 src/main/java/net/pl3x/purpur/event/entity/RidableSpacebarEvent.java
|
||||
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java
|
||||
index d23ad96ee..36d37e9a3 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java
|
||||
@@ -154,6 +154,10 @@ public interface VanillaGoal<T extends Mob> extends Goal<T> {
|
||||
GoalKey<Mob> FOLLOW_ENTITY = GoalKey.of(Mob.class, NamespacedKey.minecraft("follow_entity"));
|
||||
GoalKey<Tameable> FOLLOW_OWNER = GoalKey.of(Tameable.class, NamespacedKey.minecraft("follow_owner"));
|
||||
GoalKey<Animals> FOLLOW_PARENT = GoalKey.of(Animals.class, NamespacedKey.minecraft("follow_parent"));
|
||||
+ // Purpur start
|
||||
+ GoalKey<Phantom> FIND_CRYSTAL_GOAL = GoalKey.of(Phantom.class, NamespacedKey.minecraft("find_crystal_goal"));
|
||||
+ GoalKey<Phantom> ORBIT_CRYSTAL_GOAL = GoalKey.of(Phantom.class, NamespacedKey.minecraft("orbit_crystal_goal"));
|
||||
+ // Purpur end
|
||||
GoalKey<SkeletonHorse> HORSE_TRAP = GoalKey.of(SkeletonHorse.class, NamespacedKey.minecraft("horse_trap"));
|
||||
GoalKey<Creature> HURT_BY_TARGET = GoalKey.of(Creature.class, NamespacedKey.minecraft("hurt_by_target"));
|
||||
GoalKey<Mob> INTERACT = GoalKey.of(Mob.class, NamespacedKey.minecraft("interact"));
|
||||
diff --git a/src/main/java/net/pl3x/purpur/event/entity/RidableSpacebarEvent.java b/src/main/java/net/pl3x/purpur/event/entity/RidableSpacebarEvent.java
|
||||
new file mode 100644
|
||||
index 000000000..c0ec5a130
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/net/pl3x/purpur/event/entity/RidableSpacebarEvent.java
|
||||
@@ -0,0 +1,37 @@
|
||||
+package net.pl3x.purpur.event.entity;
|
||||
+
|
||||
+import org.bukkit.entity.Entity;
|
||||
+import org.bukkit.event.Cancellable;
|
||||
+import org.bukkit.event.HandlerList;
|
||||
+import org.bukkit.event.entity.EntityEvent;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+
|
||||
+public class RidableSpacebarEvent extends EntityEvent implements Cancellable {
|
||||
+ private static final HandlerList handlers = new HandlerList();
|
||||
+ private boolean cancelled;
|
||||
+
|
||||
+ public RidableSpacebarEvent(@NotNull Entity entity) {
|
||||
+ super(entity);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean isCancelled() {
|
||||
+ return cancelled;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void setCancelled(boolean cancel) {
|
||||
+ cancelled = cancel;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ @NotNull
|
||||
+ public HandlerList getHandlers() {
|
||||
+ return handlers;
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ public static HandlerList getHandlerList() {
|
||||
+ return handlers;
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
|
||||
index 3f0f38031..25372c58b 100644
|
||||
--- a/src/main/java/org/bukkit/entity/Entity.java
|
||||
+++ b/src/main/java/org/bukkit/entity/Entity.java
|
||||
@@ -659,4 +659,42 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
|
||||
@NotNull
|
||||
org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason getEntitySpawnReason();
|
||||
// Paper end
|
||||
+
|
||||
+ // Purpur start
|
||||
+ /**
|
||||
+ * Get the riding player
|
||||
+ *
|
||||
+ * @return Riding player
|
||||
+ */
|
||||
+ @Nullable
|
||||
+ Player getRider();
|
||||
+
|
||||
+ /**
|
||||
+ * Check if entity is being ridden
|
||||
+ *
|
||||
+ * @return True if being ridden
|
||||
+ */
|
||||
+ boolean hasRider();
|
||||
+
|
||||
+ /**
|
||||
+ * Check if entity is ridable
|
||||
+ *
|
||||
+ * @return True if ridable
|
||||
+ */
|
||||
+ boolean isRidable();
|
||||
+
|
||||
+ /**
|
||||
+ * Check if entity is ridable in water
|
||||
+ *
|
||||
+ * @return True if ridable in water
|
||||
+ */
|
||||
+ boolean isRidableInWater();
|
||||
+
|
||||
+ /**
|
||||
+ * Check if shift is required to mount this entity
|
||||
+ *
|
||||
+ * @return True if shift is required
|
||||
+ */
|
||||
+ boolean requireShiftToMount();
|
||||
+ // Purpur end
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,142 +0,0 @@
|
||||
From acabe1261f9db72988a29d0d72ee138b7c0cf221 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Tue, 31 Dec 2019 23:00:07 -0600
|
||||
Subject: [PATCH] Remove pointless annotations and deprecations
|
||||
|
||||
---
|
||||
src/main/java/org/bukkit/Bukkit.java | 3 ---
|
||||
src/main/java/org/bukkit/Server.java | 3 ---
|
||||
src/main/java/org/bukkit/command/CommandExecutor.java | 2 +-
|
||||
src/main/java/org/bukkit/command/TabCompleter.java | 2 +-
|
||||
src/main/java/org/bukkit/inventory/ItemStack.java | 8 --------
|
||||
src/main/java/org/bukkit/plugin/java/JavaPlugin.java | 4 ++--
|
||||
src/test/java/org/bukkit/AnnotationTest.java | 5 +++++
|
||||
7 files changed, 9 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
|
||||
index a9c10228e..780d603e4 100644
|
||||
--- a/src/main/java/org/bukkit/Bukkit.java
|
||||
+++ b/src/main/java/org/bukkit/Bukkit.java
|
||||
@@ -863,13 +863,10 @@ public final class Bukkit {
|
||||
* This will return an object even if the player does not exist. To this
|
||||
* method, all players will exist.
|
||||
*
|
||||
- * @deprecated Persistent storage of users should be by UUID as names are no longer
|
||||
- * unique past a single session.
|
||||
* @param name the name the player to retrieve
|
||||
* @return an offline player
|
||||
* @see #getOfflinePlayer(java.util.UUID)
|
||||
*/
|
||||
- @Deprecated
|
||||
@NotNull
|
||||
public static OfflinePlayer getOfflinePlayer(@NotNull String name) {
|
||||
return server.getOfflinePlayer(name);
|
||||
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
|
||||
index ab1d082a4..a4cf71fb4 100644
|
||||
--- a/src/main/java/org/bukkit/Server.java
|
||||
+++ b/src/main/java/org/bukkit/Server.java
|
||||
@@ -722,13 +722,10 @@ public interface Server extends PluginMessageRecipient {
|
||||
* This will return an object even if the player does not exist. To this
|
||||
* method, all players will exist.
|
||||
*
|
||||
- * @deprecated Persistent storage of users should be by UUID as names are no longer
|
||||
- * unique past a single session.
|
||||
* @param name the name the player to retrieve
|
||||
* @return an offline player
|
||||
* @see #getOfflinePlayer(java.util.UUID)
|
||||
*/
|
||||
- @Deprecated
|
||||
@NotNull
|
||||
public OfflinePlayer getOfflinePlayer(@NotNull String name);
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/command/CommandExecutor.java b/src/main/java/org/bukkit/command/CommandExecutor.java
|
||||
index 45cb8da12..383b43e1b 100644
|
||||
--- a/src/main/java/org/bukkit/command/CommandExecutor.java
|
||||
+++ b/src/main/java/org/bukkit/command/CommandExecutor.java
|
||||
@@ -19,5 +19,5 @@ public interface CommandExecutor {
|
||||
* @param args Passed command arguments
|
||||
* @return true if a valid command, otherwise false
|
||||
*/
|
||||
- public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args);
|
||||
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args); // Purpur - remove pointless annotations
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/command/TabCompleter.java b/src/main/java/org/bukkit/command/TabCompleter.java
|
||||
index e9cf71f5c..34d3462c7 100644
|
||||
--- a/src/main/java/org/bukkit/command/TabCompleter.java
|
||||
+++ b/src/main/java/org/bukkit/command/TabCompleter.java
|
||||
@@ -23,5 +23,5 @@ public interface TabCompleter {
|
||||
* to default to the command executor
|
||||
*/
|
||||
@Nullable
|
||||
- public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args);
|
||||
+ public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args); // Purpur - remove pointless annotations
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
|
||||
index ccd81fca2..a8ade268c 100644
|
||||
--- a/src/main/java/org/bukkit/inventory/ItemStack.java
|
||||
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java
|
||||
@@ -204,13 +204,7 @@ public class ItemStack implements Cloneable, ConfigurationSerializable {
|
||||
* Sets the durability of this item
|
||||
*
|
||||
* @param durability Durability of this item
|
||||
- * @deprecated durability is now part of ItemMeta. To avoid confusion and
|
||||
- * misuse, {@link #getItemMeta()}, {@link #setItemMeta(ItemMeta)} and
|
||||
- * {@link Damageable#setDamage(int)} should be used instead. This is because
|
||||
- * any call to this method will be overwritten by subsequent setting of
|
||||
- * ItemMeta which was created before this call.
|
||||
*/
|
||||
- @Deprecated
|
||||
public void setDurability(final short durability) {
|
||||
ItemMeta meta = getItemMeta();
|
||||
if (meta != null) {
|
||||
@@ -223,9 +217,7 @@ public class ItemStack implements Cloneable, ConfigurationSerializable {
|
||||
* Gets the durability of this item
|
||||
*
|
||||
* @return Durability of this item
|
||||
- * @deprecated see {@link #setDurability(short)}
|
||||
*/
|
||||
- @Deprecated
|
||||
public short getDurability() {
|
||||
ItemMeta meta = getItemMeta();
|
||||
return (meta == null) ? 0 : (short) ((Damageable) meta).getDamage();
|
||||
diff --git a/src/main/java/org/bukkit/plugin/java/JavaPlugin.java b/src/main/java/org/bukkit/plugin/java/JavaPlugin.java
|
||||
index 04fa3991f..24d65491c 100644
|
||||
--- a/src/main/java/org/bukkit/plugin/java/JavaPlugin.java
|
||||
+++ b/src/main/java/org/bukkit/plugin/java/JavaPlugin.java
|
||||
@@ -287,7 +287,7 @@ public abstract class JavaPlugin extends PluginBase {
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
- public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
||||
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { // Purpur - remove pointless annotations
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -296,7 +296,7 @@ public abstract class JavaPlugin extends PluginBase {
|
||||
*/
|
||||
@Override
|
||||
@Nullable
|
||||
- public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) {
|
||||
+ public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) { // Purpur - remove pointless annotations
|
||||
return null;
|
||||
}
|
||||
|
||||
diff --git a/src/test/java/org/bukkit/AnnotationTest.java b/src/test/java/org/bukkit/AnnotationTest.java
|
||||
index a48be38b1..951b81e79 100644
|
||||
--- a/src/test/java/org/bukkit/AnnotationTest.java
|
||||
+++ b/src/test/java/org/bukkit/AnnotationTest.java
|
||||
@@ -41,6 +41,11 @@ public class AnnotationTest {
|
||||
"org/bukkit/plugin/java/PluginClassLoader",
|
||||
// Generic functional interface
|
||||
"org/bukkit/util/Consumer",
|
||||
+ // Purpur start
|
||||
+ "org/bukkit/command/CommandExecutor",
|
||||
+ "org/bukkit/command/TabCompleter",
|
||||
+ "org/bukkit/plugin/java/JavaPlugin",
|
||||
+ // Purpur end
|
||||
// Paper start
|
||||
// Timings history is broken in terms of nullability due to guavas Function defining that the param is NonNull
|
||||
"co/aikar/timings/TimingHistory$2",
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
From e503ea72858416dd97bd79c5aae85a2834f11195 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Sat, 11 Jan 2020 23:12:00 -0600
|
||||
Subject: [PATCH] Add EntityPortalReadyEvent
|
||||
|
||||
---
|
||||
.../event/entity/EntityPortalReadyEvent.java | 40 +++++++++++++++++++
|
||||
1 file changed, 40 insertions(+)
|
||||
create mode 100644 src/main/java/net/pl3x/purpur/event/entity/EntityPortalReadyEvent.java
|
||||
|
||||
diff --git a/src/main/java/net/pl3x/purpur/event/entity/EntityPortalReadyEvent.java b/src/main/java/net/pl3x/purpur/event/entity/EntityPortalReadyEvent.java
|
||||
new file mode 100644
|
||||
index 000000000..37f11c104
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/net/pl3x/purpur/event/entity/EntityPortalReadyEvent.java
|
||||
@@ -0,0 +1,40 @@
|
||||
+package net.pl3x.purpur.event.entity;
|
||||
+
|
||||
+import org.bukkit.entity.Entity;
|
||||
+import org.bukkit.event.Cancellable;
|
||||
+import org.bukkit.event.HandlerList;
|
||||
+import org.bukkit.event.entity.EntityEvent;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+
|
||||
+/**
|
||||
+ * Called when an entity is ready to travel through a portal
|
||||
+ */
|
||||
+public class EntityPortalReadyEvent extends EntityEvent implements Cancellable {
|
||||
+ private static final HandlerList handlers = new HandlerList();
|
||||
+ private boolean cancelled = false;
|
||||
+
|
||||
+ public EntityPortalReadyEvent(@NotNull Entity entity) {
|
||||
+ super(entity);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean isCancelled() {
|
||||
+ return cancelled;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void setCancelled(boolean cancel) {
|
||||
+ this.cancelled = cancel;
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ @Override
|
||||
+ public HandlerList getHandlers() {
|
||||
+ return handlers;
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ public static HandlerList getHandlerList() {
|
||||
+ return handlers;
|
||||
+ }
|
||||
+}
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,128 +0,0 @@
|
||||
From 97b09e0112fecb7c4bd3dacf078e7cedcf402cdd Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Fri, 12 Jul 2019 02:09:58 -0500
|
||||
Subject: [PATCH] Implement ChunkTooLargeEvent
|
||||
|
||||
---
|
||||
.../pl3x/purpur/event/ChunkTooLargeEvent.java | 109 ++++++++++++++++++
|
||||
1 file changed, 109 insertions(+)
|
||||
create mode 100644 src/main/java/net/pl3x/purpur/event/ChunkTooLargeEvent.java
|
||||
|
||||
diff --git a/src/main/java/net/pl3x/purpur/event/ChunkTooLargeEvent.java b/src/main/java/net/pl3x/purpur/event/ChunkTooLargeEvent.java
|
||||
new file mode 100644
|
||||
index 000000000..f9d4a42c6
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/net/pl3x/purpur/event/ChunkTooLargeEvent.java
|
||||
@@ -0,0 +1,109 @@
|
||||
+package net.pl3x.purpur.event;
|
||||
+
|
||||
+import org.bukkit.Bukkit;
|
||||
+import org.bukkit.Location;
|
||||
+import org.bukkit.World;
|
||||
+import org.bukkit.event.Event;
|
||||
+import org.bukkit.event.HandlerList;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+import org.jetbrains.annotations.Nullable;
|
||||
+
|
||||
+/**
|
||||
+ * Called when an oversized chunk loads or saves
|
||||
+ */
|
||||
+public class ChunkTooLargeEvent extends Event {
|
||||
+ private static final HandlerList handlers = new HandlerList();
|
||||
+ private final String worldName;
|
||||
+ private final World world;
|
||||
+ private final int chunkX;
|
||||
+ private final int chunkZ;
|
||||
+ private final boolean saving;
|
||||
+ private final boolean overzealous;
|
||||
+
|
||||
+ public ChunkTooLargeEvent(@NotNull String worldName, int chunkX, int chunkZ, boolean saving, boolean overzealous) {
|
||||
+ super(!Bukkit.isPrimaryThread());
|
||||
+ this.worldName = worldName;
|
||||
+ this.world = Bukkit.getWorld(worldName);
|
||||
+ this.chunkX = chunkX;
|
||||
+ this.chunkZ = chunkZ;
|
||||
+ this.saving = saving;
|
||||
+ this.overzealous = overzealous;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Get the world name according to the save directory
|
||||
+ *
|
||||
+ * @return World name
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public String getWorldName() {
|
||||
+ return worldName;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Get the world
|
||||
+ *
|
||||
+ * @return World, or null if world not loaded
|
||||
+ */
|
||||
+ @Nullable
|
||||
+ public World getWorld() {
|
||||
+ return world;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Get the X chunk coordinate
|
||||
+ *
|
||||
+ * @return X chunk coordinate
|
||||
+ */
|
||||
+ public int getChunkX() {
|
||||
+ return chunkX;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Get the Z chunk coordinate
|
||||
+ *
|
||||
+ * @return Z chunk coordinate
|
||||
+ */
|
||||
+ public int getChunkZ() {
|
||||
+ return chunkZ;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Whether this happened during a save attempt.
|
||||
+ *
|
||||
+ * @return True if saving, false if loading
|
||||
+ */
|
||||
+ public boolean isSaving() {
|
||||
+ return saving;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * If saving, was this is overzealous mode
|
||||
+ *
|
||||
+ * @return True if saving in overzealous mode
|
||||
+ */
|
||||
+ public boolean isOverzealous() {
|
||||
+ return overzealous;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Get the location
|
||||
+ *
|
||||
+ * @return Location, or null if world not loaded
|
||||
+ */
|
||||
+ @Nullable
|
||||
+ public Location getLocation() {
|
||||
+ return world == null ? null : new Location(world, chunkX << 4, 128, chunkZ << 4);
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ @Override
|
||||
+ public HandlerList getHandlers() {
|
||||
+ return handlers;
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ public static HandlerList getHandlerList() {
|
||||
+ return handlers;
|
||||
+ }
|
||||
+}
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,61 +0,0 @@
|
||||
From f6f1059eb70c8286fafd421d629652abddeab72a Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Sat, 19 Oct 2019 02:43:10 -0500
|
||||
Subject: [PATCH] Add LootableInventoryFirstFillEvent
|
||||
|
||||
---
|
||||
.../LootableInventoryFirstFillEvent.java | 42 +++++++++++++++++++
|
||||
1 file changed, 42 insertions(+)
|
||||
create mode 100644 src/main/java/net/pl3x/purpur/event/block/LootableInventoryFirstFillEvent.java
|
||||
|
||||
diff --git a/src/main/java/net/pl3x/purpur/event/block/LootableInventoryFirstFillEvent.java b/src/main/java/net/pl3x/purpur/event/block/LootableInventoryFirstFillEvent.java
|
||||
new file mode 100644
|
||||
index 000000000..ef8eafb7c
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/net/pl3x/purpur/event/block/LootableInventoryFirstFillEvent.java
|
||||
@@ -0,0 +1,42 @@
|
||||
+package net.pl3x.purpur.event.block;
|
||||
+
|
||||
+import com.destroystokyo.paper.loottable.LootableInventory;
|
||||
+import org.bukkit.entity.Player;
|
||||
+import org.bukkit.event.Event;
|
||||
+import org.bukkit.event.HandlerList;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+import org.jetbrains.annotations.Nullable;
|
||||
+
|
||||
+public class LootableInventoryFirstFillEvent extends Event {
|
||||
+ @Nullable
|
||||
+ private final Player player;
|
||||
+ @NotNull
|
||||
+ private final LootableInventory inventory;
|
||||
+
|
||||
+ public LootableInventoryFirstFillEvent(@Nullable Player player, @NotNull LootableInventory inventory) {
|
||||
+ this.player = player;
|
||||
+ this.inventory = inventory;
|
||||
+ }
|
||||
+
|
||||
+ @Nullable
|
||||
+ public Player getPlayer() {
|
||||
+ return player;
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ public LootableInventory getInventory() {
|
||||
+ return inventory;
|
||||
+ }
|
||||
+
|
||||
+ private static final HandlerList handlers = new HandlerList();
|
||||
+
|
||||
+ @NotNull
|
||||
+ public HandlerList getHandlers() {
|
||||
+ return handlers;
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ public static HandlerList getHandlerList() {
|
||||
+ return handlers;
|
||||
+ }
|
||||
+}
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
From b08452c2c1e0893a931b924f80972baa4d007619 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Sat, 19 Oct 2019 03:53:46 -0500
|
||||
Subject: [PATCH] Add back EntityCreatePortalEvent for EnderDragon
|
||||
|
||||
---
|
||||
src/main/java/org/bukkit/PortalType.java | 7 +++++++
|
||||
.../org/bukkit/event/entity/EntityCreatePortalEvent.java | 4 +---
|
||||
2 files changed, 8 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/PortalType.java b/src/main/java/org/bukkit/PortalType.java
|
||||
index 427cfbb8b..e23565323 100644
|
||||
--- a/src/main/java/org/bukkit/PortalType.java
|
||||
+++ b/src/main/java/org/bukkit/PortalType.java
|
||||
@@ -15,6 +15,13 @@ public enum PortalType {
|
||||
*/
|
||||
ENDER,
|
||||
|
||||
+ // Purpur start
|
||||
+ /**
|
||||
+ * This is an End Gateway portal
|
||||
+ */
|
||||
+ END_GATEWAY,
|
||||
+ // Purpur end
|
||||
+
|
||||
/**
|
||||
* This is a custom Plugin portal.
|
||||
*/
|
||||
diff --git a/src/main/java/org/bukkit/event/entity/EntityCreatePortalEvent.java b/src/main/java/org/bukkit/event/entity/EntityCreatePortalEvent.java
|
||||
index 397baaefd..7456240b4 100644
|
||||
--- a/src/main/java/org/bukkit/event/entity/EntityCreatePortalEvent.java
|
||||
+++ b/src/main/java/org/bukkit/event/entity/EntityCreatePortalEvent.java
|
||||
@@ -11,10 +11,8 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* Thrown when a Living Entity creates a portal in a world.
|
||||
- *
|
||||
- * @deprecated Use {@link PortalCreateEvent}
|
||||
*/
|
||||
-@Deprecated
|
||||
+// Purpur - un-deprecate
|
||||
public class EntityCreatePortalEvent extends EntityEvent implements Cancellable {
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
private final List<BlockState> blocks;
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
From eb6271ac09f62253e19664c2a5e4b28f1dd5a914 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Wed, 1 Apr 2020 19:18:29 -0500
|
||||
Subject: [PATCH] Configurable enchantment max level
|
||||
|
||||
---
|
||||
src/main/java/org/bukkit/enchantments/Enchantment.java | 9 +++++++++
|
||||
.../java/org/bukkit/enchantments/EnchantmentWrapper.java | 7 +++++++
|
||||
2 files changed, 16 insertions(+)
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/enchantments/Enchantment.java b/src/main/java/org/bukkit/enchantments/Enchantment.java
|
||||
index d1885f178..b277428d6 100644
|
||||
--- a/src/main/java/org/bukkit/enchantments/Enchantment.java
|
||||
+++ b/src/main/java/org/bukkit/enchantments/Enchantment.java
|
||||
@@ -232,6 +232,15 @@ public abstract class Enchantment implements Keyed {
|
||||
*/
|
||||
public abstract int getMaxLevel();
|
||||
|
||||
+ // Purpur start
|
||||
+ /**
|
||||
+ * Sets the maximum level that this Enchantment may become.
|
||||
+ *
|
||||
+ * @param maxLevel Maximum level of the Enchantment
|
||||
+ */
|
||||
+ public abstract void setMaxLevel(int maxLevel);
|
||||
+ // Purpur end
|
||||
+
|
||||
/**
|
||||
* Gets the level that this Enchantment should start at
|
||||
*
|
||||
diff --git a/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java b/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java
|
||||
index 9566e4306..67e31fee3 100644
|
||||
--- a/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java
|
||||
+++ b/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java
|
||||
@@ -27,6 +27,13 @@ public class EnchantmentWrapper extends Enchantment {
|
||||
return getEnchantment().getMaxLevel();
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ @Override
|
||||
+ public void setMaxLevel(int maxLevel) {
|
||||
+ getEnchantment().setMaxLevel(maxLevel);
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
@Override
|
||||
public int getStartLevel() {
|
||||
return getEnchantment().getStartLevel();
|
||||
--
|
||||
2.26.2
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,135 +0,0 @@
|
||||
From b1cd21795f45b71ae265cebd95060a23cfcf9310 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Thu, 26 Mar 2020 13:17:09 -0500
|
||||
Subject: [PATCH] Add language asset purpur.lang
|
||||
|
||||
---
|
||||
.../net/minecraft/server/EntityPlayer.java | 1 +
|
||||
.../net/minecraft/server/LocaleLanguage.java | 48 +++++++++++++++++--
|
||||
.../pl3x/purpur/command/PurpurCommand.java | 3 ++
|
||||
src/main/resources/purpur.lang | 1 +
|
||||
4 files changed, 49 insertions(+), 4 deletions(-)
|
||||
create mode 100644 src/main/resources/purpur.lang
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
index 39072ebdc..fe1e9ea61 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
@@ -1582,6 +1582,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
}
|
||||
|
||||
public void a(IChatBaseComponent ichatbasecomponent, ChatMessageType chatmessagetype) {
|
||||
+ if (ichatbasecomponent == null) return; // Purpur
|
||||
this.playerConnection.a((Packet) (new PacketPlayOutChat(ichatbasecomponent, chatmessagetype)), (future) -> {
|
||||
if (!future.isSuccess() && (chatmessagetype == ChatMessageType.GAME_INFO || chatmessagetype == ChatMessageType.SYSTEM)) {
|
||||
boolean flag = true;
|
||||
diff --git a/src/main/java/net/minecraft/server/LocaleLanguage.java b/src/main/java/net/minecraft/server/LocaleLanguage.java
|
||||
index 601273933..75707adcd 100644
|
||||
--- a/src/main/java/net/minecraft/server/LocaleLanguage.java
|
||||
+++ b/src/main/java/net/minecraft/server/LocaleLanguage.java
|
||||
@@ -15,18 +15,41 @@ import java.util.Map.Entry;
|
||||
import java.util.regex.Pattern;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
+import org.bukkit.ChatColor;
|
||||
|
||||
public class LocaleLanguage {
|
||||
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
private static final Pattern b = Pattern.compile("%(\\d+\\$)?[\\d\\.]*[df]");
|
||||
private static final LocaleLanguage c = new LocaleLanguage();
|
||||
- private final Map<String, String> d = Maps.newHashMap();
|
||||
- private long e;
|
||||
+ private final Map<String, String> d = Maps.newHashMap(); public Map<String, String> getStorage() { return this.d; } // Purpur - OBFHELPER
|
||||
+ private long e; public long getLastUpdateTime() { return this.e; } public void setLastUpdateTime(int time) { this.e = time; } // Purpur - OBFHELPER
|
||||
|
||||
public LocaleLanguage() {
|
||||
+ // Purpur start
|
||||
+ reload(this);
|
||||
+ }
|
||||
+
|
||||
+ private void loadFromFile(String resource) {
|
||||
try {
|
||||
- InputStream inputstream = LocaleLanguage.class.getResourceAsStream("/assets/minecraft/lang/en_us.json");
|
||||
+ java.io.File file = new java.io.File(resource);
|
||||
+ if (!file.exists()) {
|
||||
+ java.nio.file.Files.copy(getClass().getResourceAsStream("/" + resource), file.toPath(), java.nio.file.StandardCopyOption.REPLACE_EXISTING);
|
||||
+ }
|
||||
+ loadFromJar("/" + resource);
|
||||
+ loadFromStream(resource, new java.io.FileInputStream(file));
|
||||
+ } catch (IOException e) {
|
||||
+ LOGGER.error("Couldn't read string from " + resource, e);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ private void loadFromJar(String resource) {
|
||||
+ loadFromStream(resource, getClass().getResourceAsStream(resource));
|
||||
+ }
|
||||
+
|
||||
+ private void loadFromStream(String resource, InputStream inputstream) {
|
||||
+ try {
|
||||
+ // Purpur end
|
||||
Throwable throwable = null;
|
||||
|
||||
try {
|
||||
@@ -60,7 +83,7 @@ public class LocaleLanguage {
|
||||
|
||||
}
|
||||
} catch (JsonParseException | IOException ioexception) {
|
||||
- LocaleLanguage.LOGGER.error("Couldn't read strings from /assets/minecraft/lang/en_us.json", ioexception);
|
||||
+ LocaleLanguage.LOGGER.error("Couldn't read strings from " + resource, ioexception); // Purpur
|
||||
}
|
||||
|
||||
}
|
||||
@@ -88,4 +111,21 @@ public class LocaleLanguage {
|
||||
public long b() {
|
||||
return this.e;
|
||||
}
|
||||
+
|
||||
+ // Purpur start
|
||||
+ public static void reload(LocaleLanguage instance) {
|
||||
+ instance.setLastUpdateTime(0);
|
||||
+ instance.getStorage().clear();
|
||||
+ instance.loadFromJar("/assets/minecraft/lang/en_us.json");
|
||||
+ instance.loadFromFile("purpur.lang");
|
||||
+ }
|
||||
+
|
||||
+ public static ChatMessage translate(String key, Object... args) {
|
||||
+ String str = getInstance().translateKey(key);
|
||||
+ if (str == null) return null;
|
||||
+ str = ChatColor.translateAlternateColorCodes('&', str);
|
||||
+ if (str.isEmpty()) return null;
|
||||
+ return new ChatMessage(str, args);
|
||||
+ }
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/net/pl3x/purpur/command/PurpurCommand.java b/src/main/java/net/pl3x/purpur/command/PurpurCommand.java
|
||||
index 7d983d9a5..36260e0ec 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/command/PurpurCommand.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/command/PurpurCommand.java
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.pl3x.purpur.command;
|
||||
|
||||
+import net.minecraft.server.LocaleLanguage;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.WorldServer;
|
||||
import net.pl3x.purpur.PurpurConfig;
|
||||
@@ -45,6 +46,8 @@ public class PurpurCommand extends Command {
|
||||
Command.broadcastCommandMessage(sender, ChatColor.RED + "Please note that this command is not supported and may cause issues.");
|
||||
Command.broadcastCommandMessage(sender, ChatColor.RED + "If you encounter any issues please use the /stop command to restart your server.");
|
||||
|
||||
+ LocaleLanguage.reload(LocaleLanguage.getInstance());
|
||||
+
|
||||
MinecraftServer console = MinecraftServer.getServer();
|
||||
PurpurConfig.init((File) console.options.valueOf("purpur-settings"));
|
||||
for (WorldServer world : console.getWorlds()) {
|
||||
diff --git a/src/main/resources/purpur.lang b/src/main/resources/purpur.lang
|
||||
new file mode 100644
|
||||
index 000000000..0967ef424
|
||||
--- /dev/null
|
||||
+++ b/src/main/resources/purpur.lang
|
||||
@@ -0,0 +1 @@
|
||||
+{}
|
||||
--
|
||||
2.26.2
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,203 +0,0 @@
|
||||
From 9b77d9886cde434034d95d1dd086971e27e85222 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Sun, 19 May 2019 18:11:53 -0500
|
||||
Subject: [PATCH] Campfires have regen effect
|
||||
|
||||
---
|
||||
.../net/minecraft/server/BlockCampfire.java | 2 +-
|
||||
.../net/minecraft/server/EntityLiving.java | 15 ++++++++--
|
||||
.../net/minecraft/server/EntityPotion.java | 26 ++++++++++++++++
|
||||
.../minecraft/server/TileEntityCampfire.java | 30 +++++++++++++++++++
|
||||
.../net/pl3x/purpur/PurpurWorldConfig.java | 23 ++++++++++++++
|
||||
5 files changed, 92 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/BlockCampfire.java b/src/main/java/net/minecraft/server/BlockCampfire.java
|
||||
index 6303be944..65f8d803b 100644
|
||||
--- a/src/main/java/net/minecraft/server/BlockCampfire.java
|
||||
+++ b/src/main/java/net/minecraft/server/BlockCampfire.java
|
||||
@@ -8,7 +8,7 @@ public class BlockCampfire extends BlockTileEntity implements IBlockWaterlogged
|
||||
|
||||
protected static final VoxelShape a = Block.a(0.0D, 0.0D, 0.0D, 16.0D, 7.0D, 16.0D);
|
||||
public static final BlockStateBoolean b = BlockProperties.r;
|
||||
- public static final BlockStateBoolean c = BlockProperties.y;
|
||||
+ public static final BlockStateBoolean c = BlockProperties.y; public static BlockStateBoolean signalFire() { return c; } // Purpur - OBFHELPER
|
||||
public static final BlockStateBoolean d = BlockProperties.C;
|
||||
public static final BlockStateDirection e = BlockProperties.N;
|
||||
private static final VoxelShape f = Block.a(6.0D, 0.0D, 6.0D, 10.0D, 16.0D, 10.0D);
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
index 685538793..aaaa98318 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
@@ -2799,10 +2799,19 @@ public abstract class EntityLiving extends Entity {
|
||||
|
||||
public boolean hasLineOfSight(Entity entity) {
|
||||
if (this.world != entity.world) return false; // CraftBukkit - SPIGOT-5675, SPIGOT-5798, MC-149563
|
||||
- Vec3D vec3d = new Vec3D(this.locX(), this.getHeadY(), this.locZ());
|
||||
- Vec3D vec3d1 = new Vec3D(entity.locX(), entity.getHeadY(), entity.locZ());
|
||||
+ // Purpur start
|
||||
+ return hasLineOfSight(entity.locX(), entity.getHeadY(), entity.locZ());
|
||||
+ }
|
||||
+
|
||||
+ public boolean hasLineOfSight(TileEntity te) {
|
||||
+ return hasLineOfSight(te.position.getX() + 0.5, te.position.getY() + 0.5, te.position.getZ() + 0.5);
|
||||
+ }
|
||||
|
||||
- return this.world.rayTrace(new RayTrace(vec3d, vec3d1, RayTrace.BlockCollisionOption.COLLIDER, RayTrace.FluidCollisionOption.NONE, this)).getType() == MovingObjectPosition.EnumMovingObjectType.MISS;
|
||||
+ public boolean hasLineOfSight(double x, double y, double z) {
|
||||
+ Vec3D start = new Vec3D(locX(), getHeadY(), locZ());
|
||||
+ Vec3D end = new Vec3D(x, y, z);
|
||||
+ return world.rayTrace(new RayTrace(start, end, RayTrace.BlockCollisionOption.COLLIDER, RayTrace.FluidCollisionOption.NONE, this)).getType() == MovingObjectPosition.EnumMovingObjectType.MISS;
|
||||
+ // Purpur end
|
||||
}
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityPotion.java b/src/main/java/net/minecraft/server/EntityPotion.java
|
||||
index b56b021b4..fcc5a5c23 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityPotion.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityPotion.java
|
||||
@@ -92,6 +92,7 @@ public class EntityPotion extends EntityProjectile {
|
||||
} else {
|
||||
this.a(list, movingobjectposition.getType() == MovingObjectPosition.EnumMovingObjectType.ENTITY ? ((MovingObjectPositionEntity) movingobjectposition).getEntity() : null);
|
||||
}
|
||||
+ splashCampfires(list); // Purpur
|
||||
}
|
||||
|
||||
int i = potionregistry.b() ? 2007 : 2002;
|
||||
@@ -101,6 +102,31 @@ public class EntityPotion extends EntityProjectile {
|
||||
}
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ private void splashCampfires(List<MobEffect> list) {
|
||||
+ AxisAlignedBB aabb = getBoundingBox().grow(4.0D, 2.0D, 4.0D);
|
||||
+ for (int x = (int) aabb.minX; x <= aabb.maxX; x++) {
|
||||
+ for (int z = (int) aabb.minZ; z <= aabb.maxZ; z++) {
|
||||
+ for (int y = (int) aabb.minY; y <= aabb.maxY; y++) {
|
||||
+ BlockPosition pos = new BlockPosition(x, y, z);
|
||||
+ TileEntity te = world.getTileEntity(pos);
|
||||
+ if (te instanceof TileEntityCampfire) {
|
||||
+ for (MobEffect effect : list) {
|
||||
+ if (effect.getMobEffect() == MobEffects.REGENERATION) {
|
||||
+ for (int i = 0; i < 6 ; i++) {
|
||||
+ ((WorldServer) world).sendParticles(((WorldServer) world).players, null, Particles.HEART, te.position.getX(), te.position.getY() + 1, te.position.getZ(), 1, 0.5, 0.5, 0.5, 0, true);
|
||||
+ }
|
||||
+ ((TileEntityCampfire) te).splashed = true;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
private void splash() {
|
||||
AxisAlignedBB axisalignedbb = this.getBoundingBox().grow(4.0D, 2.0D, 4.0D);
|
||||
List<EntityLiving> list = this.world.a(EntityLiving.class, axisalignedbb, EntityPotion.e);
|
||||
diff --git a/src/main/java/net/minecraft/server/TileEntityCampfire.java b/src/main/java/net/minecraft/server/TileEntityCampfire.java
|
||||
index a1580b8c6..618ca2d76 100644
|
||||
--- a/src/main/java/net/minecraft/server/TileEntityCampfire.java
|
||||
+++ b/src/main/java/net/minecraft/server/TileEntityCampfire.java
|
||||
@@ -14,6 +14,7 @@ public class TileEntityCampfire extends TileEntity implements Clearable, ITickab
|
||||
private final NonNullList<ItemStack> items;
|
||||
public final int[] cookingTimes;
|
||||
public final int[] cookingTotalTimes;
|
||||
+ public boolean splashed = false; // Purpur
|
||||
|
||||
public TileEntityCampfire() {
|
||||
super(TileEntityTypes.CAMPFIRE);
|
||||
@@ -34,6 +35,27 @@ public class TileEntityCampfire extends TileEntity implements Clearable, ITickab
|
||||
|
||||
} else {
|
||||
if (flag) {
|
||||
+ // Purpur start
|
||||
+ if ((splashed || !world.purpurConfig.campfireRequireRegenPotion) && world.purpurConfig.campfireRegenInterval > 0 && world.getTime() % world.purpurConfig.campfireRegenInterval == 0L) {
|
||||
+ boolean signalBoost = getBlock().get(BlockCampfire.signalFire());
|
||||
+ int duration = signalBoost ? world.purpurConfig.campfireRegenBoostDuration : world.purpurConfig.campfireRegenDuration;
|
||||
+ byte amp = (byte) (signalBoost ? world.purpurConfig.campfireRegenBoostAmp : world.purpurConfig.campfireRegenAmp);
|
||||
+ int range = signalBoost ? world.purpurConfig.campfireRegenBoostRange : world.purpurConfig.campfireRegenRange;
|
||||
+ MobEffect regeneration = new MobEffect(MobEffects.REGENERATION, duration, amp, true, true);
|
||||
+ world.getEntitiesByClass(EntityHuman.class, new AxisAlignedBB(position).grow(range)).forEach(entityhuman -> {
|
||||
+ boolean noLineOfSign = true;
|
||||
+ if (!signalBoost && world.purpurConfig.campfireRegenRequireLineOfSight) {
|
||||
+ noLineOfSign = false;
|
||||
+ }
|
||||
+ if (signalBoost && world.purpurConfig.campfireRegenBoostRequireLineOfSight) {
|
||||
+ noLineOfSign = false;
|
||||
+ }
|
||||
+ if (noLineOfSign || entityhuman.hasLineOfSight(this)) {
|
||||
+ entityhuman.addEffect(regeneration);
|
||||
+ }
|
||||
+ });
|
||||
+ }
|
||||
+ // Purpur end
|
||||
this.h();
|
||||
} else {
|
||||
for (int i = 0; i < this.items.size(); ++i) {
|
||||
@@ -41,6 +63,7 @@ public class TileEntityCampfire extends TileEntity implements Clearable, ITickab
|
||||
this.cookingTimes[i] = MathHelper.clamp(this.cookingTimes[i] - 2, 0, this.cookingTotalTimes[i]);
|
||||
}
|
||||
}
|
||||
+ splashed = false; // Purpur
|
||||
}
|
||||
|
||||
}
|
||||
@@ -137,6 +160,12 @@ public class TileEntityCampfire extends TileEntity implements Clearable, ITickab
|
||||
System.arraycopy(aint, 0, this.cookingTotalTimes, 0, Math.min(this.cookingTotalTimes.length, aint.length));
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ if (nbttagcompound.hasKey("Purpur.splashed")) {
|
||||
+ splashed = nbttagcompound.getBoolean("Purpur.splashed");
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -144,6 +173,7 @@ public class TileEntityCampfire extends TileEntity implements Clearable, ITickab
|
||||
this.d(nbttagcompound);
|
||||
nbttagcompound.setIntArray("CookingTimes", this.cookingTimes);
|
||||
nbttagcompound.setIntArray("CookingTotalTimes", this.cookingTotalTimes);
|
||||
+ nbttagcompound.setBoolean("Purpur.splashed", splashed); // Purpur
|
||||
return nbttagcompound;
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index 94744c78b..d8d95d787 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -71,6 +71,29 @@ public class PurpurWorldConfig {
|
||||
return PurpurConfig.config.getString("world-settings." + worldName + "." + path, PurpurConfig.config.getString("world-settings.default." + path));
|
||||
}
|
||||
|
||||
+ public int campfireRegenInterval = 0;
|
||||
+ public int campfireRegenDuration = 80;
|
||||
+ public int campfireRegenRange = 5;
|
||||
+ public int campfireRegenAmp = 0;
|
||||
+ public boolean campfireRegenRequireLineOfSight = true;
|
||||
+ public int campfireRegenBoostDuration = 0;
|
||||
+ public int campfireRegenBoostRange = 10;
|
||||
+ public int campfireRegenBoostAmp = 1;
|
||||
+ public boolean campfireRegenBoostRequireLineOfSight = false;
|
||||
+ public boolean campfireRequireRegenPotion = true;
|
||||
+ private void campfireSettings() {
|
||||
+ campfireRegenInterval = getInt("blocks.campfire.regen.interval", campfireRegenInterval);
|
||||
+ campfireRegenDuration = getInt("blocks.campfire.regen.duration", campfireRegenDuration);
|
||||
+ campfireRegenRange = getInt("blocks.campfire.regen.range", campfireRegenRange);
|
||||
+ campfireRegenAmp = getInt("blocks.campfire.regen.amplifier", campfireRegenAmp);
|
||||
+ campfireRegenRequireLineOfSight = getBoolean("blocks.campfire.regen.require-line-of-sight", campfireRegenRequireLineOfSight);
|
||||
+ campfireRegenBoostDuration = getInt("blocks.campfire.regen.boost-duration", campfireRegenBoostDuration);
|
||||
+ campfireRegenBoostRange = getInt("blocks.campfire.regen.boost-range", campfireRegenBoostRange);
|
||||
+ campfireRegenBoostAmp = getInt("blocks.campfire.regen.boost-amplifier", campfireRegenBoostAmp);
|
||||
+ campfireRegenBoostRequireLineOfSight = getBoolean("blocks.campfire.regen.boost-require-line-of-sight", campfireRegenBoostRequireLineOfSight);
|
||||
+ campfireRequireRegenPotion = getBoolean("blocks.campfire.regen.requires-potion-to-activate", campfireRequireRegenPotion);
|
||||
+ }
|
||||
+
|
||||
public boolean farmlandGetsMoistFromBelow = false;
|
||||
private void farmlandSettings() {
|
||||
farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow);
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
From e95433c37c07dd0343e1336c9a49661974ddc28f Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Thu, 6 Jun 2019 21:30:49 -0500
|
||||
Subject: [PATCH] Campfires burn out in rain
|
||||
|
||||
---
|
||||
src/main/java/net/minecraft/server/Block.java | 2 +-
|
||||
.../net/minecraft/server/BlockCampfire.java | 17 ++++++++++++++++-
|
||||
.../java/net/pl3x/purpur/PurpurWorldConfig.java | 2 ++
|
||||
3 files changed, 19 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java
|
||||
index 9c7faa2bd..97e553b38 100644
|
||||
--- a/src/main/java/net/minecraft/server/Block.java
|
||||
+++ b/src/main/java/net/minecraft/server/Block.java
|
||||
@@ -395,7 +395,7 @@ public class Block implements IMaterial {
|
||||
PacketDebug.a(world, blockposition);
|
||||
}
|
||||
|
||||
- public int a(IWorldReader iworldreader) {
|
||||
+ public int a(IWorldReader world) { return tickRate(world); } public int tickRate(IWorldReader world) { // Purpur - OBFHELPER
|
||||
return 10;
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/BlockCampfire.java b/src/main/java/net/minecraft/server/BlockCampfire.java
|
||||
index 65f8d803b..3b95dfaaa 100644
|
||||
--- a/src/main/java/net/minecraft/server/BlockCampfire.java
|
||||
+++ b/src/main/java/net/minecraft/server/BlockCampfire.java
|
||||
@@ -7,7 +7,7 @@ import javax.annotation.Nullable;
|
||||
public class BlockCampfire extends BlockTileEntity implements IBlockWaterlogged {
|
||||
|
||||
protected static final VoxelShape a = Block.a(0.0D, 0.0D, 0.0D, 16.0D, 7.0D, 16.0D);
|
||||
- public static final BlockStateBoolean b = BlockProperties.r;
|
||||
+ public static final BlockStateBoolean b = BlockProperties.r; public static BlockStateBoolean lit() { return b; } // Purpur - OBFHELPER
|
||||
public static final BlockStateBoolean c = BlockProperties.y; public static BlockStateBoolean signalFire() { return c; } // Purpur - OBFHELPER
|
||||
public static final BlockStateBoolean d = BlockProperties.C;
|
||||
public static final BlockStateDirection e = BlockProperties.N;
|
||||
@@ -74,6 +74,21 @@ public class BlockCampfire extends BlockTileEntity implements IBlockWaterlogged
|
||||
return (IBlockData) ((IBlockData) ((IBlockData) ((IBlockData) this.getBlockData().set(BlockCampfire.d, flag)).set(BlockCampfire.c, this.h(world.getType(blockposition.down())))).set(BlockCampfire.b, !flag)).set(BlockCampfire.e, blockactioncontext.f());
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ @Override
|
||||
+ public void tick(IBlockData iblockdata, WorldServer world, BlockPosition pos, Random random) {
|
||||
+ if (world.purpurConfig.campfireBurnOutInRain && world.getTime() % 20 == 0L && iblockdata.get(lit()) && world.isRainingAt(pos.shift(EnumDirection.UP))) {
|
||||
+ world.setTypeAndData(pos, iblockdata.set(lit(), false), 3);
|
||||
+ }
|
||||
+ world.getBlockTickList().a(pos, this, tickRate(world));
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int tickRate(IWorldReader world) {
|
||||
+ return 1;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
@Override
|
||||
public IBlockData updateState(IBlockData iblockdata, EnumDirection enumdirection, IBlockData iblockdata1, GeneratorAccess generatoraccess, BlockPosition blockposition, BlockPosition blockposition1) {
|
||||
if ((Boolean) iblockdata.get(BlockCampfire.d)) {
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index 8c84431e5..a761b2c73 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -81,6 +81,7 @@ public class PurpurWorldConfig {
|
||||
public int campfireRegenBoostAmp = 1;
|
||||
public boolean campfireRegenBoostRequireLineOfSight = false;
|
||||
public boolean campfireRequireRegenPotion = true;
|
||||
+ public boolean campfireBurnOutInRain = false;
|
||||
private void campfireSettings() {
|
||||
campfireRegenInterval = getInt("blocks.campfire.regen.interval", campfireRegenInterval);
|
||||
campfireRegenDuration = getInt("blocks.campfire.regen.duration", campfireRegenDuration);
|
||||
@@ -92,6 +93,7 @@ public class PurpurWorldConfig {
|
||||
campfireRegenBoostAmp = getInt("blocks.campfire.regen.boost-amplifier", campfireRegenBoostAmp);
|
||||
campfireRegenBoostRequireLineOfSight = getBoolean("blocks.campfire.regen.boost-require-line-of-sight", campfireRegenBoostRequireLineOfSight);
|
||||
campfireRequireRegenPotion = getBoolean("blocks.campfire.regen.requires-potion-to-activate", campfireRequireRegenPotion);
|
||||
+ campfireBurnOutInRain = getBoolean("blocks.campfire.burn-out-in-rain", campfireBurnOutInRain);
|
||||
}
|
||||
|
||||
public boolean farmlandGetsMoistFromBelow = false;
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,83 +0,0 @@
|
||||
From dd79210dd48515873533b7a50d14eab5db537495 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Thu, 23 May 2019 16:20:21 -0500
|
||||
Subject: [PATCH] Campfires should fall with gravity
|
||||
|
||||
---
|
||||
.../java/net/minecraft/server/BlockCampfire.java | 16 ++++++++++++++--
|
||||
.../java/net/pl3x/purpur/PurpurWorldConfig.java | 2 ++
|
||||
2 files changed, 16 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/BlockCampfire.java b/src/main/java/net/minecraft/server/BlockCampfire.java
|
||||
index 3b95dfaaa..418fa6d1f 100644
|
||||
--- a/src/main/java/net/minecraft/server/BlockCampfire.java
|
||||
+++ b/src/main/java/net/minecraft/server/BlockCampfire.java
|
||||
@@ -9,7 +9,7 @@ public class BlockCampfire extends BlockTileEntity implements IBlockWaterlogged
|
||||
protected static final VoxelShape a = Block.a(0.0D, 0.0D, 0.0D, 16.0D, 7.0D, 16.0D);
|
||||
public static final BlockStateBoolean b = BlockProperties.r; public static BlockStateBoolean lit() { return b; } // Purpur - OBFHELPER
|
||||
public static final BlockStateBoolean c = BlockProperties.y; public static BlockStateBoolean signalFire() { return c; } // Purpur - OBFHELPER
|
||||
- public static final BlockStateBoolean d = BlockProperties.C;
|
||||
+ public static final BlockStateBoolean d = BlockProperties.C; public static BlockStateBoolean waterlogged() { return d; } // Purpur - OBFHELPER
|
||||
public static final BlockStateDirection e = BlockProperties.N;
|
||||
private static final VoxelShape f = Block.a(6.0D, 0.0D, 6.0D, 10.0D, 16.0D, 10.0D);
|
||||
|
||||
@@ -75,8 +75,19 @@ public class BlockCampfire extends BlockTileEntity implements IBlockWaterlogged
|
||||
}
|
||||
|
||||
// Purpur start
|
||||
+ @Override
|
||||
+ public void onPlace(IBlockData iblockdata, World world, BlockPosition pos, IBlockData iblockdata1, boolean flag) {
|
||||
+ world.getBlockTickList().a(pos, this, tickRate(world));
|
||||
+ }
|
||||
+
|
||||
@Override
|
||||
public void tick(IBlockData iblockdata, WorldServer world, BlockPosition pos, Random random) {
|
||||
+ if (world.purpurConfig.campfireFallWithGravity && BlockFalling.canFallThrough(world.getType(pos.down())) && pos.getY() >= 0) {
|
||||
+ world.addEntity(new EntityFallingBlock(world, pos.getX() + 0.5D, pos.getY(), pos.getZ() + 0.5D, world.getType(pos)));
|
||||
+ }
|
||||
+ if (iblockdata.get(waterlogged()) && iblockdata.get(lit())) {
|
||||
+ world.setTypeAndData(pos, iblockdata.set(lit(), false), 3);
|
||||
+ }
|
||||
if (world.purpurConfig.campfireBurnOutInRain && world.getTime() % 20 == 0L && iblockdata.get(lit()) && world.isRainingAt(pos.shift(EnumDirection.UP))) {
|
||||
world.setTypeAndData(pos, iblockdata.set(lit(), false), 3);
|
||||
}
|
||||
@@ -91,6 +102,7 @@ public class BlockCampfire extends BlockTileEntity implements IBlockWaterlogged
|
||||
|
||||
@Override
|
||||
public IBlockData updateState(IBlockData iblockdata, EnumDirection enumdirection, IBlockData iblockdata1, GeneratorAccess generatoraccess, BlockPosition blockposition, BlockPosition blockposition1) {
|
||||
+ generatoraccess.getBlockTickList().a(blockposition, this, tickRate(generatoraccess)); // Purpur - Campfires should fall with gravity
|
||||
if ((Boolean) iblockdata.get(BlockCampfire.d)) {
|
||||
generatoraccess.getFluidTickList().a(blockposition, FluidTypes.WATER, FluidTypes.WATER.a((IWorldReader) generatoraccess));
|
||||
}
|
||||
@@ -119,7 +131,7 @@ public class BlockCampfire extends BlockTileEntity implements IBlockWaterlogged
|
||||
|
||||
@Override
|
||||
public boolean place(GeneratorAccess generatoraccess, BlockPosition blockposition, IBlockData iblockdata, Fluid fluid) {
|
||||
- if (!(Boolean) iblockdata.get(BlockProperties.C) && fluid.getType() == FluidTypes.WATER) {
|
||||
+ if (!(Boolean) iblockdata.get(BlockCampfire.d) && fluid.getType() == FluidTypes.WATER) { // Purpur
|
||||
boolean flag = (Boolean) iblockdata.get(BlockCampfire.b);
|
||||
|
||||
if (flag) {
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index a761b2c73..d6405b2ec 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -82,6 +82,7 @@ public class PurpurWorldConfig {
|
||||
public boolean campfireRegenBoostRequireLineOfSight = false;
|
||||
public boolean campfireRequireRegenPotion = true;
|
||||
public boolean campfireBurnOutInRain = false;
|
||||
+ public boolean campfireFallWithGravity = false;
|
||||
private void campfireSettings() {
|
||||
campfireRegenInterval = getInt("blocks.campfire.regen.interval", campfireRegenInterval);
|
||||
campfireRegenDuration = getInt("blocks.campfire.regen.duration", campfireRegenDuration);
|
||||
@@ -94,6 +95,7 @@ public class PurpurWorldConfig {
|
||||
campfireRegenBoostRequireLineOfSight = getBoolean("blocks.campfire.regen.boost-require-line-of-sight", campfireRegenBoostRequireLineOfSight);
|
||||
campfireRequireRegenPotion = getBoolean("blocks.campfire.regen.requires-potion-to-activate", campfireRequireRegenPotion);
|
||||
campfireBurnOutInRain = getBoolean("blocks.campfire.burn-out-in-rain", campfireBurnOutInRain);
|
||||
+ campfireFallWithGravity = getBoolean("blocks.campfire.fall-with-gravity", campfireFallWithGravity);
|
||||
}
|
||||
|
||||
public boolean farmlandGetsMoistFromBelow = false;
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,72 +0,0 @@
|
||||
From 48d14d7c57478a6af1c85d20a59ebef69b43ec9e Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Mon, 22 Jul 2019 14:24:26 -0500
|
||||
Subject: [PATCH] Pillager limits and leaders chance
|
||||
|
||||
---
|
||||
.../java/net/minecraft/server/ChunkProviderGenerate.java | 1 +
|
||||
.../java/net/minecraft/server/EntityMonsterPatrolling.java | 7 ++++++-
|
||||
src/main/java/net/pl3x/purpur/PurpurWorldConfig.java | 6 ++++++
|
||||
3 files changed, 13 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/ChunkProviderGenerate.java b/src/main/java/net/minecraft/server/ChunkProviderGenerate.java
|
||||
index 70f43c515..fa08b8e1a 100644
|
||||
--- a/src/main/java/net/minecraft/server/ChunkProviderGenerate.java
|
||||
+++ b/src/main/java/net/minecraft/server/ChunkProviderGenerate.java
|
||||
@@ -143,6 +143,7 @@ public class ChunkProviderGenerate extends ChunkGeneratorAbstract<GeneratorSetti
|
||||
}
|
||||
} else if (enumcreaturetype == EnumCreatureType.MONSTER) {
|
||||
if (WorldGenerator.PILLAGER_OUTPOST.a(this.a, blockposition)) {
|
||||
+ if (getWorld().purpurConfig.pillagerLimitOutpostSpawns <= 0 || getWorld().getEntitiesByClass(EntityPillager.class, new AxisAlignedBB(blockposition).grow(128)).size() < getWorld().purpurConfig.pillagerLimitOutpostSpawns) // Purpur
|
||||
return WorldGenerator.PILLAGER_OUTPOST.e();
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityMonsterPatrolling.java b/src/main/java/net/minecraft/server/EntityMonsterPatrolling.java
|
||||
index f44334b9e..70559714a 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityMonsterPatrolling.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityMonsterPatrolling.java
|
||||
@@ -49,6 +49,7 @@ public abstract class EntityMonsterPatrolling extends EntityMonster {
|
||||
return -0.45D;
|
||||
}
|
||||
|
||||
+ public boolean canBeLeader() { return this.es(); } // Purpur
|
||||
public boolean es() {
|
||||
return true;
|
||||
}
|
||||
@@ -56,7 +57,11 @@ public abstract class EntityMonsterPatrolling extends EntityMonster {
|
||||
@Nullable
|
||||
@Override
|
||||
public GroupDataEntity prepare(GeneratorAccess generatoraccess, DifficultyDamageScaler difficultydamagescaler, EnumMobSpawn enummobspawn, @Nullable GroupDataEntity groupdataentity, @Nullable NBTTagCompound nbttagcompound) {
|
||||
- if (enummobspawn != EnumMobSpawn.PATROL && enummobspawn != EnumMobSpawn.EVENT && enummobspawn != EnumMobSpawn.STRUCTURE && this.random.nextFloat() < 0.06F && this.es()) {
|
||||
+ // Purpur start
|
||||
+ World world = generatoraccess.getMinecraftWorld();
|
||||
+ if (this.canBeLeader() && enummobspawn != EnumMobSpawn.PATROL && enummobspawn != EnumMobSpawn.EVENT && enummobspawn != EnumMobSpawn.STRUCTURE && this.random.nextFloat() < world.purpurConfig.pillagerLeaderChance) {
|
||||
+ if (world.purpurConfig.pillagerLeaderRangeCheck <= 0 || (this instanceof EntityPillager && world.getEntitiesByClass(EntityPillager.class, new AxisAlignedBB(new BlockPosition(this)).grow(world.purpurConfig.pillagerLeaderRangeCheck)).size() == 0))
|
||||
+ // Purpur end
|
||||
this.patrolLeader = true;
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index a2fce0c63..299b080c8 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -525,10 +525,16 @@ public class PurpurWorldConfig {
|
||||
public boolean pillagerRidable = false;
|
||||
public boolean pillagerRidableInWater = false;
|
||||
public boolean pillagerRequireShiftToMount = true;
|
||||
+ public int pillagerLimitOutpostSpawns = 0;
|
||||
+ public float pillagerLeaderChance = 0.06F;
|
||||
+ public int pillagerLeaderRangeCheck = 0;
|
||||
private void pillagerSettings() {
|
||||
pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable);
|
||||
pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater);
|
||||
pillagerRequireShiftToMount = getBoolean("mobs.pillager.require-shift-to-mount", pillagerRequireShiftToMount);
|
||||
+ pillagerLimitOutpostSpawns = getInt("mobs.pillager.limit-outpost-spawns", pillagerLimitOutpostSpawns);
|
||||
+ pillagerLeaderChance = (float) getDouble("mobs.pillager.leader.chance", pillagerLeaderChance);
|
||||
+ pillagerLeaderRangeCheck = getInt("mobs.pillager.leader.range-check-for-other-leaders", pillagerLeaderRangeCheck);
|
||||
}
|
||||
|
||||
public boolean polarBearRidable = false;
|
||||
--
|
||||
2.26.2
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,158 +0,0 @@
|
||||
From 76ab9614c42d949915127a45567be02453e414ef Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Sat, 11 Jan 2020 23:12:52 -0600
|
||||
Subject: [PATCH] Add EntityPortalReadyEvent
|
||||
|
||||
---
|
||||
.../java/net/minecraft/server/BlockPortal.java | 16 +++++++++-------
|
||||
src/main/java/net/minecraft/server/Entity.java | 7 ++++---
|
||||
.../net/minecraft/server/PortalTravelAgent.java | 5 +++--
|
||||
.../java/net/minecraft/server/WorldServer.java | 2 +-
|
||||
4 files changed, 17 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/BlockPortal.java b/src/main/java/net/minecraft/server/BlockPortal.java
|
||||
index 09c7c1318..6880cdd7f 100644
|
||||
--- a/src/main/java/net/minecraft/server/BlockPortal.java
|
||||
+++ b/src/main/java/net/minecraft/server/BlockPortal.java
|
||||
@@ -54,6 +54,7 @@ public class BlockPortal extends Block {
|
||||
|
||||
}
|
||||
|
||||
+ public boolean createPortal(GeneratorAccess generatoraccess, BlockPosition blockposition) { return a(generatoraccess, blockposition); } // Purpur - OBFHELPER
|
||||
public boolean a(GeneratorAccess generatoraccess, BlockPosition blockposition) {
|
||||
BlockPortal.Shape blockportal_shape = this.b(generatoraccess, blockposition);
|
||||
|
||||
@@ -67,8 +68,8 @@ public class BlockPortal extends Block {
|
||||
}
|
||||
}
|
||||
|
||||
- @Nullable
|
||||
- public BlockPortal.Shape b(GeneratorAccess generatoraccess, BlockPosition blockposition) {
|
||||
+ public BlockPortal.Shape createShape(GeneratorAccess generatoraccess, BlockPosition blockposition) { return b(generatoraccess, blockposition); } // Purpur - OBFHELPER
|
||||
+ @Nullable public BlockPortal.Shape b(GeneratorAccess generatoraccess, BlockPosition blockposition) {
|
||||
BlockPortal.Shape blockportal_shape = new BlockPortal.Shape(generatoraccess, blockposition, EnumDirection.EnumAxis.X);
|
||||
|
||||
if (blockportal_shape.d() && blockportal_shape.e == 0) {
|
||||
@@ -189,6 +190,7 @@ public class BlockPortal extends Block {
|
||||
private int height;
|
||||
private int width;
|
||||
java.util.List<org.bukkit.block.BlockState> blocks = new java.util.ArrayList<org.bukkit.block.BlockState>(); // CraftBukkit - add field
|
||||
+ public static Block FRAME_BLOCK = Blocks.OBSIDIAN; // Purpur
|
||||
|
||||
public Shape(GeneratorAccess generatoraccess, BlockPosition blockposition, EnumDirection.EnumAxis enumdirection_enumaxis) {
|
||||
this.a = generatoraccess;
|
||||
@@ -228,14 +230,14 @@ public class BlockPortal extends Block {
|
||||
for (i = 0; i < 22; ++i) {
|
||||
BlockPosition blockposition1 = blockposition.shift(enumdirection, i);
|
||||
|
||||
- if (!this.a(this.a.getType(blockposition1)) || this.a.getType(blockposition1.down()).getBlock() != Blocks.OBSIDIAN) {
|
||||
+ if (!this.a(this.a.getType(blockposition1)) || this.a.getType(blockposition1.down()).getBlock() != FRAME_BLOCK) { // Purpur
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Block block = this.a.getType(blockposition.shift(enumdirection, i)).getBlock();
|
||||
|
||||
- return block == Blocks.OBSIDIAN ? i : 0;
|
||||
+ return block == FRAME_BLOCK ? i : 0; // Purpur
|
||||
}
|
||||
|
||||
public int a() {
|
||||
@@ -270,7 +272,7 @@ public class BlockPortal extends Block {
|
||||
|
||||
if (i == 0) {
|
||||
block = this.a.getType(blockposition.shift(this.d)).getBlock();
|
||||
- if (block != Blocks.OBSIDIAN) {
|
||||
+ if (block != FRAME_BLOCK) { // Purpur
|
||||
break label56;
|
||||
// CraftBukkit start - add the block to our list
|
||||
} else {
|
||||
@@ -280,7 +282,7 @@ public class BlockPortal extends Block {
|
||||
}
|
||||
} else if (i == this.width - 1) {
|
||||
block = this.a.getType(blockposition.shift(this.c)).getBlock();
|
||||
- if (block != Blocks.OBSIDIAN) {
|
||||
+ if (block != FRAME_BLOCK) { // Purpur
|
||||
break label56;
|
||||
// CraftBukkit start - add the block to our list
|
||||
} else {
|
||||
@@ -293,7 +295,7 @@ public class BlockPortal extends Block {
|
||||
}
|
||||
|
||||
for (i = 0; i < this.width; ++i) {
|
||||
- if (this.a.getType(this.position.shift(this.c, i).up(this.height)).getBlock() != Blocks.OBSIDIAN) {
|
||||
+ if (this.a.getType(this.position.shift(this.c, i).up(this.height)).getBlock() != FRAME_BLOCK) { // Purpur
|
||||
this.height = 0;
|
||||
break;
|
||||
// CraftBukkit start - add the block to our list
|
||||
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
||||
index 580843686..bdf79302b 100644
|
||||
--- a/src/main/java/net/minecraft/server/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/server/Entity.java
|
||||
@@ -170,9 +170,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
protected boolean af; public final boolean inPortal() { return this.af; } // Paper - OBFHELPER
|
||||
protected int ag;
|
||||
public DimensionManager dimension;
|
||||
- protected BlockPosition ai;
|
||||
- protected Vec3D aj;
|
||||
- protected EnumDirection ak;
|
||||
+ public BlockPosition ai; // Purpur - protected -> public
|
||||
+ public Vec3D aj; // Purpur - protected -> public
|
||||
+ public EnumDirection ak; // Purpur - protected -> public
|
||||
private boolean invulnerable;
|
||||
protected UUID uniqueID;
|
||||
protected String am;
|
||||
@@ -2472,6 +2472,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
this.world.getMethodProfiler().enter("portal");
|
||||
this.ag = i;
|
||||
this.portalCooldown = this.ba();
|
||||
+ if (new net.pl3x.purpur.event.entity.EntityPortalReadyEvent(getBukkitEntity()).callEvent()) // Purpur
|
||||
// CraftBukkit start
|
||||
if (this instanceof EntityPlayer) {
|
||||
((EntityPlayer) this).a(this.world.worldProvider.getDimensionManager().getType() == DimensionManager.NETHER ? DimensionManager.OVERWORLD : DimensionManager.NETHER, PlayerTeleportEvent.TeleportCause.NETHER_PORTAL);
|
||||
diff --git a/src/main/java/net/minecraft/server/PortalTravelAgent.java b/src/main/java/net/minecraft/server/PortalTravelAgent.java
|
||||
index f84dd6d9b..f50e9670b 100644
|
||||
--- a/src/main/java/net/minecraft/server/PortalTravelAgent.java
|
||||
+++ b/src/main/java/net/minecraft/server/PortalTravelAgent.java
|
||||
@@ -11,6 +11,7 @@ public class PortalTravelAgent {
|
||||
|
||||
private final WorldServer world;
|
||||
private final Random b;
|
||||
+ public Block FRAME_BLOCK = Blocks.OBSIDIAN; // Purpur
|
||||
|
||||
public PortalTravelAgent(WorldServer worldserver) {
|
||||
this.world = worldserver;
|
||||
@@ -233,7 +234,7 @@ public class PortalTravelAgent {
|
||||
boolean flag1 = l2 < 0;
|
||||
|
||||
blockposition_mutableblockposition.d(j3, l3, i4);
|
||||
- blockList.setTypeAndData(blockposition_mutableblockposition, flag1 ? Blocks.OBSIDIAN.getBlockData() : Blocks.AIR.getBlockData(), 3); // CraftBukkit
|
||||
+ blockList.setTypeAndData(blockposition_mutableblockposition, flag1 ? FRAME_BLOCK.getBlockData() : Blocks.AIR.getBlockData(), 3); // CraftBukkit // Purpur
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -243,7 +244,7 @@ public class PortalTravelAgent {
|
||||
for (i3 = -1; i3 < 4; ++i3) {
|
||||
if (k2 == -1 || k2 == 2 || i3 == -1 || i3 == 3) {
|
||||
blockposition_mutableblockposition.d(i5 + k2 * k5, j5 + i3, j2 + k2 * l5);
|
||||
- blockList.setTypeAndData(blockposition_mutableblockposition, Blocks.OBSIDIAN.getBlockData(), 3); // CraftBukkit
|
||||
+ blockList.setTypeAndData(blockposition_mutableblockposition, FRAME_BLOCK.getBlockData(), 3); // CraftBukkit // Purpur
|
||||
}
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 156c87ed4..610542dc8 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -76,7 +76,7 @@ public class WorldServer extends World {
|
||||
public boolean savingDisabled;
|
||||
private boolean everyoneSleeping;
|
||||
private int emptyTime;
|
||||
- private final PortalTravelAgent portalTravelAgent;
|
||||
+ public PortalTravelAgent portalTravelAgent; // Purpur - private final -> public non-final
|
||||
private final TickListServer<Block> nextTickListBlock;
|
||||
private final TickListServer<FluidType> nextTickListFluid;
|
||||
private final Set<NavigationAbstract> navigators; final com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet<NavigationAbstract> navigatorsForIteration = new com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet<>(2048, 0.5f, 2048, 0.2); // Tuinity - make removing entities while ticking safe
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,102 +0,0 @@
|
||||
From 5de138cbdf306a02f264c50f32f22c6864d001f1 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Thu, 1 Aug 2019 19:15:12 -0500
|
||||
Subject: [PATCH] Add blacklist option for grindstone
|
||||
|
||||
---
|
||||
.../minecraft/server/ContainerGrindstone.java | 17 +++++++++++++++++
|
||||
.../java/net/minecraft/server/ItemStack.java | 6 ++++++
|
||||
.../java/net/pl3x/purpur/PurpurWorldConfig.java | 12 ++++++++++++
|
||||
3 files changed, 35 insertions(+)
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/ContainerGrindstone.java b/src/main/java/net/minecraft/server/ContainerGrindstone.java
|
||||
index 83cb0cd64..2a849d0ec 100644
|
||||
--- a/src/main/java/net/minecraft/server/ContainerGrindstone.java
|
||||
+++ b/src/main/java/net/minecraft/server/ContainerGrindstone.java
|
||||
@@ -61,12 +61,24 @@ public class ContainerGrindstone extends Container {
|
||||
this.a(new Slot(this.craftInventory, 0, 49, 19) {
|
||||
@Override
|
||||
public boolean isAllowed(ItemStack itemstack) {
|
||||
+ // Purpur start
|
||||
+ if (containeraccess.getWorld().purpurConfig.grindstoneBlacklistDisallowPlacement && containeraccess.getWorld().purpurConfig.grindstoneBlacklist.contains(itemstack.getId())) {
|
||||
+ getBukkitView().getTopInventory().getViewers().forEach(viewer -> ((Player) viewer).updateInventory());
|
||||
+ return false;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
return itemstack.e() || itemstack.getItem() == Items.ENCHANTED_BOOK || itemstack.hasEnchantments();
|
||||
}
|
||||
});
|
||||
this.a(new Slot(this.craftInventory, 1, 49, 40) {
|
||||
@Override
|
||||
public boolean isAllowed(ItemStack itemstack) {
|
||||
+ // Purpur start
|
||||
+ if (containeraccess.getWorld().purpurConfig.grindstoneBlacklistDisallowPlacement && containeraccess.getWorld().purpurConfig.grindstoneBlacklist.contains(itemstack.getId())) {
|
||||
+ getBukkitView().getTopInventory().getViewers().forEach(viewer -> ((Player) viewer).updateInventory());
|
||||
+ return false;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
return itemstack.e() || itemstack.getItem() == Items.ENCHANTED_BOOK || itemstack.hasEnchantments();
|
||||
}
|
||||
});
|
||||
@@ -110,6 +122,11 @@ public class ContainerGrindstone extends Container {
|
||||
}
|
||||
|
||||
private int e(ItemStack itemstack) {
|
||||
+ // Purpur start
|
||||
+ if (containeraccess.getWorld().purpurConfig.grindstoneBlacklistReturnsZeroExp && containeraccess.getWorld().purpurConfig.grindstoneBlacklist.contains(itemstack.getId())) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
int j = 0;
|
||||
Map<Enchantment, Integer> map = EnchantmentManager.a(itemstack);
|
||||
Iterator iterator = map.entrySet().iterator();
|
||||
diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java
|
||||
index 8c3bbef66..d5e0578b2 100644
|
||||
--- a/src/main/java/net/minecraft/server/ItemStack.java
|
||||
+++ b/src/main/java/net/minecraft/server/ItemStack.java
|
||||
@@ -542,6 +542,12 @@ public final class ItemStack {
|
||||
return !this.e() ? this.doMaterialsMatch(itemstack) : !itemstack.isEmpty() && this.getItem() == itemstack.getItem();
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ public String getId() {
|
||||
+ return IRegistry.ITEM.getKey(getItem()).toString();
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
public String j() {
|
||||
return this.getItem().f(this);
|
||||
}
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index 5318a8e32..9c60855d6 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -8,6 +8,7 @@ import net.minecraft.server.MinecraftKey;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.spigotmc.SpigotWorldConfig;
|
||||
|
||||
+import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -103,6 +104,17 @@ public class PurpurWorldConfig {
|
||||
farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow);
|
||||
}
|
||||
|
||||
+ public List<String> grindstoneBlacklist = new ArrayList<>();
|
||||
+ public boolean grindstoneBlacklistDisallowPlacement = true;
|
||||
+ public boolean grindstoneBlacklistReturnsZeroExp = true;
|
||||
+ private void grindstoneBlacklist() {
|
||||
+ List<String> blacklist = getList("blocks.grindstone.blacklist.blacklisted-items", grindstoneBlacklist);
|
||||
+ grindstoneBlacklistDisallowPlacement = getBoolean("blocks.grindstone.blacklist.disallow-placement", grindstoneBlacklistDisallowPlacement);
|
||||
+ grindstoneBlacklistReturnsZeroExp = getBoolean("blocks.grindstone.blacklist.returns-zero-exp", grindstoneBlacklistReturnsZeroExp);
|
||||
+ grindstoneBlacklist.clear();
|
||||
+ grindstoneBlacklist.addAll(blacklist);
|
||||
+ }
|
||||
+
|
||||
public boolean signAllowColors = false;
|
||||
public boolean signRightClickEdit = false;
|
||||
private void signSettings() {
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
From 9b4138db851b38e9c42ecd40ede122f9b75f2ce1 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Fri, 23 Aug 2019 21:56:31 -0500
|
||||
Subject: [PATCH] Option for slimes not pushable
|
||||
|
||||
---
|
||||
src/main/java/net/minecraft/server/BlockPiston.java | 10 ++++++++++
|
||||
src/main/java/net/minecraft/server/BlockSlime.java | 7 +++++++
|
||||
src/main/java/net/pl3x/purpur/PurpurConfig.java | 5 +++++
|
||||
3 files changed, 22 insertions(+)
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/BlockPiston.java b/src/main/java/net/minecraft/server/BlockPiston.java
|
||||
index 8312ed779..a1721c63d 100644
|
||||
--- a/src/main/java/net/minecraft/server/BlockPiston.java
|
||||
+++ b/src/main/java/net/minecraft/server/BlockPiston.java
|
||||
@@ -347,6 +347,16 @@ public class BlockPiston extends BlockDirectional {
|
||||
} else {
|
||||
event = new BlockPistonRetractEvent(bblock, blocks, CraftBlock.notchToBlockFace(enumdirection1));
|
||||
}
|
||||
+ // Purpur start
|
||||
+ if (net.pl3x.purpur.PurpurConfig.slimeBlocksNotPushable) {
|
||||
+ for (org.bukkit.block.Block block : blocks) {
|
||||
+ if (block.getType() == org.bukkit.Material.SLIME_BLOCK) {
|
||||
+ event.setCancelled(true);
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ // Purpur end
|
||||
world.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
if (event.isCancelled()) {
|
||||
diff --git a/src/main/java/net/minecraft/server/BlockSlime.java b/src/main/java/net/minecraft/server/BlockSlime.java
|
||||
index 01f32659d..52ab86f0b 100644
|
||||
--- a/src/main/java/net/minecraft/server/BlockSlime.java
|
||||
+++ b/src/main/java/net/minecraft/server/BlockSlime.java
|
||||
@@ -49,4 +49,11 @@ public class BlockSlime extends BlockHalfTransparent {
|
||||
|
||||
super.stepOn(world, blockposition, entity);
|
||||
}
|
||||
+
|
||||
+ // Purpur start
|
||||
+ @Override
|
||||
+ public EnumPistonReaction getPushReaction(IBlockData iblockdata) {
|
||||
+ return net.pl3x.purpur.PurpurConfig.slimeBlocksNotPushable ? EnumPistonReaction.BLOCK : super.getPushReaction(iblockdata);
|
||||
+ }
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||
index ab20fa2fa..72ad9dce7 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||
@@ -149,6 +149,11 @@ public class PurpurConfig {
|
||||
dontSendUselessEntityPackets = getBoolean("settings.dont-send-useless-entity-packets", dontSendUselessEntityPackets);
|
||||
}
|
||||
|
||||
+ public static boolean slimeBlocksNotPushable = false;
|
||||
+ private static void blockSettings() {
|
||||
+ slimeBlocksNotPushable = getBoolean("settings.blocks.slime.not-movable-by-piston", slimeBlocksNotPushable);
|
||||
+ }
|
||||
+
|
||||
private static void timingsSettings() {
|
||||
getString("settings.timings.url", "https://timings.pl3x.net");
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
From a39be3fb1c8b97c9dc58761e79799ca1cd78c907 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Sun, 7 Jun 2020 13:16:02 -0500
|
||||
Subject: [PATCH] Do not strip colors from death messages
|
||||
|
||||
---
|
||||
src/main/java/net/minecraft/server/EntityPlayer.java | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
index 42f3ef1ee6..b224ff153d 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
@@ -662,7 +662,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
|
||||
IChatBaseComponent defaultMessage = this.getCombatTracker().getDeathMessage();
|
||||
|
||||
- String deathmessage = defaultMessage.getString();
|
||||
+ String deathmessage = org.bukkit.craftbukkit.util.CraftChatMessage.fromComponent(defaultMessage); // Purpur
|
||||
org.bukkit.event.entity.PlayerDeathEvent event = CraftEventFactory.callPlayerDeathEvent(this, loot, deathmessage, keepInventory);
|
||||
// Paper start - cancellable death event
|
||||
if (event.isCancelled()) {
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
From 2773516386b1b074024a5129b2dac38d1d1d0ec9 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Sat, 19 Oct 2019 03:36:52 -0500
|
||||
Subject: [PATCH] Fix furnace cook speed multiplier using values between 0 and
|
||||
1
|
||||
|
||||
---
|
||||
src/main/java/net/minecraft/server/TileEntityFurnace.java | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/TileEntityFurnace.java b/src/main/java/net/minecraft/server/TileEntityFurnace.java
|
||||
index 7d50b7056..c5e643292 100644
|
||||
--- a/src/main/java/net/minecraft/server/TileEntityFurnace.java
|
||||
+++ b/src/main/java/net/minecraft/server/TileEntityFurnace.java
|
||||
@@ -307,8 +307,10 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I
|
||||
}
|
||||
|
||||
if (this.isBurning() && this.canBurn(irecipe)) {
|
||||
- this.cookTime += cookSpeedMultiplier; // Paper - cook speed multiplier API
|
||||
- if (this.cookTime >= this.cookTimeTotal) { // Paper - cook speed multiplier API
|
||||
+ // Purpur start - fix cook speed multiplier API
|
||||
+ ++this.cookTime;
|
||||
+ if (this.cookTime >= this.cookTimeTotal / this.cookSpeedMultiplier) {
|
||||
+ // Purpur end - fix cook speed multiplier API
|
||||
this.cookTime = 0;
|
||||
this.cookTimeTotal = this.getRecipeCookingTime();
|
||||
this.burn(irecipe);
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,65 +0,0 @@
|
||||
From ab9d1fa681708fd626c0c7a02291cd17d8bdff0c Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Fri, 29 Nov 2019 23:47:42 -0600
|
||||
Subject: [PATCH] Despawn egg hatches chicken
|
||||
|
||||
---
|
||||
.../java/net/minecraft/server/EntityItem.java | 21 +++++++++++++++++++
|
||||
.../net/pl3x/purpur/PurpurWorldConfig.java | 4 ++++
|
||||
2 files changed, 25 insertions(+)
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java
|
||||
index 2926fbb95..bbb9ca1ef 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityItem.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityItem.java
|
||||
@@ -165,6 +165,27 @@ public class EntityItem extends Entity {
|
||||
}
|
||||
// Spigot end
|
||||
|
||||
+ // Purpur start
|
||||
+ @Override
|
||||
+ public void die() {
|
||||
+ if (!dead && world.purpurConfig.chickenEggsHatchWhenDespawnedMax > 0) {
|
||||
+ ItemStack item = getItemStack();
|
||||
+ if (item != null && item.getItem() == Items.EGG) {
|
||||
+ int range = world.purpurConfig.chickenEggsHatchWhenDespawnedRange;
|
||||
+ if (world.getEntitiesByClass(EntityChicken.class, new AxisAlignedBB(locX() - range, locY() - range, locZ() - range, locX() + range, locY() + range, locZ() + range)).size() < world.purpurConfig.chickenEggsHatchWhenDespawnedMax) {
|
||||
+ EntityChicken chicken = EntityTypes.CHICKEN.create(world);
|
||||
+ if (chicken != null) {
|
||||
+ chicken.setPosition(locX(), locY(), locZ());
|
||||
+ chicken.setAge(-24000);
|
||||
+ world.addEntity(chicken, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.EGG);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ super.die();
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
private void u() {
|
||||
Vec3D vec3d = this.getMot();
|
||||
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index 5b042a609..647bece31 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -262,11 +262,15 @@ public class PurpurWorldConfig {
|
||||
public boolean chickenRidableInWater = false;
|
||||
public boolean chickenRequireShiftToMount = true;
|
||||
public boolean chickenDontLayEggsWhenRidden = false;
|
||||
+ public int chickenEggsHatchWhenDespawnedMax = 0;
|
||||
+ public int chickenEggsHatchWhenDespawnedRange = 10;
|
||||
private void chickenSettings() {
|
||||
chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable);
|
||||
chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater);
|
||||
chickenRequireShiftToMount = getBoolean("mobs.chicken.require-shift-to-mount", chickenRequireShiftToMount);
|
||||
chickenDontLayEggsWhenRidden = getBoolean("mobs.chicken.dont-lay-eggs-when-ridden", chickenDontLayEggsWhenRidden);
|
||||
+ chickenEggsHatchWhenDespawnedMax = getInt("mobs.chicken.eggs-hatch-when-despawned.max", chickenEggsHatchWhenDespawnedMax);
|
||||
+ chickenEggsHatchWhenDespawnedRange = getInt("mobs.chicken.eggs-hatch-when-despawned.range", chickenEggsHatchWhenDespawnedRange);
|
||||
}
|
||||
|
||||
public boolean codRidable = false;
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
From 324ade06e16035915b27500e54ab4fb1f1c29a32 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Sat, 19 Oct 2019 01:42:50 -0500
|
||||
Subject: [PATCH] Fix SpawnChangeEvent not firing for all use-cases
|
||||
|
||||
---
|
||||
src/main/java/net/minecraft/server/World.java | 3 +++
|
||||
src/main/java/org/bukkit/craftbukkit/CraftWorld.java | 12 ++++++++----
|
||||
2 files changed, 11 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
||||
index ad3b81a11..b24191d81 100644
|
||||
--- a/src/main/java/net/minecraft/server/World.java
|
||||
+++ b/src/main/java/net/minecraft/server/World.java
|
||||
@@ -1472,8 +1472,11 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
|
||||
return blockposition;
|
||||
}
|
||||
|
||||
+ public void setSpawn(BlockPosition blockposition) { v(blockposition); } // Purpur - OBFHELPER
|
||||
public void a_(BlockPosition blockposition) {
|
||||
+ BlockPosition prevPos = getSpawn(); // Purpur
|
||||
this.worldData.setSpawn(blockposition);
|
||||
+ new org.bukkit.event.world.SpawnChangeEvent(world, MCUtil.toLocation(this, prevPos)).callEvent(); // Purpur
|
||||
}
|
||||
|
||||
public boolean a(EntityHuman entityhuman, BlockPosition blockposition) {
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
index 3d27028e8..85922aaa9 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
@@ -391,12 +391,16 @@ public class CraftWorld implements World {
|
||||
@Override
|
||||
public boolean setSpawnLocation(int x, int y, int z) {
|
||||
try {
|
||||
- Location previousLocation = getSpawnLocation();
|
||||
- world.worldData.setSpawn(new BlockPosition(x, y, z));
|
||||
+ // Purpur start - move to World#setSpawn()
|
||||
+ //Location previousLocation = getSpawnLocation();
|
||||
+ //world.worldData.setSpawn(new BlockPosition(x, y, z));
|
||||
|
||||
// Notify anyone who's listening.
|
||||
- SpawnChangeEvent event = new SpawnChangeEvent(this, previousLocation);
|
||||
- server.getPluginManager().callEvent(event);
|
||||
+ //SpawnChangeEvent event = new SpawnChangeEvent(this, previousLocation);
|
||||
+ //server.getPluginManager().callEvent(event);
|
||||
+
|
||||
+ world.setSpawn(new BlockPosition(x, y, z));
|
||||
+ // Purpur end
|
||||
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
From ace26bd42b6a6b5de262a011df936981c281c91e Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Sat, 30 Nov 2019 03:30:17 -0600
|
||||
Subject: [PATCH] Add sleep options
|
||||
|
||||
---
|
||||
.../net/minecraft/server/EntityHuman.java | 19 +++++++++++++++++--
|
||||
.../net/pl3x/purpur/PurpurWorldConfig.java | 4 ++++
|
||||
2 files changed, 21 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
|
||||
index d62174e9c..22e17e3de 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityHuman.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
|
||||
@@ -143,6 +143,21 @@ public abstract class EntityHuman extends EntityLiving {
|
||||
this.datawatcher.register(EntityHuman.bt, new NBTTagCompound());
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ private javax.script.ScriptEngine scriptEngine = new javax.script.ScriptEngineManager().getEngineByName("rhino");
|
||||
+
|
||||
+ private boolean unableToSleepRightNow() {
|
||||
+ if (world.purpurConfig.playerSleepOnlyWithCondition) {
|
||||
+ try {
|
||||
+ scriptEngine.eval("time = " + world.getDayTime());
|
||||
+ return !(Boolean) scriptEngine.eval(world.purpurConfig.playerSleepCondition);
|
||||
+ } catch (Exception ignore) {
|
||||
+ }
|
||||
+ }
|
||||
+ return world.isDay();
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
@Override
|
||||
public void tick() {
|
||||
this.noclip = this.isSpectator();
|
||||
@@ -160,7 +175,7 @@ public abstract class EntityHuman extends EntityLiving {
|
||||
this.sleepTicks = 100;
|
||||
}
|
||||
|
||||
- if (!this.world.isClientSide && this.world.isDay()) {
|
||||
+ if (!this.world.isClientSide && unableToSleepRightNow()) { // Purpur
|
||||
this.wakeup(false, true);
|
||||
}
|
||||
} else if (this.sleepTicks > 0) {
|
||||
@@ -1334,7 +1349,7 @@ public abstract class EntityHuman extends EntityLiving {
|
||||
return Either.left(EntityHuman.EnumBedResult.NOT_POSSIBLE_HERE);
|
||||
}
|
||||
|
||||
- if (this.world.isDay()) {
|
||||
+ if (unableToSleepRightNow()) { // Purpur
|
||||
this.setRespawnPosition(blockposition, false, true);
|
||||
return Either.left(EntityHuman.EnumBedResult.NOT_POSSIBLE_NOW);
|
||||
}
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index 647bece31..08fb0bae3 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -150,6 +150,8 @@ public class PurpurWorldConfig {
|
||||
public boolean disableDropsOnCrammingDeath = false;
|
||||
public boolean fixClimbingBypassingCrammingRule = false;
|
||||
public boolean milkCuresBadOmen = true;
|
||||
+ public boolean playerSleepOnlyWithCondition = false;
|
||||
+ public String playerSleepCondition = "time >= 12541 && time <= 23458";
|
||||
public boolean useBetterMending = false;
|
||||
private void gameplayMechanicsSettings() {
|
||||
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
|
||||
@@ -174,6 +176,8 @@ public class PurpurWorldConfig {
|
||||
disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath);
|
||||
fixClimbingBypassingCrammingRule = getBoolean("gameplay-mechanics.fix-climbing-bypassing-cramming-rule", fixClimbingBypassingCrammingRule);
|
||||
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
|
||||
+ playerSleepOnlyWithCondition = getBoolean("gameplay-mechanics.player.sleep.only-with-condition", playerSleepOnlyWithCondition);
|
||||
+ playerSleepCondition = getString("gameplay-mechanics.player.sleep.condition", playerSleepCondition);
|
||||
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
|
||||
}
|
||||
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
From 670ad16925b34ff2bf80abea7613073586291c86 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Sat, 30 Nov 2019 01:31:09 -0600
|
||||
Subject: [PATCH] Option for hay block fall damage
|
||||
|
||||
---
|
||||
src/main/java/net/minecraft/server/BlockHay.java | 2 +-
|
||||
src/main/java/net/pl3x/purpur/PurpurWorldConfig.java | 5 +++++
|
||||
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/BlockHay.java b/src/main/java/net/minecraft/server/BlockHay.java
|
||||
index ca81c49f0..1f8f60542 100644
|
||||
--- a/src/main/java/net/minecraft/server/BlockHay.java
|
||||
+++ b/src/main/java/net/minecraft/server/BlockHay.java
|
||||
@@ -9,6 +9,6 @@ public class BlockHay extends BlockRotatable {
|
||||
|
||||
@Override
|
||||
public void fallOn(World world, BlockPosition blockposition, Entity entity, float f) {
|
||||
- entity.b(f, 0.2F);
|
||||
+ entity.b(f, world.purpurConfig.hayBlockFallDamage); // Purpur
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index 08fb0bae3..a4a09874f 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -127,6 +127,11 @@ public class PurpurWorldConfig {
|
||||
grindstoneBlacklist.addAll(blacklist);
|
||||
}
|
||||
|
||||
+ public float hayBlockFallDamage = 0.2F;
|
||||
+ private void hayBlockFallDamage() {
|
||||
+ hayBlockFallDamage = (float) getDouble("blocks.hay_block.fall-damage", hayBlockFallDamage);
|
||||
+ }
|
||||
+
|
||||
public boolean lavaInfinite = false;
|
||||
private void lavaSettings() {
|
||||
lavaInfinite = getBoolean("blocks.lava.infinite-source", lavaInfinite);
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
From 5cb92f4ecb97c800374f4c632b3f3c371241a0c9 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Sat, 19 Oct 2019 02:43:17 -0500
|
||||
Subject: [PATCH] Add LootableInventoryFirstFillEvent
|
||||
|
||||
---
|
||||
.../paper/loottable/PaperLootableInventoryData.java | 4 ++++
|
||||
.../paper/loottable/PaperTileEntityLootableInventory.java | 5 ++++-
|
||||
2 files changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/loottable/PaperLootableInventoryData.java b/src/main/java/com/destroystokyo/paper/loottable/PaperLootableInventoryData.java
|
||||
index b5401eaf9..1decf0e89 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/loottable/PaperLootableInventoryData.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/loottable/PaperLootableInventoryData.java
|
||||
@@ -49,6 +49,10 @@ public class PaperLootableInventoryData {
|
||||
|
||||
// ALWAYS process the first fill or if the feature is disabled
|
||||
if (this.lastFill == -1 || !this.lootable.getNMSWorld().paperConfig.autoReplenishLootables) {
|
||||
+ // Purpur start
|
||||
+ LootableInventory inventory = lootable.getAPILootableInventory();
|
||||
+ if (inventory != null) new net.pl3x.purpur.event.block.LootableInventoryFirstFillEvent(player == null ? null : (Player) player.getBukkitEntity(), inventory).callEvent();
|
||||
+ // Purpur end
|
||||
return true;
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/loottable/PaperTileEntityLootableInventory.java b/src/main/java/com/destroystokyo/paper/loottable/PaperTileEntityLootableInventory.java
|
||||
index d50410532..2f24e5a70 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/loottable/PaperTileEntityLootableInventory.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/loottable/PaperTileEntityLootableInventory.java
|
||||
@@ -57,7 +57,10 @@ public class PaperTileEntityLootableInventory implements PaperLootableBlockInven
|
||||
if (world == null) {
|
||||
return null;
|
||||
}
|
||||
- return (LootableInventory) getBukkitWorld().getBlockAt(MCUtil.toLocation(world, tileEntityLootable.getPosition())).getState();
|
||||
+ // Purpur start
|
||||
+ org.bukkit.block.BlockState state = getBukkitWorld().getBlockAt(MCUtil.toLocation(world, tileEntityLootable.getPosition())).getState();
|
||||
+ return state instanceof LootableInventory ? (LootableInventory) state : null;
|
||||
+ // Purpur end
|
||||
}
|
||||
|
||||
@Override
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,200 +0,0 @@
|
||||
From cbe470f55a4b73c26d920e28b5a34244ccbfb9cf Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Wed, 22 Jan 2020 20:13:40 -0600
|
||||
Subject: [PATCH] UPnP Port Forwarding Service
|
||||
|
||||
---
|
||||
pom.xml | 10 ++++
|
||||
.../net/minecraft/server/DedicatedServer.java | 25 ++++++++++
|
||||
.../net/minecraft/server/MinecraftServer.java | 10 ++++
|
||||
.../java/net/pl3x/purpur/PurpurConfig.java | 5 ++
|
||||
.../net/pl3x/purpur/gui/info/JInfoPanel.java | 3 ++
|
||||
.../pl3x/purpur/gui/info/UPnPComponent.java | 47 +++++++++++++++++++
|
||||
6 files changed, 100 insertions(+)
|
||||
create mode 100644 src/main/java/net/pl3x/purpur/gui/info/UPnPComponent.java
|
||||
|
||||
diff --git a/pom.xml b/pom.xml
|
||||
index 097c736bc..adf7f78da 100644
|
||||
--- a/pom.xml
|
||||
+++ b/pom.xml
|
||||
@@ -55,6 +55,12 @@
|
||||
<version>1.7.7.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
+ <dependency>
|
||||
+ <groupId>com.dosse.upnp</groupId>
|
||||
+ <artifactId>UPnP</artifactId>
|
||||
+ <version>1.0</version>
|
||||
+ <scope>compile</scope>
|
||||
+ </dependency>
|
||||
<!-- Purpur end -->
|
||||
<dependency>
|
||||
<groupId>net.minecrell</groupId>
|
||||
@@ -166,6 +172,10 @@
|
||||
<id>spigotmc-public</id>
|
||||
<url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
|
||||
</repository>
|
||||
+ <repository>
|
||||
+ <id>pl3x</id>
|
||||
+ <url>https://repo.pl3x.net/</url>
|
||||
+ </repository>
|
||||
</repositories>
|
||||
|
||||
<pluginRepositories>
|
||||
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
|
||||
index 7f2db5f0b..5cfb6fd3d 100644
|
||||
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
|
||||
@@ -242,6 +242,31 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
|
||||
return false;
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ if (net.pl3x.purpur.PurpurConfig.useUPnP) {
|
||||
+ LOGGER.info("[UPnP] Attempting to start UPnP port forwarding service...");
|
||||
+ com.dosse.upnp.UPnP.NAME = "Purpur UPnP";
|
||||
+ if (com.dosse.upnp.UPnP.isUPnPAvailable()) {
|
||||
+ if (com.dosse.upnp.UPnP.isMappedTCP(getPort())) {
|
||||
+ upnp = false;
|
||||
+ LOGGER.info("[UPnP] Port " + getPort() + " is already open");
|
||||
+ } else if (com.dosse.upnp.UPnP.openPortTCP(getPort())) {
|
||||
+ upnp = true;
|
||||
+ LOGGER.info("[UPnP] Successfully opened port " + getPort());
|
||||
+ } else {
|
||||
+ upnp = false;
|
||||
+ LOGGER.info("[UPnP] Failed to open port " + getPort());
|
||||
+ }
|
||||
+ if (upnp) {
|
||||
+ LOGGER.info("[UPnP] " + com.dosse.upnp.UPnP.getExternalIP() + ":" + getPort());
|
||||
+ }
|
||||
+ } else {
|
||||
+ upnp = false;
|
||||
+ LOGGER.error("[UPnP] Service is unavailable");
|
||||
+ }
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
// CraftBukkit start
|
||||
// this.a((PlayerList) (new DedicatedPlayerList(this))); // Spigot - moved up
|
||||
server.loadPlugins();
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index f23fdd5f2..d9e5eda9b 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -187,6 +187,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
||||
public boolean lagging = false; // Purpur
|
||||
public final SlackActivityAccountant slackActivityAccountant = new SlackActivityAccountant();
|
||||
// Spigot end
|
||||
+ protected boolean upnp = false; public boolean isUPnPEnabled() { return upnp; } // Purpur
|
||||
|
||||
public MinecraftServer(OptionSet options, Proxy proxy, DataFixer datafixer, CommandDispatcher commanddispatcher, YggdrasilAuthenticationService yggdrasilauthenticationservice, MinecraftSessionService minecraftsessionservice, GameProfileRepository gameprofilerepository, UserCache usercache, WorldLoadListenerFactory worldloadlistenerfactory, String s) {
|
||||
super("Server");
|
||||
@@ -745,6 +746,15 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
||||
// CraftBukkit end
|
||||
MinecraftServer.LOGGER.info("Stopping server (Ignore any thread death message you see! - DO NOT REPORT THREAD DEATH TO PAPER)"); // Paper
|
||||
MinecraftTimings.stopServer(); // Paper
|
||||
+ // Purpur start
|
||||
+ if (upnp) {
|
||||
+ if (com.dosse.upnp.UPnP.closePortTCP(getPort())) {
|
||||
+ LOGGER.info("[UPnP] Port " + getPort() + " closed");
|
||||
+ } else {
|
||||
+ LOGGER.error("[UPnP] Failed to close port " + getPort());
|
||||
+ }
|
||||
+ }
|
||||
+ // Purpur end
|
||||
// CraftBukkit start
|
||||
if (this.server != null) {
|
||||
this.server.disablePlugins();
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||
index c3ecd6fc7..fe38b3ce9 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||
@@ -150,6 +150,11 @@ public class PurpurConfig {
|
||||
useAlternateKeepAlive = getBoolean("settings.use-alternate-keepalive", useAlternateKeepAlive);
|
||||
}
|
||||
|
||||
+ public static boolean useUPnP = false;
|
||||
+ private static void upnpSettings() {
|
||||
+ useUPnP = getBoolean("settings.upnp-port-forwarding", useUPnP);
|
||||
+ }
|
||||
+
|
||||
public static boolean dontSendUselessEntityPackets = false;
|
||||
private static void dontSendUselessEntityPackets() {
|
||||
dontSendUselessEntityPackets = getBoolean("settings.dont-send-useless-entity-packets", dontSendUselessEntityPackets);
|
||||
diff --git a/src/main/java/net/pl3x/purpur/gui/info/JInfoPanel.java b/src/main/java/net/pl3x/purpur/gui/info/JInfoPanel.java
|
||||
index c4903c7db..ee4f022fc 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/gui/info/JInfoPanel.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/gui/info/JInfoPanel.java
|
||||
@@ -19,13 +19,16 @@ public class JInfoPanel extends JPanel {
|
||||
|
||||
ramGraph = new RAMGraph();
|
||||
RAMDetails ramDetails = new RAMDetails(server);
|
||||
+ UPnPComponent upnpComponent = new UPnPComponent(server);
|
||||
|
||||
add(ramGraph, "North");
|
||||
add(ramDetails, "Center");
|
||||
+ add(upnpComponent, "South");
|
||||
|
||||
timer = new Timer(500, (event) -> {
|
||||
ramGraph.update();
|
||||
ramDetails.update();
|
||||
+ upnpComponent.repaint();
|
||||
});
|
||||
timer.start();
|
||||
}
|
||||
diff --git a/src/main/java/net/pl3x/purpur/gui/info/UPnPComponent.java b/src/main/java/net/pl3x/purpur/gui/info/UPnPComponent.java
|
||||
new file mode 100644
|
||||
index 000000000..b0465d360
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/net/pl3x/purpur/gui/info/UPnPComponent.java
|
||||
@@ -0,0 +1,47 @@
|
||||
+package net.pl3x.purpur.gui.info;
|
||||
+
|
||||
+import net.minecraft.server.MinecraftServer;
|
||||
+import net.pl3x.purpur.PurpurConfig;
|
||||
+
|
||||
+import javax.swing.JTextPane;
|
||||
+import javax.swing.border.EmptyBorder;
|
||||
+import java.awt.Color;
|
||||
+import java.awt.Dimension;
|
||||
+import java.awt.Graphics;
|
||||
+
|
||||
+public class UPnPComponent extends JTextPane {
|
||||
+ private final MinecraftServer server;
|
||||
+
|
||||
+ public UPnPComponent(MinecraftServer server) {
|
||||
+ this.server = server;
|
||||
+ setBorder(new EmptyBorder(0, 30, 0, 10));
|
||||
+ setEditable(false);
|
||||
+ setText("UPnP Status");
|
||||
+ setOpaque(false);
|
||||
+ setHighlighter(null);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public Dimension getPreferredSize() {
|
||||
+ return new Dimension(350, 20);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void paint(Graphics graphics) {
|
||||
+ super.paint(graphics);
|
||||
+ graphics.setColor(server.isUPnPEnabled() ? Color.GREEN : Color.RED);
|
||||
+ graphics.fillOval(10, 0, 15, 15);
|
||||
+ setToolTipText(getTooltip());
|
||||
+ }
|
||||
+
|
||||
+ private String getTooltip() {
|
||||
+ if (!PurpurConfig.useUPnP) {
|
||||
+ return "UPnP Disabled";
|
||||
+ }
|
||||
+ if (server.isUPnPEnabled()) {
|
||||
+ return "UPnP Enabled";
|
||||
+ } else {
|
||||
+ return "UPnP Unavailable";
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,788 +0,0 @@
|
||||
From df05bfbcf31d32354e0286477ecf261279eb244d Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Wed, 1 Apr 2020 17:21:42 -0500
|
||||
Subject: [PATCH] Configurable enchantment max level
|
||||
|
||||
---
|
||||
src/main/java/net/minecraft/server/Enchantment.java | 12 ++++++++++--
|
||||
.../net/minecraft/server/EnchantmentArrowDamage.java | 6 +-----
|
||||
.../minecraft/server/EnchantmentArrowKnockback.java | 6 +-----
|
||||
.../net/minecraft/server/EnchantmentBinding.java | 6 +-----
|
||||
.../minecraft/server/EnchantmentDepthStrider.java | 6 +-----
|
||||
.../net/minecraft/server/EnchantmentDigging.java | 6 +-----
|
||||
.../net/minecraft/server/EnchantmentDurability.java | 6 +-----
|
||||
.../java/net/minecraft/server/EnchantmentFire.java | 6 +-----
|
||||
.../net/minecraft/server/EnchantmentFlameArrows.java | 6 +-----
|
||||
.../net/minecraft/server/EnchantmentFrostWalker.java | 6 +-----
|
||||
.../minecraft/server/EnchantmentInfiniteArrows.java | 6 +-----
|
||||
.../net/minecraft/server/EnchantmentKnockback.java | 6 +-----
|
||||
.../net/minecraft/server/EnchantmentLootBonus.java | 6 +-----
|
||||
.../java/net/minecraft/server/EnchantmentLure.java | 6 +-----
|
||||
.../net/minecraft/server/EnchantmentMending.java | 6 +-----
|
||||
.../net/minecraft/server/EnchantmentMultishot.java | 6 +-----
|
||||
.../java/net/minecraft/server/EnchantmentOxygen.java | 6 +-----
|
||||
.../net/minecraft/server/EnchantmentPiercing.java | 6 +-----
|
||||
.../net/minecraft/server/EnchantmentProtection.java | 7 +------
|
||||
.../net/minecraft/server/EnchantmentQuickCharge.java | 6 +-----
|
||||
.../net/minecraft/server/EnchantmentSilkTouch.java | 6 +-----
|
||||
.../net/minecraft/server/EnchantmentSweeping.java | 6 +-----
|
||||
.../java/net/minecraft/server/EnchantmentThorns.java | 6 +-----
|
||||
.../server/EnchantmentTridentChanneling.java | 6 +-----
|
||||
.../minecraft/server/EnchantmentTridentImpaling.java | 6 +-----
|
||||
.../minecraft/server/EnchantmentTridentLoyalty.java | 6 +-----
|
||||
.../minecraft/server/EnchantmentTridentRiptide.java | 6 +-----
|
||||
.../net/minecraft/server/EnchantmentVanishing.java | 6 +-----
|
||||
.../net/minecraft/server/EnchantmentWaterWorker.java | 6 +-----
|
||||
.../minecraft/server/EnchantmentWeaponDamage.java | 6 +-----
|
||||
src/main/java/net/pl3x/purpur/PurpurConfig.java | 10 ++++++++++
|
||||
.../craftbukkit/enchantments/CraftEnchantment.java | 7 +++++++
|
||||
32 files changed, 56 insertions(+), 148 deletions(-)
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Enchantment.java b/src/main/java/net/minecraft/server/Enchantment.java
|
||||
index 70cd4a483..0ab96ea34 100644
|
||||
--- a/src/main/java/net/minecraft/server/Enchantment.java
|
||||
+++ b/src/main/java/net/minecraft/server/Enchantment.java
|
||||
@@ -44,9 +44,17 @@ public abstract class Enchantment {
|
||||
return 1;
|
||||
}
|
||||
|
||||
- public int getMaxLevel() {
|
||||
- return 1;
|
||||
+ // Purpur start
|
||||
+ private int maxLevel = 1;
|
||||
+
|
||||
+ public final int getMaxLevel() {
|
||||
+ return maxLevel;
|
||||
+ }
|
||||
+
|
||||
+ public final void setMaxLevel(int maxLevel) {
|
||||
+ this.maxLevel = maxLevel;
|
||||
}
|
||||
+ // Purpur end
|
||||
|
||||
public int a(int i) {
|
||||
return 1 + i * 10;
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentArrowDamage.java b/src/main/java/net/minecraft/server/EnchantmentArrowDamage.java
|
||||
index ffa1d19cb..1040e7e08 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentArrowDamage.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentArrowDamage.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentArrowDamage extends Enchantment {
|
||||
|
||||
public EnchantmentArrowDamage(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.BOW, aenumitemslot);
|
||||
+ setMaxLevel(5); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -15,9 +16,4 @@ public class EnchantmentArrowDamage extends Enchantment {
|
||||
public int b(int i) {
|
||||
return this.a(i) + 15;
|
||||
}
|
||||
-
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 5;
|
||||
- }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentArrowKnockback.java b/src/main/java/net/minecraft/server/EnchantmentArrowKnockback.java
|
||||
index 9103f3c61..67f487b9e 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentArrowKnockback.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentArrowKnockback.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentArrowKnockback extends Enchantment {
|
||||
|
||||
public EnchantmentArrowKnockback(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.BOW, aenumitemslot);
|
||||
+ setMaxLevel(2); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -15,9 +16,4 @@ public class EnchantmentArrowKnockback extends Enchantment {
|
||||
public int b(int i) {
|
||||
return this.a(i) + 25;
|
||||
}
|
||||
-
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 2;
|
||||
- }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentBinding.java b/src/main/java/net/minecraft/server/EnchantmentBinding.java
|
||||
index b49154b13..ec4dad3cf 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentBinding.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentBinding.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentBinding extends Enchantment {
|
||||
|
||||
public EnchantmentBinding(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.WEARABLE, aenumitemslot);
|
||||
+ setMaxLevel(1); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -16,11 +17,6 @@ public class EnchantmentBinding extends Enchantment {
|
||||
return 50;
|
||||
}
|
||||
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 1;
|
||||
- }
|
||||
-
|
||||
@Override
|
||||
public boolean isTreasure() {
|
||||
return true;
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentDepthStrider.java b/src/main/java/net/minecraft/server/EnchantmentDepthStrider.java
|
||||
index 669fbd268..07d566cd9 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentDepthStrider.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentDepthStrider.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentDepthStrider extends Enchantment {
|
||||
|
||||
public EnchantmentDepthStrider(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.ARMOR_FEET, aenumitemslot);
|
||||
+ setMaxLevel(3); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -16,11 +17,6 @@ public class EnchantmentDepthStrider extends Enchantment {
|
||||
return this.a(i) + 15;
|
||||
}
|
||||
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 3;
|
||||
- }
|
||||
-
|
||||
@Override
|
||||
public boolean a(Enchantment enchantment) {
|
||||
return super.a(enchantment) && enchantment != Enchantments.FROST_WALKER;
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentDigging.java b/src/main/java/net/minecraft/server/EnchantmentDigging.java
|
||||
index 798b3c250..16a7c38bc 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentDigging.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentDigging.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentDigging extends Enchantment {
|
||||
|
||||
protected EnchantmentDigging(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.DIGGER, aenumitemslot);
|
||||
+ setMaxLevel(5); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -16,11 +17,6 @@ public class EnchantmentDigging extends Enchantment {
|
||||
return super.a(i) + 50;
|
||||
}
|
||||
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 5;
|
||||
- }
|
||||
-
|
||||
@Override
|
||||
public boolean canEnchant(ItemStack itemstack) {
|
||||
return itemstack.getItem() == Items.SHEARS ? true : super.canEnchant(itemstack);
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentDurability.java b/src/main/java/net/minecraft/server/EnchantmentDurability.java
|
||||
index c946326fb..6deccef55 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentDurability.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentDurability.java
|
||||
@@ -6,6 +6,7 @@ public class EnchantmentDurability extends Enchantment {
|
||||
|
||||
protected EnchantmentDurability(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.BREAKABLE, aenumitemslot);
|
||||
+ setMaxLevel(3); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -18,11 +19,6 @@ public class EnchantmentDurability extends Enchantment {
|
||||
return super.a(i) + 50;
|
||||
}
|
||||
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 3;
|
||||
- }
|
||||
-
|
||||
@Override
|
||||
public boolean canEnchant(ItemStack itemstack) {
|
||||
return itemstack.e() ? true : super.canEnchant(itemstack);
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentFire.java b/src/main/java/net/minecraft/server/EnchantmentFire.java
|
||||
index c4da4378c..f2664c18e 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentFire.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentFire.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentFire extends Enchantment {
|
||||
|
||||
protected EnchantmentFire(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.WEAPON, aenumitemslot);
|
||||
+ setMaxLevel(2); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -15,9 +16,4 @@ public class EnchantmentFire extends Enchantment {
|
||||
public int b(int i) {
|
||||
return super.a(i) + 50;
|
||||
}
|
||||
-
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 2;
|
||||
- }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentFlameArrows.java b/src/main/java/net/minecraft/server/EnchantmentFlameArrows.java
|
||||
index a0b4da25b..af3db770f 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentFlameArrows.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentFlameArrows.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentFlameArrows extends Enchantment {
|
||||
|
||||
public EnchantmentFlameArrows(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.BOW, aenumitemslot);
|
||||
+ setMaxLevel(1); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -15,9 +16,4 @@ public class EnchantmentFlameArrows extends Enchantment {
|
||||
public int b(int i) {
|
||||
return 50;
|
||||
}
|
||||
-
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 1;
|
||||
- }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentFrostWalker.java b/src/main/java/net/minecraft/server/EnchantmentFrostWalker.java
|
||||
index b5de6c740..8c4fd331c 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentFrostWalker.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentFrostWalker.java
|
||||
@@ -10,6 +10,7 @@ public class EnchantmentFrostWalker extends Enchantment {
|
||||
|
||||
public EnchantmentFrostWalker(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.ARMOR_FEET, aenumitemslot);
|
||||
+ setMaxLevel(2); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -27,11 +28,6 @@ public class EnchantmentFrostWalker extends Enchantment {
|
||||
return true;
|
||||
}
|
||||
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 2;
|
||||
- }
|
||||
-
|
||||
public static void a(EntityLiving entityliving, World world, BlockPosition blockposition, int i) {
|
||||
if (entityliving.onGround) {
|
||||
IBlockData iblockdata = Blocks.FROSTED_ICE.getBlockData();
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentInfiniteArrows.java b/src/main/java/net/minecraft/server/EnchantmentInfiniteArrows.java
|
||||
index 408cfa460..1dbedc0ad 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentInfiniteArrows.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentInfiniteArrows.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentInfiniteArrows extends Enchantment {
|
||||
|
||||
public EnchantmentInfiniteArrows(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.BOW, aenumitemslot);
|
||||
+ setMaxLevel(1); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -16,11 +17,6 @@ public class EnchantmentInfiniteArrows extends Enchantment {
|
||||
return 50;
|
||||
}
|
||||
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 1;
|
||||
- }
|
||||
-
|
||||
@Override
|
||||
public boolean a(Enchantment enchantment) {
|
||||
return enchantment instanceof EnchantmentMending ? false : super.a(enchantment);
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentKnockback.java b/src/main/java/net/minecraft/server/EnchantmentKnockback.java
|
||||
index 362ce7bc4..04062c255 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentKnockback.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentKnockback.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentKnockback extends Enchantment {
|
||||
|
||||
protected EnchantmentKnockback(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.WEAPON, aenumitemslot);
|
||||
+ setMaxLevel(2); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -15,9 +16,4 @@ public class EnchantmentKnockback extends Enchantment {
|
||||
public int b(int i) {
|
||||
return super.a(i) + 50;
|
||||
}
|
||||
-
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 2;
|
||||
- }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentLootBonus.java b/src/main/java/net/minecraft/server/EnchantmentLootBonus.java
|
||||
index b5232facc..c27e20e06 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentLootBonus.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentLootBonus.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentLootBonus extends Enchantment {
|
||||
|
||||
protected EnchantmentLootBonus(Enchantment.Rarity enchantment_rarity, EnchantmentSlotType enchantmentslottype, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, enchantmentslottype, aenumitemslot);
|
||||
+ setMaxLevel(3); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -16,11 +17,6 @@ public class EnchantmentLootBonus extends Enchantment {
|
||||
return super.a(i) + 50;
|
||||
}
|
||||
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 3;
|
||||
- }
|
||||
-
|
||||
@Override
|
||||
public boolean a(Enchantment enchantment) {
|
||||
return super.a(enchantment) && enchantment != Enchantments.SILK_TOUCH;
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentLure.java b/src/main/java/net/minecraft/server/EnchantmentLure.java
|
||||
index 1ffb91c57..c5a9e61f9 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentLure.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentLure.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentLure extends Enchantment {
|
||||
|
||||
protected EnchantmentLure(Enchantment.Rarity enchantment_rarity, EnchantmentSlotType enchantmentslottype, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, enchantmentslottype, aenumitemslot);
|
||||
+ setMaxLevel(3); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -15,9 +16,4 @@ public class EnchantmentLure extends Enchantment {
|
||||
public int b(int i) {
|
||||
return super.a(i) + 50;
|
||||
}
|
||||
-
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 3;
|
||||
- }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentMending.java b/src/main/java/net/minecraft/server/EnchantmentMending.java
|
||||
index dafc29399..ace2e19a6 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentMending.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentMending.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentMending extends Enchantment {
|
||||
|
||||
public EnchantmentMending(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.BREAKABLE, aenumitemslot);
|
||||
+ setMaxLevel(1); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -20,9 +21,4 @@ public class EnchantmentMending extends Enchantment {
|
||||
public boolean isTreasure() {
|
||||
return true;
|
||||
}
|
||||
-
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 1;
|
||||
- }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentMultishot.java b/src/main/java/net/minecraft/server/EnchantmentMultishot.java
|
||||
index 6f423e753..5fb8a624c 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentMultishot.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentMultishot.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentMultishot extends Enchantment {
|
||||
|
||||
public EnchantmentMultishot(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.CROSSBOW, aenumitemslot);
|
||||
+ setMaxLevel(1); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -16,11 +17,6 @@ public class EnchantmentMultishot extends Enchantment {
|
||||
return 50;
|
||||
}
|
||||
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 1;
|
||||
- }
|
||||
-
|
||||
@Override
|
||||
public boolean a(Enchantment enchantment) {
|
||||
return super.a(enchantment) && enchantment != Enchantments.PIERCING;
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentOxygen.java b/src/main/java/net/minecraft/server/EnchantmentOxygen.java
|
||||
index c1bc97f6e..a5726d36d 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentOxygen.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentOxygen.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentOxygen extends Enchantment {
|
||||
|
||||
public EnchantmentOxygen(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.ARMOR_HEAD, aenumitemslot);
|
||||
+ setMaxLevel(3);// Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -15,9 +16,4 @@ public class EnchantmentOxygen extends Enchantment {
|
||||
public int b(int i) {
|
||||
return this.a(i) + 30;
|
||||
}
|
||||
-
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 3;
|
||||
- }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentPiercing.java b/src/main/java/net/minecraft/server/EnchantmentPiercing.java
|
||||
index 1a2e8e31f..0e8993e86 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentPiercing.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentPiercing.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentPiercing extends Enchantment {
|
||||
|
||||
public EnchantmentPiercing(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.CROSSBOW, aenumitemslot);
|
||||
+ setMaxLevel(4); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -16,11 +17,6 @@ public class EnchantmentPiercing extends Enchantment {
|
||||
return 50;
|
||||
}
|
||||
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 4;
|
||||
- }
|
||||
-
|
||||
@Override
|
||||
public boolean a(Enchantment enchantment) {
|
||||
return super.a(enchantment) && enchantment != Enchantments.MULTISHOT;
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentProtection.java b/src/main/java/net/minecraft/server/EnchantmentProtection.java
|
||||
index 416e57caa..b29cb5467 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentProtection.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentProtection.java
|
||||
@@ -10,7 +10,7 @@ public class EnchantmentProtection extends Enchantment {
|
||||
if (enchantmentprotection_damagetype == EnchantmentProtection.DamageType.FALL) {
|
||||
this.itemTarget = EnchantmentSlotType.ARMOR_FEET;
|
||||
}
|
||||
-
|
||||
+ setMaxLevel(4); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -23,11 +23,6 @@ public class EnchantmentProtection extends Enchantment {
|
||||
return this.a(i) + this.a.c();
|
||||
}
|
||||
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 4;
|
||||
- }
|
||||
-
|
||||
@Override
|
||||
public int a(int i, DamageSource damagesource) {
|
||||
return damagesource.ignoresInvulnerability() ? 0 : (this.a == EnchantmentProtection.DamageType.ALL ? i : (this.a == EnchantmentProtection.DamageType.FIRE && damagesource.isFire() ? i * 2 : (this.a == EnchantmentProtection.DamageType.FALL && damagesource == DamageSource.FALL ? i * 3 : (this.a == EnchantmentProtection.DamageType.EXPLOSION && damagesource.isExplosion() ? i * 2 : (this.a == EnchantmentProtection.DamageType.PROJECTILE && damagesource.b() ? i * 2 : 0)))));
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentQuickCharge.java b/src/main/java/net/minecraft/server/EnchantmentQuickCharge.java
|
||||
index e624b63aa..762642ce5 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentQuickCharge.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentQuickCharge.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentQuickCharge extends Enchantment {
|
||||
|
||||
public EnchantmentQuickCharge(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.CROSSBOW, aenumitemslot);
|
||||
+ setMaxLevel(3); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -15,9 +16,4 @@ public class EnchantmentQuickCharge extends Enchantment {
|
||||
public int b(int i) {
|
||||
return 50;
|
||||
}
|
||||
-
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 3;
|
||||
- }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentSilkTouch.java b/src/main/java/net/minecraft/server/EnchantmentSilkTouch.java
|
||||
index 04aa8e1d5..d0eac6dbc 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentSilkTouch.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentSilkTouch.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentSilkTouch extends Enchantment {
|
||||
|
||||
protected EnchantmentSilkTouch(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.DIGGER, aenumitemslot);
|
||||
+ setMaxLevel(1); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -16,11 +17,6 @@ public class EnchantmentSilkTouch extends Enchantment {
|
||||
return super.a(i) + 50;
|
||||
}
|
||||
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 1;
|
||||
- }
|
||||
-
|
||||
@Override
|
||||
public boolean a(Enchantment enchantment) {
|
||||
return super.a(enchantment) && enchantment != Enchantments.LOOT_BONUS_BLOCKS;
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentSweeping.java b/src/main/java/net/minecraft/server/EnchantmentSweeping.java
|
||||
index a20b1c8f5..7804e0a0a 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentSweeping.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentSweeping.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentSweeping extends Enchantment {
|
||||
|
||||
public EnchantmentSweeping(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.WEAPON, aenumitemslot);
|
||||
+ setMaxLevel(3); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -16,11 +17,6 @@ public class EnchantmentSweeping extends Enchantment {
|
||||
return this.a(i) + 15;
|
||||
}
|
||||
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 3;
|
||||
- }
|
||||
-
|
||||
public static float e(int i) {
|
||||
return 1.0F - 1.0F / (float) (i + 1);
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentThorns.java b/src/main/java/net/minecraft/server/EnchantmentThorns.java
|
||||
index fd0255c89..df7c9b24b 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentThorns.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentThorns.java
|
||||
@@ -7,6 +7,7 @@ public class EnchantmentThorns extends Enchantment {
|
||||
|
||||
public EnchantmentThorns(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.ARMOR_CHEST, aenumitemslot);
|
||||
+ setMaxLevel(3); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -19,11 +20,6 @@ public class EnchantmentThorns extends Enchantment {
|
||||
return super.a(i) + 50;
|
||||
}
|
||||
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 3;
|
||||
- }
|
||||
-
|
||||
@Override
|
||||
public boolean canEnchant(ItemStack itemstack) {
|
||||
return itemstack.getItem() instanceof ItemArmor ? true : super.canEnchant(itemstack);
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentTridentChanneling.java b/src/main/java/net/minecraft/server/EnchantmentTridentChanneling.java
|
||||
index 14115ecc7..2533b2cab 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentTridentChanneling.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentTridentChanneling.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentTridentChanneling extends Enchantment {
|
||||
|
||||
public EnchantmentTridentChanneling(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.TRIDENT, aenumitemslot);
|
||||
+ setMaxLevel(1); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -16,11 +17,6 @@ public class EnchantmentTridentChanneling extends Enchantment {
|
||||
return 50;
|
||||
}
|
||||
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 1;
|
||||
- }
|
||||
-
|
||||
@Override
|
||||
public boolean a(Enchantment enchantment) {
|
||||
return super.a(enchantment);
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentTridentImpaling.java b/src/main/java/net/minecraft/server/EnchantmentTridentImpaling.java
|
||||
index f64fc401e..b47d8284f 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentTridentImpaling.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentTridentImpaling.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentTridentImpaling extends Enchantment {
|
||||
|
||||
public EnchantmentTridentImpaling(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.TRIDENT, aenumitemslot);
|
||||
+ setMaxLevel(5); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -16,11 +17,6 @@ public class EnchantmentTridentImpaling extends Enchantment {
|
||||
return this.a(i) + 20;
|
||||
}
|
||||
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 5;
|
||||
- }
|
||||
-
|
||||
@Override
|
||||
public float a(int i, EnumMonsterType enummonstertype) {
|
||||
return enummonstertype == EnumMonsterType.e ? (float) i * 2.5F : 0.0F;
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentTridentLoyalty.java b/src/main/java/net/minecraft/server/EnchantmentTridentLoyalty.java
|
||||
index dd91bed6e..826f4d875 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentTridentLoyalty.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentTridentLoyalty.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentTridentLoyalty extends Enchantment {
|
||||
|
||||
public EnchantmentTridentLoyalty(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.TRIDENT, aenumitemslot);
|
||||
+ setMaxLevel(3); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -16,11 +17,6 @@ public class EnchantmentTridentLoyalty extends Enchantment {
|
||||
return 50;
|
||||
}
|
||||
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 3;
|
||||
- }
|
||||
-
|
||||
@Override
|
||||
public boolean a(Enchantment enchantment) {
|
||||
return super.a(enchantment);
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentTridentRiptide.java b/src/main/java/net/minecraft/server/EnchantmentTridentRiptide.java
|
||||
index 0f669dc7a..81d6ccc35 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentTridentRiptide.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentTridentRiptide.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentTridentRiptide extends Enchantment {
|
||||
|
||||
public EnchantmentTridentRiptide(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.TRIDENT, aenumitemslot);
|
||||
+ setMaxLevel(3); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -16,11 +17,6 @@ public class EnchantmentTridentRiptide extends Enchantment {
|
||||
return 50;
|
||||
}
|
||||
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 3;
|
||||
- }
|
||||
-
|
||||
@Override
|
||||
public boolean a(Enchantment enchantment) {
|
||||
return super.a(enchantment) && enchantment != Enchantments.LOYALTY && enchantment != Enchantments.CHANNELING;
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentVanishing.java b/src/main/java/net/minecraft/server/EnchantmentVanishing.java
|
||||
index 4ef59d7f1..5d7b6ca57 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentVanishing.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentVanishing.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentVanishing extends Enchantment {
|
||||
|
||||
public EnchantmentVanishing(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.ALL, aenumitemslot);
|
||||
+ setMaxLevel(1); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -16,11 +17,6 @@ public class EnchantmentVanishing extends Enchantment {
|
||||
return 50;
|
||||
}
|
||||
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 1;
|
||||
- }
|
||||
-
|
||||
@Override
|
||||
public boolean isTreasure() {
|
||||
return true;
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentWaterWorker.java b/src/main/java/net/minecraft/server/EnchantmentWaterWorker.java
|
||||
index cf0999095..bea57861b 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentWaterWorker.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentWaterWorker.java
|
||||
@@ -4,6 +4,7 @@ public class EnchantmentWaterWorker extends Enchantment {
|
||||
|
||||
public EnchantmentWaterWorker(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.ARMOR_HEAD, aenumitemslot);
|
||||
+ setMaxLevel(1); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -15,9 +16,4 @@ public class EnchantmentWaterWorker extends Enchantment {
|
||||
public int b(int i) {
|
||||
return this.a(i) + 40;
|
||||
}
|
||||
-
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 1;
|
||||
- }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/EnchantmentWeaponDamage.java b/src/main/java/net/minecraft/server/EnchantmentWeaponDamage.java
|
||||
index 4571cdf02..aa3cbd523 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnchantmentWeaponDamage.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnchantmentWeaponDamage.java
|
||||
@@ -11,6 +11,7 @@ public class EnchantmentWeaponDamage extends Enchantment {
|
||||
public EnchantmentWeaponDamage(Enchantment.Rarity enchantment_rarity, int i, EnumItemSlot... aenumitemslot) {
|
||||
super(enchantment_rarity, EnchantmentSlotType.WEAPON, aenumitemslot);
|
||||
this.a = i;
|
||||
+ setMaxLevel(5); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -23,11 +24,6 @@ public class EnchantmentWeaponDamage extends Enchantment {
|
||||
return this.a(i) + EnchantmentWeaponDamage.g[this.a];
|
||||
}
|
||||
|
||||
- @Override
|
||||
- public int getMaxLevel() {
|
||||
- return 5;
|
||||
- }
|
||||
-
|
||||
@Override
|
||||
public float a(int i, EnumMonsterType enummonstertype) {
|
||||
return this.a == 0 ? 1.0F + (float) Math.max(0, i - 1) * 0.5F : (this.a == 1 && enummonstertype == EnumMonsterType.UNDEAD ? (float) i * 2.5F : (this.a == 2 && enummonstertype == EnumMonsterType.ARTHROPOD ? (float) i * 2.5F : 0.0F));
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||
index 7bea36213..68bad6a13 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||
@@ -1,6 +1,8 @@
|
||||
package net.pl3x.purpur;
|
||||
|
||||
import com.google.common.base.Throwables;
|
||||
+import net.minecraft.server.Enchantment;
|
||||
+import net.minecraft.server.IRegistry;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.pl3x.purpur.command.PurpurCommand;
|
||||
import org.bukkit.Bukkit;
|
||||
@@ -194,4 +196,12 @@ public class PurpurConfig {
|
||||
private static void timingsSettings() {
|
||||
getString("settings.timings.url", "https://timings.pl3x.net");
|
||||
}
|
||||
+
|
||||
+ private static void enchantmentSettings() {
|
||||
+ for (Enchantment enchantment : IRegistry.ENCHANTMENT) {
|
||||
+ String name = IRegistry.ENCHANTMENT.getKey(enchantment).getKey();
|
||||
+ int maxLevel = getInt("settings.enchantment." + name + ".max-level", enchantment.getMaxLevel());
|
||||
+ enchantment.setMaxLevel(maxLevel);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java
|
||||
index 64ceeda1a..0e9fa3441 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java
|
||||
@@ -23,6 +23,13 @@ public class CraftEnchantment extends Enchantment {
|
||||
return target.getMaxLevel();
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ @Override
|
||||
+ public void setMaxLevel(int maxLevel) {
|
||||
+ target.setMaxLevel(maxLevel);
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
@Override
|
||||
public int getStartLevel() {
|
||||
return target.getStartLevel();
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,111 +0,0 @@
|
||||
From 4d4c1ccec681b4363afd0772013d59b6de57b351 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Thu, 2 Apr 2020 00:28:06 -0500
|
||||
Subject: [PATCH] Optimize Chunk Ticks
|
||||
|
||||
---
|
||||
.../minecraft/server/ChunkProviderServer.java | 50 ++++---------------
|
||||
.../minecraft/server/EnumCreatureType.java | 14 ++++++
|
||||
2 files changed, 25 insertions(+), 39 deletions(-)
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
||||
index e8bf60507..93abf7493 100644
|
||||
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
||||
@@ -981,11 +981,12 @@ public class ChunkProviderServer extends IChunkProvider {
|
||||
int k = this.world.getGameRules().getInt(GameRules.RANDOM_TICK_SPEED);
|
||||
BlockPosition blockposition = this.world.getSpawn();
|
||||
// CraftBukkit start - Other mob type spawn tick rate
|
||||
- boolean spawnAnimalThisTick = world.ticksPerAnimalSpawns != 0L && worlddata.getTime() % world.ticksPerAnimalSpawns == 0L;
|
||||
- boolean spawnMonsterThisTick = world.ticksPerMonsterSpawns != 0L && worlddata.getTime() % world.ticksPerMonsterSpawns == 0L;
|
||||
- boolean spawnWaterThisTick = world.ticksPerWaterSpawns != 0L && worlddata.getTime() % world.ticksPerWaterSpawns == 0L;
|
||||
- boolean spawnAmbientThisTick = world.ticksPerAmbientSpawns != 0L && worlddata.getTime() % world.ticksPerAmbientSpawns == 0L;
|
||||
- boolean flag2 = spawnAnimalThisTick;
|
||||
+ // Purpur start
|
||||
+ EnumCreatureType.CREATURE.setLimitThisTick(world.ticksPerAnimalSpawns != 0L && i % world.ticksPerAnimalSpawns == 0L ? world.getWorld().getAnimalSpawnLimit() : -1);
|
||||
+ EnumCreatureType.MONSTER.setLimitThisTick(world.ticksPerMonsterSpawns != 0L && i % world.ticksPerMonsterSpawns == 0L ? world.getWorld().getMonsterSpawnLimit() : -1);
|
||||
+ EnumCreatureType.WATER_CREATURE.setLimitThisTick(world.ticksPerWaterSpawns != 0L && i % world.ticksPerWaterSpawns == 0L ? world.getWorld().getWaterAnimalSpawnLimit() : -1);
|
||||
+ EnumCreatureType.AMBIENT.setLimitThisTick(world.ticksPerAmbientSpawns != 0L && i % world.ticksPerAmbientSpawns == 0L ? world.getWorld().getAmbientSpawnLimit() : -1);
|
||||
+ // Purpur end
|
||||
// CraftBukkit end
|
||||
|
||||
this.world.getMethodProfiler().enter("naturalSpawnCount");
|
||||
@@ -1032,40 +1033,11 @@ public class ChunkProviderServer extends IChunkProvider {
|
||||
if (flag1 && (this.allowMonsters || this.allowAnimals) && this.world.getWorldBorder().isInBounds(chunk.getPos()) && !this.playerChunkMap.isOutsideOfRange(playerchunk, chunkcoordintpair, true)) { // Spigot // Paper - optimise isOutsideOfRange
|
||||
this.world.getMethodProfiler().enter("spawner");
|
||||
this.world.timings.mobSpawn.startTiming(); // Spigot
|
||||
- EnumCreatureType[] aenumcreaturetype1 = aenumcreaturetype;
|
||||
- int i1 = aenumcreaturetype.length;
|
||||
-
|
||||
- for (int j1 = 0; j1 < i1; ++j1) {
|
||||
- EnumCreatureType enumcreaturetype = aenumcreaturetype1[j1];
|
||||
-
|
||||
- // CraftBukkit start - Use per-world spawn limits
|
||||
- boolean spawnThisTick = true;
|
||||
- int limit = enumcreaturetype.b();
|
||||
- switch (enumcreaturetype) {
|
||||
- case MONSTER:
|
||||
- spawnThisTick = spawnMonsterThisTick;
|
||||
- limit = world.getWorld().getMonsterSpawnLimit();
|
||||
- break;
|
||||
- case CREATURE:
|
||||
- spawnThisTick = spawnAnimalThisTick;
|
||||
- limit = world.getWorld().getAnimalSpawnLimit();
|
||||
- break;
|
||||
- case WATER_CREATURE:
|
||||
- spawnThisTick = spawnWaterThisTick;
|
||||
- limit = world.getWorld().getWaterAnimalSpawnLimit();
|
||||
- break;
|
||||
- case AMBIENT:
|
||||
- spawnThisTick = spawnAmbientThisTick;
|
||||
- limit = world.getWorld().getAmbientSpawnLimit();
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- if (!spawnThisTick || limit == 0) {
|
||||
- continue;
|
||||
- }
|
||||
- // CraftBukkit end
|
||||
-
|
||||
- if (enumcreaturetype != EnumCreatureType.MISC && (!enumcreaturetype.c() || this.allowAnimals) && (enumcreaturetype.c() || this.allowMonsters) && (!enumcreaturetype.d() || flag2)) {
|
||||
+ // Purpur start
|
||||
+ for (EnumCreatureType enumcreaturetype : aenumcreaturetype) {
|
||||
+ int limit = enumcreaturetype.getLimitThisTick();
|
||||
+ if (limit > 0 && enumcreaturetype != EnumCreatureType.MISC && (!enumcreaturetype.isFriendly() || this.allowAnimals) && (enumcreaturetype.isFriendly() || this.allowMonsters)) {
|
||||
+ // Purpur end
|
||||
int k1 = limit * l / ChunkProviderServer.b; // CraftBukkit - use per-world limits
|
||||
|
||||
// Paper start - only allow spawns upto the limit per chunk and update count afterwards
|
||||
diff --git a/src/main/java/net/minecraft/server/EnumCreatureType.java b/src/main/java/net/minecraft/server/EnumCreatureType.java
|
||||
index 3ed7fa324..7f236585d 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnumCreatureType.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnumCreatureType.java
|
||||
@@ -31,11 +31,25 @@ public enum EnumCreatureType {
|
||||
return this.g;
|
||||
}
|
||||
|
||||
+ public boolean isFriendly() { return c(); } // Purpur - OBFHELPER
|
||||
public boolean c() {
|
||||
return this.h;
|
||||
}
|
||||
|
||||
+ public boolean isPersistent() { return d(); } // Purpur - OBFHELPER
|
||||
public boolean d() {
|
||||
return this.i;
|
||||
}
|
||||
+
|
||||
+ // Purpur start
|
||||
+ private int limitThisTick = -1;
|
||||
+
|
||||
+ void setLimitThisTick(int cap) {
|
||||
+ this.limitThisTick = cap;
|
||||
+ }
|
||||
+
|
||||
+ int getLimitThisTick() {
|
||||
+ return this.limitThisTick;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,107 +0,0 @@
|
||||
From a4900735eb07249132c6a813145a613e4d86026b Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Thu, 2 Apr 2020 03:39:34 -0500
|
||||
Subject: [PATCH] Add configurable beehive generation chance
|
||||
|
||||
---
|
||||
.../server/WorldGenFeatureTreeBeehive.java | 18 +++++++++++++--
|
||||
.../server/WorldGenTreeProvider.java | 5 +++-
|
||||
.../net/pl3x/purpur/PurpurWorldConfig.java | 23 +++++++++++++++++++
|
||||
3 files changed, 43 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldGenFeatureTreeBeehive.java b/src/main/java/net/minecraft/server/WorldGenFeatureTreeBeehive.java
|
||||
index 5827b1ba1..5ef9ae16e 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldGenFeatureTreeBeehive.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldGenFeatureTreeBeehive.java
|
||||
@@ -10,7 +10,7 @@ import java.util.stream.Collectors;
|
||||
|
||||
public class WorldGenFeatureTreeBeehive extends WorldGenFeatureTree {
|
||||
|
||||
- private final float b;
|
||||
+ private final float b; public float getChance() { return b; } // Purpur - OBFHELPER
|
||||
|
||||
public WorldGenFeatureTreeBeehive(float f) {
|
||||
super(WorldGenFeatureTrees.d);
|
||||
@@ -23,7 +23,7 @@ public class WorldGenFeatureTreeBeehive extends WorldGenFeatureTree {
|
||||
|
||||
@Override
|
||||
public void a(GeneratorAccess generatoraccess, Random random, List<BlockPosition> list, List<BlockPosition> list1, Set<BlockPosition> set, StructureBoundingBox structureboundingbox) {
|
||||
- if (random.nextFloat() < this.b) {
|
||||
+ if (random.nextFloat() < getChance(generatoraccess.getMinecraftWorld(), list.get(0))) {
|
||||
EnumDirection enumdirection = BlockBeehive.a[random.nextInt(BlockBeehive.a.length)];
|
||||
int i = !list1.isEmpty() ? Math.max(((BlockPosition) list1.get(0)).getY() - 1, ((BlockPosition) list.get(0)).getY()) : Math.min(((BlockPosition) list.get(0)).getY() + 1 + random.nextInt(3), ((BlockPosition) list.get(list.size() - 1)).getY());
|
||||
List<BlockPosition> list2 = (List) list.stream().filter((blockposition) -> {
|
||||
@@ -56,6 +56,20 @@ public class WorldGenFeatureTreeBeehive extends WorldGenFeatureTree {
|
||||
}
|
||||
}
|
||||
|
||||
+ private float getChance(World world, BlockPosition position) {
|
||||
+ BiomeBase biome = world.getBiome(position);
|
||||
+ if (biome == Biomes.PLAINS) return world.purpurConfig.beehivesGeneratePlainsChance;
|
||||
+ else if (biome == Biomes.SUNFLOWER_PLAINS) return world.purpurConfig.beehivesGenerateSunflowerPlainsChance;
|
||||
+ else if (biome == Biomes.FLOWER_FOREST) return world.purpurConfig.beehivesGenerateFlowerForestChance;
|
||||
+ else if (biome == Biomes.FOREST) return world.purpurConfig.beehivesGenerateForestChance;
|
||||
+ else if (biome == Biomes.WOODED_HILLS) return world.purpurConfig.beehivesGenerateWoodedHillsChance;
|
||||
+ else if (biome == Biomes.BIRCH_FOREST) return world.purpurConfig.beehivesGenerateBirchForestChance;
|
||||
+ else if (biome == Biomes.TALL_BIRCH_FOREST) return world.purpurConfig.beehivesGenerateTallBirchForestChance;
|
||||
+ else if (biome == Biomes.BIRCH_FOREST_HILLS) return world.purpurConfig.beehivesGenerateBirchForestHillsChance;
|
||||
+ else if (biome == Biomes.TALL_BIRCH_HILLS) return world.purpurConfig.beehivesGenerateTallBirchHillsChance;
|
||||
+ return getChance();
|
||||
+ }
|
||||
+
|
||||
@Override
|
||||
public <T> T a(DynamicOps<T> dynamicops) {
|
||||
return new Dynamic<>(dynamicops, dynamicops.createMap(ImmutableMap.of(dynamicops.createString("type"), dynamicops.createString(IRegistry.w.getKey(this.a).toString()), dynamicops.createString("probability"), dynamicops.createFloat(this.b)))).getValue(); // Purpur - decompile error
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldGenTreeProvider.java b/src/main/java/net/minecraft/server/WorldGenTreeProvider.java
|
||||
index b9dee0e25..9e9d9e643 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldGenTreeProvider.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldGenTreeProvider.java
|
||||
@@ -31,7 +31,10 @@ public abstract class WorldGenTreeProvider {
|
||||
}
|
||||
|
||||
private boolean a(GeneratorAccess generatoraccess, BlockPosition blockposition) {
|
||||
- Iterator iterator = BlockPosition.MutableBlockPosition.a(blockposition.down().north(2).west(2), blockposition.up().south(2).east(2)).iterator();
|
||||
+ // Purpur start
|
||||
+ int r = generatoraccess.getMinecraftWorld().purpurConfig.beehivesSaplingFlowerRadius;
|
||||
+ Iterator iterator = BlockPosition.MutableBlockPosition.a(blockposition.down().north(r).west(r), blockposition.up().south(r).east(r)).iterator();
|
||||
+ // Purpur end
|
||||
|
||||
BlockPosition blockposition1;
|
||||
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index adcdc6b8f..0347b729c 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -99,6 +99,29 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
}
|
||||
|
||||
+ public int beehivesSaplingFlowerRadius = 2;
|
||||
+ public float beehivesGeneratePlainsChance = 0.05F;
|
||||
+ public float beehivesGenerateSunflowerPlainsChance = 0.05F;
|
||||
+ public float beehivesGenerateFlowerForestChance = 0.01F;
|
||||
+ public float beehivesGenerateForestChance;
|
||||
+ public float beehivesGenerateWoodedHillsChance;
|
||||
+ public float beehivesGenerateBirchForestChance;
|
||||
+ public float beehivesGenerateTallBirchForestChance;
|
||||
+ public float beehivesGenerateBirchForestHillsChance;
|
||||
+ public float beehivesGenerateTallBirchHillsChance;
|
||||
+ private void beehiveSettings() {
|
||||
+ beehivesSaplingFlowerRadius = getInt("beehive.grow-sapling-flower-check-radius", beehivesSaplingFlowerRadius);
|
||||
+ beehivesGeneratePlainsChance = (float) getDouble("beehive.generation-chance.plains", beehivesGeneratePlainsChance);
|
||||
+ beehivesGenerateSunflowerPlainsChance = (float) getDouble("beehive.generation-chance.sunflower-plains", beehivesGenerateSunflowerPlainsChance);
|
||||
+ beehivesGenerateFlowerForestChance = (float) getDouble("beehive.generation-chance.flower-forest", beehivesGenerateFlowerForestChance);
|
||||
+ beehivesGenerateForestChance = (float) getDouble("beehive.generation-chance.forest", beehivesGenerateForestChance);
|
||||
+ beehivesGenerateWoodedHillsChance = (float) getDouble("beehive.generation-chance.wooded-hills", beehivesGenerateWoodedHillsChance);
|
||||
+ beehivesGenerateBirchForestChance = (float) getDouble("beehive.generation-chance.birch-forest", beehivesGenerateBirchForestChance);
|
||||
+ beehivesGenerateTallBirchForestChance = (float) getDouble("beehive.generation-chance.tall-birch-forest", beehivesGenerateTallBirchForestChance);
|
||||
+ beehivesGenerateBirchForestHillsChance = (float) getDouble("beehive.generation-chance.birch-forest-hills", beehivesGenerateBirchForestHillsChance);
|
||||
+ beehivesGenerateTallBirchHillsChance = (float) getDouble("beehive.generation-chance.tall-birch-hills", beehivesGenerateTallBirchHillsChance);
|
||||
+ }
|
||||
+
|
||||
public int campfireRegenInterval = 0;
|
||||
public int campfireRegenDuration = 80;
|
||||
public int campfireRegenRange = 5;
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,224 +0,0 @@
|
||||
From 758523eb133359d46e347782229675a02ee5a1e9 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Sat, 4 Apr 2020 02:36:45 -0500
|
||||
Subject: [PATCH] Add more timings timers
|
||||
|
||||
---
|
||||
.../co/aikar/timings/MinecraftTimings.java | 22 +++++++++++++++++++
|
||||
.../minecraft/server/EntityInsentient.java | 14 ++++++++++++
|
||||
.../net/minecraft/server/EntityLiving.java | 12 ++++++++++
|
||||
.../server/PathfinderGoalSelector.java | 6 +++++
|
||||
.../net/minecraft/server/WorldServer.java | 2 ++
|
||||
5 files changed, 56 insertions(+)
|
||||
|
||||
diff --git a/src/main/java/co/aikar/timings/MinecraftTimings.java b/src/main/java/co/aikar/timings/MinecraftTimings.java
|
||||
index 2966c5731..f663f019b 100644
|
||||
--- a/src/main/java/co/aikar/timings/MinecraftTimings.java
|
||||
+++ b/src/main/java/co/aikar/timings/MinecraftTimings.java
|
||||
@@ -45,6 +45,28 @@ public final class MinecraftTimings {
|
||||
|
||||
public static final Timing scoreboardScoreSearch = Timings.ofSafe("Scoreboard score search"); // Tuinity - add timings for scoreboard search
|
||||
|
||||
+ // Purpur start
|
||||
+ public static final Timing goalCleanup = Timings.ofSafe("PathfinderGoal - Cleanup");
|
||||
+ public static final Timing goalUpdate = Timings.ofSafe("PathfinderGoal - Update");
|
||||
+ public static final Timing goalTick = Timings.ofSafe("PathfinderGoal - Tick");
|
||||
+
|
||||
+ public static final Timing entityMovementTick = Timings.ofSafe("Entity Movement");
|
||||
+ public static final Timing entityMovementTickAI = Timings.ofSafe("Entity Movement - AI");
|
||||
+ public static final Timing entityMovementTickNewAI = Timings.ofSafe("Entity Movement - New AI");
|
||||
+ public static final Timing entityMovementTickJump = Timings.ofSafe("Entity Movement - Jump");
|
||||
+ public static final Timing entityMovementTickTravel = Timings.ofSafe("Entity Movement - Travel");
|
||||
+ public static final Timing entityMovementTickPush = Timings.ofSafe("Entity Movement - Push");
|
||||
+
|
||||
+ public static final Timing entityInsentientSensing = Timings.ofSafe("Entity Insentient - Sensing");
|
||||
+ public static final Timing entityInsentientTargetSelector = Timings.ofSafe("Entity Insentient - TargetSelector");
|
||||
+ public static final Timing entityInsentientGoalSelector = Timings.ofSafe("Entity Insentient - GoalSelector");
|
||||
+ public static final Timing entityInsentientNavigation = Timings.ofSafe("Entity Insentient - Navigation");
|
||||
+ public static final Timing entityInsentientMobTick = Timings.ofSafe("Entity Insentient - MobTick");
|
||||
+ public static final Timing entityInsentientControls = Timings.ofSafe("Entity Insentient - Controls");
|
||||
+
|
||||
+ public static final Timing passengerTick = Timings.ofSafe("Passenger Tick");
|
||||
+ // Purpur end
|
||||
+
|
||||
private static final Map<Class<?>, String> taskNameCache = new MapMaker().weakKeys().makeMap();
|
||||
|
||||
private MinecraftTimings() {}
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
|
||||
index 3adc3434e..eb0befb35 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityInsentient.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java
|
||||
@@ -1,5 +1,7 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
+import co.aikar.timings.Timing;
|
||||
+import co.aikar.timings.Timings;
|
||||
import com.google.common.collect.Maps;
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
@@ -676,21 +678,32 @@ public abstract class EntityInsentient extends EntityLiving {
|
||||
}
|
||||
// Paper end
|
||||
this.world.getMethodProfiler().enter("sensing");
|
||||
+ co.aikar.timings.MinecraftTimings.entityInsentientSensing.startTiming(); // Purpur
|
||||
this.bw.a();
|
||||
+ co.aikar.timings.MinecraftTimings.entityInsentientSensing.stopTiming(); // Purpur
|
||||
this.world.getMethodProfiler().exit();
|
||||
this.world.getMethodProfiler().enter("targetSelector");
|
||||
+ co.aikar.timings.MinecraftTimings.entityInsentientTargetSelector.startTiming(); // Purpur
|
||||
this.targetSelector.doTick();
|
||||
+ co.aikar.timings.MinecraftTimings.entityInsentientTargetSelector.stopTiming(); // Purpur
|
||||
this.world.getMethodProfiler().exit();
|
||||
this.world.getMethodProfiler().enter("goalSelector");
|
||||
+ co.aikar.timings.MinecraftTimings.entityInsentientGoalSelector.startTiming(); // Purpur
|
||||
this.goalSelector.doTick();
|
||||
+ co.aikar.timings.MinecraftTimings.entityInsentientGoalSelector.stopTiming(); // Purpur
|
||||
this.world.getMethodProfiler().exit();
|
||||
this.world.getMethodProfiler().enter("navigation");
|
||||
+ co.aikar.timings.MinecraftTimings.entityInsentientNavigation.startTiming(); // Purpur
|
||||
this.navigation.c();
|
||||
+ co.aikar.timings.MinecraftTimings.entityInsentientNavigation.stopTiming(); // Purpur
|
||||
this.world.getMethodProfiler().exit();
|
||||
this.world.getMethodProfiler().enter("mob tick");
|
||||
+ co.aikar.timings.MinecraftTimings.entityInsentientMobTick.startTiming(); // Purpur
|
||||
this.mobTick();
|
||||
+ co.aikar.timings.MinecraftTimings.entityInsentientMobTick.stopTiming(); // Purpur
|
||||
this.world.getMethodProfiler().exit();
|
||||
this.world.getMethodProfiler().enter("controls");
|
||||
+ co.aikar.timings.MinecraftTimings.entityInsentientControls.startTiming(); // Purpur
|
||||
this.world.getMethodProfiler().enter("move");
|
||||
this.moveController.a();
|
||||
this.world.getMethodProfiler().exitEnter("look");
|
||||
@@ -698,6 +711,7 @@ public abstract class EntityInsentient extends EntityLiving {
|
||||
this.world.getMethodProfiler().exitEnter("jump");
|
||||
this.bq.b();
|
||||
this.world.getMethodProfiler().exit();
|
||||
+ co.aikar.timings.MinecraftTimings.entityInsentientControls.stopTiming(); // Purpur
|
||||
this.world.getMethodProfiler().exit();
|
||||
this.K();
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
index dae35c55e..3b5e38608 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
@@ -2398,7 +2398,9 @@ public abstract class EntityLiving extends Entity {
|
||||
}
|
||||
}
|
||||
|
||||
+ MinecraftTimings.entityMovementTick.startTiming(); // Purpur
|
||||
if (!dead) this.movementTick(); // Purpur
|
||||
+ MinecraftTimings.entityMovementTick.stopTiming(); // Purpur
|
||||
double d0 = this.locX() - this.lastX;
|
||||
double d1 = this.locZ() - this.lastZ;
|
||||
float f = (float) (d0 * d0 + d1 * d1);
|
||||
@@ -2605,18 +2607,23 @@ public abstract class EntityLiving extends Entity {
|
||||
|
||||
this.setMot(d4, d5, d6);
|
||||
this.world.getMethodProfiler().enter("ai");
|
||||
+ co.aikar.timings.MinecraftTimings.entityMovementTickAI.startTiming(); // Purpur
|
||||
if (this.isFrozen()) {
|
||||
this.jumping = false;
|
||||
this.aZ = 0.0F;
|
||||
this.bb = 0.0F;
|
||||
} else if (this.doAITick()) {
|
||||
this.world.getMethodProfiler().enter("newAi");
|
||||
+ co.aikar.timings.MinecraftTimings.entityMovementTickNewAI.startTiming(); // Purpur
|
||||
this.doTick();
|
||||
+ co.aikar.timings.MinecraftTimings.entityMovementTickNewAI.stopTiming(); // Purpur
|
||||
this.world.getMethodProfiler().exit();
|
||||
}
|
||||
|
||||
+ co.aikar.timings.MinecraftTimings.entityMovementTickAI.stopTiming(); // Purpur
|
||||
this.world.getMethodProfiler().exit();
|
||||
this.world.getMethodProfiler().enter("jump");
|
||||
+ co.aikar.timings.MinecraftTimings.entityMovementTickJump.startTiming(); // Purpur
|
||||
if (this.jumping) {
|
||||
if (this.N > 0.0D && (!this.onGround || this.N > 0.4D)) {
|
||||
this.c(TagsFluid.WATER);
|
||||
@@ -2632,22 +2639,27 @@ public abstract class EntityLiving extends Entity {
|
||||
this.jumpTicks = 0;
|
||||
}
|
||||
|
||||
+ co.aikar.timings.MinecraftTimings.entityMovementTickJump.stopTiming(); // Purpur
|
||||
this.world.getMethodProfiler().exit();
|
||||
this.world.getMethodProfiler().enter("travel");
|
||||
+ co.aikar.timings.MinecraftTimings.entityMovementTickTravel.startTiming(); // Purpur
|
||||
this.aZ *= 0.98F;
|
||||
this.bb *= 0.98F;
|
||||
this.n();
|
||||
AxisAlignedBB axisalignedbb = this.getBoundingBox();
|
||||
|
||||
this.e(new Vec3D((double) this.aZ, (double) this.ba, (double) this.bb));
|
||||
+ co.aikar.timings.MinecraftTimings.entityMovementTickTravel.stopTiming(); // Purpur
|
||||
this.world.getMethodProfiler().exit();
|
||||
this.world.getMethodProfiler().enter("push");
|
||||
+ co.aikar.timings.MinecraftTimings.entityMovementTickPush.startTiming(); // Purpur
|
||||
if (this.bn > 0) {
|
||||
--this.bn;
|
||||
this.a(axisalignedbb, this.getBoundingBox());
|
||||
}
|
||||
|
||||
this.collideNearby();
|
||||
+ co.aikar.timings.MinecraftTimings.entityMovementTickPush.stopTiming(); // Purpur
|
||||
this.world.getMethodProfiler().exit();
|
||||
// Purpur start
|
||||
if (EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0) {
|
||||
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
|
||||
index a68fc11ec..4b277a6f6 100644
|
||||
--- a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
|
||||
+++ b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
|
||||
@@ -78,6 +78,7 @@ public class PathfinderGoalSelector {
|
||||
private static final PathfinderGoal.Type[] PATHFINDER_GOAL_TYPES = PathfinderGoal.Type.values(); // Paper - remove streams from pathfindergoalselector
|
||||
|
||||
public void doTick() {
|
||||
+ co.aikar.timings.MinecraftTimings.goalCleanup.startTiming();
|
||||
this.e.enter("goalCleanup");
|
||||
// Paper start - remove streams from pathfindergoalselector
|
||||
for (Iterator<PathfinderGoalWrapped> iterator = this.d.iterator(); iterator.hasNext();) {
|
||||
@@ -97,8 +98,10 @@ public class PathfinderGoalSelector {
|
||||
}
|
||||
|
||||
});
|
||||
+ co.aikar.timings.MinecraftTimings.goalCleanup.stopTiming();
|
||||
this.e.exit();
|
||||
this.e.enter("goalUpdate");
|
||||
+ co.aikar.timings.MinecraftTimings.goalUpdate.startTiming();
|
||||
// Paper start - remove streams from pathfindergoalselector
|
||||
goal_update_loop: for (Iterator<PathfinderGoalWrapped> iterator = this.d.iterator(); iterator.hasNext();) {
|
||||
PathfinderGoalWrapped wrappedGoal = iterator.next();
|
||||
@@ -141,8 +144,10 @@ public class PathfinderGoalSelector {
|
||||
wrappedGoal.c();
|
||||
}
|
||||
// Paper end - remove streams from pathfindergoalselector
|
||||
+ co.aikar.timings.MinecraftTimings.goalUpdate.stopTiming();
|
||||
this.e.exit();
|
||||
this.e.enter("goalTick");
|
||||
+ co.aikar.timings.MinecraftTimings.goalTick.startTiming();
|
||||
// Paper start - remove streams from pathfindergoalselector
|
||||
for (Iterator<PathfinderGoalWrapped> iterator = this.d.iterator(); iterator.hasNext();) {
|
||||
PathfinderGoalWrapped wrappedGoal = iterator.next();
|
||||
@@ -151,6 +156,7 @@ public class PathfinderGoalSelector {
|
||||
}
|
||||
}
|
||||
// Paper end - remove streams from pathfindergoalselector
|
||||
+ co.aikar.timings.MinecraftTimings.goalTick.stopTiming();
|
||||
this.e.exit();
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 610542dc8..23d832914 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -1308,7 +1308,9 @@ public class WorldServer extends World {
|
||||
return IRegistry.ENTITY_TYPE.getKey(entity1.getEntityType()).toString();
|
||||
});
|
||||
gameprofilerfiller.c("tickPassenger");
|
||||
+ co.aikar.timings.MinecraftTimings.passengerTick.startTiming(); // Purpur
|
||||
entity1.passengerTick();
|
||||
+ co.aikar.timings.MinecraftTimings.passengerTick.stopTiming(); // Purpur
|
||||
gameprofilerfiller.exit();
|
||||
}
|
||||
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
From 709d9ada46d90e86bde0c82e0dc0960c3e7c86b7 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Tue, 9 Jul 2019 20:56:47 -0500
|
||||
Subject: [PATCH] MC-56653 Fix - pig zombies aggro
|
||||
|
||||
---
|
||||
src/main/java/net/minecraft/server/EntityPigZombie.java | 9 ++++++++-
|
||||
src/main/java/net/pl3x/purpur/PurpurWorldConfig.java | 2 ++
|
||||
2 files changed, 10 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java
|
||||
index 90bf12c73..c78876fc4 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityPigZombie.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityPigZombie.java
|
||||
@@ -170,6 +170,7 @@ public class EntityPigZombie extends EntityZombie {
|
||||
boolean result = super.damageEntity(damagesource, f);
|
||||
|
||||
if (result && entity instanceof EntityHuman && !((EntityHuman) entity).isCreative() && this.hasLineOfSight(entity)) {
|
||||
+ if (world.purpurConfig.zombiePigmanDontTargetUnlessHit) this.setLastDamager((EntityHuman) entity); // Purpur - fix MC-56653
|
||||
this.i((EntityLiving) entity);
|
||||
}
|
||||
|
||||
@@ -188,7 +189,7 @@ public class EntityPigZombie extends EntityZombie {
|
||||
this.angerLevel = event.getNewAnger();
|
||||
// CraftBukkit end
|
||||
this.soundDelay = this.random.nextInt(40);
|
||||
- this.setLastDamager(entityliving);
|
||||
+ if (!world.purpurConfig.zombiePigmanDontTargetUnlessHit) this.setLastDamager(entityliving); // Purpur - fix MC-56653
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -230,6 +231,12 @@ public class EntityPigZombie extends EntityZombie {
|
||||
return this.eA();
|
||||
}
|
||||
|
||||
+ // Purpur start - fix MC-56653
|
||||
+ protected boolean isDropExperience() {
|
||||
+ return super.isDropExperience() && (!world.purpurConfig.zombiePigmanDontTargetUnlessHit || getLastDamager() instanceof EntityHuman);
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
static class PathfinderGoalAnger extends PathfinderGoalNearestAttackableTarget<EntityHuman> {
|
||||
|
||||
public PathfinderGoalAnger(EntityPigZombie entitypigzombie) {
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index 296274896..7e7f10351 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -1013,6 +1013,7 @@ public class PurpurWorldConfig {
|
||||
public boolean zombiePigmanJockeyOnlyBaby = true;
|
||||
public double zombiePigmanJockeyChance = 0.05D;
|
||||
public boolean zombiePigmanJockeyTryExistingChickens = true;
|
||||
+ public boolean zombiePigmanDontTargetUnlessHit = false;
|
||||
private void zombiePigmanSettings() {
|
||||
zombiePigmanRidable = getBoolean("mobs.zombie_pigman.ridable", zombiePigmanRidable);
|
||||
zombiePigmanRidableInWater = getBoolean("mobs.zombie_pigman.ridable-in-water", zombiePigmanRidableInWater);
|
||||
@@ -1020,6 +1021,7 @@ public class PurpurWorldConfig {
|
||||
zombiePigmanJockeyOnlyBaby = getBoolean("mobs.zombie_pigman.jockey.only-babies", zombiePigmanJockeyOnlyBaby);
|
||||
zombiePigmanJockeyChance = getDouble("mobs.zombie_pigman.jockey.chance", zombiePigmanJockeyChance);
|
||||
zombiePigmanJockeyTryExistingChickens = getBoolean("mobs.zombie_pigman.jockey.try-existing-chickens", zombiePigmanJockeyTryExistingChickens);
|
||||
+ zombiePigmanDontTargetUnlessHit = getBoolean("mobs.zombie_pigman.dont-target-unless-hit", zombiePigmanDontTargetUnlessHit);
|
||||
}
|
||||
|
||||
public boolean zombieVillagerRidable = false;
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -1,175 +0,0 @@
|
||||
From 1b1a21c1dc6b4bbfbe85b0743ee29c22385882f9 Mon Sep 17 00:00:00 2001
|
||||
From: tr7zw <tr7zw@live.de>
|
||||
Date: Thu, 5 Mar 2020 23:08:01 +0100
|
||||
Subject: [PATCH] YAPFA - Disable mojang profiler
|
||||
|
||||
---
|
||||
.../net/minecraft/server/CommandDebug.java | 5 ++
|
||||
.../net/minecraft/server/MinecraftServer.java | 5 +-
|
||||
.../net/pl3x/purpur/GameProfilerNoop.java | 68 +++++++++++++++++++
|
||||
.../java/org/bukkit/craftbukkit/Main.java | 2 +
|
||||
src/main/resources/purpur.lang | 1 +
|
||||
5 files changed, 80 insertions(+), 1 deletion(-)
|
||||
create mode 100644 src/main/java/net/pl3x/purpur/GameProfilerNoop.java
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/CommandDebug.java b/src/main/java/net/minecraft/server/CommandDebug.java
|
||||
index f0d72ea39..e38a68406 100644
|
||||
--- a/src/main/java/net/minecraft/server/CommandDebug.java
|
||||
+++ b/src/main/java/net/minecraft/server/CommandDebug.java
|
||||
@@ -22,6 +22,7 @@ public class CommandDebug {
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
private static final SimpleCommandExceptionType b = new SimpleCommandExceptionType(new ChatMessage("commands.debug.notRunning", new Object[0]));
|
||||
private static final SimpleCommandExceptionType c = new SimpleCommandExceptionType(new ChatMessage("commands.debug.alreadyRunning", new Object[0]));
|
||||
+ private static final SimpleCommandExceptionType disabled = new SimpleCommandExceptionType(new ChatMessage("commands.purpur.debug.disabled")); // Purpur
|
||||
@Nullable
|
||||
private static final FileSystemProvider d = (FileSystemProvider) FileSystemProvider.installedProviders().stream().filter((filesystemprovider) -> {
|
||||
return filesystemprovider.getScheme().equalsIgnoreCase("jar");
|
||||
@@ -43,6 +44,8 @@ public class CommandDebug {
|
||||
MinecraftServer minecraftserver = commandlistenerwrapper.getServer();
|
||||
GameProfiler gameprofiler = minecraftserver.getMethodProfiler();
|
||||
|
||||
+ if (gameprofiler instanceof net.pl3x.purpur.GameProfilerNoop) throw CommandDebug.disabled.create(); // Purpur
|
||||
+
|
||||
if (gameprofiler.d().a()) {
|
||||
throw CommandDebug.c.create();
|
||||
} else {
|
||||
@@ -56,6 +59,8 @@ public class CommandDebug {
|
||||
MinecraftServer minecraftserver = commandlistenerwrapper.getServer();
|
||||
GameProfiler gameprofiler = minecraftserver.getMethodProfiler();
|
||||
|
||||
+ if (gameprofiler instanceof net.pl3x.purpur.GameProfilerNoop) throw CommandDebug.disabled.create(); // Purpur
|
||||
+
|
||||
if (!gameprofiler.d().a()) {
|
||||
throw CommandDebug.b.create();
|
||||
} else {
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index 40da7a05c..6928d2492 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -80,7 +80,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
||||
private final MojangStatisticsGenerator snooper = new MojangStatisticsGenerator("server", this, SystemUtils.getMonotonicMillis());
|
||||
public File universe;
|
||||
private final List<Runnable> tickables = Lists.newArrayList();
|
||||
- private final GameProfiler methodProfiler = new GameProfiler(this::ak);
|
||||
+ protected GameProfiler methodProfiler = new net.pl3x.purpur.GameProfilerNoop(this::getTickCount); // Purpur
|
||||
private ServerConnection serverConnection;
|
||||
public final WorldLoadListenerFactory worldLoadListenerFactory;
|
||||
private final ServerPing serverPing = new ServerPing();
|
||||
@@ -1529,6 +1529,8 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
||||
String s1 = (String) Optional.ofNullable(optionset.valueOf("world")).orElse(dedicatedserversettings.getProperties().levelName);
|
||||
final DedicatedServer dedicatedserver = new DedicatedServer(optionset, dedicatedserversettings, DataConverterRegistry.a(), yggdrasilauthenticationservice, minecraftsessionservice, gameprofilerepository, usercache, WorldLoadListenerLogger::new, s1);
|
||||
|
||||
+ if (optionset.has("enableProfiler") || optionset.nonOptionArguments().contains("enableProfiler")) dedicatedserver.methodProfiler = new GameProfiler(dedicatedserver::getTickCount); // Purpur
|
||||
+
|
||||
/*
|
||||
dedicatedserver.i((String) optionset.valueOf(optionspec7));
|
||||
dedicatedserver.setPort((Integer) optionset.valueOf(optionspec10));
|
||||
@@ -1956,6 +1958,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
||||
|
||||
public abstract boolean a(EnumGamemode enumgamemode, boolean flag, int i);
|
||||
|
||||
+ public int getTickCount() { return ak(); } // Purpur - OBFHELPER
|
||||
public int ak() {
|
||||
return this.ticks;
|
||||
}
|
||||
diff --git a/src/main/java/net/pl3x/purpur/GameProfilerNoop.java b/src/main/java/net/pl3x/purpur/GameProfilerNoop.java
|
||||
new file mode 100644
|
||||
index 000000000..b32a5418f
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/net/pl3x/purpur/GameProfilerNoop.java
|
||||
@@ -0,0 +1,68 @@
|
||||
+package net.pl3x.purpur;
|
||||
+
|
||||
+import net.minecraft.server.GameProfiler;
|
||||
+import net.minecraft.server.MethodProfilerResults;
|
||||
+import net.minecraft.server.MethodProfilerResultsEmpty;
|
||||
+
|
||||
+import java.util.function.IntSupplier;
|
||||
+import java.util.function.Supplier;
|
||||
+
|
||||
+public class GameProfilerNoop extends GameProfiler {
|
||||
+ private final EmptyProfiler profiler = new EmptyProfiler();
|
||||
+
|
||||
+ public GameProfilerNoop(IntSupplier tickCount) {
|
||||
+ super(tickCount);
|
||||
+ }
|
||||
+
|
||||
+ public GameProfiler.a d() {
|
||||
+ return this.profiler;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void a() {
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void b() {
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void enter(String s) {
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void a(Supplier<String> supplier) {
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void exit() {
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void exitEnter(String s) {
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void c(String s) {
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void c(Supplier<String> supplier) {
|
||||
+ }
|
||||
+
|
||||
+ static class EmptyProfiler implements GameProfiler.a {
|
||||
+ @Override
|
||||
+ public boolean a() { // isEnabled
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public MethodProfilerResults b() { // disable
|
||||
+ return MethodProfilerResultsEmpty.a; // empty
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void d() { // enable
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
index b007840a5..1916bfb5d 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
@@ -152,6 +152,8 @@ public class Main {
|
||||
.ofType(File.class)
|
||||
.defaultsTo(new File("purpur.yml"))
|
||||
.describedAs("Yml file");
|
||||
+
|
||||
+ acceptsAll(asList("enableProfiler"), "Enables the vanilla profiler");
|
||||
// Purpur end
|
||||
|
||||
// Paper start
|
||||
diff --git a/src/main/resources/purpur.lang b/src/main/resources/purpur.lang
|
||||
index e81beea7f..5c3536b26 100644
|
||||
--- a/src/main/resources/purpur.lang
|
||||
+++ b/src/main/resources/purpur.lang
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"cannot.ride.mob": "You cannot mount that mob",
|
||||
+ "commands.purpur.debug.disabled": "The debug profiler is disabled",
|
||||
"commands.purpur.ping": "§a%s's ping is %sms",
|
||||
"idle.timeout.broadcast.away": "§e§o%s is now AFK",
|
||||
"idle.timeout.broadcast.back": "§e§o%s is no longer AFK"
|
||||
--
|
||||
2.26.2
|
||||
|
||||
Reference in New Issue
Block a user