mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 08:27:43 +01:00
more progress
This commit is contained in:
10
build-data/dev-imports.txt
Normal file
10
build-data/dev-imports.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
# You can use this file to import files from minecraft libraries into the project
|
||||
# format:
|
||||
# <artifactId> <fileName>
|
||||
# both fully qualified and a file based syntax are accepted for <fileName>:
|
||||
# authlib com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java
|
||||
# datafixerupper com.mojang.datafixers.DataFixerBuilder
|
||||
# datafixerupper com/mojang/datafixers/util/Either.java
|
||||
# To import classes from the vanilla Minecraft jar use `minecraft` as the artifactId:
|
||||
# minecraft net.minecraft.world.level.entity.LevelEntityGetterAdapter
|
||||
# minecraft net/minecraft/world/level/entity/LevelEntityGetter.java
|
||||
@@ -1,7 +0,0 @@
|
||||
# You can use this file to import files from minecraft libraries into the project
|
||||
# format:
|
||||
# <artifactId> <fileName>
|
||||
# both fully qualified and a file based syntax are accepted for <fileName>:
|
||||
# authlib com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java
|
||||
# datafixerupper com.mojang.datafixers.DataFixerBuilder
|
||||
# datafixerupper com/mojang/datafixers/util/Either.java
|
||||
@@ -1,4 +0,0 @@
|
||||
# You can use this file to import files from vanilla into the project
|
||||
# both fully qualified and a file based syntax are accepted here:
|
||||
# net.minecraft.world.level.entity.LevelEntityGetterAdapter
|
||||
# net/minecraft/world/level/entity/LevelEntityGetter.java
|
||||
@@ -1,7 +1,7 @@
|
||||
group=net.pl3x.purpur
|
||||
version=1.17-R0.1-SNAPSHOT
|
||||
packageVersion=1_17_R1
|
||||
paperCommit=47605b8e6035260be98c8650a736306a0a39258d
|
||||
paperCommit=961b98f9cb5457a739ab61d4bb31f5867d9d4586
|
||||
|
||||
org.gradle.parallel=true
|
||||
org.gradle.jvmargs=-Xmx3G
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Sat, 15 Aug 2020 11:18:27 -0500
|
||||
Subject: [PATCH] Configurable permission message upgrades
|
||||
|
||||
This allows the configurable permission message in paper.yml to be blank and also support newlines
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/command/Command.java b/src/main/java/org/bukkit/command/Command.java
|
||||
index 1994f15831de1ca1bb7b4f52c23567825766d3f9..514efc8c79756a4ce7bc854586f9593af1d0180c 100644
|
||||
--- a/src/main/java/org/bukkit/command/Command.java
|
||||
+++ b/src/main/java/org/bukkit/command/Command.java
|
||||
@@ -184,17 +184,11 @@ public abstract class Command {
|
||||
return true;
|
||||
}
|
||||
|
||||
- if (permissionMessage == null) {
|
||||
- // Paper start
|
||||
- String bukkitPermissionMessage = Bukkit.getPermissionMessage();
|
||||
- if (org.apache.commons.lang.StringUtils.isNotBlank(bukkitPermissionMessage)) {
|
||||
- target.sendMessage(bukkitPermissionMessage);
|
||||
- }
|
||||
- // Paper end
|
||||
- } else if (permissionMessage.length() != 0) {
|
||||
- for (String line : permissionMessage.replace("<permission>", permission).split("\n")) {
|
||||
- target.sendMessage(line);
|
||||
- }
|
||||
+ // Purpur start
|
||||
+ String msg = this.permissionMessage != null ? this.permissionMessage : Bukkit.getPermissionMessage();
|
||||
+ for (String line : msg.replace("<permission>", permission).split("\n")) {
|
||||
+ if (org.apache.commons.lang.StringUtils.isNotBlank(line)) target.sendMessage(line);
|
||||
+ //Purpur end
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -1,39 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ben Kerllenevich <me@notom3ga.me>
|
||||
Date: Thu, 18 Mar 2021 06:22:40 -0400
|
||||
Subject: [PATCH] Config for skipping night
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java
|
||||
index 9276500e4cc2a0d2d374b3f1393410e8295b3b4d..b69e5931c7fe0cc5daf768139e78f4b477180fde 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/WorldServer.java
|
||||
@@ -572,7 +572,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
}
|
||||
// CraftBukkit end
|
||||
|
||||
- if (this.everyoneSleeping && this.players.stream().noneMatch((entityplayer) -> {
|
||||
+ if (this.purpurConfig.playersSkipNight && this.everyoneSleeping && this.players.stream().noneMatch((entityplayer) -> { // Purpur
|
||||
return !entityplayer.isSpectator() && !entityplayer.isDeeplySleeping() && !entityplayer.fauxSleeping && !(purpurConfig.idleTimeoutCountAsSleeping && entityplayer.isAfk()); // CraftBukkit // Purpur
|
||||
})) {
|
||||
// CraftBukkit start
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index bb3c5d34b58ccf9bbaa1102e36b82a56f0dda7e3..c87ce9aed539f382e91fcfae956339068a618b79 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -334,6 +334,7 @@ public class PurpurWorldConfig {
|
||||
public int animalBreedingCooldownSeconds = 0;
|
||||
public boolean creativeOnePunch = false;
|
||||
public boolean playerSleepNearMonsters = false;
|
||||
+ public boolean playersSkipNight = true;
|
||||
private void miscGameplayMechanicsSettings() {
|
||||
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
|
||||
alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative);
|
||||
@@ -354,6 +355,7 @@ public class PurpurWorldConfig {
|
||||
animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds);
|
||||
creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch);
|
||||
playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters);
|
||||
+ playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight);
|
||||
}
|
||||
|
||||
public boolean catSpawning;
|
||||
@@ -1,68 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ben Kerllenevich <me@notom3ga.me>
|
||||
Date: Thu, 18 Mar 2021 07:23:27 -0400
|
||||
Subject: [PATCH] Add config for villager trading
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/EntityVillager.java b/src/main/java/net/minecraft/world/entity/npc/EntityVillager.java
|
||||
index b36f62b38888d6eb64d46ac67c89a4189aafcfc4..66863b31687a41f84f722c611064f7ad31e02488 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/EntityVillager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/EntityVillager.java
|
||||
@@ -369,7 +369,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
|
||||
return tryRide(entityhuman, enumhand); // Purpur
|
||||
} else {
|
||||
if (world.purpurConfig.villagerRidable && itemstack.isEmpty()) return tryRide(entityhuman, enumhand); // Purpur
|
||||
- if (!this.world.isClientSide && !this.trades.isEmpty()) {
|
||||
+ if (!this.world.isClientSide && this.world.purpurConfig.villagerAllowTrading && !this.trades.isEmpty()) { // Purpur
|
||||
this.h(entityhuman);
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/EntityVillagerTrader.java b/src/main/java/net/minecraft/world/entity/npc/EntityVillagerTrader.java
|
||||
index f6e0a92037d22de102c42cc1953ea90919bd3a34..03e811e854034c6ca9cd11d35ed0a2dbd14c6097 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/EntityVillagerTrader.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/EntityVillagerTrader.java
|
||||
@@ -146,7 +146,7 @@ public class EntityVillagerTrader extends EntityVillagerAbstract {
|
||||
return tryRide(entityhuman, enumhand); // Purpur
|
||||
} else {
|
||||
if (world.purpurConfig.villagerTraderRidable && itemstack.isEmpty()) return tryRide(entityhuman, enumhand); // Purpur
|
||||
- if (!this.world.isClientSide) {
|
||||
+ if (!this.world.isClientSide && this.world.purpurConfig.villagerTraderAllowTrading) {
|
||||
this.setTradingPlayer(entityhuman);
|
||||
this.openTrade(entityhuman, this.getScoreboardDisplayName(), 1);
|
||||
}
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index c87ce9aed539f382e91fcfae956339068a618b79..c2314380e7064459dd104b09b900c5a28b592b71 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -1772,6 +1772,7 @@ public class PurpurWorldConfig {
|
||||
public boolean villagerClericsFarmWarts = false;
|
||||
public boolean villagerClericFarmersThrowWarts = true;
|
||||
public double villagerMaxHealth = 20.0D;
|
||||
+ public boolean villagerAllowTrading = true;
|
||||
private void villagerSettings() {
|
||||
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
|
||||
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
|
||||
@@ -1799,6 +1800,7 @@ public class PurpurWorldConfig {
|
||||
set("mobs.villager.attributes.max_health", oldValue);
|
||||
}
|
||||
villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth);
|
||||
+ villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading);
|
||||
}
|
||||
|
||||
public boolean villagerTraderRidable = false;
|
||||
@@ -1806,6 +1808,7 @@ public class PurpurWorldConfig {
|
||||
public boolean villagerTraderCanBeLeashed = false;
|
||||
public boolean villagerTraderFollowEmeraldBlock = false;
|
||||
public double villagerTraderMaxHealth = 20.0D;
|
||||
+ public boolean villagerTraderAllowTrading = true;
|
||||
private void villagerTraderSettings() {
|
||||
villagerTraderRidable = getBoolean("mobs.wandering_trader.ridable", villagerTraderRidable);
|
||||
villagerTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", villagerTraderRidableInWater);
|
||||
@@ -1817,6 +1820,7 @@ public class PurpurWorldConfig {
|
||||
set("mobs.wandering_trader.attributes.max_health", oldValue);
|
||||
}
|
||||
villagerTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", villagerTraderMaxHealth);
|
||||
+ villagerTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", villagerTraderAllowTrading);
|
||||
}
|
||||
|
||||
public boolean vindicatorRidable = false;
|
||||
@@ -1,84 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ben Kerllenevich <me@notom3ga.me>
|
||||
Date: Thu, 18 Mar 2021 12:25:29 -0400
|
||||
Subject: [PATCH] Allow infinity on crossbows
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/item/ItemCrossbow.java b/src/main/java/net/minecraft/world/item/ItemCrossbow.java
|
||||
index 4e1e819c8535e8a6b9aa5f76afe568ea171b939f..9cf76f8297c2a44c1df8ce2c4f0813802883a18b 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/ItemCrossbow.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/ItemCrossbow.java
|
||||
@@ -94,7 +94,7 @@ public class ItemCrossbow extends ItemProjectileWeapon implements ItemVanishable
|
||||
private static boolean a(EntityLiving entityliving, ItemStack itemstack, boolean consume) { // Paper - add consume
|
||||
int i = EnchantmentManager.getEnchantmentLevel(Enchantments.MULTISHOT, itemstack);
|
||||
int j = i == 0 ? 1 : 3;
|
||||
- boolean flag = !consume || entityliving instanceof EntityHuman && ((EntityHuman) entityliving).abilities.canInstantlyBuild; // Paper - add consme
|
||||
+ boolean flag = !consume || entityliving instanceof EntityHuman && ((EntityHuman) entityliving).abilities.canInstantlyBuild || (net.pl3x.purpur.PurpurConfig.allowCrossbowInfinity && EnchantmentManager.getEnchantmentLevel(Enchantments.ARROW_INFINITE, itemstack) > 0); // Paper - add consme // Purpur
|
||||
ItemStack itemstack1 = entityliving.f(itemstack);
|
||||
ItemStack itemstack2 = itemstack1.cloneItemStack();
|
||||
|
||||
@@ -285,7 +285,7 @@ public class ItemCrossbow extends ItemProjectileWeapon implements ItemVanishable
|
||||
|
||||
for (int i = 0; i < list.size(); ++i) {
|
||||
ItemStack itemstack1 = (ItemStack) list.get(i);
|
||||
- boolean flag = entityliving instanceof EntityHuman && ((EntityHuman) entityliving).abilities.canInstantlyBuild;
|
||||
+ boolean flag = entityliving instanceof EntityHuman && ((EntityHuman) entityliving).abilities.canInstantlyBuild || (net.pl3x.purpur.PurpurConfig.allowCrossbowInfinity && EnchantmentManager.getEnchantmentLevel(Enchantments.ARROW_INFINITE, itemstack) > 0); // Purpur
|
||||
|
||||
if (!itemstack1.isEmpty()) {
|
||||
if (i == 0) {
|
||||
diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentInfiniteArrows.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentInfiniteArrows.java
|
||||
index 29bebbccf8dd6ff8976d1bfdb4c2ddcfc9de57dc..07980bf0735aab4aaa379b68d6d9b1dc494a0bab 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentInfiniteArrows.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentInfiniteArrows.java
|
||||
@@ -5,7 +5,7 @@ import net.minecraft.world.entity.EnumItemSlot;
|
||||
public class EnchantmentInfiniteArrows extends Enchantment {
|
||||
|
||||
public EnchantmentInfiniteArrows(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) {
|
||||
- super(enchantment_rarity, EnchantmentSlotType.BOW, aenumitemslot);
|
||||
+ super(enchantment_rarity, net.pl3x.purpur.PurpurConfig.allowCrossbowInfinity ? EnchantmentSlotType.BOW_AND_CROSSBOW : EnchantmentSlotType.BOW, aenumitemslot); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentSlotType.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentSlotType.java
|
||||
index cf41863bc8b0be9f2a73ca2dd02a4d414d4f230e..2b75432d74df4f627d08d32c6553bd1a4ecd4a3d 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentSlotType.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentSlotType.java
|
||||
@@ -96,9 +96,17 @@ public enum EnchantmentSlotType {
|
||||
VANISHABLE {
|
||||
@Override
|
||||
public boolean canEnchant(Item item) {
|
||||
- return item instanceof ItemVanishable || Block.asBlock(item) instanceof ItemVanishable || null.BREAKABLE.canEnchant(item);
|
||||
+ return item instanceof ItemVanishable || Block.asBlock(item) instanceof ItemVanishable || BREAKABLE.canEnchant(item); // Purpur - decompile fix
|
||||
+ }
|
||||
+ // Purpur start
|
||||
+ },
|
||||
+ BOW_AND_CROSSBOW {
|
||||
+ @Override
|
||||
+ public boolean canEnchant(Item item) {
|
||||
+ return item instanceof ItemBow || item instanceof ItemCrossbow;
|
||||
}
|
||||
};
|
||||
+ // Purpur end
|
||||
|
||||
private EnchantmentSlotType() {}
|
||||
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||
index 36cfcd57fa3c3d33d46be5e3f70f4cf9a84f8b77..b44f82517e1e6e1f77144e50716dfb887bf26f70 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||
@@ -231,6 +231,7 @@ public class PurpurConfig {
|
||||
}
|
||||
|
||||
public static boolean allowInfinityMending = false;
|
||||
+ public static boolean allowCrossbowInfinity = false;
|
||||
private static void enchantmentSettings() {
|
||||
if (version < 5) {
|
||||
boolean oldValue = getBoolean("settings.enchantment.allow-infinite-and-mending-together", false);
|
||||
@@ -238,6 +239,7 @@ public class PurpurConfig {
|
||||
set("settings.enchantment.allow-infinite-and-mending-together", null);
|
||||
}
|
||||
allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending);
|
||||
+ allowCrossbowInfinity = getBoolean("settings.enchantment.allow-infinity-on-crossbow", allowCrossbowInfinity);
|
||||
}
|
||||
|
||||
public static boolean endermanShortHeight = false;
|
||||
39
patches/server/0171-Config-for-skipping-night.patch
Normal file
39
patches/server/0171-Config-for-skipping-night.patch
Normal file
@@ -0,0 +1,39 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ben Kerllenevich <me@notom3ga.me>
|
||||
Date: Thu, 18 Mar 2021 06:22:40 -0400
|
||||
Subject: [PATCH] Config for skipping night
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
index 97697f2ee49ef1f3b0bfb291b1df99f5681992af..16f5ef16971e2535f5001929925267a08955edb4 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -580,7 +580,7 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl
|
||||
// CraftBukkit end
|
||||
|
||||
i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE);
|
||||
- if (this.sleepStatus.areEnoughSleeping(i) && this.sleepStatus.areEnoughDeepSleeping(i, this.players)) {
|
||||
+ if (this.purpurConfig.playersSkipNight && this.sleepStatus.areEnoughSleeping(i) && this.sleepStatus.areEnoughDeepSleeping(i, this.players)) {
|
||||
// CraftBukkit start
|
||||
long l = this.levelData.getDayTime() + 24000L;
|
||||
TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (l - l % 24000L) - this.getDayTime());
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index c54fd7f6fce56809ed7cd079ad5e106cad9d909a..b32e285c77ce7d67583339941487a522dbe566dd 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -297,6 +297,7 @@ public class PurpurWorldConfig {
|
||||
public boolean playerFixStuckPortal = false;
|
||||
public boolean creativeOnePunch = false;
|
||||
public boolean playerSleepNearMonsters = false;
|
||||
+ public boolean playersSkipNight = true;
|
||||
private void playerSettings() {
|
||||
idleTimeoutKick = getBoolean("gameplay-mechanics.player.idle-timeout.kick-if-idle", idleTimeoutKick);
|
||||
idleTimeoutTickNearbyEntities = getBoolean("gameplay-mechanics.player.idle-timeout.tick-nearby-entities", idleTimeoutTickNearbyEntities);
|
||||
@@ -311,6 +312,7 @@ public class PurpurWorldConfig {
|
||||
playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal);
|
||||
creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch);
|
||||
playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters);
|
||||
+ playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight);
|
||||
}
|
||||
|
||||
public int snowballDamage = -1;
|
||||
68
patches/server/0172-Add-config-for-villager-trading.patch
Normal file
68
patches/server/0172-Add-config-for-villager-trading.patch
Normal file
@@ -0,0 +1,68 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ben Kerllenevich <me@notom3ga.me>
|
||||
Date: Thu, 18 Mar 2021 07:23:27 -0400
|
||||
Subject: [PATCH] Add config for villager trading
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
index 3b404c12ba12d75caaeb2161eb18abaf3c14ae57..65124562a96e1e1e601b790db7a5c5e128c75e5e 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
||||
@@ -375,7 +375,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||
return tryRide(player, hand); // Purpur
|
||||
} else {
|
||||
if (level.purpurConfig.villagerRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur
|
||||
- if (!this.level.isClientSide && !this.offers.isEmpty()) {
|
||||
+ if (this.level.purpurConfig.villagerAllowTrading && !this.offers.isEmpty()) { // Purpur
|
||||
this.startTrading(player);
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
|
||||
index c48935d35a6141c41db22e3ec172d5994fd317a2..fa4644c11cbb252734a6f5dc21c861d2c7309ffd 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
|
||||
@@ -140,7 +140,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
|
||||
return tryRide(player, hand); // Purpur
|
||||
} else {
|
||||
if (level.purpurConfig.wanderingTraderRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur
|
||||
- if (!this.level.isClientSide) {
|
||||
+ if (this.level.purpurConfig.wanderingTraderAllowTrading) { // Purpur
|
||||
this.setTradingPlayer(player);
|
||||
this.openTradingScreen(player, this.getDisplayName(), 1);
|
||||
}
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index b32e285c77ce7d67583339941487a522dbe566dd..8aa27111a1c0e3c70f69b303f00a9c25e321ef12 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -1801,6 +1801,7 @@ public class PurpurWorldConfig {
|
||||
public boolean villagerClericsFarmWarts = false;
|
||||
public boolean villagerClericFarmersThrowWarts = true;
|
||||
public boolean villagerBypassMobGriefing = false;
|
||||
+ public boolean villagerAllowTrading = true;
|
||||
private void villagerSettings() {
|
||||
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
|
||||
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
|
||||
@@ -1828,6 +1829,7 @@ public class PurpurWorldConfig {
|
||||
villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts);
|
||||
villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts);
|
||||
villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing);
|
||||
+ villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading);
|
||||
}
|
||||
|
||||
public boolean vindicatorRidable = false;
|
||||
@@ -1851,6 +1853,7 @@ public class PurpurWorldConfig {
|
||||
public double wanderingTraderMaxHealth = 20.0D;
|
||||
public boolean wanderingTraderFollowEmeraldBlock = false;
|
||||
public boolean wanderingTraderCanBeLeashed = false;
|
||||
+ public boolean wanderingTraderAllowTrading = true;
|
||||
private void wanderingTraderSettings() {
|
||||
wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable);
|
||||
wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater);
|
||||
@@ -1862,6 +1865,7 @@ public class PurpurWorldConfig {
|
||||
wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth);
|
||||
wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock);
|
||||
wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed);
|
||||
+ wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading);
|
||||
}
|
||||
|
||||
public boolean witchRidable = false;
|
||||
80
patches/server/0173-Allow-infinity-on-crossbows.patch
Normal file
80
patches/server/0173-Allow-infinity-on-crossbows.patch
Normal file
@@ -0,0 +1,80 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ben Kerllenevich <me@notom3ga.me>
|
||||
Date: Thu, 18 Mar 2021 12:25:29 -0400
|
||||
Subject: [PATCH] Allow infinity on crossbows
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java
|
||||
index 77562d7c7248835532f2d9582cce6ef6725a12a6..264542304babba94e364811da8d7b51b812a2b47 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/CrossbowItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java
|
||||
@@ -111,7 +111,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable {
|
||||
// Paper end
|
||||
int i = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.MULTISHOT, projectile);
|
||||
int j = i == 0 ? 1 : 3;
|
||||
- boolean flag = !consume || shooter instanceof Player && ((Player) shooter).getAbilities().instabuild; // Paper - add consume
|
||||
+ boolean flag = !consume || shooter instanceof Player && ((Player) shooter).getAbilities().instabuild || (net.pl3x.purpur.PurpurConfig.allowCrossbowInfinity && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY_ARROWS, projectile) > 0); // Paper - add consume // Purpur
|
||||
ItemStack itemstack1 = shooter.getProjectile(projectile);
|
||||
ItemStack itemstack2 = itemstack1.copy();
|
||||
|
||||
@@ -302,7 +302,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable {
|
||||
|
||||
for (int i = 0; i < list.size(); ++i) {
|
||||
ItemStack itemstack1 = (ItemStack) list.get(i);
|
||||
- boolean flag = entity instanceof Player && ((Player) entity).getAbilities().instabuild;
|
||||
+ boolean flag = entity instanceof Player && ((Player) entity).getAbilities().instabuild || (net.pl3x.purpur.PurpurConfig.allowCrossbowInfinity && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY_ARROWS, stack) > 0); // Purpur
|
||||
|
||||
if (!itemstack1.isEmpty()) {
|
||||
if (i == 0) {
|
||||
diff --git a/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java b/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java
|
||||
index 6763d0b96c83d1b462999f525bf1f31c30cf705f..bfd7b1d1965cf9da5234c7835affa4e97a6e4bb0 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java
|
||||
@@ -4,7 +4,7 @@ import net.minecraft.world.entity.EquipmentSlot;
|
||||
|
||||
public class ArrowInfiniteEnchantment extends Enchantment {
|
||||
public ArrowInfiniteEnchantment(Enchantment.Rarity weight, EquipmentSlot... slotTypes) {
|
||||
- super(weight, EnchantmentCategory.BOW, slotTypes);
|
||||
+ super(weight, net.pl3x.purpur.PurpurConfig.allowCrossbowInfinity ? EnchantmentCategory.BOW_AND_CROSSBOW : EnchantmentCategory.BOW, slotTypes); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java
|
||||
index 6f6106ca4d74d50a7b74b086adc96c58c7906cb6..d6417c1e77ac8823e18a179dc9f61757a1f339ad 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java
|
||||
@@ -97,6 +97,14 @@ public enum EnchantmentCategory {
|
||||
public boolean canEnchant(Item item) {
|
||||
return item instanceof Vanishable || Block.byItem(item) instanceof Vanishable || BREAKABLE.canEnchant(item);
|
||||
}
|
||||
+ // Purpur start
|
||||
+ },
|
||||
+ BOW_AND_CROSSBOW {
|
||||
+ @Override
|
||||
+ public boolean canEnchant(Item item) {
|
||||
+ return item instanceof BowItem || item instanceof CrossbowItem;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
};
|
||||
|
||||
public abstract boolean canEnchant(Item item);
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||
index 45dd23971204a7a04aca9c271643cada98add9fb..6c5ab2a340abc255f39a48e4cf21459d10f38ee8 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
|
||||
@@ -206,6 +206,7 @@ public class PurpurConfig {
|
||||
}
|
||||
|
||||
public static boolean allowInfinityMending = false;
|
||||
+ public static boolean allowCrossbowInfinity = false;
|
||||
private static void enchantmentSettings() {
|
||||
if (version < 5) {
|
||||
boolean oldValue = getBoolean("settings.enchantment.allow-infinite-and-mending-together", false);
|
||||
@@ -213,6 +214,7 @@ public class PurpurConfig {
|
||||
set("settings.enchantment.allow-infinite-and-mending-together", null);
|
||||
}
|
||||
allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending);
|
||||
+ allowCrossbowInfinity = getBoolean("settings.enchantment.allow-infinity-on-crossbow", allowCrossbowInfinity);
|
||||
}
|
||||
|
||||
public static boolean endermanShortHeight = false;
|
||||
Reference in New Issue
Block a user