This commit is contained in:
Ben Kerllenevich
2021-11-25 09:03:05 -05:00
parent a7f145d54c
commit 708c0d05bf
6 changed files with 28 additions and 26 deletions

View File

@@ -86,7 +86,7 @@ index 23074f0b00cde60e3a42335c7aa3eb4f6162d44d..56015828fe1f0bf66eefa41164e58cc4
if ((entity instanceof AbstractFish && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { if ((entity instanceof AbstractFish && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) {
ServerGamePacketListenerImpl.this.send(new ClientboundAddMobPacket((AbstractFish) entity)); ServerGamePacketListenerImpl.this.send(new ClientboundAddMobPacket((AbstractFish) entity));
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 23c17a1ebb63290168b2b67f2dbeb7741c368e7b..20930c864ee1cb39367b5515dc8579f31d40ad21 100644 index 23c17a1ebb63290168b2b67f2dbeb7741c368e7b..8389be51e564c734b899ee1049eeb811d111d263 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -230,7 +230,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i @@ -230,7 +230,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i
@@ -155,7 +155,7 @@ index 23c17a1ebb63290168b2b67f2dbeb7741c368e7b..20930c864ee1cb39367b5515dc8579f3
+ +
+ public void onMount(Player rider) { + public void onMount(Player rider) {
+ if (this instanceof Mob) { + if (this instanceof Mob) {
+ ((Mob) this).setGoalTarget(null, null, false); + ((Mob) this).setTarget(null, null, false);
+ ((Mob) this).getNavigation().stop(); + ((Mob) this).getNavigation().stop();
+ } + }
+ rider.setJumping(false); // fixes jump on mount + rider.setJumping(false); // fixes jump on mount
@@ -2517,7 +2517,7 @@ index e17a3afa41fd628d2c4a3637ae19418e258a99b8..6a39bd861f27d517f8de9fc3f589c7e2
this.dragonFight.updateDragon(this); this.dragonFight.updateDragon(this);
} }
diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
index ede0ced64d74d71547d1b8bb6853c5aacc1b486a..318bf2a0feea7b5eb15b56565d4aecc4cd2eb2b4 100644 index ede0ced64d74d71547d1b8bb6853c5aacc1b486a..ba20d4bddf965a9207fa0f12f7337f51a8aff301 100644
--- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
+++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
@@ -85,6 +85,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -85,6 +85,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@@ -2528,11 +2528,12 @@ index ede0ced64d74d71547d1b8bb6853c5aacc1b486a..318bf2a0feea7b5eb15b56565d4aecc4
// Paper start // Paper start
private boolean canPortal = false; private boolean canPortal = false;
@@ -107,15 +108,117 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -106,16 +107,118 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
navigationflying.setCanOpenDoors(false);
navigationflying.setCanFloat(true); navigationflying.setCanFloat(true);
navigationflying.setCanPassDoors(true); navigationflying.setCanPassDoors(true);
return navigationflying;
+ this.moveControl = new net.pl3x.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.1F); // Purpur + this.moveControl = new net.pl3x.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.1F); // Purpur
return navigationflying;
} }
+ // Purpur start + // Purpur start

View File

@@ -30,7 +30,7 @@ index 20444c6887cbdd444b23bf018a6d63f22359e5e7..68321b5e425c0500a5691f8020317612
public static final Item CHEST = registerBlock(Blocks.CHEST, CreativeModeTab.TAB_DECORATIONS); public static final Item CHEST = registerBlock(Blocks.CHEST, CreativeModeTab.TAB_DECORATIONS);
public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE, CreativeModeTab.TAB_DECORATIONS); public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE, CreativeModeTab.TAB_DECORATIONS);
diff --git a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java
index 130ffb06b12565efb35afb55b6da20b1b16f6f06..f59883d2b08ff18fd4b7e342f4d899cf08c2ec0f 100644 index 130ffb06b12565efb35afb55b6da20b1b16f6f06..bc4646a7a72c33a3671115953a2bbd7cfe5d7d92 100644
--- a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java --- a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java
@@ -1,9 +1,19 @@ @@ -1,9 +1,19 @@
@@ -53,7 +53,7 @@ index 130ffb06b12565efb35afb55b6da20b1b16f6f06..f59883d2b08ff18fd4b7e342f4d899cf
import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
@@ -13,6 +23,19 @@ import net.minecraft.world.level.block.entity.SpawnerBlockEntity; @@ -13,6 +23,20 @@ import net.minecraft.world.level.block.entity.SpawnerBlockEntity;
import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
@@ -66,6 +66,7 @@ index 130ffb06b12565efb35afb55b6da20b1b16f6f06..f59883d2b08ff18fd4b7e342f4d899cf
+ +
+import java.util.List; +import java.util.List;
+import java.util.Locale; +import java.util.Locale;
+import java.util.Optional;
+ +
+import static net.kyori.adventure.text.format.TextDecoration.ITALIC; +import static net.kyori.adventure.text.format.TextDecoration.ITALIC;
+// Purpur end +// Purpur end
@@ -73,7 +74,7 @@ index 130ffb06b12565efb35afb55b6da20b1b16f6f06..f59883d2b08ff18fd4b7e342f4d899cf
public class SpawnerBlock extends BaseEntityBlock { public class SpawnerBlock extends BaseEntityBlock {
protected SpawnerBlock(BlockBehaviour.Properties settings) { protected SpawnerBlock(BlockBehaviour.Properties settings) {
@@ -30,6 +53,55 @@ public class SpawnerBlock extends BaseEntityBlock { @@ -30,6 +54,55 @@ public class SpawnerBlock extends BaseEntityBlock {
return createTickerHelper(type, BlockEntityType.MOB_SPAWNER, world.isClientSide ? SpawnerBlockEntity::clientTick : SpawnerBlockEntity::serverTick); return createTickerHelper(type, BlockEntityType.MOB_SPAWNER, world.isClientSide ? SpawnerBlockEntity::clientTick : SpawnerBlockEntity::serverTick);
} }
@@ -81,9 +82,9 @@ index 130ffb06b12565efb35afb55b6da20b1b16f6f06..f59883d2b08ff18fd4b7e342f4d899cf
+ @Override + @Override
+ public void playerDestroy(Level level, Player player, BlockPos pos, BlockState state, BlockEntity blockEntity, ItemStack stack) { + public void playerDestroy(Level level, Player player, BlockPos pos, BlockState state, BlockEntity blockEntity, ItemStack stack) {
+ if (level.purpurConfig.silkTouchEnabled && player.getBukkitEntity().hasPermission("purpur.drop.spawners") && isSilkTouch(level, stack)) { + if (level.purpurConfig.silkTouchEnabled && player.getBukkitEntity().hasPermission("purpur.drop.spawners") && isSilkTouch(level, stack)) {
+ ResourceLocation type = ((SpawnerBlockEntity) blockEntity).getSpawner().getEntityId(level, pos); + Optional<EntityType<?>> type = EntityType.by(((SpawnerBlockEntity) blockEntity).getSpawner().nextSpawnData.getEntityToSpawn());
+ if (type != null) { + if (type.isPresent()) {
+ final Component mobName = PaperAdventure.asAdventure(EntityType.getFromKey(type).getDescription()); + final Component mobName = PaperAdventure.asAdventure(type.get().getDescription());
+ CompoundTag display = new CompoundTag(); + CompoundTag display = new CompoundTag();
+ CompoundTag tag = new CompoundTag(); + CompoundTag tag = new CompoundTag();
+ +
@@ -112,7 +113,7 @@ index 130ffb06b12565efb35afb55b6da20b1b16f6f06..f59883d2b08ff18fd4b7e342f4d899cf
+ } + }
+ +
+ ItemStack item = new ItemStack(Blocks.SPAWNER.asItem()); + ItemStack item = new ItemStack(Blocks.SPAWNER.asItem());
+ tag.putString("Purpur.mob_type", type.toString()); + tag.putString("Purpur.mob_type", type.get().getName());
+ item.setTag(tag); + item.setTag(tag);
+ +
+ popResource(level, pos, item); + popResource(level, pos, item);
@@ -129,7 +130,7 @@ index 130ffb06b12565efb35afb55b6da20b1b16f6f06..f59883d2b08ff18fd4b7e342f4d899cf
@Override @Override
public void spawnAfterBreak(BlockState state, ServerLevel world, BlockPos pos, ItemStack stack) { public void spawnAfterBreak(BlockState state, ServerLevel world, BlockPos pos, ItemStack stack) {
super.spawnAfterBreak(state, world, pos, stack); super.spawnAfterBreak(state, world, pos, stack);
@@ -38,6 +110,7 @@ public class SpawnerBlock extends BaseEntityBlock { @@ -38,6 +111,7 @@ public class SpawnerBlock extends BaseEntityBlock {
@Override @Override
public int getExpDrop(BlockState iblockdata, ServerLevel worldserver, BlockPos blockposition, ItemStack itemstack) { public int getExpDrop(BlockState iblockdata, ServerLevel worldserver, BlockPos blockposition, ItemStack itemstack) {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add option to teleport to spawn if outside world border
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index d37aa315753ffff5601d42987beae7af4a267ce1..299e628db2ddb0f36294c12dd5b55db6c519ac22 100644 index d37aa315753ffff5601d42987beae7af4a267ce1..80a57d726ee663aa37a3b93c883f835a2ebc765e 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -2537,5 +2537,25 @@ public class ServerPlayer extends Player { @@ -2537,5 +2537,25 @@ public class ServerPlayer extends Player {
@@ -29,7 +29,7 @@ index d37aa315753ffff5601d42987beae7af4a267ce1..299e628db2ddb0f36294c12dd5b55db6
+ if (this.level == toLevel) { + if (this.level == toLevel) {
+ this.connection.teleport(to); + this.connection.teleport(to);
+ } else { + } else {
+ this.server.getPlayerList().moveToWorld(this, toLevel, true, to, !toLevel.paperConfig.disableTeleportationSuffocationCheck); + this.server.getPlayerList().respawn(this, toLevel, true, to, !toLevel.paperConfig.disableTeleportationSuffocationCheck);
+ } + }
+ } + }
+ // Purpur end + // Purpur end

View File

@@ -42,7 +42,7 @@ index fe029ec70afad56bb7a7361f347e9b9aef5e00ba..2c37694a6055513803708c9fb40fb0c4
} }
} }
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index d3d7a668d78f52b56654fe89148ecdfd662c769e..244440eb9d4e85cb73bb6c0dd645d069a036917c 100644 index e07095a3ed1af5a8bb7715c264535ae952e264d9..dd186ad2080d358ee1ed5c8ac6725a9e3dcaeb39 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -256,6 +256,7 @@ public class ServerPlayer extends Player { @@ -256,6 +256,7 @@ public class ServerPlayer extends Player {
@@ -70,7 +70,7 @@ index d3d7a668d78f52b56654fe89148ecdfd662c769e..244440eb9d4e85cb73bb6c0dd645d069
// CraftBukkit start - World fallback code, either respawn location or global spawn // CraftBukkit start - World fallback code, either respawn location or global spawn
@@ -2566,5 +2569,13 @@ public class ServerPlayer extends Player { @@ -2566,5 +2569,13 @@ public class ServerPlayer extends Player {
this.server.getPlayerList().moveToWorld(this, toLevel, true, to, !toLevel.paperConfig.disableTeleportationSuffocationCheck); this.server.getPlayerList().respawn(this, toLevel, true, to, !toLevel.paperConfig.disableTeleportationSuffocationCheck);
} }
} }
+ +

View File

@@ -19,7 +19,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
Co-authored-by: Mariell Hoversholm <proximyst@proximyst.com> Co-authored-by: Mariell Hoversholm <proximyst@proximyst.com>
diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
index f8a2aa31e38f64f88a82d5a388b58f1962d5fda0..c34023c69c9a97824417a40f5fac8f2e71f4b6f3 100644 index f8a2aa31e38f64f88a82d5a388b58f1962d5fda0..b98f05c32d81195e779701d90d30f345c9695cbf 100644
--- a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java --- a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
+++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java +++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
@@ -454,7 +454,14 @@ public abstract class ChunkGenerator implements BiomeManager.NoiseBiomeSource { @@ -454,7 +454,14 @@ public abstract class ChunkGenerator implements BiomeManager.NoiseBiomeSource {
@@ -29,8 +29,8 @@ index f8a2aa31e38f64f88a82d5a388b58f1962d5fda0..c34023c69c9a97824417a40f5fac8f2e
- -
+ // Purpur start + // Purpur start
+ if (new net.pl3x.purpur.event.world.StructureGenerateEvent( + if (new net.pl3x.purpur.event.world.StructureGenerateEvent(
+ accessor.getWorld().getWorld(), + structureAccessor.getWorld().getWorld(),
+ org.bukkit.StructureType.getStructureTypes().get(feature.feature.getFeatureName().toLowerCase()), + org.bukkit.StructureType.getStructureTypes().get(structurestart.getFeature().getFeatureName().toLowerCase()),
+ chunkcoordintpair.x, + chunkcoordintpair.x,
+ chunkcoordintpair.z + chunkcoordintpair.z
+ ).callEvent()) + ).callEvent())

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Hide hidden players from entity selector
diff --git a/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java b/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java diff --git a/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java b/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java
index 35cc3bba20afd4a47160cc674415ba6a3a0ec0ec..eaa1af57bdf4cb890706e839cbbae15f00933391 100644 index 35cc3bba20afd4a47160cc674415ba6a3a0ec0ec..39c8cb9494aa516a3d828010a8e3329db9d25707 100644
--- a/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java --- a/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java
+++ b/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java +++ b/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java
@@ -184,10 +184,10 @@ public class EntitySelector { @@ -184,10 +184,10 @@ public class EntitySelector {
@@ -13,11 +13,11 @@ index 35cc3bba20afd4a47160cc674415ba6a3a0ec0ec..eaa1af57bdf4cb890706e839cbbae15f
if (this.playerName != null) { if (this.playerName != null) {
entityplayer = source.getServer().getPlayerList().getPlayerByName(this.playerName); entityplayer = source.getServer().getPlayerList().getPlayerByName(this.playerName);
- return (List) (entityplayer == null ? Collections.emptyList() : Lists.newArrayList(new ServerPlayer[]{entityplayer})); - return (List) (entityplayer == null ? Collections.emptyList() : Lists.newArrayList(new ServerPlayer[]{entityplayer}));
+ return entityplayer == null || !canSee(commandlistenerwrapper, entityplayer) ? Collections.emptyList() : Lists.newArrayList(entityplayer); // Purpur + return entityplayer == null || !canSee(source, entityplayer) ? Collections.emptyList() : Lists.newArrayList(entityplayer); // Purpur
} else if (this.entityUUID != null) { } else if (this.entityUUID != null) {
entityplayer = source.getServer().getPlayerList().getPlayer(this.entityUUID); entityplayer = source.getServer().getPlayerList().getPlayer(this.entityUUID);
- return (List) (entityplayer == null ? Collections.emptyList() : Lists.newArrayList(new ServerPlayer[]{entityplayer})); - return (List) (entityplayer == null ? Collections.emptyList() : Lists.newArrayList(new ServerPlayer[]{entityplayer}));
+ return entityplayer == null || !canSee(commandlistenerwrapper, entityplayer) ? Collections.emptyList() : Lists.newArrayList(entityplayer); // Purpur + return entityplayer == null || !canSee(source, entityplayer) ? Collections.emptyList() : Lists.newArrayList(entityplayer); // Purpur
} else { } else {
Vec3 vec3d = (Vec3) this.position.apply(source.getPosition()); Vec3 vec3d = (Vec3) this.position.apply(source.getPosition());
Predicate<Entity> predicate = this.getPredicate(vec3d); Predicate<Entity> predicate = this.getPredicate(vec3d);
@@ -26,7 +26,7 @@ index 35cc3bba20afd4a47160cc674415ba6a3a0ec0ec..eaa1af57bdf4cb890706e839cbbae15f
if (predicate.test(entityplayer1)) { if (predicate.test(entityplayer1)) {
- return Lists.newArrayList(new ServerPlayer[]{entityplayer1}); - return Lists.newArrayList(new ServerPlayer[]{entityplayer1});
+ return !canSee(commandlistenerwrapper, entityplayer1) ? Collections.emptyList() : Lists.newArrayList(entityplayer1); // Purpur + return !canSee(source, entityplayer1) ? Collections.emptyList() : Lists.newArrayList(entityplayer1); // Purpur
} }
} }
@@ -34,7 +34,7 @@ index 35cc3bba20afd4a47160cc674415ba6a3a0ec0ec..eaa1af57bdf4cb890706e839cbbae15f
if (this.isWorldLimited()) { if (this.isWorldLimited()) {
object = source.getLevel().getPlayers(predicate); object = source.getLevel().getPlayers(predicate);
+ ((List) object).removeIf(entityplayer3 -> !canSee(commandlistenerwrapper, (ServerPlayer) entityplayer3)); // Purpur + ((List) object).removeIf(entityplayer3 -> !canSee(source, (ServerPlayer) entityplayer3)); // Purpur
} else { } else {
object = Lists.newArrayList(); object = Lists.newArrayList();
Iterator iterator = source.getServer().getPlayerList().getPlayers().iterator(); Iterator iterator = source.getServer().getPlayerList().getPlayers().iterator();
@@ -43,7 +43,7 @@ index 35cc3bba20afd4a47160cc674415ba6a3a0ec0ec..eaa1af57bdf4cb890706e839cbbae15f
ServerPlayer entityplayer2 = (ServerPlayer) iterator.next(); ServerPlayer entityplayer2 = (ServerPlayer) iterator.next();
- if (predicate.test(entityplayer2)) { - if (predicate.test(entityplayer2)) {
+ if (predicate.test(entityplayer2) && canSee(commandlistenerwrapper, entityplayer2)) { // Purpur + if (predicate.test(entityplayer2) && canSee(source, entityplayer2)) { // Purpur
((List) object).add(entityplayer2); ((List) object).add(entityplayer2);
} }
} }