mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-01 05:47:45 +01:00
NOT FINISHED! 1.13 pre-7
I need more creative commit messages.
This commit is contained in:
parent
37f7038e10
commit
20e3b69061
@ -160,23 +160,4 @@ index 6bf30c834..3768b9573 100644
|
||||
|
||||
public CraftSlime(CraftServer server, EntitySlime entity) {
|
||||
super(server, entity);
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWaterMob.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWaterMob.java
|
||||
index ee21d7b6e..f67dff38f 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWaterMob.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWaterMob.java
|
||||
@@ -0,0 +0,0 @@
|
||||
package org.bukkit.craftbukkit.entity;
|
||||
|
||||
+import com.destroystokyo.paper.entity.CraftSentientNPC;
|
||||
import net.minecraft.server.EntityWaterAnimal;
|
||||
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.WaterMob;
|
||||
|
||||
-public class CraftWaterMob extends CraftLivingEntity implements WaterMob {
|
||||
+public class CraftWaterMob extends CraftLivingEntity implements WaterMob, CraftSentientNPC { // Paper
|
||||
|
||||
public CraftWaterMob(CraftServer server, EntityWaterAnimal entity) {
|
||||
super(server, entity);
|
||||
--
|
@ -5,7 +5,7 @@ Subject: [PATCH] Add config to disable ender dragon legacy check
|
||||
|
||||
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
index 99ad40fa3..06c54690f 100644
|
||||
index 650addb84..b2855f3ca 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
@@ -0,0 +0,0 @@ public class PaperWorldConfig {
|
||||
@ -19,7 +19,7 @@ index 99ad40fa3..06c54690f 100644
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/EnderDragonBattle.java b/src/main/java/net/minecraft/server/EnderDragonBattle.java
|
||||
index ce0dcbc68..286069746 100644
|
||||
index a20d54ee3..48bcda0f5 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnderDragonBattle.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnderDragonBattle.java
|
||||
@@ -0,0 +0,0 @@ public class EnderDragonBattle {
|
||||
@ -37,7 +37,7 @@ index ce0dcbc68..286069746 100644
|
||||
private EnumDragonRespawn p;
|
||||
@@ -0,0 +0,0 @@ public class EnderDragonBattle {
|
||||
public EnderDragonBattle(WorldServer worldserver, NBTTagCompound nbttagcompound) {
|
||||
this.c = (BossBattleServer) (new BossBattleServer(new ChatMessage("entity.EnderDragon.name", new Object[0]), BossBattle.BarColor.PINK, BossBattle.BarStyle.PROGRESS)).setPlayMusic(true).c(true);
|
||||
this.c = (BossBattleServer) (new BossBattleServer(new ChatMessage("entity.minecraft.ender_dragon", new Object[0]), BossBattle.BarColor.PINK, BossBattle.BarStyle.PROGRESS)).setPlayMusic(true).c(true);
|
||||
this.e = Lists.newArrayList();
|
||||
- this.n = true;
|
||||
+ // Paper start
|
||||
|
@ -8,7 +8,7 @@ This API has more capabilities than .dropItem with the Consumer function
|
||||
Item can be set inside of the Consumer pre spawn function.
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
index 36dd8ad60..e88846bb5 100644
|
||||
index 3ee663293..65ad8e588 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
@@ -0,0 +0,0 @@ public class CraftWorld implements World {
|
||||
|
@ -10,59 +10,58 @@ to the object directly on the Entity/TileEntity object we can directly grab.
|
||||
Use that local value instead to reduce lookups in many hot places.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index 3e80825f7..4a94fd5a6 100644
|
||||
index 2612d4207..b3cdc0b7d 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -0,0 +0,0 @@ public class Chunk {
|
||||
// Spigot end
|
||||
@@ -0,0 +0,0 @@ public class Chunk implements IChunkAccess {
|
||||
((HeightMap) this.heightMap.get(heightmap_type)).a(along);
|
||||
}
|
||||
|
||||
+ public void removeEntity(Entity entity) { b(entity); } // Paper - OBFHELPER
|
||||
public void b(Entity entity) {
|
||||
this.a(entity, entity.ac);
|
||||
this.a(entity, entity.af);
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
||||
index c0816b9f8..52adee880 100644
|
||||
index ee061d693..1b9013ab4 100644
|
||||
--- a/src/main/java/net/minecraft/server/World.java
|
||||
+++ b/src/main/java/net/minecraft/server/World.java
|
||||
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
||||
@@ -0,0 +0,0 @@ public abstract class World implements GeneratorAccess, IIBlockAccess, AutoClose
|
||||
int j;
|
||||
// Paper start - Set based removal lists
|
||||
for (Entity e : this.f) {
|
||||
for (Entity e : this.g) {
|
||||
+ /*
|
||||
j = e.getChunkZ();
|
||||
int k = e.getChunkX();
|
||||
|
||||
if (e.isAddedToChunk() && this.isChunkLoaded(k, j, true)) {
|
||||
if (e.inChunk && this.isChunkLoaded(k, j, true)) {
|
||||
this.getChunkAt(k, j).b(e);
|
||||
- }
|
||||
+ }*/
|
||||
+ Chunk chunk = e.isAddedToChunk() ? e.getCurrentChunk() : null;
|
||||
+ Chunk chunk = e.inChunk ? e.getCurrentChunk() : null;
|
||||
+ if (chunk != null) chunk.removeEntity(e);
|
||||
}
|
||||
|
||||
for (Entity e : this.f) {
|
||||
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
||||
this.methodProfiler.b();
|
||||
for (Entity e : this.g) {
|
||||
@@ -0,0 +0,0 @@ public abstract class World implements GeneratorAccess, IIBlockAccess, AutoClose
|
||||
this.methodProfiler.e();
|
||||
this.methodProfiler.a("remove");
|
||||
if (entity.dead) {
|
||||
+ // Paper start
|
||||
+ /*
|
||||
j = entity.ab;
|
||||
int l = entity.ad;
|
||||
j = entity.ae;
|
||||
int l = entity.ag;
|
||||
|
||||
- if (entity.aa && this.isChunkLoaded(j, l, true)) {
|
||||
+ /*if (entity.aa && this.isChunkLoaded(j, l, true)) {
|
||||
if (entity.inChunk && this.isChunkLoaded(j, l, true)) {
|
||||
this.getChunkAt(j, l).b(entity);
|
||||
- }
|
||||
+ }*/
|
||||
+ Chunk chunk = entity.isAddedToChunk() ? entity.getCurrentChunk() : null;
|
||||
+ Chunk chunk = entity.inChunk ? entity.getCurrentChunk() : null;
|
||||
+ if (chunk != null) chunk.removeEntity(entity);
|
||||
+ // Paper end
|
||||
|
||||
guardEntityList = false; // Spigot
|
||||
this.entityList.remove(this.tickPosition--); // CraftBukkit - Use field for loop variable
|
||||
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
||||
@@ -0,0 +0,0 @@ public abstract class World implements GeneratorAccess, IIBlockAccess, AutoClose
|
||||
BlockPosition blockposition = tileentity.getPosition();
|
||||
|
||||
// Paper start - Skip ticking in chunks scheduled for unload
|
||||
@ -71,7 +70,7 @@ index c0816b9f8..52adee880 100644
|
||||
boolean shouldTick = chunk != null;
|
||||
if(this.paperConfig.skipEntityTickingInChunksScheduledForUnload)
|
||||
shouldTick = shouldTick && !chunk.isUnloading() && chunk.scheduledForUnload == null;
|
||||
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
|
||||
@@ -0,0 +0,0 @@ public abstract class World implements GeneratorAccess, IIBlockAccess, AutoClose
|
||||
tilesThisCycle--;
|
||||
this.tileEntityListTick.remove(tileTickPosition--);
|
||||
//this.tileEntityList.remove(tileentity); // Paper - remove unused list
|
||||
|
@ -1,41 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Shane Freeder <theboyetronic@gmail.com>
|
||||
Date: Tue, 3 Jul 2018 19:14:38 +0100
|
||||
Subject: [PATCH] Cleanup allocated favicon ByteBuf
|
||||
|
||||
Cleanups a bytebuffer which was allocated during the encoding of the
|
||||
favicon to be sent to the client.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index f82e22b23..0399a48e1 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
||||
|
||||
if (file.isFile()) {
|
||||
ByteBuf bytebuf = Unpooled.buffer();
|
||||
+ ByteBuf bytebuf1 = null; // Paper - cleanup favicon bytebuf
|
||||
|
||||
try {
|
||||
BufferedImage bufferedimage = ImageIO.read(file);
|
||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IAs
|
||||
Validate.validState(bufferedimage.getWidth() == 64, "Must be 64 pixels wide", new Object[0]);
|
||||
Validate.validState(bufferedimage.getHeight() == 64, "Must be 64 pixels high", new Object[0]);
|
||||
ImageIO.write(bufferedimage, "PNG", new ByteBufOutputStream(bytebuf));
|
||||
- ByteBuf bytebuf1 = Base64.encode(bytebuf);
|
||||
+ /*ByteBuf */ bytebuf1 = Base64.encode(bytebuf); // Paper - cleanup favicon bytebuf
|
||||
|
||||
serverping.setFavicon("data:image/png;base64," + bytebuf1.toString(StandardCharsets.UTF_8));
|
||||
} catch (Exception exception) {
|
||||
MinecraftServer.LOGGER.error("Couldn\'t load server icon", exception);
|
||||
} finally {
|
||||
bytebuf.release();
|
||||
+ // Paper start - cleanup favicon bytebuf
|
||||
+ if (bytebuf1 != null) {
|
||||
+ bytebuf1.release();
|
||||
+ }
|
||||
+ // Paper end - cleanup favicon bytebuf
|
||||
}
|
||||
}
|
||||
|
||||
--
|
@ -53,7 +53,7 @@ index b602bbf12..62bce1806 100644
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/LotoSelectorEntry.java b/src/main/java/net/minecraft/server/LotoSelectorEntry.java
|
||||
index b2860555d..b5544bcf3 100644
|
||||
index a540167d6..d8a882191 100644
|
||||
--- a/src/main/java/net/minecraft/server/LotoSelectorEntry.java
|
||||
+++ b/src/main/java/net/minecraft/server/LotoSelectorEntry.java
|
||||
@@ -0,0 +0,0 @@ import java.util.Random;
|
||||
|
@ -10,7 +10,7 @@ player at their bed should it of became obstructed.
|
||||
Defaults to vanilla 1.
|
||||
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
index 06c54690f..50416f40a 100644
|
||||
index b2855f3ca..d30a8ff6c 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
@@ -0,0 +0,0 @@ public class PaperWorldConfig {
|
||||
@ -30,13 +30,16 @@ index 06c54690f..50416f40a 100644
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/BlockBed.java b/src/main/java/net/minecraft/server/BlockBed.java
|
||||
index 9346bddff..f1a107991 100644
|
||||
index 6832eaac5..b9cb59fa7 100644
|
||||
--- a/src/main/java/net/minecraft/server/BlockBed.java
|
||||
+++ b/src/main/java/net/minecraft/server/BlockBed.java
|
||||
@@ -0,0 +0,0 @@ public class BlockBed extends BlockFacingHorizontal implements ITileEntity {
|
||||
|
||||
@Nullable
|
||||
public static BlockPosition a(World world, BlockPosition blockposition, int i) {
|
||||
EnumDirection enumdirection = (EnumDirection) world.getType(blockposition).get(BlockBed.FACING);
|
||||
public static BlockPosition a(IBlockAccess iblockaccess, BlockPosition blockposition, int i) {
|
||||
+ World world = (World) iblockaccess;
|
||||
+
|
||||
EnumDirection enumdirection = (EnumDirection) iblockaccess.getType(blockposition).get(BlockBed.FACING);
|
||||
+ // Paper - replace whole method
|
||||
+ int radius = world.paperConfig.bedSearchRadius;
|
||||
+ for (int r = 1; r <= radius; r++) {
|
||||
@ -93,10 +96,10 @@ index 9346bddff..f1a107991 100644
|
||||
+ return null;*/ // Paper
|
||||
}
|
||||
|
||||
+ protected static boolean isSafeRespawn(World world, BlockPosition blockposition) { // Paper - OBFHELPER + behavior improvement
|
||||
+ return b(world, blockposition) && world.getType(blockposition.down()).getMaterial().isBuildable(); // Paper - ensure solid block
|
||||
+ protected static boolean isSafeRespawn(IBlockAccess iblockaccess, BlockPosition blockposition) { // Paper - OBFHELPER + behavior improvement
|
||||
+ return a(iblockaccess, blockposition) && iblockaccess.getType(blockposition.down()).getMaterial().isBuildable(); // Paper - ensure solid block
|
||||
+ }
|
||||
protected static boolean b(World world, BlockPosition blockposition) {
|
||||
return world.getType(blockposition.down()).q() && !world.getType(blockposition).getMaterial().isBuildable() && !world.getType(blockposition.up()).getMaterial().isBuildable();
|
||||
protected static boolean a(IBlockAccess iblockaccess, BlockPosition blockposition) {
|
||||
return iblockaccess.getType(blockposition.down()).q() && !iblockaccess.getType(blockposition).getMaterial().isBuildable() && !iblockaccess.getType(blockposition.up()).getMaterial().isBuildable();
|
||||
}
|
||||
--
|
@ -19,7 +19,7 @@ index 830b99cd7..87d2dd131 100644
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
|
||||
index 02f5d61c8..fc5263f08 100644
|
||||
index 65f4ea6cc..a766a1467 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityHuman.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
|
||||
@@ -0,0 +0,0 @@ public abstract class EntityHuman extends EntityLiving {
|
||||
|
@ -5,39 +5,20 @@ Subject: [PATCH] Don't load chunks for villager door checks
|
||||
|
||||
This avoids villages spam loading chunks sync
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/PersistentVillage.java b/src/main/java/net/minecraft/server/PersistentVillage.java
|
||||
index 01f7cee38..a3aa9f82e 100644
|
||||
--- a/src/main/java/net/minecraft/server/PersistentVillage.java
|
||||
+++ b/src/main/java/net/minecraft/server/PersistentVillage.java
|
||||
@@ -0,0 +0,0 @@ public class PersistentVillage extends PersistentBase {
|
||||
}
|
||||
|
||||
private boolean f(BlockPosition blockposition) {
|
||||
- IBlockData iblockdata = this.world.getType(blockposition);
|
||||
+ // Paper start
|
||||
+ IBlockData iblockdata = this.world.getTypeIfLoaded(blockposition);
|
||||
+ if (iblockdata == null) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ // Paper end
|
||||
Block block = iblockdata.getBlock();
|
||||
|
||||
return block instanceof BlockDoor ? iblockdata.getMaterial() == Material.WOOD : false;
|
||||
diff --git a/src/main/java/net/minecraft/server/Village.java b/src/main/java/net/minecraft/server/Village.java
|
||||
index 2eb33a986..9f1867ddd 100644
|
||||
index dfcabb83a..22fe23e8e 100644
|
||||
--- a/src/main/java/net/minecraft/server/Village.java
|
||||
+++ b/src/main/java/net/minecraft/server/Village.java
|
||||
@@ -0,0 +0,0 @@ public class Village {
|
||||
}
|
||||
|
||||
private boolean f(BlockPosition blockposition) {
|
||||
- IBlockData iblockdata = this.a.getType(blockposition);
|
||||
private boolean g(BlockPosition blockposition) {
|
||||
IBlockData iblockdata = this.a.getType(blockposition);
|
||||
+ // Paper start
|
||||
+ IBlockData iblockdata = this.a.getTypeIfLoaded(blockposition);
|
||||
+ if (iblockdata == null) {
|
||||
+ if (!this.a.isChunkLoaded(blockposition.getX() >> 4, blockposition.getZ() >> 4, true )) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ // Paper end
|
||||
+
|
||||
Block block = iblockdata.getBlock();
|
||||
|
||||
return block instanceof BlockDoor ? iblockdata.getMaterial() == Material.WOOD : false;
|
||||
|
@ -6,7 +6,7 @@ Subject: [PATCH] Enderman.teleportRandomly()
|
||||
Ability to trigger the vanilla "teleport randomly" mechanic of an enderman.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java
|
||||
index a9020083d..a5b517ba9 100644
|
||||
index e5eb0189d..df94b4ca9 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityEnderman.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityEnderman.java
|
||||
@@ -0,0 +0,0 @@ public class EntityEnderman extends EntityMonster {
|
||||
|
@ -8,7 +8,7 @@ Allow control over whether or not an enderman aggros a player.
|
||||
This allows you to override/extend the pumpkin/stare logic.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java
|
||||
index 4f8dd320f..2472edfc9 100644
|
||||
index df94b4ca9..f2fcba3d9 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityEnderman.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityEnderman.java
|
||||
@@ -0,0 +0,0 @@ public class EntityEnderman extends EntityMonster {
|
||||
@ -26,5 +26,5 @@ index 4f8dd320f..2472edfc9 100644
|
||||
+ // Paper end
|
||||
ItemStack itemstack = (ItemStack) entityhuman.inventory.armor.get(3);
|
||||
|
||||
if (itemstack.getItem() == Item.getItemOf(Blocks.PUMPKIN)) {
|
||||
if (itemstack.getItem() == Blocks.CARVED_PUMPKIN.getItem()) {
|
||||
--
|
@ -8,17 +8,14 @@ Fires an event anytime an enderman intends to teleport away from the player
|
||||
You may cancel this, enabling ranged attacks to damage the enderman for example.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java
|
||||
index 96e29539b..a9020083d 100644
|
||||
index 96e29539b..e5eb0189d 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityEnderman.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityEnderman.java
|
||||
@@ -0,0 +0,0 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.util.Optional;
|
||||
+import com.destroystokyo.paper.event.entity.EndermanEscapeEvent;
|
||||
+import com.google.common.base.Function;
|
||||
+import com.google.common.base.Predicate;
|
||||
+
|
||||
+import com.destroystokyo.paper.event.entity.EndermanEscapeEvent; // Paper
|
||||
import java.util.Random;
|
||||
import java.util.UUID;
|
||||
import java.util.function.Function;
|
||||
|
@ -6,7 +6,7 @@ Subject: [PATCH] EntityShootBowEvent consumeArrow and getArrowItem API
|
||||
Adds ability to get what arrow was shot, and control if it should be consumed.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java b/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java
|
||||
index b92cf8e62..8f4b63c8d 100644
|
||||
index c2bc8060a..1ae967d1c 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java
|
||||
@@ -0,0 +0,0 @@ public abstract class EntitySkeletonAbstract extends EntityMonster implements IR
|
||||
@ -19,7 +19,7 @@ index b92cf8e62..8f4b63c8d 100644
|
||||
event.getProjectile().remove();
|
||||
return;
|
||||
diff --git a/src/main/java/net/minecraft/server/ItemBow.java b/src/main/java/net/minecraft/server/ItemBow.java
|
||||
index e943f8054..327d31e19 100644
|
||||
index 4aa3b6249..c8fc18045 100644
|
||||
--- a/src/main/java/net/minecraft/server/ItemBow.java
|
||||
+++ b/src/main/java/net/minecraft/server/ItemBow.java
|
||||
@@ -0,0 +0,0 @@ public class ItemBow extends Item {
|
||||
@ -51,14 +51,14 @@ index e943f8054..327d31e19 100644
|
||||
@@ -0,0 +0,0 @@ public class ItemBow extends Item {
|
||||
}
|
||||
|
||||
world.a((EntityHuman) null, entityhuman.locX, entityhuman.locY, entityhuman.locZ, SoundEffects.w, SoundCategory.PLAYERS, 1.0F, 1.0F / (ItemBow.j.nextFloat() * 0.4F + 1.2F) + f * 0.5F);
|
||||
world.a((EntityHuman) null, entityhuman.locX, entityhuman.locY, entityhuman.locZ, SoundEffects.ENTITY_ARROW_SHOOT, SoundCategory.PLAYERS, 1.0F, 1.0F / (ItemBow.k.nextFloat() * 0.4F + 1.2F) + f * 0.5F);
|
||||
- if (!flag1 && !entityhuman.abilities.canInstantlyBuild) {
|
||||
+ if (!flag1 && !entityhuman.abilities.canInstantlyBuild && consumeArrow) { // Paper
|
||||
itemstack1.subtract(1);
|
||||
if (itemstack1.isEmpty()) {
|
||||
entityhuman.inventory.f(itemstack1);
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||
index 5f816e44f..9b19c055d 100644
|
||||
index 3f9a66002..77973c1e8 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||
@@ -0,0 +0,0 @@ public class CraftEventFactory {
|
||||
|
@ -6,7 +6,7 @@ Subject: [PATCH] Expand Explosions API
|
||||
Add Entity as a Source capability, and add more API choices, and on Location.
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
index e88846bb5..e2da30d88 100644
|
||||
index 65ad8e588..0640ca094 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
@@ -0,0 +0,0 @@ public class CraftWorld implements World {
|
||||
|
@ -9,31 +9,35 @@ the standard API is to send the packet to everyone in the world, which is ineffe
|
||||
This adds a new Builder API which is much friendlier to use.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index c06158e02..49019d54d 100644
|
||||
index c5da2cde3..4ac2d39c5 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -0,0 +0,0 @@ public class WorldServer extends World implements IAsyncTaskHandler {
|
||||
sendParticles(null, enumparticle, flag, d0, d1, d2, i, d3, d4, d5, d6, aint);
|
||||
// CraftBukkit - visibility api support
|
||||
return sendParticles(null, t0, d0, d1, d2, i, d3, d4, d5, d6);
|
||||
}
|
||||
|
||||
-
|
||||
+ // Paper start - Particle API Expansion
|
||||
public void sendParticles(EntityPlayer sender, EnumParticle enumparticle, boolean flag, double d0, double d1, double d2, int i, double d3, double d4, double d5, double d6, int... aint) {
|
||||
+ sendParticles(this.players, sender, enumparticle, flag, d0, d1, d2, i, d3, d4, d5, d6, aint);
|
||||
+ // TODO: rework this, "flag" should probably be exposed as it was before
|
||||
public <T extends ParticleParam> int sendParticles(EntityPlayer sender, T t0, double d0, double d1, double d2, int i, double d3, double d4, double d5, double d6) {
|
||||
+ return sendParticles(this.players, sender, t0, d0, d1, d2, i, d3, d5, d5, d6);
|
||||
+ }
|
||||
+ public void sendParticles(List<? extends EntityHuman> receivers, EntityPlayer sender, EnumParticle enumparticle, boolean flag, double d0, double d1, double d2, int i, double d3, double d4, double d5, double d6, int... aint) {
|
||||
+
|
||||
+ public <T extends ParticleParam> int sendParticles(List<EntityHuman> receivers, EntityPlayer sender, T t0, double d0, double d1, double d2, int i, double d3, double d4, double d5, double d6) {
|
||||
+ // Paper end
|
||||
// CraftBukkit end
|
||||
PacketPlayOutWorldParticles packetplayoutworldparticles = new PacketPlayOutWorldParticles(enumparticle, flag, (float) d0, (float) d1, (float) d2, (float) d3, (float) d4, (float) d5, (float) d6, i, aint);
|
||||
PacketPlayOutWorldParticles packetplayoutworldparticles = new PacketPlayOutWorldParticles(t0, false, (float) d0, (float) d1, (float) d2, (float) d3, (float) d4, (float) d5, (float) d6, i);
|
||||
int j = 0;
|
||||
|
||||
- for (int j = 0; j < this.players.size(); ++j) {
|
||||
- EntityPlayer entityplayer = (EntityPlayer) this.players.get(j);
|
||||
- for (int k = 0; k < this.players.size(); ++k) {
|
||||
- EntityPlayer entityplayer = (EntityPlayer) this.players.get(k);
|
||||
+ for (EntityHuman entityhuman : receivers) { // Paper - Particle API Expansion
|
||||
+ EntityPlayer entityplayer = (EntityPlayer) entityhuman; // Paper - Particle API Expansion
|
||||
if (sender != null && !entityplayer.getBukkitEntity().canSee(sender.getBukkitEntity())) continue; // CraftBukkit
|
||||
BlockPosition blockposition = entityplayer.getChunkCoordinates();
|
||||
double d7 = blockposition.distanceSquared(d0, d1, d2);
|
||||
|
||||
if (this.a(entityplayer, false, d0, d1, d2, packetplayoutworldparticles)) {
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
index 568a50ec4..36dd8ad60 100644
|
||||
index 817e29474..3ee663293 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
@@ -0,0 +0,0 @@ public class CraftWorld implements World {
|
||||
@ -41,6 +45,7 @@ index 568a50ec4..36dd8ad60 100644
|
||||
}
|
||||
|
||||
+ // Paper start - Particle API Expansion
|
||||
+ // TODO: Add back extended?
|
||||
@Override
|
||||
- public <T> void spawnParticle(Particle particle, double x, double y, double z, int count, double offsetX, double offsetY, double offsetZ, double extra, T data) {
|
||||
+ public <T> void spawnParticle(Particle particle, List<Player> receivers, Player sender, double x, double y, double z, int count, double offsetX, double offsetY, double offsetZ, double extra, T data) {
|
||||
@ -52,7 +57,7 @@ index 568a50ec4..36dd8ad60 100644
|
||||
- null, // Sender
|
||||
+ receivers == null ? getHandle().players : receivers.stream().map(player -> ((CraftPlayer) player).getHandle()).collect(java.util.stream.Collectors.toList()), // Paper - Particle API Expansion
|
||||
+ sender != null ? ((CraftPlayer) sender).getHandle() : null, // Sender // Paper - Particle API Expansion
|
||||
CraftParticle.toNMS(particle), // Particle
|
||||
true, // Extended range
|
||||
CraftParticle.toNMS(particle, data), // Particle
|
||||
x, y, z, // Position
|
||||
count, // Count
|
||||
--
|
@ -5,7 +5,7 @@ Subject: [PATCH] Fire EntityShootBowEvent for Illusioner
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java b/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java
|
||||
index e03650448..ad81bd059 100644
|
||||
index d03fa6318..16c3be42e 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java
|
||||
@@ -0,0 +0,0 @@ public class EntityIllagerIllusioner extends EntityIllagerWizard implements IRan
|
||||
@ -22,10 +22,10 @@ index e03650448..ad81bd059 100644
|
||||
+ if (event.getProjectile() == entityarrow.getBukkitEntity()) {
|
||||
+ this.world.addEntity(entityarrow);
|
||||
+ }
|
||||
this.a(SoundEffects.gW, 1.0F, 1.0F / (this.getRandom().nextFloat() * 0.4F + 0.8F));
|
||||
this.a(SoundEffects.ENTITY_SKELETON_SHOOT, 1.0F, 1.0F / (this.getRandom().nextFloat() * 0.4F + 0.8F));
|
||||
- this.world.addEntity(entityarrow);
|
||||
+ // Paper end
|
||||
}
|
||||
|
||||
protected EntityArrow r(float f) {
|
||||
protected EntityArrow v(float f) {
|
||||
--
|
@ -21,7 +21,7 @@ check is essentially the same as this.getHandle() == other.getHandle()
|
||||
However, replaced it too to make it clearer of intent.
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||
index bf7e6ed3f..47edc0494 100644
|
||||
index 6d4dc539c..7da6a25f1 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||
@@ -0,0 +0,0 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
||||
|
@ -6,36 +6,32 @@ Subject: [PATCH] Ignore Missing Recipes in RecipeBook to avoid data errors
|
||||
This code was causing NPE's in saving player data, potentially related to reloads.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/RecipeBookServer.java b/src/main/java/net/minecraft/server/RecipeBookServer.java
|
||||
index 7eecdc9da..f65e74ebd 100644
|
||||
index 71d6c4552..893f67094 100644
|
||||
--- a/src/main/java/net/minecraft/server/RecipeBookServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/RecipeBookServer.java
|
||||
@@ -0,0 +0,0 @@ public class RecipeBookServer extends RecipeBook {
|
||||
while (iterator.hasNext()) {
|
||||
IRecipe irecipe = (IRecipe) iterator.next();
|
||||
MinecraftKey minecraftkey = (MinecraftKey) iterator.next();
|
||||
|
||||
- nbttaglist.add(new NBTTagString(((MinecraftKey) CraftingManager.recipes.b(irecipe)).toString()));
|
||||
- nbttaglist.add((NBTBase) (new NBTTagString(minecraftkey.toString())));
|
||||
+ // Paper start - ignore missing recipes
|
||||
+ MinecraftKey key = CraftingManager.recipes.b(irecipe);
|
||||
+ if (key == null) continue;
|
||||
+ nbttaglist.add(new NBTTagString(key.toString()));
|
||||
+ IRecipe recipe = this.h.a(minecraftkey);
|
||||
+ if (recipe == null) continue;
|
||||
+ nbttaglist.add(new NBTTagString(minecraftkey.toString()))
|
||||
+ // Paper end
|
||||
}
|
||||
|
||||
nbttagcompound.set("recipes", nbttaglist);
|
||||
@@ -0,0 +0,0 @@ public class RecipeBookServer extends RecipeBook {
|
||||
Iterator iterator1 = this.e().iterator();
|
||||
|
||||
while (iterator1.hasNext()) {
|
||||
- IRecipe irecipe1 = (IRecipe) iterator1.next();
|
||||
+ // Paper start - ignore missing recipes
|
||||
+ IRecipe irecipe = (IRecipe) iterator1.next();
|
||||
MinecraftKey minecraftkey1 = (MinecraftKey) iterator1.next();
|
||||
|
||||
- nbttaglist1.add(new NBTTagString(((MinecraftKey) CraftingManager.recipes.b(irecipe1)).toString()));
|
||||
+ MinecraftKey key = CraftingManager.recipes.b(irecipe);
|
||||
+ if (key == null) continue;
|
||||
+ nbttaglist1.add(new NBTTagString(key.toString()));
|
||||
+ // Paper start - ignore missing recipes
|
||||
+ IRecipe recipe = this.h.a(minecraftkey1);
|
||||
+ if (recipe == null) continue;
|
||||
+ // Paper end
|
||||
+
|
||||
nbttaglist1.add((NBTBase) (new NBTTagString(minecraftkey1.toString())));
|
||||
}
|
||||
|
||||
nbttagcompound.set("toBeDisplayed", nbttaglist1);
|
||||
--
|
@ -6,7 +6,7 @@ Subject: [PATCH] Implement EntityKnockbackByEntityEvent
|
||||
This event is called when an entity receives knockback by another entity.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
index 65bc19b17..156bf8ee0 100644
|
||||
index 1932d38a8..1d7b9c525 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
||||
|
@ -5,7 +5,7 @@ Subject: [PATCH] Implement EntityTeleportEndGatewayEvent
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/TileEntityEndGateway.java b/src/main/java/net/minecraft/server/TileEntityEndGateway.java
|
||||
index ecbc48b0c..557f06017 100644
|
||||
index c3d30dc94..fd9be7574 100644
|
||||
--- a/src/main/java/net/minecraft/server/TileEntityEndGateway.java
|
||||
+++ b/src/main/java/net/minecraft/server/TileEntityEndGateway.java
|
||||
@@ -0,0 +0,0 @@ public class TileEntityEndGateway extends TileEntityEnderPortal implements ITick
|
||||
@ -28,5 +28,5 @@ index ecbc48b0c..557f06017 100644
|
||||
+ // Paper end - EntityTeleportEndGatewayEvent
|
||||
}
|
||||
|
||||
this.h();
|
||||
this.f();
|
||||
--
|
@ -5,7 +5,7 @@ Subject: [PATCH] Implement World.getEntity(UUID) API
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
index e2da30d88..210e3bc4e 100644
|
||||
index 0640ca094..6705864a7 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
@@ -0,0 +0,0 @@ public class CraftWorld implements World {
|
||||
|
@ -6,7 +6,7 @@ Subject: [PATCH] Improve ProjectileHitEvent to include the BlockFace where the
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||
index 9b19c055d..248873fb4 100644
|
||||
index 77973c1e8..c129e8629 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||
@@ -0,0 +0,0 @@ public class CraftEventFactory {
|
||||
|
@ -7,10 +7,10 @@ Allows you to determine why an inventory was closed, enabling plugin developers
|
||||
to "confirm" things based on if it was player triggered close or not.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index 8c96e7318..3e80825f7 100644
|
||||
index f31524eb0..2612d4207 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -0,0 +0,0 @@ public class Chunk {
|
||||
@@ -0,0 +0,0 @@ public class Chunk implements IChunkAccess {
|
||||
{
|
||||
if ( h instanceof org.bukkit.craftbukkit.entity.CraftHumanEntity )
|
||||
{
|
||||
@ -19,7 +19,7 @@ index 8c96e7318..3e80825f7 100644
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +0,0 @@ public class Chunk {
|
||||
@@ -0,0 +0,0 @@ public class Chunk implements IChunkAccess {
|
||||
{
|
||||
if ( h instanceof org.bukkit.craftbukkit.entity.CraftHumanEntity )
|
||||
{
|
||||
@ -29,12 +29,12 @@ index 8c96e7318..3e80825f7 100644
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
|
||||
index 0b51903e2..aa0b27f0e 100644
|
||||
index a766a1467..cbf663573 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityHuman.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
|
||||
@@ -0,0 +0,0 @@ public abstract class EntityHuman extends EntityLiving {
|
||||
|
||||
super.B_();
|
||||
this.df();
|
||||
super.tick();
|
||||
if (!this.world.isClientSide && this.activeContainer != null && !this.activeContainer.canUse(this)) {
|
||||
- this.closeInventory();
|
||||
+ this.closeInventory(org.bukkit.event.inventory.InventoryCloseEvent.Reason.CANT_USE); // Paper
|
||||
@ -56,7 +56,7 @@ index 0b51903e2..aa0b27f0e 100644
|
||||
this.activeContainer = this.defaultContainer;
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
index cce3f98da..4ff505cfa 100644
|
||||
index c91caf578..59dc239b8 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
|
||||
@@ -0,0 +0,0 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
@ -78,7 +78,7 @@ index cce3f98da..4ff505cfa 100644
|
||||
// CraftBukkit end
|
||||
|
||||
@@ -0,0 +0,0 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
|
||||
this.a((new ChatMessage("container.spectatorCantOpen", new Object[0])).setChatModifier((new ChatModifier()).setColor(EnumChatFormat.RED)), true);
|
||||
this.a((new ChatMessage("container.spectatorCantOpen", new Object[0])).a(EnumChatFormat.RED), true);
|
||||
} else {
|
||||
if (this.activeContainer != this.defaultContainer) {
|
||||
- this.closeInventory();
|
||||
@ -107,27 +107,27 @@ index cce3f98da..4ff505cfa 100644
|
||||
+ CraftEventFactory.handleInventoryCloseEvent(this, reason); // CraftBukkit
|
||||
+ // Paper end
|
||||
this.playerConnection.sendPacket(new PacketPlayOutCloseWindow(this.activeContainer.windowId));
|
||||
this.r();
|
||||
this.m();
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||
index 36833b961..a54203c56 100644
|
||||
index 5fe01e7ef..4ed107eac 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||
@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable {
|
||||
PlayerConnectionUtils.ensureMainThread(packetplayinclosewindow, this, this.player.x());
|
||||
PlayerConnectionUtils.ensureMainThread(packetplayinclosewindow, this, this.player.getWorldServer());
|
||||
|
||||
if (this.player.isFrozen()) return; // CraftBukkit
|
||||
- CraftEventFactory.handleInventoryCloseEvent(this.player); // CraftBukkit
|
||||
+ CraftEventFactory.handleInventoryCloseEvent(this.player, org.bukkit.event.inventory.InventoryCloseEvent.Reason.PLAYER); // CraftBukkit // Paper
|
||||
|
||||
this.player.r();
|
||||
this.player.m();
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
|
||||
index b478f385a..eaaa54acd 100644
|
||||
index c1de6564a..d397c6c74 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerList.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerList.java
|
||||
@@ -0,0 +0,0 @@ public abstract class PlayerList {
|
||||
entityplayer.b(StatisticList.f);
|
||||
entityplayer.a(StatisticList.LEAVE_GAME);
|
||||
|
||||
// CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it
|
||||
- org.bukkit.craftbukkit.event.CraftEventFactory.handleInventoryCloseEvent(entityplayer);
|
||||
@ -136,7 +136,7 @@ index b478f385a..eaaa54acd 100644
|
||||
PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(cserver.getPlayer(entityplayer), "\u00A7e" + entityplayer.getName() + " left the game");
|
||||
cserver.getPluginManager().callEvent(playerQuitEvent);
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
|
||||
index d85b5defc..05ca403e8 100644
|
||||
index 4b9ecb4a6..b602a5d1b 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
|
||||
@@ -0,0 +0,0 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||||
@ -155,7 +155,7 @@ index d85b5defc..05ca403e8 100644
|
||||
public boolean isBlocking() {
|
||||
return getHandle().isBlocking();
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
index c0f4cec4d..6cbf429ff 100644
|
||||
index 3b76c7080..79ade89c5 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@ -168,7 +168,7 @@ index c0f4cec4d..6cbf429ff 100644
|
||||
|
||||
// Check if the fromWorld and toWorld are the same.
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||
index 248873fb4..cce4acc0b 100644
|
||||
index c129e8629..81ba63bab 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||
@@ -0,0 +0,0 @@ public class CraftEventFactory {
|
||||
|
@ -6,19 +6,19 @@ Subject: [PATCH] ItemStack#getMaxItemUseDuration
|
||||
Allows you to determine how long it takes to use a usable/consumable item
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java
|
||||
index f6b802dc8..6521bb508 100644
|
||||
index be6205275..a4a5058da 100644
|
||||
--- a/src/main/java/net/minecraft/server/ItemStack.java
|
||||
+++ b/src/main/java/net/minecraft/server/ItemStack.java
|
||||
@@ -0,0 +0,0 @@ public final class ItemStack {
|
||||
this.getItem().b(this, world, entityhuman);
|
||||
}
|
||||
|
||||
+ public int getItemUseMaxDuration() { return m(); } // Paper - OBFHELPER
|
||||
public int m() {
|
||||
return this.getItem().e(this);
|
||||
+ public int getItemUseMaxDuration() { return k(); } // Paper - OBFHELPER
|
||||
public int k() {
|
||||
return this.getItem().c(this);
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
|
||||
index aa99254ff..be6589dbf 100644
|
||||
index b1e0d6185..03f611518 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
|
||||
@@ -0,0 +0,0 @@ public final class CraftItemStack extends ItemStack {
|
||||
|
@ -6,29 +6,29 @@ Subject: [PATCH] LivingEntity Hand Raised/Item Use API
|
||||
How long an entity has raised hands to charge an attack or use an item
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
index 156bf8ee0..14637be49 100644
|
||||
index 1d7b9c525..6036915a8 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
||||
|
||||
}
|
||||
|
||||
+ public ItemStack getActiveItem() { return cJ(); } // Paper - OBFHELPER
|
||||
public ItemStack cJ() {
|
||||
+ public ItemStack getActiveItem() { return cV(); } // Paper - OBFHELPER
|
||||
public ItemStack cV() {
|
||||
return this.activeItem;
|
||||
}
|
||||
|
||||
+ public int getItemUseRemainingTime() { return cK(); } // Paper - OBFHELPER
|
||||
public int cK() {
|
||||
return this.bp;
|
||||
+ public int getItemUseRemainingTime() { return cW(); } // Paper - OBFHELPER
|
||||
public int cW() {
|
||||
return this.bu;
|
||||
}
|
||||
|
||||
+ public int getHandRaisedTime() { return cL(); } // Paper - OBFHELPER
|
||||
public int cL() {
|
||||
return this.isHandRaised() ? this.activeItem.m() - this.cK() : 0;
|
||||
+ public int getHandRaisedTime() { return cX(); } // Paper - OBFHELPER
|
||||
public int cX() {
|
||||
return this.isHandRaised() ? this.activeItem.k() - this.cW() : 0;
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
index 14fb474f7..9c750efc7 100644
|
||||
index 0237ac769..8b3659c82 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
@@ -0,0 +0,0 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
|
@ -1,25 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Wed, 24 Jan 2018 20:06:39 -0500
|
||||
Subject: [PATCH] MC-99321 - Dont check for blocked double chest for hoppers
|
||||
etc
|
||||
|
||||
This is a source of MAJOR lag for hoppers, as well as a gameplay bug.
|
||||
|
||||
This removes the necessity to disable the cat on chest behavior to improve performance.
|
||||
|
||||
now performance will be improved even if you have cat chest detection on.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/BlockChest.java b/src/main/java/net/minecraft/server/BlockChest.java
|
||||
index 633c75ffe..68cdd3970 100644
|
||||
--- a/src/main/java/net/minecraft/server/BlockChest.java
|
||||
+++ b/src/main/java/net/minecraft/server/BlockChest.java
|
||||
@@ -0,0 +0,0 @@ public class BlockChest extends BlockTileEntity implements IFluidSource, IFluidC
|
||||
|
||||
if (blockpropertychesttype1 != BlockPropertyChestType.SINGLE && blockpropertychesttype != blockpropertychesttype1 && iblockdata1.get(BlockChest.FACING) == iblockdata.get(BlockChest.FACING)) {
|
||||
if (!flag && this.a(world, blockposition1)) {
|
||||
+ //if (!flag && this.e(world, blockposition1)) { // Paper - check for allowBlocked flag - MC-99321
|
||||
return null;
|
||||
}
|
||||
|
||||
--
|
@ -5,7 +5,7 @@ Subject: [PATCH] Make shield blocking delay configurable
|
||||
|
||||
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
index 03a9a96fc..99ad40fa3 100644
|
||||
index 5a9c68e4f..650addb84 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
@@ -0,0 +0,0 @@ public class PaperWorldConfig {
|
||||
@ -19,20 +19,20 @@ index 03a9a96fc..99ad40fa3 100644
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
index 9adcabd4f..65bc19b17 100644
|
||||
index 401410b87..1932d38a8 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
||||
if (this.isHandRaised() && !this.activeItem.isEmpty()) {
|
||||
Item item = this.activeItem.getItem();
|
||||
|
||||
- return item.f(this.activeItem) != EnumAnimation.BLOCK ? false : item.e(this.activeItem) - this.bp >= 5;
|
||||
+ return item.f(this.activeItem) != EnumAnimation.BLOCK ? false : item.e(this.activeItem) - this.bp >= getShieldBlockingDelay(); // Paper - shieldBlockingDelay
|
||||
- return item.d(this.activeItem) != EnumAnimation.BLOCK ? false : item.c(this.activeItem) - this.bu >= 5;
|
||||
+ return item.d(this.activeItem) != EnumAnimation.BLOCK ? false : item.c(this.activeItem) - this.bu >= getShieldBlockingDelay(); // Paper - shieldBlockingDelay
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
||||
public boolean cS() {
|
||||
public boolean de() {
|
||||
return true;
|
||||
}
|
||||
+
|
||||
@ -49,7 +49,7 @@ index 9adcabd4f..65bc19b17 100644
|
||||
+ // Paper end
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
index a7b076377..14fb474f7 100644
|
||||
index 487bb9ece..0237ac769 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
|
||||
@@ -0,0 +0,0 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
||||
|
@ -6,7 +6,7 @@ Subject: [PATCH] Player.setPlayerProfile API
|
||||
This can be useful for changing name or skins after a player has logged in.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
|
||||
index 4fb300468..02f5d61c8 100644
|
||||
index 4fb300468..65f4ea6cc 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityHuman.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
|
||||
@@ -0,0 +0,0 @@ public abstract class EntityHuman extends EntityLiving {
|
||||
@ -14,7 +14,7 @@ index 4fb300468..02f5d61c8 100644
|
||||
protected float ca = 0.02F;
|
||||
private int g;
|
||||
- private final GameProfile h;
|
||||
+ private final GameProfile h; public void setProfile(GameProfile profile) { this.h = profile; } // Paper - OBFHELPER
|
||||
+ private GameProfile h; public void setProfile(GameProfile profile) { this.h = profile; } // Paper - OBFHELPER
|
||||
private ItemStack cd;
|
||||
private final ItemCooldown ce;
|
||||
@Nullable
|
||||
|
@ -7,7 +7,7 @@ Called when a player is firing a bow and the server is choosing an arrow to use.
|
||||
Plugins can skip selection of certain arrows and control which is used.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/ItemBow.java b/src/main/java/net/minecraft/server/ItemBow.java
|
||||
index 327d31e19..44e7be58e 100644
|
||||
index c8fc18045..de0d80361 100644
|
||||
--- a/src/main/java/net/minecraft/server/ItemBow.java
|
||||
+++ b/src/main/java/net/minecraft/server/ItemBow.java
|
||||
@@ -0,0 +0,0 @@
|
||||
@ -18,23 +18,23 @@ index 327d31e19..44e7be58e 100644
|
||||
|
||||
public class ItemBow extends Item {
|
||||
@@ -0,0 +0,0 @@ public class ItemBow extends Item {
|
||||
});
|
||||
// CraftBukkit end
|
||||
}
|
||||
|
||||
- private ItemStack a(EntityHuman entityhuman) {
|
||||
- if (this.d(entityhuman.b(EnumHand.OFF_HAND))) {
|
||||
- if (this.e_(entityhuman.b(EnumHand.OFF_HAND))) {
|
||||
+ private ItemStack a(EntityHuman entityhuman, ItemStack bow) { // Paper
|
||||
+ if (this.d(entityhuman, bow, entityhuman.b(EnumHand.OFF_HAND))) { // Paper
|
||||
+ if (this.e_(entityhuman, bow, entityhuman.b(EnumHand.OFF_HAND))) { // Paper
|
||||
return entityhuman.b(EnumHand.OFF_HAND);
|
||||
- } else if (this.d(entityhuman.b(EnumHand.MAIN_HAND))) {
|
||||
+ } else if (this.d(entityhuman, bow, entityhuman.b(EnumHand.MAIN_HAND))) { // Paper
|
||||
- } else if (this.e_(entityhuman.b(EnumHand.MAIN_HAND))) {
|
||||
+ } else if (this.e_(entityhuman, bow, entityhuman.b(EnumHand.MAIN_HAND))) {
|
||||
return entityhuman.b(EnumHand.MAIN_HAND);
|
||||
} else {
|
||||
for (int i = 0; i < entityhuman.inventory.getSize(); ++i) {
|
||||
ItemStack itemstack = entityhuman.inventory.getItem(i);
|
||||
|
||||
- if (this.d(itemstack)) {
|
||||
+ if (this.d(entityhuman, bow, itemstack)) { // Paper
|
||||
- if (this.e_(itemstack)) {
|
||||
+ if (this.e_(entityhuman, bow, itemstack)) {
|
||||
return itemstack;
|
||||
}
|
||||
}
|
||||
@ -42,10 +42,10 @@ index 327d31e19..44e7be58e 100644
|
||||
}
|
||||
}
|
||||
|
||||
- protected boolean d(ItemStack itemstack) {
|
||||
- protected boolean e_(ItemStack itemstack) {
|
||||
- return itemstack.getItem() instanceof ItemArrow;
|
||||
+ // Paper start
|
||||
+ protected boolean d(EntityHuman player, ItemStack bow, ItemStack itemstack) {
|
||||
+ protected boolean e_(EntityHuman player, ItemStack bow, ItemStack itemstack) {
|
||||
+ return itemstack.getItem() instanceof ItemArrow && (
|
||||
+ !(player instanceof EntityPlayer) ||
|
||||
+ new com.destroystokyo.paper.event.player.PlayerReadyArrowEvent(
|
||||
|
@ -5,14 +5,14 @@ Subject: [PATCH] Print Error details when failing to save player data
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldNBTStorage.java b/src/main/java/net/minecraft/server/WorldNBTStorage.java
|
||||
index 4e33cc2f2..4bb6f600d 100644
|
||||
index cbfdb3cf7..9a243010d 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldNBTStorage.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldNBTStorage.java
|
||||
@@ -0,0 +0,0 @@ public class WorldNBTStorage implements IDataManager, IPlayerFileData {
|
||||
|
||||
file.renameTo(file1);
|
||||
} catch (Exception exception) {
|
||||
- WorldNBTStorage.b.warn("Failed to save player data for {}", entityhuman.getName());
|
||||
- WorldNBTStorage.b.warn("Failed to save player data for {}", entityhuman.getDisplayName().getString());
|
||||
+ WorldNBTStorage.b.error("Failed to save player data for {}", entityhuman.getName(), exception); // Paper
|
||||
}
|
||||
|
||||
|
@ -22,10 +22,10 @@ requirement, but plugins (such as my own) use this method to
|
||||
trigger a "reload" of the entity on the client.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
||||
index 7b17c32bb..d03e7c24f 100644
|
||||
index cd1639e26..ea42800ae 100644
|
||||
--- a/src/main/java/net/minecraft/server/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/server/Entity.java
|
||||
@@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener, KeyedObject { // Paper
|
||||
@@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
}
|
||||
// CraftBukkit end */
|
||||
|
||||
@ -35,7 +35,7 @@ index 7b17c32bb..d03e7c24f 100644
|
||||
this.world.methodProfiler.a("reposition");
|
||||
/* CraftBukkit start - Handled in calculateTarget
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 49019d54d..9fe5c4406 100644
|
||||
index 4ac2d39c5..d6d3ffa6f 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -0,0 +0,0 @@ public class WorldServer extends World implements IAsyncTaskHandler {
|
||||
|
@ -32,7 +32,7 @@ index 000000000..696660b08
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/net/minecraft/server/IRangedEntity.java b/src/main/java/net/minecraft/server/IRangedEntity.java
|
||||
index a8af5917c..ba8b47c02 100644
|
||||
index 4fd69850f..7fe65b7c2 100644
|
||||
--- a/src/main/java/net/minecraft/server/IRangedEntity.java
|
||||
+++ b/src/main/java/net/minecraft/server/IRangedEntity.java
|
||||
@@ -0,0 +0,0 @@ package net.minecraft.server;
|
||||
@ -42,9 +42,8 @@ index a8af5917c..ba8b47c02 100644
|
||||
- void a(EntityLiving entityliving, float f);
|
||||
+ void a(EntityLiving entityliving, float f); default void rangedAttack(EntityLiving entityliving, float f) { a(entityliving, f); } // Paper OBF HELPER
|
||||
|
||||
- void p(boolean flag);
|
||||
+
|
||||
+ void p(boolean flag); default void setChargingAttack(boolean flag) { p(flag); } // Paper OBF HELPER
|
||||
- void s(boolean flag);
|
||||
+ void s(boolean flag); default void setChargingAttack(boolean flag) { s(flag); } // Paper OBF HELPER
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftIllusioner.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftIllusioner.java
|
||||
index 2ec1af8be..f31d3eed3 100644
|
||||
|
@ -16,7 +16,7 @@ Refresh the player inventory when PlayerInteractEntityEvent is
|
||||
cancelled to avoid this problem.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||
index a54203c56..cc1152739 100644
|
||||
index 4ed107eac..472f40709 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||
@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable {
|
||||
|
@ -6,20 +6,20 @@ Subject: [PATCH] Unset Ignited flag on cancel of Explosion Event
|
||||
Otherwise the creeper infinite explodes
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityCreeper.java b/src/main/java/net/minecraft/server/EntityCreeper.java
|
||||
index 8098d4d9f..67ba72fc1 100644
|
||||
index f37169d73..86935f70a 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityCreeper.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityCreeper.java
|
||||
@@ -0,0 +0,0 @@ public class EntityCreeper extends EntityMonster {
|
||||
|
||||
private static final DataWatcherObject<Integer> a = DataWatcher.a(EntityCreeper.class, DataWatcherRegistry.b);
|
||||
private static final DataWatcherObject<Boolean> b = DataWatcher.a(EntityCreeper.class, DataWatcherRegistry.h);
|
||||
- private static final DataWatcherObject<Boolean> c = DataWatcher.a(EntityCreeper.class, DataWatcherRegistry.h);
|
||||
+ private static final DataWatcherObject<Boolean> c = DataWatcher.a(EntityCreeper.class, DataWatcherRegistry.h); private static final DataWatcherObject<Boolean> isIgnitedDW = c; // Paper OBFHELPER
|
||||
private int bx;
|
||||
private static final DataWatcherObject<Boolean> b = DataWatcher.a(EntityCreeper.class, DataWatcherRegistry.i);
|
||||
- private static final DataWatcherObject<Boolean> c = DataWatcher.a(EntityCreeper.class, DataWatcherRegistry.i);
|
||||
+ private static final DataWatcherObject<Boolean> c = DataWatcher.a(EntityCreeper.class, DataWatcherRegistry.i);private static final DataWatcherObject<Boolean> isIgnitedDW = c; // Paper OBFHELPER
|
||||
private int bC;
|
||||
private int fuseTicks;
|
||||
public int maxFuseTicks = 30; // PAIL private -> public
|
||||
public int maxFuseTicks = 30;
|
||||
@@ -0,0 +0,0 @@ public class EntityCreeper extends EntityMonster {
|
||||
this.ds();
|
||||
this.dF();
|
||||
} else {
|
||||
fuseTicks = 0;
|
||||
+ this.datawatcher.set(isIgnitedDW, Boolean.valueOf(false)); // Paper
|
||||
|
@ -6,15 +6,15 @@ Subject: [PATCH] Vex#getOwner API
|
||||
Get's the NPC that summoned this Vex
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityVex.java b/src/main/java/net/minecraft/server/EntityVex.java
|
||||
index a0abaf431..673c3ff3c 100644
|
||||
index 897d7c681..ba1109e03 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityVex.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityVex.java
|
||||
@@ -0,0 +0,0 @@ public class EntityVex extends EntityMonster {
|
||||
|
||||
}
|
||||
|
||||
+ public EntityInsentient getOwner() { return p(); } // Paper - OBFHELPER
|
||||
public EntityInsentient p() {
|
||||
+ public EntityInsentient getOwner() { return l(); } // Paper - OBFHELPER
|
||||
public EntityInsentient l() {
|
||||
return this.b;
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java
|
||||
|
@ -6,7 +6,7 @@ Subject: [PATCH] WitchConsumePotionEvent
|
||||
Fires when a witch consumes the potion in their hand
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityWitch.java b/src/main/java/net/minecraft/server/EntityWitch.java
|
||||
index ffe72e037..3a00a37eb 100644
|
||||
index 71d8b6f8f..cf0669589 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityWitch.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityWitch.java
|
||||
@@ -0,0 +0,0 @@ public class EntityWitch extends EntityMonster implements IRangedEntity {
|
||||
|
@ -5,7 +5,7 @@ Subject: [PATCH] WitchReadyPotionEvent
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityWitch.java b/src/main/java/net/minecraft/server/EntityWitch.java
|
||||
index bf029ad1c..035aa4a90 100644
|
||||
index 59f3f4404..45b6e2b7b 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityWitch.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityWitch.java
|
||||
@@ -0,0 +0,0 @@ public class EntityWitch extends EntityMonster implements IRangedEntity {
|
||||
@ -18,7 +18,7 @@ index bf029ad1c..035aa4a90 100644
|
||||
+ org.bukkit.inventory.ItemStack bukkitStack = com.destroystokyo.paper.event.entity.WitchReadyPotionEvent.process((org.bukkit.entity.Witch) this.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(potion));
|
||||
+ this.setSlot(EnumItemSlot.MAINHAND, org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(bukkitStack));
|
||||
+ // Paper end
|
||||
this.bx = this.getItemInMainHand().m();
|
||||
this.bC = this.getItemInMainHand().k();
|
||||
this.a(true);
|
||||
this.world.a((EntityHuman) null, this.locX, this.locY, this.locZ, SoundEffects.iz, this.bK(), 1.0F, 0.8F + this.random.nextFloat() * 0.4F);
|
||||
this.world.a((EntityHuman) null, this.locX, this.locY, this.locZ, SoundEffects.ENTITY_WITCH_DRINK, this.bV(), 1.0F, 0.8F + this.random.nextFloat() * 0.4F);
|
||||
--
|
@ -6,11 +6,11 @@ Subject: [PATCH] WitchThrowPotionEvent
|
||||
Fired when a witch throws a potion at a player
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityWitch.java b/src/main/java/net/minecraft/server/EntityWitch.java
|
||||
index 3a00a37eb..bf029ad1c 100644
|
||||
index cf0669589..59f3f4404 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityWitch.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityWitch.java
|
||||
@@ -0,0 +0,0 @@ public class EntityWitch extends EntityMonster implements IRangedEntity {
|
||||
potionregistry = Potions.I;
|
||||
potionregistry = Potions.M;
|
||||
}
|
||||
|
||||
- EntityPotion entitypotion = new EntityPotion(this.world, this, PotionUtil.a(new ItemStack(Items.SPLASH_POTION), potionregistry));
|
||||
|
Loading…
Reference in New Issue
Block a user