-
-
Notifications
You must be signed in to change notification settings - Fork 479
Expand file tree
/
Copy path0098-Despawn-rate-config-options-per-projectile-type.patch
More file actions
79 lines (75 loc) · 4.02 KB
/
Copy path0098-Despawn-rate-config-options-per-projectile-type.patch
File metadata and controls
79 lines (75 loc) · 4.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jason Penilla <11360596+jpenilla@users.noreply.github.com>
Date: Mon, 14 Sep 2020 10:09:05 -0700
Subject: [PATCH] Despawn rate config options per projectile type
This patch's implementation has been removed in favor of Pufferfish's entity-timeouts.
The config remains for migration purposes.
diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
index ed9c8e882739c02d0d04129d251e4c726b422c07..0d32a0bb4bbd34dbeffea95cf8403ae54ef8f227 100644
--- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
+++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java
@@ -113,6 +113,22 @@ public class PufferfishConfig {
config.setComment(key, String.join("\n", comment), CommentType.BLOCK);
}
}
+
+ // Purpur start
+ public static int getRawInt(String key, int def) {
+ return config.getInt(key, def);
+ }
+ public static void setInt(String key, int value) {
+ config.set(key, value);
+ }
+ public static void save() {
+ try {
+ config.save(new File("pufferfish.yml"));
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ // Purpur end
private static boolean getBoolean(String key, boolean defaultValue, String... comment) {
return getBoolean(key, null, defaultValue, comment);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 1df637910089c654ffde3ff9f27cd163ef1c346d..c89b9932058541904c5d85c3199cb8b4ca21b8ce 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -292,6 +292,39 @@ public class PurpurWorldConfig {
totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory);
}
+ private static boolean projectileDespawnRateSettingsMigrated = false;
+ private void projectileDespawnRateSettings() {
+ if (PurpurConfig.version < 28 && !projectileDespawnRateSettingsMigrated) {
+ migrateProjectileDespawnRateSettings(EntityType.DRAGON_FIREBALL);
+ migrateProjectileDespawnRateSettings(EntityType.EGG);
+ migrateProjectileDespawnRateSettings(EntityType.ENDER_PEARL);
+ migrateProjectileDespawnRateSettings(EntityType.EXPERIENCE_BOTTLE);
+ migrateProjectileDespawnRateSettings(EntityType.FIREWORK_ROCKET);
+ migrateProjectileDespawnRateSettings(EntityType.FISHING_BOBBER);
+ migrateProjectileDespawnRateSettings(EntityType.FIREBALL);
+ migrateProjectileDespawnRateSettings(EntityType.LLAMA_SPIT);
+ migrateProjectileDespawnRateSettings(EntityType.POTION);
+ migrateProjectileDespawnRateSettings(EntityType.SHULKER_BULLET);
+ migrateProjectileDespawnRateSettings(EntityType.SMALL_FIREBALL);
+ migrateProjectileDespawnRateSettings(EntityType.SNOWBALL);
+ migrateProjectileDespawnRateSettings(EntityType.WITHER_SKULL);
+ PufferfishConfig.save();
+ set("gameplay-mechanics.projectile-despawn-rates", null);
+ // pufferfish's entity_timeout is a global config
+ // we only want to migrate values from the
+ // default world (first world loaded)
+ projectileDespawnRateSettingsMigrated = true;
+ }
+ }
+ private void migrateProjectileDespawnRateSettings(EntityType<?> type) {
+ String pufferName = "entity_timeouts." + type.id.toUpperCase(Locale.ROOT);
+ int value = getInt("gameplay-mechanics.projectile-despawn-rates." + type.id, -1);
+ if (value != -1 && PufferfishConfig.getRawInt(pufferName, -1) == -1) {
+ PufferfishConfig.setInt(pufferName, value);
+ type.ttl = value;
+ }
+ }
+
public boolean silkTouchEnabled = false;
public String silkTouchSpawnerName = "<reset><white>Spawner";
public List<String> silkTouchSpawnerLore = new ArrayList<>();