geforkt von Mirrors/Paper
Mappings Update
Dieser Commit ist enthalten in:
Ursprung
bd36e200da
Commit
d05c8b1481
@ -8,29 +8,11 @@
|
||||
|
||||
public Advancement(MinecraftKey minecraftkey, @Nullable Advancement advancement, @Nullable AdvancementDisplay advancementdisplay, AdvancementRewards advancementrewards, Map<String, Criterion> map, String[][] astring) {
|
||||
this.d = minecraftkey;
|
||||
@@ -46,7 +47,7 @@
|
||||
EnumChatFormat enumchatformat = advancementdisplay.e().c();
|
||||
IChatBaseComponent ichatbasecomponent1 = ichatbasecomponent.h().a(enumchatformat).a("\n").addSibling(advancementdisplay.b());
|
||||
IChatBaseComponent ichatbasecomponent2 = ichatbasecomponent.h().a((chatmodifier) -> {
|
||||
- chatmodifier.setChatHoverable(new ChatHoverable(ChatHoverable.EnumHoverAction.SHOW_TEXT, ichatbasecomponent));
|
||||
+ chatmodifier.setChatHoverable(new ChatHoverable(ChatHoverable.EnumHoverAction.SHOW_TEXT, ichatbasecomponent1)); // CraftBukkit - decompile error
|
||||
});
|
||||
|
||||
this.h = (new ChatComponentText("[")).addSibling(ichatbasecomponent2).a("]").a(enumchatformat);
|
||||
@@ -55,7 +56,7 @@
|
||||
}
|
||||
|
||||
public Advancement.SerializedAdvancement a() {
|
||||
- return new Advancement.SerializedAdvancement(this.a == null ? null : this.a.getName(), this.b, this.c, this.e, this.f, null);
|
||||
+ return new Advancement.SerializedAdvancement(this.a == null ? null : this.a.getName(), this.b, this.c, this.e, this.f); // CraftBukkit - decompile error
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -206,7 +207,7 @@
|
||||
}
|
||||
|
||||
public Advancement b(MinecraftKey minecraftkey) {
|
||||
- if (!this.a((minecraftkey) -> {
|
||||
- if (!this.a((minecraftkey1) -> {
|
||||
+ if (!this.a((Function<MinecraftKey, Advancement>) (minecraftkey1) -> { // CraftBukkit - decompile error
|
||||
return null;
|
||||
})) {
|
||||
|
@ -1,42 +1,6 @@
|
||||
--- a/net/minecraft/server/AdvancementDataPlayer.java
|
||||
+++ b/net/minecraft/server/AdvancementDataPlayer.java
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
private static final Logger a = LogManager.getLogger();
|
||||
private static final Gson b = (new GsonBuilder()).registerTypeAdapter(AdvancementProgress.class, new AdvancementProgress.a()).registerTypeAdapter(MinecraftKey.class, new MinecraftKey.a()).setPrettyPrinting().create();
|
||||
- private static final TypeToken<Map<MinecraftKey, AdvancementProgress>> c = new TypeToken() {
|
||||
+ private static final TypeToken<Map<MinecraftKey, AdvancementProgress>> c = new TypeToken<Map<MinecraftKey, AdvancementProgress>>() { // CraftBukkit - decompile error
|
||||
};
|
||||
private final MinecraftServer d;
|
||||
private final File e;
|
||||
@@ -100,7 +100,7 @@
|
||||
Iterator iterator = this.data.entrySet().iterator();
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
- Entry entry = (Entry) iterator.next();
|
||||
+ Entry<Advancement, AdvancementProgress> entry = (Entry) iterator.next(); // CraftBukkit - decompile error
|
||||
|
||||
if (((AdvancementProgress) entry.getValue()).isDone()) {
|
||||
arraylist.add(entry.getKey());
|
||||
@@ -140,7 +140,7 @@
|
||||
|
||||
try {
|
||||
jsonreader.setLenient(false);
|
||||
- Dynamic dynamic = new Dynamic(JsonOps.INSTANCE, Streams.parse(jsonreader));
|
||||
+ Dynamic<?> dynamic = new Dynamic(JsonOps.INSTANCE, Streams.parse(jsonreader)); // CraftBukkit - decompile error
|
||||
|
||||
if (!dynamic.get("DataVersion").flatMap(Dynamic::getNumberValue).isPresent()) {
|
||||
dynamic = dynamic.set("DataVersion", dynamic.createInt(1343));
|
||||
@@ -148,7 +148,7 @@
|
||||
|
||||
dynamic = this.d.az().update(DataFixTypes.ADVANCEMENTS, dynamic, dynamic.getInt("DataVersion"), 1631);
|
||||
dynamic = dynamic.remove("DataVersion");
|
||||
- Map map = (Map) AdvancementDataPlayer.b.getAdapter(AdvancementDataPlayer.c).fromJsonTree((JsonElement) dynamic.getValue());
|
||||
+ Map<MinecraftKey, AdvancementProgress> map = (Map) AdvancementDataPlayer.b.getAdapter(AdvancementDataPlayer.c).fromJsonTree((JsonElement) dynamic.getValue()); // CraftBukkit - decompile error
|
||||
|
||||
if (map == null) {
|
||||
throw new JsonParseException("Found null for advancements");
|
||||
@@ -162,7 +162,11 @@
|
||||
@@ -158,7 +158,11 @@
|
||||
Advancement advancement = this.d.getAdvancementData().a((MinecraftKey) entry.getKey());
|
||||
|
||||
if (advancement == null) {
|
||||
@ -49,7 +13,7 @@
|
||||
} else {
|
||||
this.a(advancement, (AdvancementProgress) entry.getValue());
|
||||
}
|
||||
@@ -231,6 +235,7 @@
|
||||
@@ -227,6 +231,7 @@
|
||||
this.i.add(advancement);
|
||||
flag = true;
|
||||
if (!flag1 && advancementprogress.isDone()) {
|
||||
|
@ -9,26 +9,24 @@
|
||||
private final Map<String, String> l = Maps.newHashMap();
|
||||
private MinecraftKey m = new MinecraftKey("");
|
||||
private BlockStateList<Block, IBlockData> n;
|
||||
@@ -222,7 +222,7 @@
|
||||
if (comparable instanceof Integer) {
|
||||
suggestionsbuilder.suggest((Integer) comparable);
|
||||
} else {
|
||||
- suggestionsbuilder.suggest(iblockstate.a(comparable));
|
||||
+ suggestionsbuilder.suggest(iblockstate.a((T) comparable)); // CraftBukkit - decompile error
|
||||
}
|
||||
}
|
||||
@@ -217,7 +217,7 @@
|
||||
Iterator iterator = iblockstate.d().iterator();
|
||||
|
||||
@@ -488,8 +488,8 @@
|
||||
Optional optional = iblockstate.b(s);
|
||||
while (iterator.hasNext()) {
|
||||
- T t0 = (Comparable) iterator.next();
|
||||
+ T t0 = (T) iterator.next(); // CraftBukkit - decompile error
|
||||
|
||||
if (t0 instanceof Integer) {
|
||||
suggestionsbuilder.suggest((Integer) t0);
|
||||
@@ -488,7 +488,7 @@
|
||||
Optional<T> optional = iblockstate.b(s);
|
||||
|
||||
if (optional.isPresent()) {
|
||||
- this.o = (IBlockData) this.o.set(iblockstate, (Comparable) optional.get());
|
||||
- this.k.put(iblockstate, optional.get());
|
||||
+ this.o = (IBlockData) this.o.set(iblockstate, (T) optional.get()); // CraftBukkit - decompile error
|
||||
+ this.k.put(iblockstate, (Comparable) optional.get()); // CraftBukkit - decompile error
|
||||
this.k.put(iblockstate, optional.get());
|
||||
} else {
|
||||
this.i.setCursor(i);
|
||||
throw ArgumentBlock.e.createWithContext(this.i, this.m.toString(), iblockstate.a(), s);
|
||||
@@ -526,7 +526,7 @@
|
||||
private static <T extends Comparable<T>> void a(StringBuilder stringbuilder, IBlockState<T> iblockstate, Comparable<?> comparable) {
|
||||
stringbuilder.append(iblockstate.a());
|
||||
|
@ -1,24 +1,6 @@
|
||||
--- a/net/minecraft/server/Block.java
|
||||
+++ b/net/minecraft/server/Block.java
|
||||
@@ -32,7 +32,7 @@
|
||||
@Nullable
|
||||
private String name;
|
||||
private static final ThreadLocal<Object2ByteLinkedOpenHashMap<Block.a>> q = ThreadLocal.withInitial(() -> {
|
||||
- Object2ByteLinkedOpenHashMap object2bytelinkedopenhashmap = new Object2ByteLinkedOpenHashMap(200) {
|
||||
+ Object2ByteLinkedOpenHashMap object2bytelinkedopenhashmap = new Object2ByteLinkedOpenHashMap<Block.a>(200) { // CraftBukkit - decompile error
|
||||
protected void rehash(int i) {}
|
||||
};
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
}
|
||||
|
||||
public Block(Block.Info block_info) {
|
||||
- BlockStateList.a blockstatelist_a = new BlockStateList.a(this);
|
||||
+ BlockStateList.a<Block, IBlockData> blockstatelist_a = new BlockStateList.a(this); // CraftBukkit - decompile error
|
||||
|
||||
this.a(blockstatelist_a);
|
||||
this.blockStateList = blockstatelist_a.a(BlockData::new);
|
||||
@@ -406,7 +406,8 @@
|
||||
@@ -405,7 +405,8 @@
|
||||
int j = this.getDropCount(iblockdata, i, world, blockposition, world.random);
|
||||
|
||||
for (int k = 0; k < j; ++k) {
|
||||
@ -28,7 +10,7 @@
|
||||
Item item = this.getDropType(iblockdata, world, blockposition, i).getItem();
|
||||
|
||||
if (item != Items.AIR) {
|
||||
@@ -427,7 +428,13 @@
|
||||
@@ -426,7 +427,13 @@
|
||||
EntityItem entityitem = new EntityItem(world, (double) blockposition.getX() + d0, (double) blockposition.getY() + d1, (double) blockposition.getZ() + d2, itemstack);
|
||||
|
||||
entityitem.n();
|
||||
@ -43,7 +25,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1395,8 +1402,14 @@
|
||||
@@ -1394,8 +1401,14 @@
|
||||
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/BlockDispenser.java
|
||||
+++ b/net/minecraft/server/BlockDispenser.java
|
||||
@@ -9,9 +9,10 @@
|
||||
@@ -8,9 +8,10 @@
|
||||
|
||||
public static final BlockStateDirection FACING = BlockDirectional.FACING;
|
||||
public static final BlockStateBoolean TRIGGERED = BlockProperties.w;
|
||||
@ -12,7 +12,7 @@
|
||||
|
||||
public static void a(IMaterial imaterial, IDispenseBehavior idispensebehavior) {
|
||||
BlockDispenser.REGISTRY.put(imaterial.getItem(), idispensebehavior);
|
||||
@@ -57,6 +58,7 @@
|
||||
@@ -56,6 +57,7 @@
|
||||
IDispenseBehavior idispensebehavior = this.a(itemstack);
|
||||
|
||||
if (idispensebehavior != IDispenseBehavior.NONE) {
|
||||
|
@ -12,7 +12,7 @@
|
||||
@@ -28,6 +30,10 @@
|
||||
|
||||
public void a(IBlockData iblockdata, World world, BlockPosition blockposition, Entity entity) {
|
||||
if (!world.isClientSide && !entity.isPassenger() && !entity.isVehicle() && entity.bm() && VoxelShapes.c(VoxelShapes.a(entity.getBoundingBox().d((double) (-blockposition.getX()), (double) (-blockposition.getY()), (double) (-blockposition.getZ()))), iblockdata.g(world, blockposition), OperatorBoolean.AND)) {
|
||||
if (!world.isClientSide && !entity.isPassenger() && !entity.isVehicle() && entity.bm() && VoxelShapes.c(VoxelShapes.a(entity.getBoundingBox().d((double) (-blockposition.getX()), (double) (-blockposition.getY()), (double) (-blockposition.getZ()))), iblockdata.getShape(world, blockposition), OperatorBoolean.AND)) {
|
||||
+ // CraftBukkit start - Entity in portal
|
||||
+ EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), blockposition.getX(), blockposition.getY(), blockposition.getZ()));
|
||||
+ world.getServer().getPluginManager().callEvent(event);
|
||||
|
@ -1,7 +1,7 @@
|
||||
--- a/net/minecraft/server/BlockFire.java
|
||||
+++ b/net/minecraft/server/BlockFire.java
|
||||
@@ -8,6 +8,16 @@
|
||||
import java.util.function.Predicate;
|
||||
@@ -7,6 +7,16 @@
|
||||
import java.util.Map.Entry;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
+// CraftBukkit start
|
||||
@ -17,7 +17,7 @@
|
||||
public class BlockFire extends Block {
|
||||
|
||||
public static final BlockStateInteger AGE = BlockProperties.X;
|
||||
@@ -32,7 +42,20 @@
|
||||
@@ -31,7 +41,20 @@
|
||||
}
|
||||
|
||||
public IBlockData updateState(IBlockData iblockdata, EnumDirection enumdirection, IBlockData iblockdata1, GeneratorAccess generatoraccess, BlockPosition blockposition, BlockPosition blockposition1) {
|
||||
@ -39,7 +39,7 @@
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -82,7 +105,7 @@
|
||||
@@ -81,7 +104,7 @@
|
||||
public void a(IBlockData iblockdata, World world, BlockPosition blockposition, Random random) {
|
||||
if (world.getGameRules().getBoolean("doFireTick")) {
|
||||
if (!iblockdata.canPlace(world, blockposition)) {
|
||||
@ -48,7 +48,7 @@
|
||||
}
|
||||
|
||||
Block block = world.getType(blockposition.down()).getBlock();
|
||||
@@ -90,7 +113,7 @@
|
||||
@@ -89,7 +112,7 @@
|
||||
int i = (Integer) iblockdata.get(BlockFire.AGE);
|
||||
|
||||
if (!flag && world.isRaining() && this.a(world, blockposition) && random.nextFloat() < 0.2F + (float) i * 0.03F) {
|
||||
@ -57,7 +57,7 @@
|
||||
} else {
|
||||
int j = Math.min(15, i + random.nextInt(3) / 2);
|
||||
|
||||
@@ -103,14 +126,14 @@
|
||||
@@ -102,14 +125,14 @@
|
||||
world.getBlockTickList().a(blockposition, this, this.a((IWorldReader) world) + random.nextInt(10));
|
||||
if (!this.d(world, blockposition)) {
|
||||
if (!world.getType(blockposition.down()).q() || i > 3) {
|
||||
@ -74,7 +74,7 @@
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -118,12 +141,14 @@
|
||||
@@ -117,12 +140,14 @@
|
||||
boolean flag1 = world.x(blockposition);
|
||||
int k = flag1 ? -50 : 0;
|
||||
|
||||
@ -95,7 +95,7 @@
|
||||
BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition();
|
||||
|
||||
for (int l = -1; l <= 1; ++l) {
|
||||
@@ -149,7 +174,15 @@
|
||||
@@ -148,7 +173,15 @@
|
||||
if (i2 > 0 && random.nextInt(k1) <= i2 && (!world.isRaining() || !this.a(world, (BlockPosition) blockposition_mutableblockposition))) {
|
||||
int j2 = Math.min(15, i + random.nextInt(5) / 4);
|
||||
|
||||
@ -112,7 +112,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -173,12 +206,24 @@
|
||||
@@ -172,12 +205,24 @@
|
||||
return this.flameChances.getInt(block);
|
||||
}
|
||||
|
||||
@ -138,7 +138,7 @@
|
||||
if (random.nextInt(j + 10) < 5 && !world.isRainingAt(blockposition)) {
|
||||
int l = Math.min(j + random.nextInt(5) / 4, 15);
|
||||
|
||||
@@ -241,7 +286,7 @@
|
||||
@@ -240,7 +285,7 @@
|
||||
if (iblockdata1.getBlock() != iblockdata.getBlock()) {
|
||||
if (world.worldProvider.getDimensionManager() != DimensionManager.OVERWORLD && world.worldProvider.getDimensionManager() != DimensionManager.NETHER || !((BlockPortal) Blocks.NETHER_PORTAL).a((GeneratorAccess) world, blockposition)) {
|
||||
if (!iblockdata.canPlace(world, blockposition)) {
|
||||
@ -147,7 +147,7 @@
|
||||
} else {
|
||||
world.getBlockTickList().a(blockposition, this, this.a((IWorldReader) world) + world.random.nextInt(10));
|
||||
}
|
||||
@@ -387,4 +432,12 @@
|
||||
@@ -386,4 +431,12 @@
|
||||
blockfire.a(Blocks.BLACK_CARPET, 60, 20);
|
||||
blockfire.a(Blocks.DRIED_KELP_BLOCK, 30, 60);
|
||||
}
|
||||
|
@ -1,20 +1,6 @@
|
||||
--- a/net/minecraft/server/BlockFluids.java
|
||||
+++ b/net/minecraft/server/BlockFluids.java
|
||||
@@ -57,10 +57,10 @@
|
||||
public VoxelShape a(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) {
|
||||
Fluid fluid = iblockaccess.getFluid(blockposition.up());
|
||||
|
||||
- return fluid.c().a((FluidType) this.b) ? VoxelShapes.b() : (VoxelShape) this.o.computeIfAbsent(iblockdata, (iblockdata) -> {
|
||||
- Fluid fluid = iblockdata.s();
|
||||
+ return fluid.c().a((FluidType) this.b) ? VoxelShapes.b() : (VoxelShape) this.o.computeIfAbsent(iblockdata, (iblockdata1) -> { // CraftBukkit - decompile errors
|
||||
+ Fluid fluid1 = iblockdata1.s();
|
||||
|
||||
- return VoxelShapes.create(0.0D, 0.0D, 0.0D, 1.0D, (double) fluid.getHeight(), 1.0D);
|
||||
+ return VoxelShapes.create(0.0D, 0.0D, 0.0D, 1.0D, (double) fluid1.getHeight(), 1.0D);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -117,14 +117,20 @@
|
||||
@@ -116,14 +116,20 @@
|
||||
Fluid fluid = world.getFluid(blockposition);
|
||||
|
||||
if (fluid.d()) {
|
||||
|
@ -21,7 +21,7 @@
|
||||
}
|
||||
|
||||
@@ -66,8 +70,10 @@
|
||||
WorldGenerator worldgenerator = null;
|
||||
WorldGenerator<WorldGenFeatureEmptyConfiguration> worldgenerator = null;
|
||||
|
||||
if (this == Blocks.BROWN_MUSHROOM) {
|
||||
+ BlockSapling.treeType = TreeType.BROWN_MUSHROOM; // CraftBukkit
|
||||
|
@ -1,8 +1,8 @@
|
||||
--- a/net/minecraft/server/BlockPiston.java
|
||||
+++ b/net/minecraft/server/BlockPiston.java
|
||||
@@ -7,6 +7,18 @@
|
||||
import java.util.Iterator;
|
||||
@@ -6,6 +6,18 @@
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
+// CraftBukkit start
|
||||
+import java.util.AbstractList;
|
||||
@ -19,7 +19,7 @@
|
||||
public class BlockPiston extends BlockDirectional {
|
||||
|
||||
public static final BlockStateBoolean EXTENDED = BlockProperties.f;
|
||||
@@ -106,6 +118,18 @@
|
||||
@@ -105,6 +117,18 @@
|
||||
}
|
||||
}
|
||||
|
||||
@ -38,10 +38,10 @@
|
||||
world.playBlockAction(blockposition, this, b0, enumdirection.a());
|
||||
}
|
||||
|
||||
@@ -278,6 +302,48 @@
|
||||
@@ -277,6 +301,48 @@
|
||||
IBlockData[] aiblockdata = new IBlockData[j];
|
||||
EnumDirection enumdirection1 = flag ? enumdirection : enumdirection.opposite();
|
||||
HashSet hashset = Sets.newHashSet(list);
|
||||
Set<BlockPosition> set = Sets.newHashSet(list);
|
||||
+ // CraftBukkit start
|
||||
+ final org.bukkit.block.Block bblock = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ());
|
||||
+
|
||||
|
@ -1,7 +1,7 @@
|
||||
--- a/net/minecraft/server/BlockRedstoneComparator.java
|
||||
+++ b/net/minecraft/server/BlockRedstoneComparator.java
|
||||
@@ -5,6 +5,8 @@
|
||||
import java.util.function.Predicate;
|
||||
@@ -4,6 +4,8 @@
|
||||
import java.util.Random;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
+import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
|
||||
@ -9,17 +9,17 @@
|
||||
public class BlockRedstoneComparator extends BlockDiodeAbstract implements ITileEntity {
|
||||
|
||||
public static final BlockStateEnum<BlockPropertyComparatorMode> MODE = BlockProperties.aq;
|
||||
@@ -65,7 +67,8 @@
|
||||
@@ -64,7 +66,8 @@
|
||||
|
||||
@Nullable
|
||||
private EntityItemFrame a(World world, EnumDirection enumdirection, BlockPosition blockposition) {
|
||||
- List list = world.a(EntityItemFrame.class, new AxisAlignedBB((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ(), (double) (blockposition.getX() + 1), (double) (blockposition.getY() + 1), (double) (blockposition.getZ() + 1)), (entityitemframe) -> {
|
||||
- List<EntityItemFrame> list = world.a(EntityItemFrame.class, new AxisAlignedBB((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ(), (double) (blockposition.getX() + 1), (double) (blockposition.getY() + 1), (double) (blockposition.getZ() + 1)), (entityitemframe) -> {
|
||||
+ // CraftBukkit - decompile error
|
||||
+ List list = world.a(EntityItemFrame.class, new AxisAlignedBB((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ(), (double) (blockposition.getX() + 1), (double) (blockposition.getY() + 1), (double) (blockposition.getZ() + 1)), (Predicate<EntityItemFrame>) (entityitemframe) -> {
|
||||
+ List<EntityItemFrame> list = world.a(EntityItemFrame.class, new AxisAlignedBB((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ(), (double) (blockposition.getX() + 1), (double) (blockposition.getY() + 1), (double) (blockposition.getZ() + 1)), (java.util.function.Predicate<EntityItemFrame>) (entityitemframe) -> {
|
||||
return entityitemframe != null && entityitemframe.getDirection() == enumdirection;
|
||||
});
|
||||
|
||||
@@ -118,8 +121,18 @@
|
||||
@@ -117,8 +120,18 @@
|
||||
boolean flag1 = (Boolean) iblockdata.get(BlockRedstoneComparator.c);
|
||||
|
||||
if (flag1 && !flag) {
|
||||
|
@ -50,12 +50,3 @@
|
||||
world.setTypeAndData(blockposition, (IBlockData) iblockdata.set(BlockRedstoneTorch.LIT, true), 3);
|
||||
}
|
||||
|
||||
@@ -112,7 +139,7 @@
|
||||
}
|
||||
|
||||
private static boolean a(World world, BlockPosition blockposition, boolean flag) {
|
||||
- Object object = (List) BlockRedstoneTorch.b.get(world);
|
||||
+ List<RedstoneUpdateInfo> object = (List) BlockRedstoneTorch.b.get(world); // CraftBukkit - decompile error
|
||||
|
||||
if (object == null) {
|
||||
object = Lists.newArrayList();
|
||||
|
@ -3,7 +3,7 @@
|
||||
@@ -2,6 +2,12 @@
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Queue;
|
||||
+// CraftBukkit start
|
||||
+import java.util.List;
|
||||
+import org.bukkit.craftbukkit.block.CraftBlockState;
|
||||
@ -15,28 +15,28 @@
|
||||
|
||||
@@ -33,6 +39,7 @@
|
||||
|
||||
linkedlist.add(new Tuple(blockposition, 0));
|
||||
queue.add(new Tuple<>(blockposition, 0));
|
||||
int i = 0;
|
||||
+ BlockStateListPopulator blockList = new BlockStateListPopulator(world); // CraftBukkit - Use BlockStateListPopulator
|
||||
|
||||
while (!linkedlist.isEmpty()) {
|
||||
Tuple tuple = (Tuple) linkedlist.poll();
|
||||
while (!queue.isEmpty()) {
|
||||
Tuple<BlockPosition, Integer> tuple = (Tuple) queue.poll();
|
||||
@@ -49,20 +56,20 @@
|
||||
Material material = iblockdata.getMaterial();
|
||||
|
||||
if (fluid.a(TagsFluid.WATER)) {
|
||||
- if (iblockdata.getBlock() instanceof IFluidSource && ((IFluidSource) iblockdata.getBlock()).a(world, blockposition2, iblockdata) != FluidTypes.a) {
|
||||
+ if (iblockdata.getBlock() instanceof IFluidSource && ((IFluidSource) iblockdata.getBlock()).a(blockList, blockposition2, iblockdata) != FluidTypes.a) { // CraftBukkit
|
||||
- if (iblockdata.getBlock() instanceof IFluidSource && ((IFluidSource) iblockdata.getBlock()).removeFluid(world, blockposition2, iblockdata) != FluidTypes.EMPTY) {
|
||||
+ if (iblockdata.getBlock() instanceof IFluidSource && ((IFluidSource) iblockdata.getBlock()).removeFluid(blockList, blockposition2, iblockdata) != FluidTypes.EMPTY) { // CraftBukkit
|
||||
++i;
|
||||
if (j < 6) {
|
||||
linkedlist.add(new Tuple(blockposition2, j + 1));
|
||||
queue.add(new Tuple<>(blockposition2, j + 1));
|
||||
}
|
||||
} else if (iblockdata.getBlock() instanceof BlockFluids) {
|
||||
- world.setTypeAndData(blockposition2, Blocks.AIR.getBlockData(), 3);
|
||||
+ blockList.setTypeAndData(blockposition2, Blocks.AIR.getBlockData(), 3); // CraftBukkit
|
||||
++i;
|
||||
if (j < 6) {
|
||||
linkedlist.add(new Tuple(blockposition2, j + 1));
|
||||
queue.add(new Tuple<>(blockposition2, j + 1));
|
||||
}
|
||||
} else if (material == Material.WATER_PLANT || material == Material.REPLACEABLE_WATER_PLANT) {
|
||||
- iblockdata.a(world, blockposition2, 0);
|
||||
@ -45,7 +45,7 @@
|
||||
+ blockList.setTypeAndData(blockposition2, Blocks.AIR.getBlockData(), 3); // CraftBukkit
|
||||
++i;
|
||||
if (j < 6) {
|
||||
linkedlist.add(new Tuple(blockposition2, j + 1));
|
||||
queue.add(new Tuple<>(blockposition2, j + 1));
|
||||
@@ -75,6 +82,37 @@
|
||||
break;
|
||||
}
|
||||
@ -69,7 +69,7 @@
|
||||
+ Material material = iblockdata.getMaterial();
|
||||
+
|
||||
+ if (fluid.a(TagsFluid.WATER)) {
|
||||
+ if (iblockdata.getBlock() instanceof IFluidSource && ((IFluidSource) iblockdata.getBlock()).a(blockList, blockposition2, iblockdata) != FluidTypes.a) {
|
||||
+ if (iblockdata.getBlock() instanceof IFluidSource && ((IFluidSource) iblockdata.getBlock()).removeFluid(blockList, blockposition2, iblockdata) != FluidTypes.EMPTY) {
|
||||
+ // NOP
|
||||
+ } else if (iblockdata.getBlock() instanceof BlockFluids) {
|
||||
+ // NOP
|
||||
|
@ -1,7 +1,7 @@
|
||||
--- a/net/minecraft/server/BlockVine.java
|
||||
+++ b/net/minecraft/server/BlockVine.java
|
||||
@@ -7,6 +7,8 @@
|
||||
import java.util.function.Predicate;
|
||||
@@ -6,6 +6,8 @@
|
||||
import java.util.Map.Entry;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
+import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
|
||||
@ -9,7 +9,7 @@
|
||||
public class BlockVine extends Block {
|
||||
|
||||
public static final BlockStateBoolean UP = BlockSprawling.p;
|
||||
@@ -183,20 +185,24 @@
|
||||
@@ -182,20 +184,24 @@
|
||||
BlockPosition blockposition3 = blockposition2.shift(enumdirection1);
|
||||
BlockPosition blockposition4 = blockposition2.shift(enumdirection2);
|
||||
|
||||
@ -39,7 +39,7 @@
|
||||
}
|
||||
} else if (this.b((IBlockAccess) world, blockposition2, enumdirection)) {
|
||||
world.setTypeAndData(blockposition, (IBlockData) iblockdata.set(getDirection(enumdirection), true), 2);
|
||||
@@ -226,7 +232,7 @@
|
||||
@@ -225,7 +231,7 @@
|
||||
}
|
||||
|
||||
if (this.x(iblockdata3)) {
|
||||
@ -48,7 +48,7 @@
|
||||
}
|
||||
|
||||
return;
|
||||
@@ -241,7 +247,7 @@
|
||||
@@ -240,7 +246,7 @@
|
||||
IBlockData iblockdata5 = this.a(iblockdata, iblockdata4, random);
|
||||
|
||||
if (iblockdata4 != iblockdata5 && this.x(iblockdata5)) {
|
||||
|
@ -1,8 +1,8 @@
|
||||
--- a/net/minecraft/server/BossBattleCustom.java
|
||||
+++ b/net/minecraft/server/BossBattleCustom.java
|
||||
@@ -8,12 +8,27 @@
|
||||
@@ -6,12 +6,27 @@
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
+// CraftBukkit start
|
||||
+import org.bukkit.boss.KeyedBossBar;
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/Chunk.java
|
||||
+++ b/net/minecraft/server/Chunk.java
|
||||
@@ -22,6 +22,13 @@
|
||||
@@ -21,6 +21,13 @@
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
public class Chunk implements IChunkAccess {
|
||||
|
||||
private static final Logger d = LogManager.getLogger();
|
||||
@@ -57,6 +64,35 @@
|
||||
@@ -56,6 +63,35 @@
|
||||
private final AtomicInteger E;
|
||||
private final ChunkCoordIntPair F;
|
||||
|
||||
@ -50,7 +50,7 @@
|
||||
public Chunk(World world, int i, int j, BiomeBase[] abiomebase, ChunkConverter chunkconverter, TickList<Block> ticklist, TickList<FluidType> ticklist1, long k) {
|
||||
this.sections = new ChunkSection[16];
|
||||
this.g = new boolean[256];
|
||||
@@ -95,8 +131,16 @@
|
||||
@@ -94,8 +130,16 @@
|
||||
this.s = ticklist;
|
||||
this.t = ticklist1;
|
||||
this.z = k;
|
||||
@ -67,17 +67,7 @@
|
||||
public Chunk(World world, ProtoChunk protochunk, int i, int j) {
|
||||
this(world, i, j, protochunk.getBiomeIndex(), protochunk.v(), protochunk.k(), protochunk.l(), protochunk.m());
|
||||
|
||||
@@ -136,14 +180,15 @@
|
||||
HeightMap.Type heightmap_type = (HeightMap.Type) iterator.next();
|
||||
|
||||
if (heightmap_type.c() == HeightMap.Use.LIVE_WORLD) {
|
||||
- ((HeightMap) this.heightMap.computeIfAbsent(heightmap_type, (heightmap_type) -> {
|
||||
- return new HeightMap(this, heightmap_type);
|
||||
+ ((HeightMap) this.heightMap.computeIfAbsent(heightmap_type, (heightmap_type1) -> { // CraftBukkit - decompile error
|
||||
+ return new HeightMap(this, heightmap_type1); // CraftBukkit - decompile error
|
||||
})).a(protochunk.b(heightmap_type).b());
|
||||
}
|
||||
}
|
||||
@@ -143,6 +187,7 @@
|
||||
|
||||
this.x = true;
|
||||
this.a(ChunkStatus.FULLCHUNK);
|
||||
@ -85,7 +75,7 @@
|
||||
}
|
||||
|
||||
public Set<BlockPosition> t() {
|
||||
@@ -413,8 +458,15 @@
|
||||
@@ -412,8 +457,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
@ -101,7 +91,7 @@
|
||||
int i = blockposition.getX() & 15;
|
||||
int j = blockposition.getY();
|
||||
int k = blockposition.getZ() & 15;
|
||||
@@ -474,7 +526,8 @@
|
||||
@@ -473,7 +525,8 @@
|
||||
}
|
||||
}
|
||||
|
||||
@ -111,7 +101,7 @@
|
||||
iblockdata.onPlace(this.world, blockposition, iblockdata1);
|
||||
}
|
||||
|
||||
@@ -654,7 +707,12 @@
|
||||
@@ -653,7 +706,12 @@
|
||||
|
||||
@Nullable
|
||||
public TileEntity a(BlockPosition blockposition, Chunk.EnumTileEntityState chunk_enumtileentitystate) {
|
||||
@ -125,7 +115,7 @@
|
||||
|
||||
if (tileentity == null) {
|
||||
NBTTagCompound nbttagcompound = (NBTTagCompound) this.h.remove(blockposition);
|
||||
@@ -701,6 +759,13 @@
|
||||
@@ -700,6 +758,13 @@
|
||||
|
||||
tileentity.z();
|
||||
this.tileEntities.put(blockposition.h(), tileentity);
|
||||
@ -139,14 +129,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -726,13 +791,55 @@
|
||||
int i = aentityslice.length;
|
||||
|
||||
@@ -727,11 +792,53 @@
|
||||
for (int j = 0; j < i; ++j) {
|
||||
- EntitySlice entityslice = aentityslice[j];
|
||||
+ // CraftBukkit start
|
||||
+ EntitySlice<Entity> entityslice = aentityslice[j];
|
||||
EntitySlice<Entity> entityslice = aentityslice[j];
|
||||
|
||||
+ // CraftBukkit start
|
||||
+ List<Entity> toRemove = new LinkedList<>();
|
||||
this.world.a(entityslice.stream().filter((entity) -> {
|
||||
+ if (this.needsDecoration && !CraftEventFactory.doEntityAddEventCalling(this.world, entity, CreatureSpawnEvent.SpawnReason.CHUNK_GEN)) { // Only call for new chunks
|
||||
@ -196,11 +183,11 @@
|
||||
}
|
||||
|
||||
public void removeEntities() {
|
||||
@@ -749,9 +856,21 @@
|
||||
@@ -748,9 +855,21 @@
|
||||
int i = aentityslice.length;
|
||||
|
||||
for (int j = 0; j < i; ++j) {
|
||||
- EntitySlice entityslice = aentityslice[j];
|
||||
- EntitySlice<Entity> entityslice = aentityslice[j];
|
||||
+ // CraftBukkit start
|
||||
+ List<Entity> newList = Lists.newArrayList(aentityslice[j]);
|
||||
+ java.util.Iterator<Entity> iter = newList.iterator();
|
||||
@ -220,49 +207,28 @@
|
||||
}
|
||||
|
||||
}
|
||||
@@ -813,8 +932,8 @@
|
||||
@@ -810,7 +929,7 @@
|
||||
Iterator iterator = this.entitySlices[k].c(oclass).iterator();
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
Entity entity = (Entity) iterator.next();
|
||||
- T t0 = (Entity) iterator.next();
|
||||
+ T t0 = (T) iterator.next(); // CraftBukkit - decompile error
|
||||
|
||||
- if (entity.getBoundingBox().c(axisalignedbb) && (predicate == null || predicate.test(entity))) {
|
||||
- list.add(entity);
|
||||
+ if (entity.getBoundingBox().c(axisalignedbb) && (predicate == null || predicate.test((T) entity))) { // CraftBukkit - fix decompile error
|
||||
+ list.add((T) entity); // Fix decompile error
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1020,13 +1139,13 @@
|
||||
|
||||
@Nullable
|
||||
public LongSet b(String s) {
|
||||
- return (LongSet) this.q.computeIfAbsent(s, (s) -> {
|
||||
+ return (LongSet) this.q.computeIfAbsent(s, (s1) -> { // CraftBukkit - decompile error
|
||||
return new LongOpenHashSet();
|
||||
});
|
||||
}
|
||||
|
||||
public void a(String s, long i) {
|
||||
- ((LongSet) this.q.computeIfAbsent(s, (s) -> {
|
||||
+ ((LongSet) this.q.computeIfAbsent(s, (s1) -> { // CraftBukkit - decompile error
|
||||
return new LongOpenHashSet();
|
||||
})).add(i);
|
||||
}
|
||||
@@ -1074,14 +1193,14 @@
|
||||
if (t0.getBoundingBox().c(axisalignedbb) && (predicate == null || predicate.test(t0))) {
|
||||
list.add(t0);
|
||||
@@ -1073,13 +1192,13 @@
|
||||
}
|
||||
|
||||
if (this.s instanceof ProtoChunkTickList) {
|
||||
- ((ProtoChunkTickList) this.s).a(this.world.getBlockTickList(), (blockposition) -> {
|
||||
- return this.world.getType(blockposition).getBlock();
|
||||
- ((ProtoChunkTickList) this.s).a(this.world.getBlockTickList(), (blockposition1) -> {
|
||||
+ ((ProtoChunkTickList<Block>) this.s).a(this.world.getBlockTickList(), (blockposition1) -> { // CraftBukkit - decompile error
|
||||
+ return this.world.getType(blockposition1).getBlock();
|
||||
return this.world.getType(blockposition1).getBlock();
|
||||
});
|
||||
}
|
||||
|
||||
if (this.t instanceof ProtoChunkTickList) {
|
||||
- ((ProtoChunkTickList) this.t).a(this.world.getFluidTickList(), (blockposition) -> {
|
||||
- return this.world.getFluid(blockposition).c();
|
||||
- ((ProtoChunkTickList) this.t).a(this.world.getFluidTickList(), (blockposition1) -> {
|
||||
+ ((ProtoChunkTickList<FluidType>) this.t).a(this.world.getFluidTickList(), (blockposition1) -> { // CraftBukkit - decompile error
|
||||
+ return this.world.getFluid(blockposition1).c();
|
||||
return this.world.getFluid(blockposition1).c();
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/ChunkProviderServer.java
|
||||
+++ b/net/minecraft/server/ChunkProviderServer.java
|
||||
@@ -18,6 +18,11 @@
|
||||
@@ -16,6 +16,11 @@
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
@ -12,39 +12,16 @@
|
||||
public class ChunkProviderServer implements IChunkProvider {
|
||||
|
||||
private static final Logger a = LogManager.getLogger();
|
||||
@@ -36,7 +41,7 @@
|
||||
@@ -34,7 +39,7 @@
|
||||
this.chunkLoader = ichunkloader;
|
||||
this.chunkGenerator = chunkgenerator;
|
||||
this.asyncTaskHandler = iasynctaskhandler;
|
||||
- this.chunkScheduler = new ChunkTaskScheduler(2, worldserver, chunkgenerator, ichunkloader, iasynctaskhandler);
|
||||
+ this.chunkScheduler = new ChunkTaskScheduler(0, worldserver, chunkgenerator, ichunkloader, iasynctaskhandler); // CraftBukkit - very buggy, broken in lots of __subtle__ ways. Same goes for async chunk loading. Also Bukkit API / plugins can't handle async events at all anyway.
|
||||
this.batchScheduler = new SchedulerBatch(this.chunkScheduler);
|
||||
this.batchScheduler = new SchedulerBatch<>(this.chunkScheduler);
|
||||
}
|
||||
|
||||
@@ -86,9 +91,10 @@
|
||||
|
||||
if (flag) {
|
||||
try {
|
||||
- chunk = this.chunkLoader.a(this.world, i, j, (chunk) -> {
|
||||
- chunk.setLastSaved(this.world.getTime());
|
||||
- this.chunks.put(ChunkCoordIntPair.a(i, j), chunk);
|
||||
+ // CraftBukkit - decompile error
|
||||
+ chunk = this.chunkLoader.a(this.world, i, j, (chunk1) -> {
|
||||
+ chunk1.setLastSaved(this.world.getTime());
|
||||
+ this.chunks.put(ChunkCoordIntPair.a(i, j), chunk1);
|
||||
});
|
||||
} catch (Exception exception) {
|
||||
ChunkProviderServer.a.error("Couldn't load chunk", exception);
|
||||
@@ -103,7 +109,7 @@
|
||||
try {
|
||||
this.batchScheduler.b();
|
||||
this.batchScheduler.a(new ChunkCoordIntPair(i, j));
|
||||
- CompletableFuture completablefuture = this.batchScheduler.c();
|
||||
+ CompletableFuture<ProtoChunk> completablefuture = this.batchScheduler.c(); // CraftBukkit - decompile error
|
||||
|
||||
return (Chunk) completablefuture.thenApply(this::a).join();
|
||||
} catch (RuntimeException runtimeexception) {
|
||||
@@ -114,6 +120,22 @@
|
||||
@@ -112,6 +117,22 @@
|
||||
}
|
||||
}
|
||||
|
||||
@ -67,7 +44,7 @@
|
||||
public IChunkAccess a(int i, int j, boolean flag) {
|
||||
Chunk chunk = this.getChunkAt(i, j, true, false);
|
||||
|
||||
@@ -251,10 +273,12 @@
|
||||
@@ -249,10 +270,12 @@
|
||||
Chunk chunk = (Chunk) this.chunks.get(olong);
|
||||
|
||||
if (chunk != null) {
|
||||
@ -84,7 +61,7 @@
|
||||
++i;
|
||||
}
|
||||
}
|
||||
@@ -267,6 +291,42 @@
|
||||
@@ -265,6 +288,42 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/ChunkRegionLoader.java
|
||||
+++ b/net/minecraft/server/ChunkRegionLoader.java
|
||||
@@ -31,7 +31,7 @@
|
||||
@@ -29,7 +29,7 @@
|
||||
private final File c;
|
||||
private final DataFixer d;
|
||||
private PersistentStructureLegacy e;
|
||||
@ -9,7 +9,7 @@
|
||||
|
||||
public ChunkRegionLoader(File file, DataFixer datafixer) {
|
||||
this.c = file;
|
||||
@@ -40,25 +40,64 @@
|
||||
@@ -38,25 +38,64 @@
|
||||
|
||||
@Nullable
|
||||
private NBTTagCompound a(GeneratorAccess generatoraccess, int i, int j) throws IOException {
|
||||
@ -81,7 +81,7 @@
|
||||
|
||||
if (k < 1493) {
|
||||
nbttagcompound1 = GameProfileSerializer.a(this.d, DataFixTypes.CHUNK, nbttagcompound1, k, 1493);
|
||||
@@ -86,13 +125,29 @@
|
||||
@@ -84,13 +123,29 @@
|
||||
|
||||
}
|
||||
|
||||
@ -111,7 +111,7 @@
|
||||
Chunk chunk = this.a(generatoraccess, i, j, nbttagcompound);
|
||||
|
||||
if (chunk != null) {
|
||||
@@ -101,6 +156,9 @@
|
||||
@@ -99,6 +154,9 @@
|
||||
}
|
||||
|
||||
return chunk;
|
||||
@ -121,7 +121,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,7 +190,7 @@
|
||||
@@ -130,7 +188,7 @@
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@ -130,7 +130,7 @@
|
||||
if (nbttagcompound.hasKeyOfType("Level", 10) && nbttagcompound.getCompound("Level").hasKeyOfType("Status", 8)) {
|
||||
ChunkStatus.Type chunkstatus_type = this.a(nbttagcompound);
|
||||
|
||||
@@ -151,10 +209,28 @@
|
||||
@@ -149,10 +207,28 @@
|
||||
ChunkRegionLoader.a.error("Chunk file at {},{} is in the wrong location; relocating. (Expected {}, {}, got {}, {})", i, j, i, j, chunk.locX, chunk.locZ);
|
||||
nbttagcompound1.setInt("xPos", i);
|
||||
nbttagcompound1.setInt("zPos", j);
|
||||
@ -160,7 +160,7 @@
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -169,7 +245,7 @@
|
||||
@@ -167,7 +243,7 @@
|
||||
ChunkStatus.Type chunkstatus_type = this.a(nbttagcompound);
|
||||
|
||||
if (chunkstatus_type == ChunkStatus.Type.LEVELCHUNK) {
|
||||
@ -169,24 +169,24 @@
|
||||
} else {
|
||||
NBTTagCompound nbttagcompound1 = nbttagcompound.getCompound("Level");
|
||||
|
||||
@@ -217,10 +293,14 @@
|
||||
@@ -215,10 +291,15 @@
|
||||
}
|
||||
|
||||
public boolean a() {
|
||||
- Iterator iterator = this.b.entrySet().iterator();
|
||||
+ // CraftBukkit start
|
||||
+ return this.processSaveQueueEntry(false);
|
||||
+ }
|
||||
|
||||
+
|
||||
+ private boolean processSaveQueueEntry(boolean logCompletion) {
|
||||
+ Iterator iterator = this.b.entrySet().iterator();
|
||||
Iterator<Entry<ChunkCoordIntPair, NBTTagCompound>> iterator = this.b.entrySet().iterator();
|
||||
|
||||
if (!iterator.hasNext()) {
|
||||
- if (this.f) {
|
||||
+ if (logCompletion) { // CraftBukkit
|
||||
ChunkRegionLoader.a.info("ThreadedAnvilChunkStorage ({}): All chunks are saved", this.c.getName());
|
||||
}
|
||||
|
||||
@@ -236,10 +316,14 @@
|
||||
@@ -234,10 +315,14 @@
|
||||
return true;
|
||||
} else {
|
||||
try {
|
||||
@ -202,7 +202,7 @@
|
||||
if (this.e != null) {
|
||||
this.e.a(chunkcoordintpair.a());
|
||||
}
|
||||
@@ -266,15 +350,16 @@
|
||||
@@ -264,15 +349,16 @@
|
||||
|
||||
public void b() {
|
||||
try {
|
||||
@ -222,7 +222,7 @@
|
||||
}
|
||||
|
||||
}
|
||||
@@ -303,7 +388,7 @@
|
||||
@@ -301,7 +387,7 @@
|
||||
|
||||
if (abiomebase != null) {
|
||||
for (int k = 0; k < abiomebase.length; ++k) {
|
||||
@ -231,7 +231,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -385,7 +470,7 @@
|
||||
@@ -383,7 +469,7 @@
|
||||
int[] aint = new int[abiomebase.length];
|
||||
|
||||
for (int i = 0; i < abiomebase.length; ++i) {
|
||||
@ -240,41 +240,7 @@
|
||||
}
|
||||
|
||||
nbttagcompound.setIntArray("Biomes", aint);
|
||||
@@ -487,27 +572,27 @@
|
||||
}
|
||||
|
||||
ChunkConverter chunkconverter = nbttagcompound.hasKeyOfType("UpgradeData", 10) ? new ChunkConverter(nbttagcompound.getCompound("UpgradeData")) : ChunkConverter.a;
|
||||
- Predicate predicate = (block) -> {
|
||||
+ Predicate<Block> predicate = (block) -> { // CraftBukkit - decompile error
|
||||
return block.getBlockData().isAir();
|
||||
};
|
||||
IRegistry iregistry = IRegistry.BLOCK;
|
||||
|
||||
IRegistry.BLOCK.getClass();
|
||||
Function function = iregistry::getKey;
|
||||
- IRegistry iregistry1 = IRegistry.BLOCK;
|
||||
+ IRegistry<Block> iregistry1 = IRegistry.BLOCK; // CraftBukkit - decompile error
|
||||
|
||||
IRegistry.BLOCK.getClass();
|
||||
- ProtoChunkTickList protochunkticklist = new ProtoChunkTickList(predicate, function, iregistry1::getOrDefault, new ChunkCoordIntPair(i, j));
|
||||
+ ProtoChunkTickList protochunkticklist = new ProtoChunkTickList<>(predicate, function, iregistry1::getOrDefault, new ChunkCoordIntPair(i, j)); // CraftBukkit - decompile error
|
||||
|
||||
- predicate = (fluidtype) -> {
|
||||
+ Predicate<FluidType> predicate1 = (fluidtype) -> { // CraftBukkit - decompile error
|
||||
return fluidtype == FluidTypes.a;
|
||||
};
|
||||
iregistry = IRegistry.FLUID;
|
||||
IRegistry.FLUID.getClass();
|
||||
function = iregistry::getKey;
|
||||
- iregistry1 = IRegistry.FLUID;
|
||||
+ IRegistry<FluidType> iregistry2 = IRegistry.FLUID; // CraftBukkit - decompile error
|
||||
IRegistry.FLUID.getClass();
|
||||
- ProtoChunkTickList protochunkticklist1 = new ProtoChunkTickList(predicate, function, iregistry1::getOrDefault, new ChunkCoordIntPair(i, j));
|
||||
+ ProtoChunkTickList protochunkticklist1 = new ProtoChunkTickList<>(predicate1, function, iregistry2::getOrDefault, new ChunkCoordIntPair(i, j)); // CraftBukkit - decompile error
|
||||
long i1 = nbttagcompound.getLong("InhabitedTime");
|
||||
Chunk chunk = new Chunk(generatoraccess.getMinecraftWorld(), i, j, abiomebase, chunkconverter, protochunkticklist, protochunkticklist1, i1);
|
||||
|
||||
@@ -850,17 +935,29 @@
|
||||
@@ -833,17 +919,29 @@
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@ -306,7 +272,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
@@ -874,8 +971,14 @@
|
||||
@@ -857,8 +955,14 @@
|
||||
}
|
||||
}
|
||||
|
||||
@ -322,7 +288,7 @@
|
||||
Iterator iterator = entity.bP().iterator();
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
@@ -891,7 +994,7 @@
|
||||
@@ -874,7 +978,7 @@
|
||||
boolean flag = false;
|
||||
|
||||
try {
|
||||
|
@ -1,15 +1,6 @@
|
||||
--- a/net/minecraft/server/ChunkTaskScheduler.java
|
||||
+++ b/net/minecraft/server/ChunkTaskScheduler.java
|
||||
@@ -20,7 +20,7 @@
|
||||
private final ChunkGenerator<?> d;
|
||||
private final IChunkLoader e;
|
||||
private final IAsyncTaskHandler f;
|
||||
- private final Long2ObjectMap<Scheduler.a> progressCache = new ExpiringMap(8192, 5000) {
|
||||
+ private final Long2ObjectMap<Scheduler.a> progressCache = new ExpiringMap<Scheduler.a>(8192, 5000) { // CraftBukkit - decompile error
|
||||
protected boolean a(Scheduler.a scheduler_a) {
|
||||
ProtoChunk protochunk = (ProtoChunk) scheduler_a.a();
|
||||
|
||||
@@ -40,6 +40,12 @@
|
||||
@@ -37,6 +37,12 @@
|
||||
this.f = iasynctaskhandler;
|
||||
}
|
||||
|
||||
@ -20,5 +11,5 @@
|
||||
+ // CraftBukkit end
|
||||
+
|
||||
@Nullable
|
||||
protected Scheduler.a a(ChunkCoordIntPair chunkcoordintpair, boolean flag) {
|
||||
protected Scheduler<ChunkCoordIntPair, ChunkStatus, ProtoChunk>.a a(ChunkCoordIntPair chunkcoordintpair, boolean flag) {
|
||||
IChunkLoader ichunkloader = this.e;
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/CommandBlockListenerAbstract.java
|
||||
+++ b/net/minecraft/server/CommandBlockListenerAbstract.java
|
||||
@@ -5,6 +5,7 @@
|
||||
@@ -4,6 +4,7 @@
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import javax.annotation.Nullable;
|
||||
@ -8,7 +8,7 @@
|
||||
|
||||
public abstract class CommandBlockListenerAbstract implements ICommandListener {
|
||||
|
||||
@@ -16,6 +17,10 @@
|
||||
@@ -15,6 +16,10 @@
|
||||
private IChatBaseComponent f;
|
||||
private String g = "";
|
||||
private IChatBaseComponent h = new ChatComponentText("@");
|
||||
@ -19,7 +19,7 @@
|
||||
|
||||
public CommandBlockListenerAbstract() {}
|
||||
|
||||
@@ -103,14 +108,7 @@
|
||||
@@ -102,14 +107,7 @@
|
||||
if (minecraftserver != null && minecraftserver.D() && minecraftserver.getEnableCommandBlock() && !UtilColor.b(this.g)) {
|
||||
try {
|
||||
this.f = null;
|
||||
@ -35,7 +35,7 @@
|
||||
} catch (Throwable throwable) {
|
||||
CrashReport crashreport = CrashReport.a(throwable, "Executing command block");
|
||||
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Command to be executed");
|
||||
@@ -141,6 +139,11 @@
|
||||
@@ -140,6 +138,11 @@
|
||||
}
|
||||
|
||||
public void setName(IChatBaseComponent ichatbasecomponent) {
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/CommandDebug.java
|
||||
+++ b/net/minecraft/server/CommandDebug.java
|
||||
@@ -35,6 +35,14 @@
|
||||
@@ -33,6 +33,14 @@
|
||||
}
|
||||
|
||||
private static int a(CommandListenerWrapper commandlistenerwrapper) throws CommandSyntaxException {
|
||||
@ -15,7 +15,7 @@
|
||||
MinecraftServer minecraftserver = commandlistenerwrapper.getServer();
|
||||
MethodProfiler methodprofiler = minecraftserver.methodProfiler;
|
||||
|
||||
@@ -48,6 +56,14 @@
|
||||
@@ -46,6 +54,14 @@
|
||||
}
|
||||
|
||||
private static int b(CommandListenerWrapper commandlistenerwrapper) throws CommandSyntaxException {
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/CommandDispatcher.java
|
||||
+++ b/net/minecraft/server/CommandDispatcher.java
|
||||
@@ -27,12 +27,21 @@
|
||||
@@ -22,12 +22,21 @@
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
CommandAdvancement.a(this.b);
|
||||
CommandExecute.a(this.b);
|
||||
CommandBossBar.a(this.b);
|
||||
@@ -100,8 +109,13 @@
|
||||
@@ -95,8 +104,13 @@
|
||||
}
|
||||
|
||||
this.b.findAmbiguities((commandnode, commandnode1, commandnode2, collection) -> {
|
||||
@ -35,10 +35,10 @@
|
||||
+
|
||||
+ public CommandDispatcher() {
|
||||
+ // CraftBukkit end
|
||||
this.b.setConsumer((commandcontext, flag, i) -> {
|
||||
((CommandListenerWrapper) commandcontext.getSource()).a(commandcontext, flag, i);
|
||||
this.b.setConsumer((commandcontext, flag1, i) -> {
|
||||
((CommandListenerWrapper) commandcontext.getSource()).a(commandcontext, flag1, i);
|
||||
});
|
||||
@@ -116,7 +130,47 @@
|
||||
@@ -111,7 +125,47 @@
|
||||
|
||||
}
|
||||
|
||||
@ -85,8 +85,8 @@
|
||||
+ // CraftBukkit end
|
||||
StringReader stringreader = new StringReader(s);
|
||||
|
||||
if(stringreader.canRead() && stringreader.peek() == 47) {
|
||||
@@ -128,7 +182,6 @@
|
||||
if (stringreader.canRead() && stringreader.peek() == '/') {
|
||||
@@ -123,7 +177,6 @@
|
||||
byte b0;
|
||||
|
||||
try {
|
||||
@ -94,7 +94,7 @@
|
||||
ChatComponentText chatcomponenttext;
|
||||
|
||||
try {
|
||||
@@ -137,52 +190,56 @@
|
||||
@@ -132,52 +185,56 @@
|
||||
return i;
|
||||
} catch (CommandException commandexception) {
|
||||
commandlistenerwrapper.sendFailureMessage(commandexception.a());
|
||||
@ -104,21 +104,21 @@
|
||||
+ return b0;
|
||||
} catch (CommandSyntaxException commandsyntaxexception) {
|
||||
commandlistenerwrapper.sendFailureMessage(ChatComponentUtils.a(commandsyntaxexception.getRawMessage()));
|
||||
if(commandsyntaxexception.getInput() != null && commandsyntaxexception.getCursor() >= 0) {
|
||||
if (commandsyntaxexception.getInput() != null && commandsyntaxexception.getCursor() >= 0) {
|
||||
int j = Math.min(commandsyntaxexception.getInput().length(), commandsyntaxexception.getCursor());
|
||||
- IChatBaseComponent ichatbasecomponent = (new ChatComponentText("")).a(EnumChatFormat.GRAY).a((chatmodifier) -> {
|
||||
- chatmodifier.setChatClickable(new ChatClickable(ChatClickable.EnumClickAction.SUGGEST_COMMAND, s));
|
||||
- });
|
||||
|
||||
+ chatcomponenttext = new ChatComponentText("");
|
||||
if(j > 10) {
|
||||
if (j > 10) {
|
||||
- ichatbasecomponent.a("...");
|
||||
+ chatcomponenttext.a("...");
|
||||
}
|
||||
|
||||
- ichatbasecomponent.a(commandsyntaxexception.getInput().substring(Math.max(0, j - 10), j));
|
||||
+ chatcomponenttext.a(commandsyntaxexception.getInput().substring(Math.max(0, j - 10), j));
|
||||
if(j < commandsyntaxexception.getInput().length()) {
|
||||
if (j < commandsyntaxexception.getInput().length()) {
|
||||
- IChatBaseComponent ichatbasecomponent1 = (new ChatComponentText(commandsyntaxexception.getInput().substring(j))).a(new EnumChatFormat[]{EnumChatFormat.RED, EnumChatFormat.UNDERLINE});
|
||||
+ ChatComponentText chatcomponenttext1 = new ChatComponentText(commandsyntaxexception.getInput().substring(j));
|
||||
|
||||
@ -147,11 +147,11 @@
|
||||
- chatcomponenttext = new ChatComponentText;
|
||||
- }
|
||||
-
|
||||
- chatcomponenttext.<init>(exception.getMessage() == null?exception.getClass().getName():exception.getMessage());
|
||||
- chatcomponenttext.<init>(exception.getMessage() == null ? exception.getClass().getName() : exception.getMessage());
|
||||
- ChatComponentText chatcomponenttext1 = chatcomponenttext;
|
||||
+ ChatMessage chatmessage1 = new ChatMessage("command.failed", new Object[0]);
|
||||
|
||||
- if(CommandDispatcher.a.isDebugEnabled()) {
|
||||
- if (CommandDispatcher.a.isDebugEnabled()) {
|
||||
- StackTraceElement[] astacktraceelement = exception.getStackTrace();
|
||||
+ chatcomponenttext = new ChatComponentText(exception.getMessage() == null ? exception.getClass().getName() : exception.getMessage());
|
||||
+ if (CommandDispatcher.a.isDebugEnabled()) {
|
||||
@ -166,7 +166,7 @@
|
||||
- }
|
||||
|
||||
- commandlistenerwrapper.sendFailureMessage((new ChatMessage("command.failed", new Object[0])).a((chatmodifier) -> {
|
||||
- chatmodifier.setChatHoverable(new ChatHoverable(ChatHoverable.EnumHoverAction.SHOW_TEXT, ichatbasecomponent));
|
||||
- chatmodifier.setChatHoverable(new ChatHoverable(ChatHoverable.EnumHoverAction.SHOW_TEXT, chatcomponenttext1));
|
||||
- }));
|
||||
- b0 = 0;
|
||||
+ chatmessage1.getChatModifier().setChatHoverable(new ChatHoverable(ChatHoverable.EnumHoverAction.SHOW_TEXT, chatcomponenttext));
|
||||
@ -178,26 +178,25 @@
|
||||
} finally {
|
||||
commandlistenerwrapper.getServer().methodProfiler.exit();
|
||||
}
|
||||
@@ -191,11 +248,36 @@
|
||||
@@ -186,11 +243,36 @@
|
||||
}
|
||||
|
||||
public void a(EntityPlayer entityplayer) {
|
||||
- HashMap hashmap = Maps.newHashMap();
|
||||
- RootCommandNode rootcommandnode = new RootCommandNode();
|
||||
- Map<CommandNode<CommandListenerWrapper>, CommandNode<ICompletionProvider>> map = Maps.newHashMap();
|
||||
+ // CraftBukkit start
|
||||
+ // Register Vanilla commands into builtRoot as before
|
||||
+ Map hashmap = Maps.newIdentityHashMap(); // Use identity to prevent aliasing issues
|
||||
+ Map<CommandNode<CommandListenerWrapper>, CommandNode<ICompletionProvider>> map = Maps.newIdentityHashMap(); // Use identity to prevent aliasing issues
|
||||
+ RootCommandNode vanillaRoot = new RootCommandNode();
|
||||
+
|
||||
+ RootCommandNode<CommandListenerWrapper> vanilla = entityplayer.server.vanillaCommandDispatcher.a().getRoot();
|
||||
+ hashmap.put(vanilla, vanillaRoot);
|
||||
+ this.a(vanilla, vanillaRoot, entityplayer.getCommandListener(), (Map) hashmap);
|
||||
+ map.put(vanilla, vanillaRoot);
|
||||
+ this.a(vanilla, vanillaRoot, entityplayer.getCommandListener(), (Map) map);
|
||||
+
|
||||
+ // Now build the global commands in a second pass
|
||||
+ RootCommandNode<ICompletionProvider> rootcommandnode = new RootCommandNode();
|
||||
RootCommandNode<ICompletionProvider> rootcommandnode = new RootCommandNode();
|
||||
|
||||
hashmap.put(this.b.getRoot(), rootcommandnode);
|
||||
this.a(this.b.getRoot(), rootcommandnode, entityplayer.getCommandListener(), (Map) hashmap);
|
||||
map.put(this.b.getRoot(), rootcommandnode);
|
||||
this.a(this.b.getRoot(), rootcommandnode, entityplayer.getCommandListener(), (Map) map);
|
||||
+
|
||||
+ Collection<String> bukkit = new LinkedHashSet<>();
|
||||
+ for (CommandNode node : rootcommandnode.getChildren()) {
|
||||
@ -217,3 +216,21 @@
|
||||
entityplayer.playerConnection.sendPacket(new PacketPlayOutCommands(rootcommandnode));
|
||||
}
|
||||
|
||||
@@ -201,7 +283,7 @@
|
||||
CommandNode<CommandListenerWrapper> commandnode2 = (CommandNode) iterator.next();
|
||||
|
||||
if (commandnode2.canUse(commandlistenerwrapper)) {
|
||||
- ArgumentBuilder<ICompletionProvider, ?> argumentbuilder = commandnode2.createBuilder();
|
||||
+ ArgumentBuilder argumentbuilder = commandnode2.createBuilder(); // CraftBukkit - decompile error
|
||||
|
||||
argumentbuilder.requires((icompletionprovider) -> {
|
||||
return true;
|
||||
@@ -224,7 +306,7 @@
|
||||
argumentbuilder.redirect((CommandNode) map.get(argumentbuilder.getRedirect()));
|
||||
}
|
||||
|
||||
- CommandNode<ICompletionProvider> commandnode3 = argumentbuilder.build();
|
||||
+ CommandNode commandnode3 = argumentbuilder.build(); // CraftBukkit - decompile error
|
||||
|
||||
map.put(commandnode2, commandnode3);
|
||||
commandnode1.addChild(commandnode3);
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/CommandEffect.java
|
||||
+++ b/net/minecraft/server/CommandEffect.java
|
||||
@@ -62,7 +62,7 @@
|
||||
@@ -60,7 +60,7 @@
|
||||
if (entity instanceof EntityLiving) {
|
||||
MobEffect mobeffect = new MobEffect(mobeffectlist, k, i, false, flag);
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
++j;
|
||||
}
|
||||
}
|
||||
@@ -88,7 +88,7 @@
|
||||
@@ -86,7 +86,7 @@
|
||||
while (iterator.hasNext()) {
|
||||
Entity entity = (Entity) iterator.next();
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
++i;
|
||||
}
|
||||
}
|
||||
@@ -113,7 +113,7 @@
|
||||
@@ -111,7 +111,7 @@
|
||||
while (iterator.hasNext()) {
|
||||
Entity entity = (Entity) iterator.next();
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/CommandForceload.java
|
||||
+++ b/net/minecraft/server/CommandForceload.java
|
||||
@@ -47,7 +47,7 @@
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
private static int a(CommandListenerWrapper commandlistenerwrapper, ArgumentVec2I.a argumentvec2i_a) throws CommandSyntaxException {
|
||||
ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(argumentvec2i_a.a >> 4, argumentvec2i_a.b >> 4);
|
||||
@ -9,7 +9,7 @@
|
||||
boolean flag = commandlistenerwrapper.getServer().getWorldServer(dimensionmanager).isForceLoaded(chunkcoordintpair.x, chunkcoordintpair.z);
|
||||
|
||||
if (flag) {
|
||||
@@ -59,7 +59,7 @@
|
||||
@@ -55,7 +55,7 @@
|
||||
}
|
||||
|
||||
private static int a(CommandListenerWrapper commandlistenerwrapper) {
|
||||
@ -18,7 +18,7 @@
|
||||
LongSet longset = commandlistenerwrapper.getServer().getWorldServer(dimensionmanager).ag();
|
||||
int i = longset.size();
|
||||
|
||||
@@ -79,12 +79,12 @@
|
||||
@@ -75,11 +75,11 @@
|
||||
}
|
||||
|
||||
private static int b(CommandListenerWrapper commandlistenerwrapper) {
|
||||
@ -28,13 +28,11 @@
|
||||
LongSet longset = worldserver.ag();
|
||||
|
||||
- longset.forEach((i) -> {
|
||||
- worldserver.setForceLoaded(ChunkCoordIntPair.a(i), ChunkCoordIntPair.b(i), false);
|
||||
+ longset.forEach((LongConsumer) (ix) -> { // CraftBukkit - decompile error
|
||||
+ worldserver.setForceLoaded(ChunkCoordIntPair.a(ix), ChunkCoordIntPair.b(ix), false); // CraftBukkit - decompile error
|
||||
+ longset.forEach((java.util.function.LongConsumer) (i) -> { // CraftBukkit - decompile error
|
||||
worldserver.setForceLoaded(ChunkCoordIntPair.a(i), ChunkCoordIntPair.b(i), false);
|
||||
});
|
||||
commandlistenerwrapper.sendMessage(new ChatMessage("commands.forceload.removed.all", new Object[] { dimensionmanager}), true);
|
||||
return 0;
|
||||
@@ -106,7 +106,7 @@
|
||||
@@ -102,7 +102,7 @@
|
||||
if (i2 > 256L) {
|
||||
throw CommandForceload.a.create(256, i2);
|
||||
} else {
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/CommandGamemode.java
|
||||
+++ b/net/minecraft/server/CommandGamemode.java
|
||||
@@ -57,6 +57,12 @@
|
||||
@@ -55,6 +55,12 @@
|
||||
|
||||
if (entityplayer.playerInteractManager.getGameMode() != enumgamemode) {
|
||||
entityplayer.a(enumgamemode);
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/CommandGamerule.java
|
||||
+++ b/net/minecraft/server/CommandGamerule.java
|
||||
@@ -29,7 +29,7 @@
|
||||
@@ -27,7 +27,7 @@
|
||||
}
|
||||
|
||||
private static int a(CommandListenerWrapper commandlistenerwrapper, String s, CommandContext<CommandListenerWrapper> commandcontext) {
|
||||
@ -9,7 +9,7 @@
|
||||
|
||||
gamerules_gamerulevalue.getType().a(commandcontext, "value", gamerules_gamerulevalue);
|
||||
commandlistenerwrapper.sendMessage(new ChatMessage("commands.gamerule.set", new Object[] { s, gamerules_gamerulevalue.a()}), true);
|
||||
@@ -37,7 +37,7 @@
|
||||
@@ -35,7 +35,7 @@
|
||||
}
|
||||
|
||||
private static int a(CommandListenerWrapper commandlistenerwrapper, String s) {
|
||||
|
@ -8,18 +8,14 @@
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
@@ -31,9 +32,10 @@
|
||||
@@ -31,6 +32,7 @@
|
||||
private final ResultConsumer<CommandListenerWrapper> l;
|
||||
private final ArgumentAnchor.Anchor m;
|
||||
private final Vec2F n;
|
||||
+ public CommandNode currentCommand; // CraftBukkit
|
||||
|
||||
public CommandListenerWrapper(ICommandListener icommandlistener, Vec3D vec3d, Vec2F vec2f, WorldServer worldserver, int i, String s, IChatBaseComponent ichatbasecomponent, MinecraftServer minecraftserver, @Nullable Entity entity) {
|
||||
- this(icommandlistener, vec3d, vec2f, worldserver, i, s, ichatbasecomponent, minecraftserver, entity, false, (commandcontext, flag, i) -> {
|
||||
+ this(icommandlistener, vec3d, vec2f, worldserver, i, s, ichatbasecomponent, minecraftserver, entity, false, (commandcontext, flag, ix) -> { // CraftBukkit - decompile error
|
||||
}, ArgumentAnchor.Anchor.FEET);
|
||||
}
|
||||
|
||||
this(icommandlistener, vec3d, vec2f, worldserver, i, s, ichatbasecomponent, minecraftserver, entity, false, (commandcontext, flag, j) -> {
|
||||
@@ -119,6 +121,13 @@
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,15 @@
|
||||
--- a/net/minecraft/server/CommandSpreadPlayers.java
|
||||
+++ b/net/minecraft/server/CommandSpreadPlayers.java
|
||||
@@ -269,7 +269,7 @@
|
||||
@@ -58,7 +58,7 @@
|
||||
if (entity instanceof EntityHuman) {
|
||||
set.add(entity.getScoreboardTeam());
|
||||
} else {
|
||||
- set.add((Object) null);
|
||||
+ set.add((ScoreboardTeamBase) null); // CraftBukkit - decompile error
|
||||
}
|
||||
}
|
||||
|
||||
@@ -266,7 +266,7 @@
|
||||
}
|
||||
|
||||
blockposition = blockposition.down();
|
||||
@ -9,7 +18,7 @@
|
||||
|
||||
return blockposition.getY() + 1;
|
||||
}
|
||||
@@ -285,7 +285,7 @@
|
||||
@@ -282,7 +282,7 @@
|
||||
}
|
||||
|
||||
blockposition = blockposition.down();
|
||||
@ -18,7 +27,7 @@
|
||||
} while (iblockdata.isAir());
|
||||
|
||||
Material material = iblockdata.getMaterial();
|
||||
@@ -297,5 +297,12 @@
|
||||
@@ -294,5 +294,12 @@
|
||||
this.a = MathHelper.a(random, d0, d2);
|
||||
this.b = MathHelper.a(random, d1, d3);
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/CommandSummon.java
|
||||
+++ b/net/minecraft/server/CommandSummon.java
|
||||
@@ -32,7 +32,7 @@
|
||||
@@ -30,7 +30,7 @@
|
||||
if (EntityTypes.getName(EntityTypes.LIGHTNING_BOLT).equals(minecraftkey)) {
|
||||
EntityLightning entitylightning = new EntityLightning(commandlistenerwrapper.getWorld(), vec3d.x, vec3d.y, vec3d.z, false);
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
--- a/net/minecraft/server/CommandTeleport.java
|
||||
+++ b/net/minecraft/server/CommandTeleport.java
|
||||
@@ -14,6 +14,11 @@
|
||||
@@ -12,6 +12,11 @@
|
||||
import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
import java.util.function.Predicate;
|
||||
import javax.annotation.Nullable;
|
||||
+// CraftBukkit start
|
||||
+import org.bukkit.Location;
|
||||
@ -12,7 +12,7 @@
|
||||
|
||||
public class CommandTeleport {
|
||||
|
||||
@@ -49,7 +54,7 @@
|
||||
@@ -47,7 +52,7 @@
|
||||
while (iterator.hasNext()) {
|
||||
Entity entity1 = (Entity) iterator.next();
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
}
|
||||
|
||||
if (collection.size() == 1) {
|
||||
@@ -120,9 +125,9 @@
|
||||
@@ -118,9 +123,9 @@
|
||||
}
|
||||
|
||||
if (worldserver == entity.world) {
|
||||
@ -33,7 +33,7 @@
|
||||
}
|
||||
|
||||
entity.setHeadRotation(f);
|
||||
@@ -131,6 +136,21 @@
|
||||
@@ -129,6 +134,21 @@
|
||||
float f3 = MathHelper.g(f1);
|
||||
|
||||
f3 = MathHelper.a(f3, -90.0F, 90.0F);
|
||||
|
@ -117,7 +117,7 @@
|
||||
} else {
|
||||
@@ -176,25 +240,53 @@
|
||||
if (!this.world.isClientSide) {
|
||||
List list = this.a(itemstack, i, this.costs[i]);
|
||||
List<WeightedRandomEnchant> list = this.a(itemstack, i, this.costs[i]);
|
||||
|
||||
- if (!list.isEmpty()) {
|
||||
- entityhuman.enchantDone(itemstack, j);
|
||||
|
@ -26,7 +26,7 @@
|
||||
+ return bukkitEntity = new CraftInventoryView(player.player.getBukkitEntity(), a.getOwner().getInventory(), this);
|
||||
+ }
|
||||
+
|
||||
public ContainerHorse(IInventory iinventory, final IInventory iinventory1, final EntityHorseAbstract entityhorseabstract, EntityHuman entityhuman) {
|
||||
public ContainerHorse(IInventory iinventory, IInventory iinventory1, final EntityHorseAbstract entityhorseabstract, EntityHuman entityhuman) {
|
||||
+ player = (PlayerInventory) iinventory;
|
||||
+ // CraftBukkit end
|
||||
this.a = iinventory1;
|
||||
|
@ -20,7 +20,7 @@
|
||||
+ private PlayerInventory player;
|
||||
+ // CraftBukkit end
|
||||
|
||||
public ContainerPlayer(final PlayerInventory playerinventory, boolean flag, EntityHuman entityhuman) {
|
||||
public ContainerPlayer(PlayerInventory playerinventory, boolean flag, EntityHuman entityhuman) {
|
||||
this.g = flag;
|
||||
this.owner = entityhuman;
|
||||
+ // CraftBukkit start
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/CraftingManager.java
|
||||
+++ b/net/minecraft/server/CraftingManager.java
|
||||
@@ -96,12 +96,14 @@
|
||||
@@ -95,12 +95,14 @@
|
||||
|
||||
do {
|
||||
if (!iterator.hasNext()) {
|
||||
@ -15,7 +15,7 @@
|
||||
return irecipe.craftItem(iinventory);
|
||||
}
|
||||
|
||||
@@ -113,12 +115,14 @@
|
||||
@@ -112,12 +114,14 @@
|
||||
|
||||
do {
|
||||
if (!iterator.hasNext()) {
|
||||
|
@ -2,7 +2,7 @@
|
||||
+++ b/net/minecraft/server/CrashReport.java
|
||||
@@ -63,6 +63,7 @@
|
||||
|
||||
return String.format("%d total; %s", new Object[] { list.size(), list.stream().collect(Collectors.joining(" "))});
|
||||
return String.format("%d total; %s", list.size(), list.stream().collect(Collectors.joining(" ")));
|
||||
});
|
||||
+ this.d.a("CraftBukkit Information", (CrashReportCallable) new org.bukkit.craftbukkit.CraftCrashReport()); // CraftBukkit
|
||||
}
|
||||
|
@ -1,11 +1,11 @@
|
||||
--- a/net/minecraft/server/CustomFunction.java
|
||||
+++ b/net/minecraft/server/CustomFunction.java
|
||||
@@ -48,7 +48,7 @@
|
||||
@@ -47,7 +47,7 @@
|
||||
}
|
||||
|
||||
try {
|
||||
- ParseResults parseresults = customfunctiondata.a().getCommandDispatcher().a().parse(stringreader, customfunctiondata.f());
|
||||
+ ParseResults parseresults = customfunctiondata.d().parse(stringreader, customfunctiondata.f()); // CraftBukkit
|
||||
- ParseResults<CommandListenerWrapper> parseresults = customfunctiondata.a().getCommandDispatcher().a().parse(stringreader, customfunctiondata.f());
|
||||
+ ParseResults<CommandListenerWrapper> parseresults = customfunctiondata.d().parse(stringreader, customfunctiondata.f()); // CraftBukkit
|
||||
|
||||
if (parseresults.getReader().canRead()) {
|
||||
if (parseresults.getExceptions().size() == 1) {
|
||||
|
@ -1,15 +1,6 @@
|
||||
--- a/net/minecraft/server/CustomFunctionData.java
|
||||
+++ b/net/minecraft/server/CustomFunctionData.java
|
||||
@@ -32,7 +32,7 @@
|
||||
private final Map<MinecraftKey, CustomFunction> g = Maps.newHashMap();
|
||||
private final ArrayDeque<CustomFunctionData.a> h = new ArrayDeque();
|
||||
private boolean i;
|
||||
- private final Tags<CustomFunction> j = new Tags((minecraftkey) -> {
|
||||
+ private final Tags<CustomFunction> j = new Tags<>((minecraftkey) -> { // CraftBukkit - decompile error
|
||||
return this.a(minecraftkey) != null;
|
||||
}, this::a, "tags/functions", true, "function");
|
||||
private final List<CustomFunction> k = Lists.newArrayList();
|
||||
@@ -60,7 +60,7 @@
|
||||
@@ -55,7 +55,7 @@
|
||||
}
|
||||
|
||||
public com.mojang.brigadier.CommandDispatcher<CommandListenerWrapper> d() {
|
||||
@ -18,12 +9,3 @@
|
||||
}
|
||||
|
||||
public void tick() {
|
||||
@@ -164,7 +164,7 @@
|
||||
arraylist.add(CompletableFuture.supplyAsync(() -> {
|
||||
return a(iresourcemanager, minecraftkey);
|
||||
}, Resource.a).thenApplyAsync((list) -> {
|
||||
- return CustomFunction.a(minecraftkey, this, list);
|
||||
+ return CustomFunction.a(minecraftkey1, this, list); // CraftBukkit - decompile error
|
||||
}).handle((customfunction, throwable) -> {
|
||||
return this.a(customfunction, throwable, minecraftkey);
|
||||
}));
|
||||
|
@ -1,8 +1,8 @@
|
||||
--- a/net/minecraft/server/DataConverterFlatten.java
|
||||
+++ b/net/minecraft/server/DataConverterFlatten.java
|
||||
@@ -378,7 +378,7 @@
|
||||
Typed typed2 = typed.getOrCreateTyped(opticfinder1);
|
||||
Dynamic dynamic1 = (Dynamic) typed2.get(DSL.remainderFinder());
|
||||
@@ -376,7 +376,7 @@
|
||||
Typed<?> typed2 = typed.getOrCreateTyped(opticfinder1);
|
||||
Dynamic<?> dynamic1 = (Dynamic) typed2.get(DSL.remainderFinder());
|
||||
|
||||
- dynamic1 = dynamic1.set("Damage", dynamic1.createInt(i));
|
||||
+ if (i != 0) dynamic1 = dynamic1.set("Damage", dynamic1.createInt(i)); // CraftBukkit
|
||||
|
@ -1,17 +1,8 @@
|
||||
--- a/net/minecraft/server/DataConverterMap.java
|
||||
+++ b/net/minecraft/server/DataConverterMap.java
|
||||
@@ -22,7 +22,7 @@
|
||||
public TypeRewriteRule makeRule() {
|
||||
Type type = this.getInputSchema().getType(DataConverterTypes.ITEM_STACK);
|
||||
OpticFinder opticfinder = DSL.fieldFinder("id", DSL.named(DataConverterTypes.q.typeName(), DSL.namespacedString()));
|
||||
- OpticFinder opticfinder1 = type.findField("tag");
|
||||
+ OpticFinder<?> opticfinder1 = type.findField("tag"); // CraftBukkit - decompile error
|
||||
|
||||
return this.fixTypeEverywhereTyped("ItemInstanceMapIdFix", type, (typed) -> {
|
||||
Optional optional = typed.getOptional(opticfinder);
|
||||
@@ -32,7 +32,7 @@
|
||||
Typed typed1 = typed.getOrCreateTyped(opticfinder1);
|
||||
Dynamic dynamic1 = (Dynamic) typed1.get(DSL.remainderFinder());
|
||||
@@ -31,7 +31,7 @@
|
||||
Typed<?> typed1 = typed.getOrCreateTyped(opticfinder1);
|
||||
Dynamic<?> dynamic1 = (Dynamic) typed1.get(DSL.remainderFinder());
|
||||
|
||||
- dynamic1 = dynamic1.set("map", dynamic1.createInt(dynamic.getInt("Damage")));
|
||||
+ if (!dynamic1.get("map").isPresent()) dynamic1 = dynamic1.set("map", dynamic1.createInt(dynamic.getInt("Damage"))); // CraftBukkit
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/DataConverterRegistry.java
|
||||
+++ b/net/minecraft/server/DataConverterRegistry.java
|
||||
@@ -21,7 +21,12 @@
|
||||
@@ -20,7 +20,12 @@
|
||||
DataFixerBuilder datafixerbuilder = new DataFixerBuilder(1631);
|
||||
|
||||
a(datafixerbuilder);
|
||||
@ -14,7 +14,7 @@
|
||||
}
|
||||
|
||||
public static DataFixer a() {
|
||||
@@ -185,6 +190,18 @@
|
||||
@@ -184,6 +189,18 @@
|
||||
datafixerbuilder.addFixer(new DataConverterItemFrame(schema46, false));
|
||||
Schema schema47 = datafixerbuilder.addSchema(1458, DataConverterRegistry.b);
|
||||
|
||||
|
@ -1,23 +1,5 @@
|
||||
--- a/net/minecraft/server/DataWatcher.java
|
||||
+++ b/net/minecraft/server/DataWatcher.java
|
||||
@@ -70,7 +70,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
- public <T> void register(DataWatcherObject<T> datawatcherobject, T t0) {
|
||||
+ public <T> void register(DataWatcherObject<T> datawatcherobject, Object t0) { // CraftBukkit T -> Object
|
||||
int i = datawatcherobject.a();
|
||||
|
||||
if (i > 254) {
|
||||
@@ -84,7 +84,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
- private <T> void registerObject(DataWatcherObject<T> datawatcherobject, T t0) {
|
||||
+ private <T> void registerObject(DataWatcherObject<T> datawatcherobject, Object t0) { // CraftBukkit Object
|
||||
DataWatcher.Item datawatcher_item = new DataWatcher.Item(datawatcherobject, t0);
|
||||
|
||||
this.e.writeLock().lock();
|
||||
@@ -128,6 +128,13 @@
|
||||
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/DispenserRegistry.java
|
||||
+++ b/net/minecraft/server/DispenserRegistry.java
|
||||
@@ -8,6 +8,16 @@
|
||||
@@ -7,6 +7,16 @@
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
@ -17,27 +17,9 @@
|
||||
public class DispenserRegistry {
|
||||
|
||||
public static final PrintStream a = System.out;
|
||||
@@ -70,7 +80,7 @@
|
||||
BlockDispenser.a((IMaterial) Items.SPLASH_POTION, new IDispenseBehavior() {
|
||||
public ItemStack dispense(ISourceBlock isourceblock, final ItemStack itemstack) {
|
||||
return (new DispenseBehaviorProjectile() {
|
||||
- protected IProjectile a(World world, IPosition iposition, ItemStack itemstack) {
|
||||
+ protected IProjectile a(World world, IPosition iposition, ItemStack itemstack1) { // CraftBukkit - decompile issue
|
||||
return new EntityPotion(world, iposition.getX(), iposition.getY(), iposition.getZ(), itemstack1.cloneItemStack());
|
||||
}
|
||||
|
||||
@@ -87,7 +97,7 @@
|
||||
BlockDispenser.a((IMaterial) Items.LINGERING_POTION, new IDispenseBehavior() {
|
||||
public ItemStack dispense(ISourceBlock isourceblock, final ItemStack itemstack) {
|
||||
return (new DispenseBehaviorProjectile() {
|
||||
- protected IProjectile a(World world, IPosition iposition, ItemStack itemstack) {
|
||||
+ protected IProjectile a(World world, IPosition iposition, ItemStack itemstack1) { // CraftBukkit - decompile issue
|
||||
return new EntityPotion(world, iposition.getX(), iposition.getY(), iposition.getZ(), itemstack1.cloneItemStack());
|
||||
}
|
||||
|
||||
@@ -106,11 +116,39 @@
|
||||
@@ -105,11 +115,39 @@
|
||||
EnumDirection enumdirection = (EnumDirection) isourceblock.e().get(BlockDispenser.FACING);
|
||||
EntityTypes entitytypes = ((ItemMonsterEgg) itemstack.getItem()).b(itemstack.getTag());
|
||||
EntityTypes<?> entitytypes = ((ItemMonsterEgg) itemstack.getItem()).b(itemstack.getTag());
|
||||
|
||||
+ // CraftBukkit start
|
||||
+ World world = isourceblock.getWorld();
|
||||
@ -76,7 +58,7 @@
|
||||
return itemstack;
|
||||
}
|
||||
};
|
||||
@@ -128,10 +166,39 @@
|
||||
@@ -127,10 +165,39 @@
|
||||
double d0 = isourceblock.getX() + (double) enumdirection.getAdjacentX();
|
||||
double d1 = (double) ((float) isourceblock.getBlockPosition().getY() + 0.2F);
|
||||
double d2 = isourceblock.getZ() + (double) enumdirection.getAdjacentZ();
|
||||
@ -118,7 +100,7 @@
|
||||
return itemstack;
|
||||
}
|
||||
|
||||
@@ -152,8 +219,38 @@
|
||||
@@ -151,8 +218,38 @@
|
||||
double d4 = random.nextGaussian() * 0.05D + (double) enumdirection.getAdjacentY();
|
||||
double d5 = random.nextGaussian() * 0.05D + (double) enumdirection.getAdjacentZ();
|
||||
|
||||
@ -159,7 +141,7 @@
|
||||
return itemstack;
|
||||
}
|
||||
|
||||
@@ -175,9 +272,52 @@
|
||||
@@ -174,9 +271,52 @@
|
||||
BlockPosition blockposition = isourceblock.getBlockPosition().shift((EnumDirection) isourceblock.e().get(BlockDispenser.FACING));
|
||||
World world = isourceblock.getWorld();
|
||||
|
||||
@ -213,12 +195,12 @@
|
||||
} else {
|
||||
return this.a.dispense(isourceblock, itemstack);
|
||||
}
|
||||
@@ -200,13 +340,39 @@
|
||||
@@ -199,13 +339,39 @@
|
||||
Block block = iblockdata.getBlock();
|
||||
|
||||
if (block instanceof IFluidSource) {
|
||||
- FluidType fluidtype = ((IFluidSource) block).a(world, blockposition, iblockdata);
|
||||
+ FluidType fluidtype = ((IFluidSource) block).a(DummyGeneratorAccess.INSTANCE, blockposition, iblockdata); // CraftBukkit
|
||||
- FluidType fluidtype = ((IFluidSource) block).removeFluid(world, blockposition, iblockdata);
|
||||
+ FluidType fluidtype = ((IFluidSource) block).removeFluid(DummyGeneratorAccess.INSTANCE, blockposition, iblockdata); // CraftBukkit
|
||||
|
||||
if (!(fluidtype instanceof FluidTypeFlowing)) {
|
||||
return super.a(isourceblock, itemstack);
|
||||
@ -248,13 +230,13 @@
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ fluidtype = ((IFluidSource) block).a(world, blockposition, iblockdata); // From above
|
||||
+ fluidtype = ((IFluidSource) block).removeFluid(world, blockposition, iblockdata); // From above
|
||||
+ // CraftBukkit end
|
||||
+
|
||||
itemstack.subtract(1);
|
||||
if (itemstack.isEmpty()) {
|
||||
return new ItemStack(item);
|
||||
@@ -227,11 +393,39 @@
|
||||
@@ -226,11 +392,39 @@
|
||||
protected ItemStack a(ISourceBlock isourceblock, ItemStack itemstack) {
|
||||
World world = isourceblock.getWorld();
|
||||
|
||||
@ -295,7 +277,7 @@
|
||||
} else {
|
||||
Block block = world.getType(blockposition).getBlock();
|
||||
|
||||
@@ -255,12 +449,57 @@
|
||||
@@ -254,12 +448,57 @@
|
||||
this.a = true;
|
||||
World world = isourceblock.getWorld();
|
||||
BlockPosition blockposition = isourceblock.getBlockPosition().shift((EnumDirection) isourceblock.e().get(BlockDispenser.FACING));
|
||||
@ -353,7 +335,7 @@
|
||||
|
||||
return itemstack;
|
||||
}
|
||||
@@ -269,11 +508,40 @@
|
||||
@@ -268,11 +507,40 @@
|
||||
protected ItemStack a(ISourceBlock isourceblock, ItemStack itemstack) {
|
||||
World world = isourceblock.getWorld();
|
||||
BlockPosition blockposition = isourceblock.getBlockPosition().shift((EnumDirection) isourceblock.e().get(BlockDispenser.FACING));
|
||||
@ -396,7 +378,7 @@
|
||||
return itemstack;
|
||||
}
|
||||
}));
|
||||
@@ -295,6 +563,30 @@
|
||||
@@ -294,6 +562,30 @@
|
||||
EnumDirection enumdirection = (EnumDirection) isourceblock.e().get(BlockDispenser.FACING);
|
||||
BlockPosition blockposition = isourceblock.getBlockPosition().shift(enumdirection);
|
||||
|
||||
@ -427,7 +409,7 @@
|
||||
this.a = true;
|
||||
if (world.isEmpty(blockposition) && BlockWitherSkull.b(world, blockposition, itemstack)) {
|
||||
world.setTypeAndData(blockposition, (IBlockData) Blocks.WITHER_SKELETON_SKULL.getBlockData().set(BlockSkull.a, enumdirection.k() == EnumDirection.EnumAxis.Y ? 0 : enumdirection.opposite().get2DRotationValue() * 4), 3);
|
||||
@@ -318,6 +610,30 @@
|
||||
@@ -317,6 +609,30 @@
|
||||
BlockPosition blockposition = isourceblock.getBlockPosition().shift((EnumDirection) isourceblock.e().get(BlockDispenser.FACING));
|
||||
BlockPumpkinCarved blockpumpkincarved = (BlockPumpkinCarved) Blocks.CARVED_PUMPKIN;
|
||||
|
||||
@ -458,24 +440,7 @@
|
||||
this.a = true;
|
||||
if (world.isEmpty(blockposition) && blockpumpkincarved.a((IWorldReader) world, blockposition)) {
|
||||
if (!world.isClientSide) {
|
||||
@@ -336,14 +652,14 @@
|
||||
return itemstack;
|
||||
}
|
||||
}));
|
||||
- BlockDispenser.a((IMaterial) Blocks.SHULKER_BOX.getItem(), (IDispenseBehavior) (new DispenserRegistry.d(null)));
|
||||
+ BlockDispenser.a((IMaterial) Blocks.SHULKER_BOX.getItem(), (IDispenseBehavior) (new DispenserRegistry.d())); // CraftBukkit - decompile error
|
||||
EnumColor[] aenumcolor = EnumColor.values();
|
||||
int i = aenumcolor.length;
|
||||
|
||||
for (int j = 0; j < i; ++j) {
|
||||
EnumColor enumcolor = aenumcolor[j];
|
||||
|
||||
- BlockDispenser.a((IMaterial) BlockShulkerBox.a(enumcolor).getItem(), (IDispenseBehavior) (new DispenserRegistry.d(null)));
|
||||
+ BlockDispenser.a((IMaterial) BlockShulkerBox.a(enumcolor).getItem(), (IDispenseBehavior) (new DispenserRegistry.d())); // CraftBukkit - decompile error
|
||||
}
|
||||
|
||||
}
|
||||
@@ -385,6 +701,51 @@
|
||||
@@ -384,6 +700,51 @@
|
||||
}
|
||||
|
||||
d();
|
||||
@ -527,16 +492,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -393,7 +754,7 @@
|
||||
LocaleLanguage localelanguage = LocaleLanguage.a();
|
||||
|
||||
iregistry.iterator().forEachRemaining((object) -> {
|
||||
- String s = (String) function.apply(object);
|
||||
+ String s1 = (String) function.apply(object); // CraftBukkit - decompile error
|
||||
|
||||
if (!localelanguage.b(s)) {
|
||||
DispenserRegistry.c.warn("Missing translation for {}: {} (key: '{}')", s1, iregistry.getKey(object), s);
|
||||
@@ -482,6 +843,30 @@
|
||||
@@ -481,6 +842,30 @@
|
||||
BlockPosition blockposition = isourceblock.getBlockPosition().shift(enumdirection);
|
||||
EnumDirection enumdirection1 = isourceblock.getWorld().isEmpty(blockposition.down()) ? enumdirection : EnumDirection.UP;
|
||||
|
||||
@ -567,7 +523,7 @@
|
||||
this.a = ((ItemBlock) item).a((BlockActionContext) (new DispenserRegistry.b(isourceblock.getWorld(), blockposition, enumdirection, itemstack, enumdirection1))) == EnumInteractionResult.SUCCESS;
|
||||
if (this.a) {
|
||||
itemstack.subtract(1);
|
||||
@@ -531,12 +916,40 @@
|
||||
@@ -530,12 +915,40 @@
|
||||
d3 = 0.0D;
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/Enchantment.java
|
||||
+++ b/net/minecraft/server/Enchantment.java
|
||||
@@ -154,10 +154,15 @@
|
||||
@@ -153,10 +153,15 @@
|
||||
a("channeling", new EnchantmentTridentChanneling(Enchantment.Rarity.VERY_RARE, new EnumItemSlot[] { EnumItemSlot.MAINHAND}));
|
||||
a("mending", new EnchantmentMending(Enchantment.Rarity.RARE, EnumItemSlot.values()));
|
||||
a("vanishing_curse", new EnchantmentVanishing(Enchantment.Rarity.VERY_RARE, EnumItemSlot.values()));
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/Entity.java
|
||||
+++ b/net/minecraft/server/Entity.java
|
||||
@@ -19,8 +19,55 @@
|
||||
@@ -17,8 +17,55 @@
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
@ -56,7 +56,7 @@
|
||||
protected static final Logger i = LogManager.getLogger();
|
||||
private static final List<ItemStack> a = Collections.emptyList();
|
||||
private static final AxisAlignedBB b = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 0.0D, 0.0D, 0.0D);
|
||||
@@ -107,6 +154,16 @@
|
||||
@@ -105,6 +152,16 @@
|
||||
private boolean aK;
|
||||
private final double[] aL;
|
||||
private long aM;
|
||||
@ -73,7 +73,7 @@
|
||||
|
||||
public Entity(EntityTypes<?> entitytypes, World world) {
|
||||
this.id = Entity.entityCount++;
|
||||
@@ -212,6 +269,33 @@
|
||||
@@ -210,6 +267,33 @@
|
||||
}
|
||||
|
||||
protected void setYawPitch(float f, float f1) {
|
||||
@ -107,7 +107,7 @@
|
||||
this.yaw = f % 360.0F;
|
||||
this.pitch = f1 % 360.0F;
|
||||
}
|
||||
@@ -224,6 +308,7 @@
|
||||
@@ -222,6 +306,7 @@
|
||||
float f1 = this.length;
|
||||
|
||||
this.a(new AxisAlignedBB(d0 - (double) f, d1, d2 - (double) f, d0 + (double) f, d1 + (double) f1, d2 + (double) f));
|
||||
@ -115,7 +115,7 @@
|
||||
}
|
||||
|
||||
public void tick() {
|
||||
@@ -234,6 +319,51 @@
|
||||
@@ -232,6 +317,51 @@
|
||||
this.W();
|
||||
}
|
||||
|
||||
@ -167,7 +167,7 @@
|
||||
public void W() {
|
||||
this.world.methodProfiler.enter("entityBaseTick");
|
||||
if (this.isPassenger() && this.getVehicle().dead) {
|
||||
@@ -250,6 +380,8 @@
|
||||
@@ -248,6 +378,8 @@
|
||||
this.lastZ = this.locZ;
|
||||
this.lastPitch = this.pitch;
|
||||
this.lastYaw = this.yaw;
|
||||
@ -176,7 +176,7 @@
|
||||
if (!this.world.isClientSide && this.world instanceof WorldServer) {
|
||||
this.world.methodProfiler.enter("portal");
|
||||
if (this.an) {
|
||||
@@ -289,6 +421,7 @@
|
||||
@@ -287,6 +419,7 @@
|
||||
this.E();
|
||||
this.world.methodProfiler.exit();
|
||||
}
|
||||
@ -184,7 +184,7 @@
|
||||
|
||||
this.av();
|
||||
this.r();
|
||||
@@ -339,7 +472,23 @@
|
||||
@@ -337,7 +470,23 @@
|
||||
|
||||
protected void burnFromLava() {
|
||||
if (!this.fireProof) {
|
||||
@ -209,7 +209,7 @@
|
||||
this.damageEntity(DamageSource.LAVA, 4.0F);
|
||||
}
|
||||
}
|
||||
@@ -505,7 +654,7 @@
|
||||
@@ -503,7 +652,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@ -218,7 +218,7 @@
|
||||
double d11;
|
||||
|
||||
if (this.Q > 0.0F && flag && (d7 != d0 || d9 != d2)) {
|
||||
@@ -592,7 +741,7 @@
|
||||
@@ -590,7 +739,7 @@
|
||||
this.world.methodProfiler.enter("rest");
|
||||
this.recalcPosition();
|
||||
this.positionChanged = d7 != d0 || d9 != d2;
|
||||
@ -227,7 +227,7 @@
|
||||
this.onGround = this.C && d8 < 0.0D;
|
||||
this.D = this.positionChanged || this.C;
|
||||
int k = MathHelper.floor(this.locX);
|
||||
@@ -627,6 +776,28 @@
|
||||
@@ -625,6 +774,28 @@
|
||||
block1.a((IBlockAccess) this.world, this);
|
||||
}
|
||||
|
||||
@ -256,7 +256,7 @@
|
||||
if (this.playStepSound() && (!this.onGround || !this.isSneaking() || !(this instanceof EntityHuman)) && !this.isPassenger()) {
|
||||
double d22 = this.locX - d4;
|
||||
double d23 = this.locY - d5;
|
||||
@@ -678,7 +849,14 @@
|
||||
@@ -676,7 +847,14 @@
|
||||
if (!flag1) {
|
||||
++this.fireTicks;
|
||||
if (this.fireTicks == 0) {
|
||||
@ -272,7 +272,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -706,6 +884,7 @@
|
||||
@@ -704,6 +882,7 @@
|
||||
this.locX = (axisalignedbb.minX + axisalignedbb.maxX) / 2.0D;
|
||||
this.locY = axisalignedbb.minY;
|
||||
this.locZ = (axisalignedbb.minZ + axisalignedbb.maxZ) / 2.0D;
|
||||
@ -280,7 +280,7 @@
|
||||
}
|
||||
|
||||
protected SoundEffect ad() {
|
||||
@@ -876,7 +1055,7 @@
|
||||
@@ -874,7 +1053,7 @@
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -289,7 +289,7 @@
|
||||
if (!this.fireProof) {
|
||||
this.damageEntity(DamageSource.FIRE, (float) i);
|
||||
}
|
||||
@@ -1095,6 +1274,13 @@
|
||||
@@ -1093,6 +1272,13 @@
|
||||
}
|
||||
|
||||
public void spawnIn(World world) {
|
||||
@ -303,7 +303,7 @@
|
||||
this.world = world;
|
||||
}
|
||||
|
||||
@@ -1120,6 +1306,7 @@
|
||||
@@ -1118,6 +1304,7 @@
|
||||
this.lastYaw -= 360.0F;
|
||||
}
|
||||
|
||||
@ -311,7 +311,7 @@
|
||||
this.setPosition(this.locX, this.locY, this.locZ);
|
||||
this.setYawPitch(f, f1);
|
||||
}
|
||||
@@ -1302,7 +1489,7 @@
|
||||
@@ -1300,7 +1487,7 @@
|
||||
public boolean c(NBTTagCompound nbttagcompound) {
|
||||
String s = this.getSaveID();
|
||||
|
||||
@ -320,7 +320,7 @@
|
||||
nbttagcompound.setString("id", s);
|
||||
this.save(nbttagcompound);
|
||||
return true;
|
||||
@@ -1319,6 +1506,18 @@
|
||||
@@ -1317,6 +1504,18 @@
|
||||
try {
|
||||
nbttagcompound.set("Pos", this.a(this.locX, this.locY, this.locZ));
|
||||
nbttagcompound.set("Motion", this.a(this.motX, this.motY, this.motZ));
|
||||
@ -339,7 +339,7 @@
|
||||
nbttagcompound.set("Rotation", this.a(this.yaw, this.pitch));
|
||||
nbttagcompound.setFloat("FallDistance", this.fallDistance);
|
||||
nbttagcompound.setShort("Fire", (short) this.fireTicks);
|
||||
@@ -1328,6 +1527,12 @@
|
||||
@@ -1326,6 +1525,12 @@
|
||||
nbttagcompound.setBoolean("Invulnerable", this.invulnerable);
|
||||
nbttagcompound.setInt("PortalCooldown", this.portalCooldown);
|
||||
nbttagcompound.a("UUID", this.getUniqueID());
|
||||
@ -352,7 +352,7 @@
|
||||
IChatBaseComponent ichatbasecomponent = this.getCustomName();
|
||||
|
||||
if (ichatbasecomponent != null) {
|
||||
@@ -1404,6 +1609,8 @@
|
||||
@@ -1402,6 +1607,8 @@
|
||||
this.motX = nbttaglist1.k(0);
|
||||
this.motY = nbttaglist1.k(1);
|
||||
this.motZ = nbttaglist1.k(2);
|
||||
@ -361,7 +361,7 @@
|
||||
if (Math.abs(this.motX) > 10.0D) {
|
||||
this.motX = 0.0D;
|
||||
}
|
||||
@@ -1415,6 +1622,7 @@
|
||||
@@ -1413,6 +1620,7 @@
|
||||
if (Math.abs(this.motZ) > 10.0D) {
|
||||
this.motZ = 0.0D;
|
||||
}
|
||||
@ -369,7 +369,7 @@
|
||||
|
||||
this.locX = nbttaglist.k(0);
|
||||
this.locY = nbttaglist.k(1);
|
||||
@@ -1471,6 +1679,56 @@
|
||||
@@ -1469,6 +1677,56 @@
|
||||
this.setPosition(this.locX, this.locY, this.locZ);
|
||||
}
|
||||
|
||||
@ -426,7 +426,7 @@
|
||||
} catch (Throwable throwable) {
|
||||
CrashReport crashreport = CrashReport.a(throwable, "Loading entity NBT");
|
||||
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Entity being loaded");
|
||||
@@ -1544,9 +1802,22 @@
|
||||
@@ -1542,9 +1800,22 @@
|
||||
if (itemstack.isEmpty()) {
|
||||
return null;
|
||||
} else {
|
||||
@ -449,7 +449,7 @@
|
||||
this.world.addEntity(entityitem);
|
||||
return entityitem;
|
||||
}
|
||||
@@ -1658,7 +1929,7 @@
|
||||
@@ -1656,7 +1927,7 @@
|
||||
}
|
||||
|
||||
this.vehicle = entity;
|
||||
@ -458,7 +458,7 @@
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1679,15 +1950,33 @@
|
||||
@@ -1677,15 +1948,33 @@
|
||||
Entity entity = this.vehicle;
|
||||
|
||||
this.vehicle = null;
|
||||
@ -494,7 +494,7 @@
|
||||
if (!this.world.isClientSide && entity instanceof EntityHuman && !(this.bO() instanceof EntityHuman)) {
|
||||
this.passengers.add(0, entity);
|
||||
} else {
|
||||
@@ -1695,15 +1984,33 @@
|
||||
@@ -1693,15 +1982,33 @@
|
||||
}
|
||||
|
||||
}
|
||||
@ -529,7 +529,7 @@
|
||||
}
|
||||
|
||||
protected boolean q(Entity entity) {
|
||||
@@ -1800,6 +2107,13 @@
|
||||
@@ -1798,6 +2105,13 @@
|
||||
}
|
||||
|
||||
public void setSwimming(boolean flag) {
|
||||
@ -543,7 +543,7 @@
|
||||
this.setFlag(4, flag);
|
||||
}
|
||||
|
||||
@@ -1860,16 +2174,53 @@
|
||||
@@ -1858,16 +2172,53 @@
|
||||
}
|
||||
|
||||
public void setAirTicks(int i) {
|
||||
@ -600,7 +600,7 @@
|
||||
}
|
||||
|
||||
public void j(boolean flag) {
|
||||
@@ -2036,19 +2387,72 @@
|
||||
@@ -2034,19 +2385,72 @@
|
||||
if (!this.world.isClientSide && !this.dead) {
|
||||
this.world.methodProfiler.enter("changeDimension");
|
||||
MinecraftServer minecraftserver = this.bK();
|
||||
@ -676,7 +676,7 @@
|
||||
BlockPosition blockposition;
|
||||
|
||||
if (dimensionmanager == DimensionManager.THE_END) {
|
||||
@@ -2077,12 +2481,18 @@
|
||||
@@ -2075,12 +2479,18 @@
|
||||
blockposition = new BlockPosition(this);
|
||||
}
|
||||
|
||||
@ -696,7 +696,7 @@
|
||||
if (dimensionmanager1 == DimensionManager.THE_END && dimensionmanager == DimensionManager.THE_END) {
|
||||
BlockPosition blockposition1 = worldserver1.getHighestBlockYAt(HeightMap.Type.MOTION_BLOCKING_NO_LEAVES, worldserver1.getSpawn());
|
||||
|
||||
@@ -2090,6 +2500,7 @@
|
||||
@@ -2088,6 +2498,7 @@
|
||||
} else {
|
||||
entity.setPositionRotation(blockposition, entity.yaw, entity.pitch);
|
||||
}
|
||||
@ -704,7 +704,7 @@
|
||||
|
||||
boolean flag = entity.attachedToPlayer;
|
||||
|
||||
@@ -2097,13 +2508,21 @@
|
||||
@@ -2095,13 +2506,21 @@
|
||||
worldserver1.addEntity(entity);
|
||||
entity.attachedToPlayer = flag;
|
||||
worldserver1.entityJoinedWorld(entity, false);
|
||||
@ -727,7 +727,7 @@
|
||||
return entity;
|
||||
} else {
|
||||
return null;
|
||||
@@ -2243,7 +2662,26 @@
|
||||
@@ -2241,7 +2660,26 @@
|
||||
}
|
||||
|
||||
public void a(AxisAlignedBB axisalignedbb) {
|
||||
|
@ -1,17 +1,17 @@
|
||||
--- a/net/minecraft/server/EntityAreaEffectCloud.java
|
||||
+++ b/net/minecraft/server/EntityAreaEffectCloud.java
|
||||
@@ -10,6 +10,10 @@
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
+
|
||||
+import org.bukkit.craftbukkit.entity.CraftLivingEntity; // CraftBukkit
|
||||
+import org.bukkit.entity.LivingEntity; // CraftBukkit
|
||||
+
|
||||
import java.util.Map.Entry;
|
||||
@@ -13,6 +13,10 @@
|
||||
import javax.annotation.Nullable;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
@@ -102,6 +106,22 @@
|
||||
import org.apache.logging.log4j.Logger;
|
||||
+// CraftBukkit start
|
||||
+import org.bukkit.craftbukkit.entity.CraftLivingEntity;
|
||||
+import org.bukkit.entity.LivingEntity;
|
||||
+// CraftBukkit end
|
||||
|
||||
public class EntityAreaEffectCloud extends Entity {
|
||||
|
||||
@@ -101,6 +105,22 @@
|
||||
|
||||
}
|
||||
|
||||
@ -34,15 +34,15 @@
|
||||
public int getColor() {
|
||||
return (Integer) this.getDataWatcher().get(EntityAreaEffectCloud.c);
|
||||
}
|
||||
@@ -245,6 +265,7 @@
|
||||
if (!list.isEmpty()) {
|
||||
Iterator iterator2 = list.iterator();
|
||||
@@ -244,6 +264,7 @@
|
||||
if (!list1.isEmpty()) {
|
||||
Iterator iterator2 = list1.iterator();
|
||||
|
||||
+ List<LivingEntity> entities = new ArrayList<LivingEntity>(); // CraftBukkit
|
||||
+ List<LivingEntity> entities = new java.util.ArrayList<LivingEntity>(); // CraftBukkit
|
||||
while (iterator2.hasNext()) {
|
||||
EntityLiving entityliving = (EntityLiving) iterator2.next();
|
||||
|
||||
@@ -254,6 +275,17 @@
|
||||
@@ -253,6 +274,17 @@
|
||||
double d2 = d0 * d0 + d1 * d1;
|
||||
|
||||
if (d2 <= (double) (f * f)) {
|
||||
@ -58,9 +58,9 @@
|
||||
+ EntityLiving entityliving = ((CraftLivingEntity) entity).getHandle();
|
||||
+ // CraftBukkit end
|
||||
this.h.put(entityliving, this.ticksLived + this.reapplicationDelay);
|
||||
Iterator iterator3 = arraylist.iterator();
|
||||
Iterator iterator3 = list.iterator();
|
||||
|
||||
@@ -263,7 +295,7 @@
|
||||
@@ -262,7 +294,7 @@
|
||||
if (mobeffect1.getMobEffect().isInstant()) {
|
||||
mobeffect1.getMobEffect().applyInstantEffect(this, this.getSource(), entityliving, mobeffect1.getAmplifier(), 0.5D);
|
||||
} else {
|
||||
|
@ -1,14 +1,5 @@
|
||||
--- a/net/minecraft/server/EntityDolphin.java
|
||||
+++ b/net/minecraft/server/EntityDolphin.java
|
||||
@@ -95,7 +95,7 @@
|
||||
this.goalSelector.a(5, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 6.0F));
|
||||
this.goalSelector.a(5, new PathfinderGoalWaterJump(this, 10));
|
||||
this.goalSelector.a(6, new PathfinderGoalMeleeAttack(this, 1.2000000476837158D, true));
|
||||
- this.goalSelector.a(8, new EntityDolphin.d(null));
|
||||
+ this.goalSelector.a(8, new EntityDolphin.d()); // CraftBukkit - decompile error
|
||||
this.goalSelector.a(8, new PathfinderGoalFollowBoat(this));
|
||||
this.goalSelector.a(9, new PathfinderGoalAvoidTarget(this, EntityGuardian.class, 8.0F, 1.0D, 1.0D));
|
||||
this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, true, new Class[] { EntityGuardian.class}));
|
||||
@@ -412,7 +412,7 @@
|
||||
}
|
||||
|
||||
|
@ -1,22 +1,6 @@
|
||||
--- a/net/minecraft/server/EntityEnderman.java
|
||||
+++ b/net/minecraft/server/EntityEnderman.java
|
||||
@@ -33,7 +33,14 @@
|
||||
this.goalSelector.a(11, new EntityEnderman.PathfinderGoalEndermanPickupBlock(this));
|
||||
this.targetSelector.a(1, new EntityEnderman.PathfinderGoalPlayerWhoLookedAtTarget(this));
|
||||
this.targetSelector.a(2, new PathfinderGoalHurtByTarget(this, false, new Class[0]));
|
||||
- this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget(this, EntityEndermite.class, 10, true, false, EntityEndermite::isPlayerSpawned));
|
||||
+ // CraftBukkit - decompile error
|
||||
+ this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget(this, EntityEndermite.class, 10, true, false, new Predicate<EntityEndermite>() {
|
||||
+ @Override
|
||||
+ public boolean test(EntityEndermite entityendermite) {
|
||||
+ return entityendermite.isPlayerSpawned();
|
||||
+ }
|
||||
+ }));
|
||||
+ // CraftBukkit end
|
||||
}
|
||||
|
||||
protected void initAttributes() {
|
||||
@@ -45,7 +52,17 @@
|
||||
@@ -44,7 +44,17 @@
|
||||
}
|
||||
|
||||
public void setGoalTarget(@Nullable EntityLiving entityliving) {
|
||||
@ -35,7 +19,7 @@
|
||||
AttributeInstance attributeinstance = this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED);
|
||||
|
||||
if (entityliving == null) {
|
||||
@@ -59,6 +76,7 @@
|
||||
@@ -58,6 +68,7 @@
|
||||
attributeinstance.b(EntityEnderman.b);
|
||||
}
|
||||
}
|
||||
@ -43,7 +27,7 @@
|
||||
|
||||
}
|
||||
|
||||
@@ -277,8 +295,12 @@
|
||||
@@ -276,8 +287,12 @@
|
||||
boolean flag = movingobjectposition != null && movingobjectposition.getBlockPosition().equals(blockposition);
|
||||
|
||||
if (block.a(TagsBlock.ENDERMAN_HOLDABLE) && flag) {
|
||||
@ -58,7 +42,7 @@
|
||||
}
|
||||
|
||||
}
|
||||
@@ -308,8 +330,12 @@
|
||||
@@ -307,8 +322,12 @@
|
||||
IBlockData iblockdata2 = this.a.getCarried();
|
||||
|
||||
if (iblockdata2 != null && this.a(world, blockposition, iblockdata2, iblockdata, iblockdata1)) {
|
||||
|
@ -1,8 +1,8 @@
|
||||
--- a/net/minecraft/server/EntityFallingBlock.java
|
||||
+++ b/net/minecraft/server/EntityFallingBlock.java
|
||||
@@ -4,6 +4,8 @@
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
+import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
|
||||
+
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/EntityGuardianElder.java
|
||||
+++ b/net/minecraft/server/EntityGuardianElder.java
|
||||
@@ -68,7 +68,7 @@
|
||||
@@ -67,7 +67,7 @@
|
||||
|
||||
if (!entityplayer.hasEffect(mobeffectlist) || entityplayer.getEffect(mobeffectlist).getAmplifier() < 2 || entityplayer.getEffect(mobeffectlist).getDuration() < 1200) {
|
||||
entityplayer.playerConnection.sendPacket(new PacketPlayOutGameStateChange(10, 0.0F));
|
||||
|
@ -1,7 +1,7 @@
|
||||
--- a/net/minecraft/server/EntityHuman.java
|
||||
+++ b/net/minecraft/server/EntityHuman.java
|
||||
@@ -15,6 +15,18 @@
|
||||
import java.util.function.ToIntFunction;
|
||||
@@ -12,6 +12,18 @@
|
||||
import java.util.function.Predicate;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
+// CraftBukkit start
|
||||
@ -19,7 +19,7 @@
|
||||
public abstract class EntityHuman extends EntityLiving {
|
||||
|
||||
private static final DataWatcherObject<Float> a = DataWatcher.a(EntityHuman.class, DataWatcherRegistry.c);
|
||||
@@ -24,10 +36,10 @@
|
||||
@@ -21,10 +33,10 @@
|
||||
protected static final DataWatcherObject<NBTTagCompound> bz = DataWatcher.a(EntityHuman.class, DataWatcherRegistry.p);
|
||||
protected static final DataWatcherObject<NBTTagCompound> bA = DataWatcher.a(EntityHuman.class, DataWatcherRegistry.p);
|
||||
public PlayerInventory inventory = new PlayerInventory(this);
|
||||
@ -32,7 +32,7 @@
|
||||
protected int bG;
|
||||
public float bH;
|
||||
public float bI;
|
||||
@@ -60,6 +72,17 @@
|
||||
@@ -57,6 +69,17 @@
|
||||
@Nullable
|
||||
public EntityFishingHook hookedFish;
|
||||
|
||||
@ -50,7 +50,7 @@
|
||||
public EntityHuman(World world, GameProfile gameprofile) {
|
||||
super(EntityTypes.PLAYER, world);
|
||||
this.cd = ItemStack.a;
|
||||
@@ -184,7 +207,7 @@
|
||||
@@ -181,7 +204,7 @@
|
||||
ItemStack itemstack = this.getEquipment(EnumItemSlot.HEAD);
|
||||
|
||||
if (itemstack.getItem() == Items.TURTLE_HELMET && !this.a(TagsFluid.WATER)) {
|
||||
@ -59,7 +59,7 @@
|
||||
}
|
||||
|
||||
}
|
||||
@@ -369,7 +392,8 @@
|
||||
@@ -366,7 +389,8 @@
|
||||
|
||||
if (this.world.getDifficulty() == EnumDifficulty.PEACEFUL && this.world.getGameRules().getBoolean("naturalRegeneration")) {
|
||||
if (this.getHealth() < this.getMaxHealth() && this.ticksLived % 20 == 0) {
|
||||
@ -69,7 +69,7 @@
|
||||
}
|
||||
|
||||
if (this.foodData.c() && this.ticksLived % 10 == 0) {
|
||||
@@ -393,7 +417,7 @@
|
||||
@@ -390,7 +414,7 @@
|
||||
|
||||
this.o((float) attributeinstance.getValue());
|
||||
float f = MathHelper.sqrt(this.motX * this.motX + this.motZ * this.motZ);
|
||||
@ -78,7 +78,7 @@
|
||||
|
||||
if (f > 0.1F) {
|
||||
f = 0.1F;
|
||||
@@ -516,6 +540,7 @@
|
||||
@@ -513,6 +537,7 @@
|
||||
|
||||
@Nullable
|
||||
public EntityItem a(boolean flag) {
|
||||
@ -86,7 +86,7 @@
|
||||
return this.a(this.inventory.splitStack(this.inventory.itemInHandIndex, flag && !this.inventory.getItemInHand().isEmpty() ? this.inventory.getItemInHand().getCount() : 1), false, true);
|
||||
}
|
||||
|
||||
@@ -558,6 +583,30 @@
|
||||
@@ -555,6 +580,30 @@
|
||||
entityitem.motZ += Math.sin((double) f1) * (double) f;
|
||||
}
|
||||
|
||||
@ -117,7 +117,7 @@
|
||||
ItemStack itemstack1 = this.a(entityitem);
|
||||
|
||||
if (flag1) {
|
||||
@@ -652,6 +701,13 @@
|
||||
@@ -649,6 +698,13 @@
|
||||
this.a(true, true, false);
|
||||
}
|
||||
|
||||
@ -131,7 +131,7 @@
|
||||
if (nbttagcompound.hasKeyOfType("SpawnX", 99) && nbttagcompound.hasKeyOfType("SpawnY", 99) && nbttagcompound.hasKeyOfType("SpawnZ", 99)) {
|
||||
this.e = new BlockPosition(nbttagcompound.getInt("SpawnX"), nbttagcompound.getInt("SpawnY"), nbttagcompound.getInt("SpawnZ"));
|
||||
this.f = nbttagcompound.getBoolean("SpawnForced");
|
||||
@@ -702,6 +758,7 @@
|
||||
@@ -699,6 +755,7 @@
|
||||
if (!this.getShoulderEntityRight().isEmpty()) {
|
||||
nbttagcompound.set("ShoulderEntityRight", this.getShoulderEntityRight());
|
||||
}
|
||||
@ -139,7 +139,7 @@
|
||||
|
||||
}
|
||||
|
||||
@@ -719,10 +776,10 @@
|
||||
@@ -716,10 +773,10 @@
|
||||
this.a(true, true, false);
|
||||
}
|
||||
|
||||
@ -152,7 +152,7 @@
|
||||
}
|
||||
|
||||
if (this.world.getDifficulty() == EnumDifficulty.EASY) {
|
||||
@@ -734,7 +791,13 @@
|
||||
@@ -731,7 +788,13 @@
|
||||
}
|
||||
}
|
||||
|
||||
@ -167,7 +167,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -748,10 +811,29 @@
|
||||
@@ -745,10 +808,29 @@
|
||||
}
|
||||
|
||||
public boolean a(EntityHuman entityhuman) {
|
||||
@ -200,7 +200,7 @@
|
||||
}
|
||||
|
||||
protected void damageArmor(float f) {
|
||||
@@ -794,7 +876,12 @@
|
||||
@@ -791,7 +873,12 @@
|
||||
return (float) i / (float) this.inventory.armor.size();
|
||||
}
|
||||
|
||||
@ -214,7 +214,7 @@
|
||||
if (!this.isInvulnerable(damagesource)) {
|
||||
f = this.applyArmorModifier(damagesource, f);
|
||||
f = this.applyMagicModifier(damagesource, f);
|
||||
@@ -820,6 +907,7 @@
|
||||
@@ -817,6 +904,7 @@
|
||||
|
||||
}
|
||||
}
|
||||
@ -222,7 +222,7 @@
|
||||
}
|
||||
|
||||
public void openSign(TileEntitySign tileentitysign) {}
|
||||
@@ -941,8 +1029,15 @@
|
||||
@@ -938,8 +1026,15 @@
|
||||
if (entity instanceof EntityLiving) {
|
||||
f3 = ((EntityLiving) entity).getHealth();
|
||||
if (j > 0 && !entity.isBurning()) {
|
||||
@ -240,7 +240,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -973,8 +1068,11 @@
|
||||
@@ -970,8 +1065,11 @@
|
||||
EntityLiving entityliving = (EntityLiving) iterator.next();
|
||||
|
||||
if (entityliving != this && entityliving != entity && !this.r(entityliving) && (!(entityliving instanceof EntityArmorStand) || !((EntityArmorStand) entityliving).isMarker()) && this.h(entityliving) < 9.0D) {
|
||||
@ -253,7 +253,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -983,11 +1081,28 @@
|
||||
@@ -980,11 +1078,28 @@
|
||||
}
|
||||
|
||||
if (entity instanceof EntityPlayer && entity.velocityChanged) {
|
||||
@ -282,7 +282,7 @@
|
||||
}
|
||||
|
||||
if (flag2) {
|
||||
@@ -1036,7 +1151,14 @@
|
||||
@@ -1033,7 +1148,14 @@
|
||||
|
||||
this.a(StatisticList.DAMAGE_DEALT, Math.round(f5 * 10.0F));
|
||||
if (j > 0) {
|
||||
@ -298,7 +298,7 @@
|
||||
}
|
||||
|
||||
if (this.world instanceof WorldServer && f5 > 2.0F) {
|
||||
@@ -1052,6 +1174,11 @@
|
||||
@@ -1049,6 +1171,11 @@
|
||||
if (flag4) {
|
||||
entity.extinguish();
|
||||
}
|
||||
@ -310,7 +310,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1113,15 +1240,15 @@
|
||||
@@ -1110,15 +1237,15 @@
|
||||
return this.h;
|
||||
}
|
||||
|
||||
@ -330,15 +330,7 @@
|
||||
return EntityHuman.EnumBedResult.NOT_POSSIBLE_HERE;
|
||||
}
|
||||
|
||||
@@ -1136,13 +1263,33 @@
|
||||
if (!this.u()) {
|
||||
double d0 = 8.0D;
|
||||
double d1 = 5.0D;
|
||||
- List list = this.world.a(EntityMonster.class, new AxisAlignedBB((double) blockposition.getX() - 8.0D, (double) blockposition.getY() - 5.0D, (double) blockposition.getZ() - 8.0D, (double) blockposition.getX() + 8.0D, (double) blockposition.getY() + 5.0D, (double) blockposition.getZ() + 8.0D), (Predicate) (new EntityHuman.c(this, null)));
|
||||
+ List list = this.world.a(EntityMonster.class, new AxisAlignedBB((double) blockposition.getX() - 8.0D, (double) blockposition.getY() - 5.0D, (double) blockposition.getZ() - 8.0D, (double) blockposition.getX() + 8.0D, (double) blockposition.getY() + 5.0D, (double) blockposition.getZ() + 8.0D), (Predicate) (new EntityHuman.c(this))); // CraftBukkit - decompile error
|
||||
|
||||
if (!list.isEmpty()) {
|
||||
return EntityHuman.EnumBedResult.NOT_SAFE;
|
||||
@@ -1140,6 +1267,26 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -365,7 +357,7 @@
|
||||
|
||||
if (this.isPassenger()) {
|
||||
this.stopRiding();
|
||||
@@ -1209,6 +1356,24 @@
|
||||
@@ -1206,6 +1353,24 @@
|
||||
this.world.everyoneSleeping();
|
||||
}
|
||||
|
||||
@ -390,7 +382,7 @@
|
||||
this.sleepTicks = flag ? 0 : 100;
|
||||
if (flag2) {
|
||||
this.setRespawnPosition(this.bedPosition, false);
|
||||
@@ -1260,9 +1425,11 @@
|
||||
@@ -1257,9 +1422,11 @@
|
||||
if (blockposition != null) {
|
||||
this.e = blockposition;
|
||||
this.f = flag;
|
||||
@ -402,7 +394,7 @@
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1328,7 +1495,11 @@
|
||||
@@ -1325,7 +1492,11 @@
|
||||
this.motY = d3 * 0.6D;
|
||||
this.aU = f3;
|
||||
this.fallDistance = 0.0F;
|
||||
@ -415,7 +407,7 @@
|
||||
} else {
|
||||
super.a(f, f1, f2);
|
||||
}
|
||||
@@ -1628,13 +1799,17 @@
|
||||
@@ -1625,13 +1796,17 @@
|
||||
}
|
||||
|
||||
protected void releaseShoulderEntities() {
|
||||
@ -438,7 +430,7 @@
|
||||
if (!this.world.isClientSide && !nbttagcompound.isEmpty()) {
|
||||
Entity entity = EntityTypes.a(nbttagcompound, this.world);
|
||||
|
||||
@@ -1643,9 +1818,10 @@
|
||||
@@ -1640,9 +1815,10 @@
|
||||
}
|
||||
|
||||
entity.setPosition(this.locX, this.locY + 0.699999988079071D, this.locZ);
|
||||
|
@ -1,16 +1,5 @@
|
||||
--- a/net/minecraft/server/EntityIllagerIllusioner.java
|
||||
+++ b/net/minecraft/server/EntityIllagerIllusioner.java
|
||||
@@ -24,8 +24,8 @@
|
||||
super.n();
|
||||
this.goalSelector.a(0, new PathfinderGoalFloat(this));
|
||||
this.goalSelector.a(1, new EntityIllagerWizard.b());
|
||||
- this.goalSelector.a(4, new EntityIllagerIllusioner.b(null));
|
||||
- this.goalSelector.a(5, new EntityIllagerIllusioner.a(null));
|
||||
+ this.goalSelector.a(4, new EntityIllagerIllusioner.b()); // CraftBukkit - decompile error
|
||||
+ this.goalSelector.a(5, new EntityIllagerIllusioner.a()); // CraftBukkit - decompile error
|
||||
this.goalSelector.a(6, new PathfinderGoalBowShoot(this, 0.5D, 20, 15.0F));
|
||||
this.goalSelector.a(8, new PathfinderGoalRandomStroll(this, 0.6D));
|
||||
this.goalSelector.a(9, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 3.0F, 1.0F));
|
||||
@@ -164,7 +164,7 @@
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/EntityInsentient.java
|
||||
+++ b/net/minecraft/server/EntityInsentient.java
|
||||
@@ -9,6 +9,18 @@
|
||||
@@ -10,6 +10,18 @@
|
||||
import java.util.UUID;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
public abstract class EntityInsentient extends EntityLiving {
|
||||
|
||||
private static final DataWatcherObject<Byte> a = DataWatcher.a(EntityInsentient.class, DataWatcherRegistry.a);
|
||||
@@ -27,7 +39,7 @@
|
||||
@@ -28,7 +40,7 @@
|
||||
public float[] dropChanceHand;
|
||||
private final NonNullList<ItemStack> bE;
|
||||
public float[] dropChanceArmor;
|
||||
@ -28,7 +28,7 @@
|
||||
public boolean persistent;
|
||||
private final Map<PathType, Float> bH;
|
||||
public MinecraftKey lootTableKey;
|
||||
@@ -57,6 +69,9 @@
|
||||
@@ -58,6 +70,9 @@
|
||||
this.n();
|
||||
}
|
||||
|
||||
@ -38,7 +38,7 @@
|
||||
}
|
||||
|
||||
protected void n() {}
|
||||
@@ -110,7 +125,38 @@
|
||||
@@ -111,7 +126,38 @@
|
||||
}
|
||||
|
||||
public void setGoalTarget(@Nullable EntityLiving entityliving) {
|
||||
@ -77,7 +77,7 @@
|
||||
}
|
||||
|
||||
public boolean b(Class<? extends EntityLiving> oclass) {
|
||||
@@ -336,11 +382,20 @@
|
||||
@@ -337,11 +383,20 @@
|
||||
|
||||
public void a(NBTTagCompound nbttagcompound) {
|
||||
super.a(nbttagcompound);
|
||||
@ -100,7 +100,7 @@
|
||||
NBTTagList nbttaglist;
|
||||
int i;
|
||||
|
||||
@@ -394,6 +449,11 @@
|
||||
@@ -395,6 +450,11 @@
|
||||
protected MinecraftKey getDefaultLootTable() {
|
||||
return null;
|
||||
}
|
||||
@ -112,7 +112,7 @@
|
||||
|
||||
protected void a(boolean flag, int i, DamageSource damagesource) {
|
||||
MinecraftKey minecraftkey = this.lootTableKey;
|
||||
@@ -470,11 +530,21 @@
|
||||
@@ -471,11 +531,21 @@
|
||||
ItemStack itemstack1 = this.getEquipment(enumitemslot);
|
||||
boolean flag = this.a(itemstack, itemstack1, enumitemslot);
|
||||
|
||||
@ -135,7 +135,7 @@
|
||||
}
|
||||
|
||||
this.setSlot(enumitemslot, itemstack);
|
||||
@@ -553,11 +623,11 @@
|
||||
@@ -554,11 +624,11 @@
|
||||
double d2 = entityhuman.locZ - this.locZ;
|
||||
double d3 = d0 * d0 + d1 * d1 + d2 * d2;
|
||||
|
||||
@ -149,7 +149,7 @@
|
||||
this.die();
|
||||
} else if (d3 < 1024.0D) {
|
||||
this.ticksFarFromPlayer = 0;
|
||||
@@ -931,12 +1001,24 @@
|
||||
@@ -932,12 +1002,24 @@
|
||||
|
||||
public final boolean b(EntityHuman entityhuman, EnumHand enumhand) {
|
||||
if (this.isLeashed() && this.getLeashHolder() == entityhuman) {
|
||||
@ -174,7 +174,7 @@
|
||||
this.setLeashHolder(entityhuman, true);
|
||||
itemstack.subtract(1);
|
||||
return true;
|
||||
@@ -957,10 +1039,12 @@
|
||||
@@ -958,10 +1040,12 @@
|
||||
|
||||
if (this.bK) {
|
||||
if (!this.isAlive()) {
|
||||
@ -187,7 +187,7 @@
|
||||
this.unleash(true, true);
|
||||
}
|
||||
}
|
||||
@@ -971,7 +1055,9 @@
|
||||
@@ -972,7 +1056,9 @@
|
||||
this.bK = false;
|
||||
this.leashHolder = null;
|
||||
if (!this.world.isClientSide && flag1) {
|
||||
@ -197,7 +197,7 @@
|
||||
}
|
||||
|
||||
if (!this.world.isClientSide && flag && this.world instanceof WorldServer) {
|
||||
@@ -1041,6 +1127,7 @@
|
||||
@@ -1042,6 +1128,7 @@
|
||||
|
||||
this.setLeashHolder(entityleash, true);
|
||||
} else {
|
||||
@ -205,7 +205,7 @@
|
||||
this.unleash(false, true);
|
||||
}
|
||||
}
|
||||
@@ -1136,7 +1223,14 @@
|
||||
@@ -1137,7 +1224,14 @@
|
||||
int j = EnchantmentManager.getFireAspectEnchantmentLevel(this);
|
||||
|
||||
if (j > 0) {
|
||||
|
@ -1,21 +1,6 @@
|
||||
--- a/net/minecraft/server/EntityIronGolem.java
|
||||
+++ b/net/minecraft/server/EntityIronGolem.java
|
||||
@@ -28,8 +28,12 @@
|
||||
this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this));
|
||||
this.targetSelector.a(1, new PathfinderGoalDefendVillage(this));
|
||||
this.targetSelector.a(2, new PathfinderGoalHurtByTarget(this, false, new Class[0]));
|
||||
- this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget(this, EntityInsentient.class, 10, false, true, (entityinsentient) -> {
|
||||
- return entityinsentient != null && IMonster.e.test(entityinsentient) && !(entityinsentient instanceof EntityCreeper);
|
||||
+ // CraftBukkit start - decompile error
|
||||
+ this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget(this, EntityInsentient.class, 10, false, true, new Predicate<EntityInsentient>() {
|
||||
+ public boolean test(@Nullable EntityInsentient entityinsentient) {
|
||||
+ return entityinsentient != null && IMonster.e.test(entityinsentient) && !(entityinsentient instanceof EntityCreeper);
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
}));
|
||||
}
|
||||
|
||||
@@ -67,7 +71,7 @@
|
||||
@@ -66,7 +66,7 @@
|
||||
|
||||
protected void C(Entity entity) {
|
||||
if (entity instanceof IMonster && !(entity instanceof EntityCreeper) && this.getRandom().nextInt(20) == 0) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
--- a/net/minecraft/server/EntityMinecartAbstract.java
|
||||
+++ b/net/minecraft/server/EntityMinecartAbstract.java
|
||||
@@ -8,6 +8,15 @@
|
||||
import java.util.function.ToIntFunction;
|
||||
@@ -6,6 +6,15 @@
|
||||
import java.util.List;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
+// CraftBukkit start
|
||||
@ -16,7 +16,7 @@
|
||||
public abstract class EntityMinecartAbstract extends Entity implements INamableTileEntity {
|
||||
|
||||
private static final DataWatcherObject<Integer> a = DataWatcher.a(EntityMinecartAbstract.class, DataWatcherRegistry.b);
|
||||
@@ -25,6 +34,17 @@
|
||||
@@ -23,6 +32,17 @@
|
||||
private double aA;
|
||||
private double aB;
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
protected EntityMinecartAbstract(EntityTypes<?> entitytypes, World world) {
|
||||
super(entitytypes, world);
|
||||
this.j = true;
|
||||
@@ -92,6 +112,19 @@
|
||||
@@ -90,6 +110,19 @@
|
||||
if (this.isInvulnerable(damagesource)) {
|
||||
return false;
|
||||
} else {
|
||||
@ -54,7 +54,7 @@
|
||||
this.k(-this.u());
|
||||
this.d(10);
|
||||
this.aA();
|
||||
@@ -99,6 +132,15 @@
|
||||
@@ -97,6 +130,15 @@
|
||||
boolean flag = damagesource.getEntity() instanceof EntityHuman && ((EntityHuman) damagesource.getEntity()).abilities.canInstantlyBuild;
|
||||
|
||||
if (flag || this.getDamage() > 40.0F) {
|
||||
@ -70,7 +70,7 @@
|
||||
this.ejectPassengers();
|
||||
if (flag && !this.hasCustomName()) {
|
||||
this.die();
|
||||
@@ -137,6 +179,14 @@
|
||||
@@ -135,6 +177,14 @@
|
||||
}
|
||||
|
||||
public void tick() {
|
||||
@ -85,7 +85,7 @@
|
||||
if (this.getType() > 0) {
|
||||
this.d(this.getType() - 1);
|
||||
}
|
||||
@@ -151,6 +201,8 @@
|
||||
@@ -149,6 +199,8 @@
|
||||
|
||||
int i;
|
||||
|
||||
@ -94,7 +94,7 @@
|
||||
if (!this.world.isClientSide && this.world instanceof WorldServer) {
|
||||
this.world.methodProfiler.enter("portal");
|
||||
MinecraftServer minecraftserver = this.world.getMinecraftServer();
|
||||
@@ -190,6 +242,7 @@
|
||||
@@ -188,6 +240,7 @@
|
||||
|
||||
this.world.methodProfiler.exit();
|
||||
}
|
||||
@ -102,7 +102,7 @@
|
||||
|
||||
if (this.world.isClientSide) {
|
||||
if (this.aw > 0) {
|
||||
@@ -257,6 +310,18 @@
|
||||
@@ -255,6 +308,18 @@
|
||||
}
|
||||
|
||||
this.setYawPitch(this.yaw, this.pitch);
|
||||
@ -119,9 +119,9 @@
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
if (this.v() == EntityMinecartAbstract.EnumMinecartType.RIDEABLE && this.motX * this.motX + this.motZ * this.motZ > 0.01D) {
|
||||
List list = this.world.getEntities(this, this.getBoundingBox().grow(0.20000000298023224D, 0.0D, 0.20000000298023224D), IEntitySelector.a(this));
|
||||
List<Entity> list = this.world.getEntities(this, this.getBoundingBox().grow(0.20000000298023224D, 0.0D, 0.20000000298023224D), IEntitySelector.a(this));
|
||||
|
||||
@@ -265,8 +330,24 @@
|
||||
@@ -263,8 +328,24 @@
|
||||
Entity entity = (Entity) list.get(l);
|
||||
|
||||
if (!(entity instanceof EntityHuman) && !(entity instanceof EntityIronGolem) && !(entity instanceof EntityMinecartAbstract) && !this.isVehicle() && !entity.isPassenger()) {
|
||||
@ -146,7 +146,7 @@
|
||||
entity.collide(this);
|
||||
}
|
||||
}
|
||||
@@ -278,6 +359,14 @@
|
||||
@@ -276,6 +357,14 @@
|
||||
Entity entity1 = (Entity) iterator.next();
|
||||
|
||||
if (!this.w(entity1) && entity1.isCollidable() && entity1 instanceof EntityMinecartAbstract) {
|
||||
@ -161,7 +161,7 @@
|
||||
entity1.collide(this);
|
||||
}
|
||||
}
|
||||
@@ -288,7 +377,7 @@
|
||||
@@ -286,7 +375,7 @@
|
||||
}
|
||||
|
||||
protected double p() {
|
||||
@ -170,7 +170,7 @@
|
||||
}
|
||||
|
||||
public void a(int i, int j, int k, boolean flag) {}
|
||||
@@ -299,16 +388,20 @@
|
||||
@@ -297,16 +386,20 @@
|
||||
this.motX = MathHelper.a(this.motX, -d0, d0);
|
||||
this.motZ = MathHelper.a(this.motZ, -d0, d0);
|
||||
if (this.onGround) {
|
||||
@ -197,7 +197,7 @@
|
||||
}
|
||||
|
||||
}
|
||||
@@ -493,7 +586,7 @@
|
||||
@@ -491,7 +584,7 @@
|
||||
}
|
||||
|
||||
protected void r() {
|
||||
@ -206,7 +206,7 @@
|
||||
this.motX *= 0.996999979019165D;
|
||||
this.motY *= 0.0D;
|
||||
this.motZ *= 0.996999979019165D;
|
||||
@@ -590,6 +683,14 @@
|
||||
@@ -588,6 +681,14 @@
|
||||
if (!this.world.isClientSide) {
|
||||
if (!entity.noclip && !this.noclip) {
|
||||
if (!this.w(entity)) {
|
||||
@ -221,7 +221,7 @@
|
||||
double d0 = entity.locX - this.locX;
|
||||
double d1 = entity.locZ - this.locZ;
|
||||
double d2 = d0 * d0 + d1 * d1;
|
||||
@@ -736,4 +837,26 @@
|
||||
@@ -734,4 +835,26 @@
|
||||
return this.i;
|
||||
}
|
||||
}
|
||||
|
@ -5,8 +5,8 @@
|
||||
public EntityPainting(World world) {
|
||||
super(EntityTypes.PAINTING, world);
|
||||
+ // CraftBukkit start - generate a non-null painting
|
||||
+ ArrayList arraylist = Lists.newArrayList(Paintings.a);
|
||||
+ this.art = (Paintings) arraylist.get(this.random.nextInt(arraylist.size()));
|
||||
+ List<Paintings> list = Lists.newArrayList(Paintings.a);
|
||||
+ this.art = (Paintings) list.get(this.random.nextInt(list.size()));
|
||||
+ // CraftBukkit end
|
||||
}
|
||||
|
||||
|
@ -1,14 +1,6 @@
|
||||
--- a/net/minecraft/server/EntityParrot.java
|
||||
+++ b/net/minecraft/server/EntityParrot.java
|
||||
@@ -16,14 +16,14 @@
|
||||
public class EntityParrot extends EntityPerchable implements EntityBird {
|
||||
|
||||
private static final DataWatcherObject<Integer> bL = DataWatcher.a(EntityParrot.class, DataWatcherRegistry.b);
|
||||
- private static final Predicate<EntityInsentient> bM = new Predicate() {
|
||||
+ private static final Predicate<EntityInsentient> bM = new Predicate<EntityInsentient>() { // CraftBukkit - decompile error
|
||||
public boolean test(@Nullable EntityInsentient entityinsentient) {
|
||||
return entityinsentient != null && EntityParrot.bP.containsKey(entityinsentient.P());
|
||||
}
|
||||
@@ -21,7 +21,7 @@
|
||||
};
|
||||
private static final Item bN = Items.COOKIE;
|
||||
private static final Set<Item> bO = Sets.newHashSet(new Item[] { Items.WHEAT_SEEDS, Items.MELON_SEEDS, Items.PUMPKIN_SEEDS, Items.BEETROOT_SEEDS});
|
||||
@ -17,7 +9,7 @@
|
||||
hashmap.put(EntityTypes.BLAZE, SoundEffects.ENTITY_PARROT_IMITATE_BLAZE);
|
||||
hashmap.put(EntityTypes.CAVE_SPIDER, SoundEffects.ENTITY_PARROT_IMITATE_SPIDER);
|
||||
hashmap.put(EntityTypes.CREEPER, SoundEffects.ENTITY_PARROT_IMITATE_CREEPER);
|
||||
@@ -170,7 +170,7 @@
|
||||
@@ -168,7 +168,7 @@
|
||||
}
|
||||
|
||||
if (!this.world.isClientSide) {
|
||||
@ -26,7 +18,7 @@
|
||||
this.c(entityhuman);
|
||||
this.s(true);
|
||||
this.world.broadcastEntityEffect(this, (byte) 7);
|
||||
@@ -186,7 +186,7 @@
|
||||
@@ -184,7 +184,7 @@
|
||||
itemstack.subtract(1);
|
||||
}
|
||||
|
||||
@ -35,7 +27,7 @@
|
||||
if (entityhuman.u() || !this.bl()) {
|
||||
this.damageEntity(DamageSource.playerAttack(entityhuman), Float.MAX_VALUE);
|
||||
}
|
||||
@@ -306,7 +306,8 @@
|
||||
@@ -304,7 +304,8 @@
|
||||
return false;
|
||||
} else {
|
||||
if (this.goalSit != null) {
|
||||
|
@ -1,31 +1,6 @@
|
||||
--- a/net/minecraft/server/EntityPhantom.java
|
||||
+++ b/net/minecraft/server/EntityPhantom.java
|
||||
@@ -28,10 +28,11 @@
|
||||
}
|
||||
|
||||
protected void n() {
|
||||
- this.goalSelector.a(1, new EntityPhantom.c(null));
|
||||
- this.goalSelector.a(2, new EntityPhantom.i(null));
|
||||
- this.goalSelector.a(3, new EntityPhantom.e(null));
|
||||
- this.targetSelector.a(1, new EntityPhantom.b(null));
|
||||
+ // CraftBukkit - decompile errors
|
||||
+ this.goalSelector.a(1, new EntityPhantom.c());
|
||||
+ this.goalSelector.a(2, new EntityPhantom.i());
|
||||
+ this.goalSelector.a(3, new EntityPhantom.e());
|
||||
+ this.targetSelector.a(1, new EntityPhantom.b());
|
||||
}
|
||||
|
||||
protected void initAttributes() {
|
||||
@@ -186,7 +187,7 @@
|
||||
} else {
|
||||
this.b = 60;
|
||||
AxisAlignedBB axisalignedbb = EntityPhantom.this.getBoundingBox().grow(16.0D, 64.0D, 16.0D);
|
||||
- List list = EntityPhantom.this.world.a(EntityHuman.class, axisalignedbb);
|
||||
+ List<EntityHuman> list = EntityPhantom.this.world.a(EntityHuman.class, axisalignedbb); // CraftBukkit - decompile error
|
||||
|
||||
if (!list.isEmpty()) {
|
||||
list.sort((entityhuman, entityhuman1) -> {
|
||||
@@ -198,7 +199,7 @@
|
||||
@@ -197,7 +197,7 @@
|
||||
EntityHuman entityhuman = (EntityHuman) iterator.next();
|
||||
|
||||
if (PathfinderGoalTarget.a(EntityPhantom.this, entityhuman, false, false)) {
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/EntityPlayer.java
|
||||
+++ b/net/minecraft/server/EntityPlayer.java
|
||||
@@ -15,10 +15,28 @@
|
||||
@@ -12,10 +12,28 @@
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
public PlayerConnection playerConnection;
|
||||
public final MinecraftServer server;
|
||||
public final PlayerInteractManager playerInteractManager;
|
||||
@@ -54,6 +72,20 @@
|
||||
@@ -51,6 +69,20 @@
|
||||
public int ping;
|
||||
public boolean viewingCredits;
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
public EntityPlayer(MinecraftServer minecraftserver, WorldServer worldserver, GameProfile gameprofile, PlayerInteractManager playerinteractmanager) {
|
||||
super((World) worldserver, gameprofile);
|
||||
playerinteractmanager.player = this;
|
||||
@@ -64,8 +96,50 @@
|
||||
@@ -61,8 +93,50 @@
|
||||
this.cf = minecraftserver.getPlayerList().h(this);
|
||||
this.Q = 1.0F;
|
||||
this.a(worldserver);
|
||||
@ -102,7 +102,7 @@
|
||||
private void a(WorldServer worldserver) {
|
||||
BlockPosition blockposition = worldserver.getSpawn();
|
||||
|
||||
@@ -132,6 +206,7 @@
|
||||
@@ -129,6 +203,7 @@
|
||||
if (nbttagcompound.hasKeyOfType("recipeBook", 10)) {
|
||||
this.recipeBook.a(nbttagcompound.getCompound("recipeBook"));
|
||||
}
|
||||
@ -110,7 +110,7 @@
|
||||
|
||||
}
|
||||
|
||||
@@ -151,7 +226,20 @@
|
||||
@@ -148,7 +223,20 @@
|
||||
Entity entity = this.getRootVehicle();
|
||||
Entity entity1 = this.getVehicle();
|
||||
|
||||
@ -132,7 +132,7 @@
|
||||
NBTTagCompound nbttagcompound2 = new NBTTagCompound();
|
||||
NBTTagCompound nbttagcompound3 = new NBTTagCompound();
|
||||
|
||||
@@ -162,8 +250,34 @@
|
||||
@@ -159,8 +247,34 @@
|
||||
}
|
||||
|
||||
nbttagcompound.set("recipeBook", this.recipeBook.e());
|
||||
@ -167,7 +167,7 @@
|
||||
public void a(int i) {
|
||||
float f = (float) this.getExpToLevel();
|
||||
float f1 = (f - 1.0F) / f;
|
||||
@@ -210,6 +324,11 @@
|
||||
@@ -207,6 +321,11 @@
|
||||
}
|
||||
|
||||
public void tick() {
|
||||
@ -179,7 +179,7 @@
|
||||
this.playerInteractManager.a();
|
||||
--this.invulnerableTicks;
|
||||
if (this.noDamageTicks > 0) {
|
||||
@@ -275,7 +394,7 @@
|
||||
@@ -272,7 +391,7 @@
|
||||
}
|
||||
|
||||
if (this.getHealth() != this.lastHealthSent || this.lastFoodSent != this.foodData.getFoodLevel() || this.foodData.getSaturationLevel() == 0.0F != this.cp) {
|
||||
@ -188,7 +188,7 @@
|
||||
this.lastHealthSent = this.getHealth();
|
||||
this.lastFoodSent = this.foodData.getFoodLevel();
|
||||
this.cp = this.foodData.getSaturationLevel() == 0.0F;
|
||||
@@ -306,6 +425,12 @@
|
||||
@@ -303,6 +422,12 @@
|
||||
this.a(IScoreboardCriteria.XP, MathHelper.f((float) this.cm));
|
||||
}
|
||||
|
||||
@ -201,7 +201,7 @@
|
||||
if (this.expLevel != this.cl) {
|
||||
this.cl = this.expLevel;
|
||||
this.a(IScoreboardCriteria.LEVEL, MathHelper.f((float) this.cl));
|
||||
@@ -320,6 +445,16 @@
|
||||
@@ -317,6 +442,16 @@
|
||||
CriterionTriggers.p.a(this);
|
||||
}
|
||||
|
||||
@ -218,7 +218,7 @@
|
||||
} catch (Throwable throwable) {
|
||||
CrashReport crashreport = CrashReport.a(throwable, "Ticking player");
|
||||
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Player being ticked");
|
||||
@@ -330,24 +465,50 @@
|
||||
@@ -327,16 +462,43 @@
|
||||
}
|
||||
|
||||
private void a(IScoreboardCriteria iscoreboardcriteria, int i) {
|
||||
@ -265,16 +265,7 @@
|
||||
|
||||
this.playerConnection.a((Packet) (new PacketPlayOutCombatEvent(this.getCombatTracker(), PacketPlayOutCombatEvent.EnumCombatEventType.ENTITY_DIED, ichatbasecomponent)), (future) -> {
|
||||
if (!future.isSuccess()) {
|
||||
- boolean flag = true;
|
||||
String s = ichatbasecomponent.a(256);
|
||||
ChatMessage chatmessage = new ChatMessage("death.attack.message_too_long", new Object[] { (new ChatComponentText(s)).a(EnumChatFormat.YELLOW)});
|
||||
IChatBaseComponent ichatbasecomponent1 = (new ChatMessage("death.attack.even_more_magic", new Object[] { this.getScoreboardDisplayName()})).a((chatmodifier) -> {
|
||||
- chatmodifier.setChatHoverable(new ChatHoverable(ChatHoverable.EnumHoverAction.SHOW_TEXT, ichatbasecomponent));
|
||||
+ chatmodifier.setChatHoverable(new ChatHoverable(ChatHoverable.EnumHoverAction.SHOW_TEXT, chatmessage));
|
||||
});
|
||||
|
||||
this.playerConnection.sendPacket(new PacketPlayOutCombatEvent(this.getCombatTracker(), PacketPlayOutCombatEvent.EnumCombatEventType.ENTITY_DIED, ichatbasecomponent1));
|
||||
@@ -370,12 +531,17 @@
|
||||
@@ -367,12 +529,17 @@
|
||||
}
|
||||
|
||||
this.releaseShoulderEntities();
|
||||
@ -296,7 +287,7 @@
|
||||
EntityLiving entityliving = this.cv();
|
||||
|
||||
if (entityliving != null) {
|
||||
@@ -398,10 +564,12 @@
|
||||
@@ -395,10 +562,12 @@
|
||||
String s = this.getName();
|
||||
String s1 = entity.getName();
|
||||
|
||||
@ -311,7 +302,7 @@
|
||||
} else {
|
||||
this.a(StatisticList.MOB_KILLS);
|
||||
}
|
||||
@@ -419,7 +587,8 @@
|
||||
@@ -416,7 +585,8 @@
|
||||
int i = scoreboardteam.getColor().b();
|
||||
|
||||
if (i >= 0 && i < aiscoreboardcriteria.length) {
|
||||
@ -321,7 +312,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -461,12 +630,14 @@
|
||||
@@ -458,12 +628,14 @@
|
||||
}
|
||||
|
||||
private boolean canPvP() {
|
||||
@ -338,7 +329,7 @@
|
||||
if (this.dimension == DimensionManager.OVERWORLD && dimensionmanager == DimensionManager.NETHER) {
|
||||
this.cC = new Vec3D(this.locX, this.locY, this.locZ);
|
||||
} else if (this.dimension != DimensionManager.NETHER && dimensionmanager != DimensionManager.OVERWORLD) {
|
||||
@@ -474,6 +645,7 @@
|
||||
@@ -471,6 +643,7 @@
|
||||
}
|
||||
|
||||
if (this.dimension == DimensionManager.THE_END && dimensionmanager == DimensionManager.THE_END) {
|
||||
@ -346,7 +337,7 @@
|
||||
this.world.kill(this);
|
||||
if (!this.viewingCredits) {
|
||||
this.viewingCredits = true;
|
||||
@@ -487,7 +659,10 @@
|
||||
@@ -484,7 +657,10 @@
|
||||
dimensionmanager = DimensionManager.THE_END;
|
||||
}
|
||||
|
||||
@ -358,7 +349,7 @@
|
||||
this.playerConnection.sendPacket(new PacketPlayOutWorldEvent(1032, BlockPosition.ZERO, 0, false));
|
||||
this.lastSentExp = -1;
|
||||
this.lastHealthSent = -1.0F;
|
||||
@@ -533,6 +708,7 @@
|
||||
@@ -530,6 +706,7 @@
|
||||
}
|
||||
|
||||
public void a(boolean flag, boolean flag1, boolean flag2) {
|
||||
@ -366,7 +357,7 @@
|
||||
if (this.isSleeping()) {
|
||||
this.getWorldServer().getTracker().sendPacketToEntity(this, new PacketPlayOutAnimation(this, 2));
|
||||
}
|
||||
@@ -611,23 +787,55 @@
|
||||
@@ -608,23 +785,55 @@
|
||||
this.playerConnection.sendPacket(new PacketPlayOutOpenSignEditor(tileentitysign.getPosition()));
|
||||
}
|
||||
|
||||
@ -425,7 +416,7 @@
|
||||
if (iinventory instanceof ILootable && ((ILootable) iinventory).getLootTable() != null && this.isSpectator()) {
|
||||
this.a((new ChatMessage("container.spectatorCantOpen", new Object[0])).a(EnumChatFormat.RED), true);
|
||||
} else {
|
||||
@@ -641,18 +849,21 @@
|
||||
@@ -638,18 +847,21 @@
|
||||
if (itileinventory.isLocked() && !this.a(itileinventory.getLock()) && !this.isSpectator()) {
|
||||
this.playerConnection.sendPacket(new PacketPlayOutChat(new ChatMessage("container.isLocked", new Object[] { iinventory.getScoreboardDisplayName()}), ChatMessageType.GAME_INFO));
|
||||
this.playerConnection.sendPacket(new PacketPlayOutNamedSoundEffect(SoundEffects.BLOCK_CHEST_LOCKED, SoundCategory.BLOCKS, this.locX, this.locY, this.locZ, 1.0F, 1.0F));
|
||||
@ -449,7 +440,7 @@
|
||||
|
||||
this.activeContainer.windowId = this.containerCounter;
|
||||
this.activeContainer.addSlotListener(this);
|
||||
@@ -660,8 +871,14 @@
|
||||
@@ -657,8 +869,14 @@
|
||||
}
|
||||
|
||||
public void openTrade(IMerchant imerchant) {
|
||||
@ -465,7 +456,7 @@
|
||||
this.activeContainer.windowId = this.containerCounter;
|
||||
this.activeContainer.addSlotListener(this);
|
||||
InventoryMerchant inventorymerchant = ((ContainerMerchant) this.activeContainer).d();
|
||||
@@ -681,13 +898,20 @@
|
||||
@@ -678,13 +896,20 @@
|
||||
}
|
||||
|
||||
public void openHorseInventory(EntityHorseAbstract entityhorseabstract, IInventory iinventory) {
|
||||
@ -487,7 +478,7 @@
|
||||
this.activeContainer.windowId = this.containerCounter;
|
||||
this.activeContainer.addSlotListener(this);
|
||||
}
|
||||
@@ -728,6 +952,11 @@
|
||||
@@ -725,6 +950,11 @@
|
||||
public void a(Container container, NonNullList<ItemStack> nonnulllist) {
|
||||
this.playerConnection.sendPacket(new PacketPlayOutWindowItems(container.windowId, nonnulllist));
|
||||
this.playerConnection.sendPacket(new PacketPlayOutSetSlot(-1, -1, this.inventory.getCarried()));
|
||||
@ -499,7 +490,7 @@
|
||||
}
|
||||
|
||||
public void setContainerData(Container container, int i, int j) {
|
||||
@@ -742,6 +971,7 @@
|
||||
@@ -739,6 +969,7 @@
|
||||
}
|
||||
|
||||
public void closeInventory() {
|
||||
@ -507,7 +498,7 @@
|
||||
this.playerConnection.sendPacket(new PacketPlayOutCloseWindow(this.activeContainer.windowId));
|
||||
this.m();
|
||||
}
|
||||
@@ -775,14 +1005,14 @@
|
||||
@@ -772,14 +1003,14 @@
|
||||
|
||||
public void a(Statistic<?> statistic, int i) {
|
||||
this.cg.b(this, statistic, i);
|
||||
@ -524,7 +515,7 @@
|
||||
}
|
||||
|
||||
public int discoverRecipes(Collection<IRecipe> collection) {
|
||||
@@ -830,8 +1060,17 @@
|
||||
@@ -827,8 +1058,17 @@
|
||||
|
||||
public void triggerHealthUpdate() {
|
||||
this.lastHealthSent = -1.0E8F;
|
||||
@ -542,7 +533,7 @@
|
||||
public void a(IChatBaseComponent ichatbasecomponent, boolean flag) {
|
||||
this.playerConnection.sendPacket(new PacketPlayOutChat(ichatbasecomponent, flag ? ChatMessageType.GAME_INFO : ChatMessageType.CHAT));
|
||||
}
|
||||
@@ -882,7 +1121,7 @@
|
||||
@@ -879,7 +1119,7 @@
|
||||
this.lastSentExp = -1;
|
||||
this.lastHealthSent = -1.0F;
|
||||
this.lastFoodSent = -1;
|
||||
@ -551,7 +542,7 @@
|
||||
this.removeQueue.addAll(entityplayer.removeQueue);
|
||||
this.cx = entityplayer.cx;
|
||||
this.cC = entityplayer.cC;
|
||||
@@ -941,6 +1180,18 @@
|
||||
@@ -938,6 +1178,18 @@
|
||||
}
|
||||
|
||||
public void a(EnumGamemode enumgamemode) {
|
||||
@ -570,7 +561,7 @@
|
||||
this.playerInteractManager.setGameMode(enumgamemode);
|
||||
this.playerConnection.sendPacket(new PacketPlayOutGameStateChange(3, (float) enumgamemode.getId()));
|
||||
if (enumgamemode == EnumGamemode.SPECTATOR) {
|
||||
@@ -988,6 +1239,17 @@
|
||||
@@ -985,6 +1237,17 @@
|
||||
}
|
||||
|
||||
public void a(PacketPlayInSettings packetplayinsettings) {
|
||||
@ -588,7 +579,7 @@
|
||||
this.locale = packetplayinsettings.b();
|
||||
this.cs = packetplayinsettings.d();
|
||||
this.ct = packetplayinsettings.e();
|
||||
@@ -1023,13 +1285,13 @@
|
||||
@@ -1020,13 +1283,13 @@
|
||||
if (entity instanceof EntityHuman) {
|
||||
this.playerConnection.sendPacket(new PacketPlayOutEntityDestroy(new int[] { entity.getId()}));
|
||||
} else {
|
||||
@ -604,7 +595,7 @@
|
||||
}
|
||||
|
||||
protected void C() {
|
||||
@@ -1053,7 +1315,7 @@
|
||||
@@ -1050,7 +1313,7 @@
|
||||
this.spectatedEntity = (Entity) (entity == null ? this : entity);
|
||||
if (entity1 != this.spectatedEntity) {
|
||||
this.playerConnection.sendPacket(new PacketPlayOutCamera(this.spectatedEntity));
|
||||
@ -613,7 +604,7 @@
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1080,7 +1342,7 @@
|
||||
@@ -1077,7 +1340,7 @@
|
||||
|
||||
@Nullable
|
||||
public IChatBaseComponent getPlayerListName() {
|
||||
@ -622,7 +613,7 @@
|
||||
}
|
||||
|
||||
public void a(EnumHand enumhand) {
|
||||
@@ -1097,12 +1359,17 @@
|
||||
@@ -1094,12 +1357,17 @@
|
||||
}
|
||||
|
||||
public void J() {
|
||||
@ -640,7 +631,7 @@
|
||||
}
|
||||
|
||||
public AdvancementDataPlayer getAdvancementData() {
|
||||
@@ -1114,9 +1381,16 @@
|
||||
@@ -1111,9 +1379,16 @@
|
||||
return this.cC;
|
||||
}
|
||||
|
||||
@ -657,7 +648,7 @@
|
||||
if (worldserver == this.world) {
|
||||
this.playerConnection.a(d0, d1, d2, f, f1);
|
||||
} else {
|
||||
@@ -1141,6 +1415,149 @@
|
||||
@@ -1138,6 +1413,149 @@
|
||||
this.server.getPlayerList().b(this, worldserver);
|
||||
this.server.getPlayerList().updateClient(this);
|
||||
}
|
||||
|
@ -25,7 +25,7 @@
|
||||
@@ -114,6 +120,7 @@
|
||||
private void a(MovingObjectPosition movingobjectposition, List<MobEffect> list) {
|
||||
AxisAlignedBB axisalignedbb = this.getBoundingBox().grow(4.0D, 2.0D, 4.0D);
|
||||
List list1 = this.world.a(EntityLiving.class, axisalignedbb);
|
||||
List<EntityLiving> list1 = this.world.a(EntityLiving.class, axisalignedbb);
|
||||
+ Map<LivingEntity, Double> affected = new HashMap<LivingEntity, Double>(); // CraftBukkit
|
||||
|
||||
if (!list1.isEmpty()) {
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/EntitySheep.java
|
||||
+++ b/net/minecraft/server/EntitySheep.java
|
||||
@@ -10,6 +10,12 @@
|
||||
@@ -8,6 +8,12 @@
|
||||
import java.util.stream.Collectors;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
public class EntitySheep extends EntityAnimal {
|
||||
|
||||
private static final DataWatcherObject<Byte> bC = DataWatcher.a(EntitySheep.class, DataWatcherRegistry.a);
|
||||
@@ -17,8 +23,15 @@
|
||||
@@ -15,8 +21,15 @@
|
||||
public boolean canUse(EntityHuman entityhuman) {
|
||||
return false;
|
||||
}
|
||||
@ -30,7 +30,7 @@
|
||||
enummap.put(EnumColor.WHITE, Blocks.WHITE_WOOL);
|
||||
enummap.put(EnumColor.ORANGE, Blocks.ORANGE_WOOL);
|
||||
enummap.put(EnumColor.MAGENTA, Blocks.MAGENTA_WOOL);
|
||||
@@ -143,11 +156,22 @@
|
||||
@@ -141,11 +154,22 @@
|
||||
|
||||
if (itemstack.getItem() == Items.SHEARS && !this.isSheared() && !this.isBaby()) {
|
||||
if (!this.world.isClientSide) {
|
||||
@ -53,7 +53,7 @@
|
||||
|
||||
if (entityitem != null) {
|
||||
entityitem.motY += (double) (this.random.nextFloat() * 0.05F);
|
||||
@@ -232,6 +256,12 @@
|
||||
@@ -230,6 +254,12 @@
|
||||
}
|
||||
|
||||
public void x() {
|
||||
@ -66,7 +66,7 @@
|
||||
this.setSheared(false);
|
||||
if (this.isBaby()) {
|
||||
this.setAge(60);
|
||||
@@ -252,6 +282,7 @@
|
||||
@@ -250,6 +280,7 @@
|
||||
|
||||
this.container.setItem(0, new ItemStack(ItemDye.a(enumcolor)));
|
||||
this.container.setItem(1, new ItemStack(ItemDye.a(enumcolor1)));
|
||||
|
@ -1,8 +1,8 @@
|
||||
--- a/net/minecraft/server/EntityShulker.java
|
||||
+++ b/net/minecraft/server/EntityShulker.java
|
||||
@@ -6,6 +6,10 @@
|
||||
@@ -5,6 +5,10 @@
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import java.util.function.Predicate;
|
||||
import javax.annotation.Nullable;
|
||||
+// CraftBukkit start
|
||||
+import org.bukkit.Location;
|
||||
@ -11,16 +11,7 @@
|
||||
|
||||
public class EntityShulker extends EntityGolem implements IMonster {
|
||||
|
||||
@@ -44,7 +48,7 @@
|
||||
protected void n() {
|
||||
this.goalSelector.a(1, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
|
||||
this.goalSelector.a(4, new EntityShulker.a());
|
||||
- this.goalSelector.a(7, new EntityShulker.e(null));
|
||||
+ this.goalSelector.a(7, new EntityShulker.e()); // CraftBukkit - decompile error
|
||||
this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this));
|
||||
this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, true, new Class[0]));
|
||||
this.targetSelector.a(2, new EntityShulker.d(this));
|
||||
@@ -321,8 +325,17 @@
|
||||
@@ -320,8 +324,17 @@
|
||||
EnumDirection enumdirection = aenumdirection[k];
|
||||
|
||||
if (this.world.q(blockposition1.shift(enumdirection))) {
|
||||
@ -40,7 +31,7 @@
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -367,6 +380,7 @@
|
||||
@@ -366,6 +379,7 @@
|
||||
this.locX = (double) blockposition.getX() + 0.5D;
|
||||
this.locY = (double) blockposition.getY();
|
||||
this.locZ = (double) blockposition.getZ() + 0.5D;
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/EntityShulkerBullet.java
|
||||
+++ b/net/minecraft/server/EntityShulkerBullet.java
|
||||
@@ -42,8 +42,29 @@
|
||||
@@ -41,8 +41,29 @@
|
||||
this.target = entity;
|
||||
this.c = EnumDirection.UP;
|
||||
this.a(enumdirection_enumaxis);
|
||||
@ -30,7 +30,7 @@
|
||||
public SoundCategory bV() {
|
||||
return SoundCategory.HOSTILE;
|
||||
}
|
||||
@@ -287,6 +308,7 @@
|
||||
@@ -286,6 +307,7 @@
|
||||
}
|
||||
|
||||
protected void a(MovingObjectPosition movingobjectposition) {
|
||||
@ -38,7 +38,7 @@
|
||||
if (movingobjectposition.entity == null) {
|
||||
((WorldServer) this.world).a(Particles.u, this.locX, this.locY, this.locZ, 2, 0.2D, 0.2D, 0.2D, 0.0D);
|
||||
this.a(SoundEffects.ENTITY_SHULKER_BULLET_HIT, 1.0F, 1.0F);
|
||||
@@ -296,7 +318,7 @@
|
||||
@@ -295,7 +317,7 @@
|
||||
if (flag) {
|
||||
this.a(this.shooter, movingobjectposition.entity);
|
||||
if (movingobjectposition.entity instanceof EntityLiving) {
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/EntitySkeletonAbstract.java
|
||||
+++ b/net/minecraft/server/EntitySkeletonAbstract.java
|
||||
@@ -3,12 +3,13 @@
|
||||
@@ -3,6 +3,7 @@
|
||||
import java.time.LocalDate;
|
||||
import java.time.temporal.ChronoField;
|
||||
import javax.annotation.Nullable;
|
||||
@ -8,13 +8,6 @@
|
||||
|
||||
public abstract class EntitySkeletonAbstract extends EntityMonster implements IRangedEntity {
|
||||
|
||||
private static final DataWatcherObject<Boolean> a = DataWatcher.a(EntitySkeletonAbstract.class, DataWatcherRegistry.i);
|
||||
private final PathfinderGoalBowShoot<EntitySkeletonAbstract> b = new PathfinderGoalBowShoot(this, 1.0D, 20, 15.0F);
|
||||
- private final PathfinderGoalMeleeAttack c = new PathfinderGoalMeleeAttack(this, 1.2D, flag) {
|
||||
+ private final PathfinderGoalMeleeAttack c = new PathfinderGoalMeleeAttack(this, 1.2D, false) { // CraftBukkit - decompile error
|
||||
public void d() {
|
||||
super.d();
|
||||
EntitySkeletonAbstract.this.s(false);
|
||||
@@ -78,7 +79,14 @@
|
||||
}
|
||||
|
||||
|
@ -9,17 +9,17 @@
|
||||
private final Map<Class<?>, List<T>> b = Maps.newHashMap();
|
||||
private final Set<Class<?>> c = Sets.newIdentityHashSet();
|
||||
private final Class<T> d;
|
||||
@@ -41,7 +41,7 @@
|
||||
Object object = iterator.next();
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
if (oclass.isAssignableFrom(object.getClass())) {
|
||||
- this.a(object, oclass);
|
||||
+ this.a((T) object, oclass);
|
||||
}
|
||||
}
|
||||
protected void a(Class<?> oclass) {
|
||||
EntitySlice.a.add(oclass);
|
||||
- Iterator iterator = this.e.iterator();
|
||||
+ Iterator<T> iterator = this.e.iterator(); // CraftBukkit - decompile error
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
T t0 = iterator.next();
|
||||
@@ -78,7 +78,7 @@
|
||||
List list = (List) this.b.get(oclass);
|
||||
List<T> list = (List) this.b.get(oclass);
|
||||
|
||||
if (list == null) {
|
||||
- this.b.put(oclass, Lists.newArrayList(new Object[] { t0}));
|
||||
@ -27,3 +27,12 @@
|
||||
} else {
|
||||
list.add(t0);
|
||||
}
|
||||
@@ -86,7 +86,7 @@
|
||||
}
|
||||
|
||||
public boolean remove(Object object) {
|
||||
- T t0 = object;
|
||||
+ T t0 = (T) object; // CraftBukkit - decompile error
|
||||
boolean flag = false;
|
||||
Iterator iterator = this.c.iterator();
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
@@ -55,7 +59,7 @@
|
||||
}
|
||||
|
||||
if (this.world.getBiome(new BlockPosition(i, 0, k)).c(new BlockPosition(i, j, k)) > 1.0F) {
|
||||
if (this.world.getBiome(new BlockPosition(i, 0, k)).getAdjustedTemperature(new BlockPosition(i, j, k)) > 1.0F) {
|
||||
- this.damageEntity(DamageSource.BURN, 1.0F);
|
||||
+ this.damageEntity(CraftEventFactory.MELTING, 1.0F); // CraftBukkit - DamageSource.BURN -> CraftEventFactory.MELTING
|
||||
}
|
||||
@ -23,7 +23,7 @@
|
||||
@@ -71,7 +75,7 @@
|
||||
BlockPosition blockposition = new BlockPosition(i, j, k);
|
||||
|
||||
if (this.world.getType(blockposition).isAir() && this.world.getBiome(blockposition).c(blockposition) < 0.8F && iblockdata.canPlace(this.world, blockposition)) {
|
||||
if (this.world.getType(blockposition).isAir() && this.world.getBiome(blockposition).getAdjustedTemperature(blockposition) < 0.8F && iblockdata.canPlace(this.world, blockposition)) {
|
||||
- this.world.setTypeUpdate(blockposition, iblockdata);
|
||||
+ org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFormEvent(this.world, blockposition, iblockdata, this); // CraftBukkit
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/EntityTippedArrow.java
|
||||
+++ b/net/minecraft/server/EntityTippedArrow.java
|
||||
@@ -116,6 +116,25 @@
|
||||
@@ -115,6 +115,25 @@
|
||||
}
|
||||
}
|
||||
|
||||
@ -26,7 +26,7 @@
|
||||
public int getColor() {
|
||||
return (Integer) this.datawatcher.get(EntityTippedArrow.g);
|
||||
}
|
||||
@@ -180,7 +199,7 @@
|
||||
@@ -179,7 +198,7 @@
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
mobeffect = (MobEffect) iterator.next();
|
||||
@ -35,7 +35,7 @@
|
||||
}
|
||||
|
||||
if (!this.effects.isEmpty()) {
|
||||
@@ -188,7 +207,7 @@
|
||||
@@ -187,7 +206,7 @@
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
mobeffect = (MobEffect) iterator.next();
|
||||
|
@ -64,7 +64,7 @@
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
this.c();
|
||||
object = new PacketPlayOutEntityTeleport(this.tracker);
|
||||
packet1 = new PacketPlayOutEntityTeleport(this.tracker);
|
||||
}
|
||||
@@ -181,6 +205,7 @@
|
||||
}
|
||||
@ -112,7 +112,7 @@
|
||||
}
|
||||
|
||||
@@ -224,6 +270,11 @@
|
||||
Set set = attributemapserver.getAttributes();
|
||||
Set<AttributeInstance> set = attributemapserver.getAttributes();
|
||||
|
||||
if (!set.isEmpty()) {
|
||||
+ // CraftBukkit start - Send scaled max health
|
||||
@ -138,11 +138,11 @@
|
||||
+ entityplayer.removeQueue.remove(Integer.valueOf(this.tracker.getId()));
|
||||
+ // CraftBukkit end
|
||||
this.trackedPlayers.add(entityplayer);
|
||||
Packet packet = this.e();
|
||||
Packet<?> packet = this.e();
|
||||
|
||||
@@ -290,6 +351,12 @@
|
||||
AttributeMapServer attributemapserver = (AttributeMapServer) ((EntityLiving) this.tracker).getAttributeMap();
|
||||
Collection collection = attributemapserver.c();
|
||||
Collection<AttributeInstance> collection = attributemapserver.c();
|
||||
|
||||
+ // CraftBukkit start - If sending own attributes send scaled health instead of current maximum health
|
||||
+ if (this.tracker.getId() == entityplayer.getId()) {
|
||||
|
@ -1,19 +1,5 @@
|
||||
--- a/net/minecraft/server/EntityTurtle.java
|
||||
+++ b/net/minecraft/server/EntityTurtle.java
|
||||
@@ -130,11 +130,11 @@
|
||||
this.goalSelector.a(1, new EntityTurtle.a(this, 1.0D));
|
||||
this.goalSelector.a(1, new EntityTurtle.d(this, 1.0D));
|
||||
this.goalSelector.a(2, new EntityTurtle.i(this, 1.1D, Blocks.SEAGRASS.getItem()));
|
||||
- this.goalSelector.a(3, new EntityTurtle.c(this, 1.0D, null));
|
||||
+ this.goalSelector.a(3, new EntityTurtle.c(this, 1.0D)); // CraftBukkit - decompile error
|
||||
this.goalSelector.a(4, new EntityTurtle.b(this, 1.0D));
|
||||
this.goalSelector.a(7, new EntityTurtle.j(this, 1.0D));
|
||||
this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
|
||||
- this.goalSelector.a(9, new EntityTurtle.h(this, 1.0D, 100, null));
|
||||
+ this.goalSelector.a(9, new EntityTurtle.h(this, 1.0D, 100)); // CraftBukkit - decompile error
|
||||
}
|
||||
|
||||
protected void initAttributes() {
|
||||
@@ -232,7 +232,9 @@
|
||||
protected void l() {
|
||||
super.l();
|
||||
@ -34,7 +20,7 @@
|
||||
}
|
||||
|
||||
public void die(DamageSource damagesource) {
|
||||
@@ -423,15 +427,19 @@
|
||||
@@ -423,8 +427,12 @@
|
||||
} else if (this.f.bK > 200) {
|
||||
World world = this.f.world;
|
||||
|
||||
@ -47,11 +33,3 @@
|
||||
this.f.s(false);
|
||||
this.f.t(false);
|
||||
this.f.d(600);
|
||||
}
|
||||
|
||||
if (this.f.dz()) {
|
||||
- EntityTurtle.g(this.f);
|
||||
+ this.f.bK++; // CraftBukkit - decompile error
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
+++ b/net/minecraft/server/EntityTypes.java
|
||||
@@ -121,7 +121,7 @@
|
||||
public static <T extends Entity> EntityTypes<T> a(String s, EntityTypes.a<T> entitytypes_a) {
|
||||
EntityTypes entitytypes = entitytypes_a.a(s);
|
||||
EntityTypes<T> entitytypes = entitytypes_a.a(s);
|
||||
|
||||
- IRegistry.ENTITY_TYPE.a(new MinecraftKey(s), (Object) entitytypes);
|
||||
+ IRegistry.ENTITY_TYPE.a(new MinecraftKey(s), entitytypes); // CraftBukkit - decompile error
|
||||
@ -19,24 +19,15 @@
|
||||
+
|
||||
+ @Nullable
|
||||
+ public T spawnCreature(World world, @Nullable NBTTagCompound nbttagcompound, @Nullable IChatBaseComponent ichatbasecomponent, @Nullable EntityHuman entityhuman, BlockPosition blockposition, boolean flag, boolean flag1, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason spawnReason) {
|
||||
Entity entity = this.b(world, nbttagcompound, ichatbasecomponent, entityhuman, blockposition, flag, flag1);
|
||||
T t0 = this.b(world, nbttagcompound, ichatbasecomponent, entityhuman, blockposition, flag, flag1);
|
||||
|
||||
- world.addEntity(entity);
|
||||
- return entity;
|
||||
+ return world.addEntity(entity, spawnReason) ? (T) entity : null; // Don't return an entity when CreatureSpawnEvent is canceled
|
||||
- world.addEntity(t0);
|
||||
- return t0;
|
||||
+ return world.addEntity(t0, spawnReason) ? t0 : null; // Don't return an entity when CreatureSpawnEvent is canceled
|
||||
+ // CraftBukkit end
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -187,7 +193,7 @@
|
||||
}
|
||||
|
||||
a(world, entityhuman, entity, nbttagcompound);
|
||||
- return entity;
|
||||
+ return (T) entity; // CraftBukkit - decompile error
|
||||
}
|
||||
}
|
||||
|
||||
@@ -250,7 +256,7 @@
|
||||
|
||||
@Nullable
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/EntityVillager.java
|
||||
+++ b/net/minecraft/server/EntityVillager.java
|
||||
@@ -7,6 +7,16 @@
|
||||
@@ -6,6 +6,16 @@
|
||||
import javax.annotation.Nullable;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@ -17,7 +17,7 @@
|
||||
|
||||
public class EntityVillager extends EntityAgeable implements NPC, IMerchant {
|
||||
|
||||
@@ -38,7 +48,7 @@
|
||||
@@ -37,7 +47,7 @@
|
||||
|
||||
public EntityVillager(World world, int i) {
|
||||
super(EntityTypes.VILLAGER, world);
|
||||
@ -26,7 +26,7 @@
|
||||
this.setProfession(i);
|
||||
this.setSize(0.6F, 1.95F);
|
||||
((Navigation) this.getNavigation()).a(true);
|
||||
@@ -120,7 +130,14 @@
|
||||
@@ -119,7 +129,14 @@
|
||||
MerchantRecipe merchantrecipe = (MerchantRecipe) iterator.next();
|
||||
|
||||
if (merchantrecipe.h()) {
|
||||
@ -42,7 +42,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,7 +149,7 @@
|
||||
@@ -131,7 +148,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -434,7 +451,20 @@
|
||||
@@ -433,7 +450,20 @@
|
||||
for (int l = 0; l < k; ++l) {
|
||||
EntityVillager.IMerchantRecipeOption entityvillager_imerchantrecipeoption = aentityvillager_imerchantrecipeoption3[l];
|
||||
|
||||
@ -73,7 +73,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -569,7 +599,12 @@
|
||||
@@ -568,7 +598,12 @@
|
||||
entitywitch.setCustomNameVisible(this.getCustomNameVisible());
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
--- a/net/minecraft/server/EntityWolf.java
|
||||
+++ b/net/minecraft/server/EntityWolf.java
|
||||
@@ -4,6 +4,11 @@
|
||||
import java.util.function.Predicate;
|
||||
@@ -3,6 +3,11 @@
|
||||
import java.util.UUID;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
+// CraftBukkit start
|
||||
@ -12,7 +12,7 @@
|
||||
public class EntityWolf extends EntityTameableAnimal {
|
||||
|
||||
private static final DataWatcherObject<Float> DATA_HEALTH = DataWatcher.a(EntityWolf.class, DataWatcherRegistry.c);
|
||||
@@ -57,6 +62,22 @@
|
||||
@@ -56,6 +61,22 @@
|
||||
this.getAttributeMap().b(GenericAttributes.ATTACK_DAMAGE).setValue(2.0D);
|
||||
}
|
||||
|
||||
@ -35,7 +35,7 @@
|
||||
public void setGoalTarget(@Nullable EntityLiving entityliving) {
|
||||
super.setGoalTarget(entityliving);
|
||||
if (entityliving == null) {
|
||||
@@ -191,7 +212,8 @@
|
||||
@@ -190,7 +211,8 @@
|
||||
Entity entity = damagesource.getEntity();
|
||||
|
||||
if (this.goalSit != null) {
|
||||
@ -45,7 +45,7 @@
|
||||
}
|
||||
|
||||
if (entity != null && !(entity instanceof EntityHuman) && !(entity instanceof EntityArrow)) {
|
||||
@@ -237,7 +259,7 @@
|
||||
@@ -236,7 +258,7 @@
|
||||
itemstack.subtract(1);
|
||||
}
|
||||
|
||||
@ -54,7 +54,7 @@
|
||||
return true;
|
||||
}
|
||||
} else if (item instanceof ItemDye) {
|
||||
@@ -258,7 +280,7 @@
|
||||
@@ -257,7 +279,7 @@
|
||||
this.goalSit.setSitting(!this.isSitting());
|
||||
this.bg = false;
|
||||
this.navigation.q();
|
||||
@ -63,7 +63,7 @@
|
||||
}
|
||||
} else if (item == Items.BONE && !this.isAngry()) {
|
||||
if (!entityhuman.abilities.canInstantlyBuild) {
|
||||
@@ -266,12 +288,13 @@
|
||||
@@ -265,12 +287,13 @@
|
||||
}
|
||||
|
||||
if (!this.world.isClientSide) {
|
||||
|
@ -16,17 +16,8 @@
|
||||
public class EntityZombie extends EntityMonster {
|
||||
|
||||
protected static final IAttribute c = (new AttributeRanged((IAttribute) null, "zombie.spawnReinforcements", 0.0D, 0.0D, 1.0D)).a("Spawn Reinforcements Chance");
|
||||
@@ -14,13 +23,14 @@
|
||||
private static final DataWatcherObject<Boolean> bC = DataWatcher.a(EntityZombie.class, DataWatcherRegistry.i);
|
||||
private static final DataWatcherObject<Integer> bD = DataWatcher.a(EntityZombie.class, DataWatcherRegistry.b);
|
||||
private static final DataWatcherObject<Boolean> bE = DataWatcher.a(EntityZombie.class, DataWatcherRegistry.i);
|
||||
- private static final DataWatcherObject<Boolean> bF = DataWatcher.a(EntityZombie.class, DataWatcherRegistry.i);
|
||||
+ public static final DataWatcherObject<Boolean> bF = DataWatcher.a(EntityZombie.class, DataWatcherRegistry.i); // PAIL
|
||||
private final PathfinderGoalBreakDoor bG;
|
||||
private boolean bH;
|
||||
private int bI;
|
||||
- private int drownedConversionTime;
|
||||
+ public int drownedConversionTime; // PAIL
|
||||
@@ -21,6 +30,7 @@
|
||||
public int drownedConversionTime;
|
||||
private float bK;
|
||||
private float bL;
|
||||
+ private int lastTick = MinecraftServer.currentTick; // CraftBukkit - add field
|
||||
@ -48,7 +39,7 @@
|
||||
if (this.drownedConversionTime < 0) {
|
||||
this.dE();
|
||||
}
|
||||
@@ -182,14 +196,21 @@
|
||||
@@ -182,7 +196,14 @@
|
||||
}
|
||||
|
||||
if (flag) {
|
||||
@ -64,14 +55,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
super.movementTick();
|
||||
}
|
||||
|
||||
- private void a(int i) {
|
||||
+ public void a(int i) { // PAIL
|
||||
this.drownedConversionTime = i;
|
||||
this.getDataWatcher().set(EntityZombie.bF, true);
|
||||
}
|
||||
@@ -221,7 +242,12 @@
|
||||
entityzombie.setCustomNameVisible(this.getCustomNameVisible());
|
||||
}
|
||||
@ -113,17 +96,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -362,8 +395,8 @@
|
||||
@@ -362,7 +395,7 @@
|
||||
EntityZombieVillager entityzombievillager = new EntityZombieVillager(this.world);
|
||||
|
||||
entityzombievillager.u(entityvillager);
|
||||
- this.world.kill(entityvillager);
|
||||
- entityzombievillager.prepare(this.world.getDamageScaler(new BlockPosition(entityzombievillager)), new EntityZombie.GroupDataZombie(false, null), (NBTTagCompound) null);
|
||||
+ // this.world.kill(entityvillager); // CraftBukkit - moved down
|
||||
+ entityzombievillager.prepare(this.world.getDamageScaler(new BlockPosition(entityzombievillager)), new EntityZombie.GroupDataZombie(false), (NBTTagCompound) null); // CraftBukkit - decompile error
|
||||
entityzombievillager.prepare(this.world.getDamageScaler(new BlockPosition(entityzombievillager)), new EntityZombie.GroupDataZombie(false), (NBTTagCompound) null);
|
||||
entityzombievillager.setProfession(entityvillager.getProfession());
|
||||
entityzombievillager.setBaby(entityvillager.isBaby());
|
||||
entityzombievillager.setNoAI(entityvillager.isNoAI());
|
||||
@@ -372,7 +405,13 @@
|
||||
entityzombievillager.setCustomNameVisible(entityvillager.getCustomNameVisible());
|
||||
}
|
||||
@ -139,15 +120,6 @@
|
||||
this.world.a((EntityHuman) null, 1026, new BlockPosition(this), 0);
|
||||
}
|
||||
|
||||
@@ -399,7 +438,7 @@
|
||||
|
||||
this.p(this.random.nextFloat() < 0.55F * f);
|
||||
if (object == null) {
|
||||
- object = new EntityZombie.GroupDataZombie(this.world.random.nextFloat() < 0.05F, null);
|
||||
+ object = new EntityZombie.GroupDataZombie(this.world.random.nextFloat() < 0.05F); // CraftBukkit - decompile error
|
||||
}
|
||||
|
||||
if (object instanceof EntityZombie.GroupDataZombie) {
|
||||
@@ -422,7 +461,7 @@
|
||||
entitychicken1.setPositionRotation(this.locX, this.locY, this.locZ, this.yaw, 0.0F);
|
||||
entitychicken1.prepare(difficultydamagescaler, (GroupDataEntity) null, (NBTTagCompound) null);
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/EntityZombieVillager.java
|
||||
+++ b/net/minecraft/server/EntityZombieVillager.java
|
||||
@@ -2,13 +2,18 @@
|
||||
@@ -2,6 +2,10 @@
|
||||
|
||||
import java.util.UUID;
|
||||
import javax.annotation.Nullable;
|
||||
@ -11,11 +11,9 @@
|
||||
|
||||
public class EntityZombieVillager extends EntityZombie {
|
||||
|
||||
- private static final DataWatcherObject<Boolean> a = DataWatcher.a(EntityZombieVillager.class, DataWatcherRegistry.i);
|
||||
+ public static final DataWatcherObject<Boolean> a = DataWatcher.a(EntityZombieVillager.class, DataWatcherRegistry.i); // PAIL
|
||||
@@ -9,6 +13,7 @@
|
||||
private static final DataWatcherObject<Integer> b = DataWatcher.a(EntityZombieVillager.class, DataWatcherRegistry.b);
|
||||
- private int conversionTime;
|
||||
+ public int conversionTime; // PAIL
|
||||
public int conversionTime;
|
||||
private UUID bD;
|
||||
+ private int lastTick = MinecraftServer.currentTick; // CraftBukkit - add field
|
||||
|
||||
@ -36,15 +34,10 @@
|
||||
|
||||
this.conversionTime -= i;
|
||||
if (this.conversionTime <= 0) {
|
||||
@@ -96,12 +106,14 @@
|
||||
return (Boolean) this.getDataWatcher().get(EntityZombieVillager.a);
|
||||
}
|
||||
|
||||
- protected void a(@Nullable UUID uuid, int i) {
|
||||
+ public void a(@Nullable UUID uuid, int i) { // PAIL
|
||||
@@ -100,8 +110,10 @@
|
||||
this.bD = uuid;
|
||||
this.conversionTime = i;
|
||||
this.getDataWatcher().set(EntityZombieVillager.a, true);
|
||||
this.getDataWatcher().set(EntityZombieVillager.CONVERTING, true);
|
||||
- this.removeEffect(MobEffects.WEAKNESS);
|
||||
- this.addEffect(new MobEffect(MobEffects.INCREASE_DAMAGE, i, Math.min(this.world.getDifficulty().a() - 1, 0)));
|
||||
+ // CraftBukkit start
|
||||
|
@ -11,35 +11,25 @@
|
||||
|
||||
public class ExpiringMap<T> extends Long2ObjectOpenHashMap<T> {
|
||||
|
||||
@@ -21,11 +23,17 @@
|
||||
@@ -21,10 +23,17 @@
|
||||
long j = SystemUtils.getMonotonicMillis();
|
||||
|
||||
this.b.put(i, j);
|
||||
- ObjectIterator objectiterator = this.b.long2LongEntrySet().iterator();
|
||||
+ cleanup();
|
||||
+ // CraftBukkit start
|
||||
+ cleanup();
|
||||
+ }
|
||||
+
|
||||
+ public void cleanup() {
|
||||
+ long j = SystemUtils.getMonotonicMillis();
|
||||
+ ObjectIterator<Long2LongMap.Entry> objectiterator = this.b.long2LongEntrySet().iterator(); // CraftBukkit - decompile error
|
||||
+ // CraftBukkit end
|
||||
ObjectIterator objectiterator = this.b.long2LongEntrySet().iterator();
|
||||
|
||||
while (objectiterator.hasNext()) {
|
||||
- Entry entry = (Entry) objectiterator.next();
|
||||
- Object object = super.get(entry.getLongKey());
|
||||
+ Long2LongMap.Entry entry = (Long2LongMap.Entry) objectiterator.next(); // CraftBukkit - decompile error
|
||||
+ T object = super.get(entry.getLongKey()); // CraftBukkit - decompile error
|
||||
T t0 = super.get(entry.getLongKey());
|
||||
|
||||
if (j - entry.getLongValue() <= (long) this.a) {
|
||||
break;
|
||||
@@ -36,6 +44,7 @@
|
||||
objectiterator.remove();
|
||||
}
|
||||
}
|
||||
+ // CraftBukkit end
|
||||
|
||||
}
|
||||
|
||||
@@ -69,4 +78,18 @@
|
||||
public T remove(Object object) {
|
||||
throw new RuntimeException("Not implemented");
|
||||
@ -57,5 +47,5 @@
|
||||
+ cleanup();
|
||||
+ return super.values();
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
+ // CraftBukkit end
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
--- a/net/minecraft/server/Explosion.java
|
||||
+++ b/net/minecraft/server/Explosion.java
|
||||
@@ -10,6 +10,13 @@
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
+// CraftBukkit start
|
||||
@ -37,7 +37,7 @@
|
||||
+ return;
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
HashSet hashset = Sets.newHashSet();
|
||||
Set<BlockPosition> set = Sets.newHashSet();
|
||||
boolean flag = true;
|
||||
|
||||
@@ -76,7 +89,7 @@
|
||||
@ -46,7 +46,7 @@
|
||||
|
||||
- if (f > 0.0F && (this.source == null || this.source.a(this, this.world, blockposition, iblockdata, f))) {
|
||||
+ if (f > 0.0F && (this.source == null || this.source.a(this, this.world, blockposition, iblockdata, f)) && blockposition.getY() < 256 && blockposition.getY() >= 0) { // CraftBukkit - don't wrap explosions
|
||||
hashset.add(blockposition);
|
||||
set.add(blockposition);
|
||||
}
|
||||
|
||||
@@ -120,7 +133,16 @@
|
||||
|
@ -1,9 +1,9 @@
|
||||
--- a/net/minecraft/server/FluidTypeFlowing.java
|
||||
+++ b/net/minecraft/server/FluidTypeFlowing.java
|
||||
@@ -14,13 +14,18 @@
|
||||
import java.util.function.IntFunction;
|
||||
import java.util.function.IntPredicate;
|
||||
import java.util.function.Supplier;
|
||||
@@ -10,6 +10,11 @@
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
+// CraftBukkit start
|
||||
+import org.bukkit.block.BlockFace;
|
||||
+import org.bukkit.craftbukkit.block.CraftBlock;
|
||||
@ -12,15 +12,7 @@
|
||||
|
||||
public abstract class FluidTypeFlowing extends FluidType {
|
||||
|
||||
public static final BlockStateBoolean FALLING = BlockProperties.h;
|
||||
public static final BlockStateInteger LEVEL = BlockProperties.ag;
|
||||
private static final ThreadLocal<Object2ByteLinkedOpenHashMap<Block.a>> e = ThreadLocal.withInitial(() -> {
|
||||
- Object2ByteLinkedOpenHashMap object2bytelinkedopenhashmap = new Object2ByteLinkedOpenHashMap(200) {
|
||||
+ Object2ByteLinkedOpenHashMap object2bytelinkedopenhashmap = new Object2ByteLinkedOpenHashMap<Block.a>(200) { // CraftBukkit - decompile error
|
||||
protected void rehash(int i) {}
|
||||
};
|
||||
|
||||
@@ -145,6 +150,15 @@
|
||||
@@ -141,6 +146,15 @@
|
||||
Fluid fluid1 = this.a((IWorldReader) generatoraccess, blockposition1, iblockdata1);
|
||||
|
||||
if (this.a(generatoraccess, blockposition, iblockdata, EnumDirection.DOWN, blockposition1, iblockdata1, generatoraccess.getFluid(blockposition1), fluid1.c())) {
|
||||
@ -36,7 +28,7 @@
|
||||
this.a(generatoraccess, blockposition1, iblockdata1, EnumDirection.DOWN, fluid1);
|
||||
if (this.a((IWorldReader) generatoraccess, blockposition) >= 3) {
|
||||
this.a(generatoraccess, blockposition, fluid, iblockdata);
|
||||
@@ -175,6 +189,15 @@
|
||||
@@ -171,6 +185,15 @@
|
||||
IBlockData iblockdata1 = generatoraccess.getType(blockposition1);
|
||||
|
||||
if (this.a(generatoraccess, blockposition, iblockdata, enumdirection, blockposition1, iblockdata1, generatoraccess.getFluid(blockposition1), fluid1.c())) {
|
||||
@ -52,69 +44,3 @@
|
||||
this.a(generatoraccess, blockposition1, iblockdata1, enumdirection, fluid1);
|
||||
}
|
||||
}
|
||||
@@ -307,21 +330,25 @@
|
||||
if (enumdirection1 != enumdirection) {
|
||||
BlockPosition blockposition2 = blockposition.shift(enumdirection1);
|
||||
short short0 = a(blockposition1, blockposition2);
|
||||
- Pair pair = (Pair) short2objectmap.computeIfAbsent(short0, (i) -> {
|
||||
- IBlockData iblockdata = iworldreader.getType(blockposition);
|
||||
+ // CraftBukkit start - decompile errors
|
||||
+ Pair pair = (Pair) short2objectmap.computeIfAbsent(short0, (ix) -> {
|
||||
+ IBlockData iblockdatax = iworldreader.getType(blockposition2);
|
||||
|
||||
- return Pair.of(iblockdata, iblockdata.s());
|
||||
+ return Pair.of(iblockdatax, iblockdatax.s());
|
||||
});
|
||||
+ // CraftBukkit end
|
||||
IBlockData iblockdata1 = (IBlockData) pair.getFirst();
|
||||
Fluid fluid = (Fluid) pair.getSecond();
|
||||
|
||||
if (this.a(iworldreader, this.e(), blockposition, iblockdata, enumdirection1, blockposition2, iblockdata1, fluid)) {
|
||||
- boolean flag = short2booleanmap.computeIfAbsent(short0, (i) -> {
|
||||
- BlockPosition blockposition = blockposition1.down();
|
||||
- IBlockData iblockdata = iworldreader.getType(blockposition);
|
||||
+ // CraftBukkit start - decompile errors
|
||||
+ boolean flag = short2booleanmap.computeIfAbsent(short0, (ix) -> {
|
||||
+ BlockPosition blockpositionx = blockposition2.down();
|
||||
+ IBlockData iblockdatax = iworldreader.getType(blockpositionx);
|
||||
|
||||
- return this.a((IBlockAccess) iworldreader, this.e(), blockposition1, iblockdata1, blockposition, iblockdata);
|
||||
+ return this.a((IBlockAccess) iworldreader, this.e(), blockposition2, iblockdata1, blockpositionx, iblockdatax);
|
||||
});
|
||||
+ // CraftBukkit end
|
||||
|
||||
if (flag) {
|
||||
return i;
|
||||
@@ -383,22 +410,26 @@
|
||||
EnumDirection enumdirection = (EnumDirection) iterator.next();
|
||||
BlockPosition blockposition1 = blockposition.shift(enumdirection);
|
||||
short short0 = a(blockposition, blockposition1);
|
||||
- Pair pair = (Pair) short2objectopenhashmap.computeIfAbsent(short0, (i) -> {
|
||||
- IBlockData iblockdata = iworldreader.getType(blockposition);
|
||||
+ // CraftBukkit start - decompile errors
|
||||
+ Pair pair = (Pair) short2objectopenhashmap.computeIfAbsent(short0, (ix) -> {
|
||||
+ IBlockData iblockdatax = iworldreader.getType(blockposition1);
|
||||
|
||||
- return Pair.of(iblockdata, iblockdata.s());
|
||||
+ return Pair.of(iblockdatax, iblockdatax.s());
|
||||
});
|
||||
+ // CraftBukkit end
|
||||
IBlockData iblockdata1 = (IBlockData) pair.getFirst();
|
||||
Fluid fluid = (Fluid) pair.getSecond();
|
||||
Fluid fluid1 = this.a(iworldreader, blockposition1, iblockdata1);
|
||||
|
||||
if (this.a(iworldreader, fluid1.c(), blockposition, iblockdata, enumdirection, blockposition1, iblockdata1, fluid)) {
|
||||
BlockPosition blockposition2 = blockposition1.down();
|
||||
- boolean flag = short2booleanopenhashmap.computeIfAbsent(short0, (i) -> {
|
||||
- IBlockData iblockdata = iworldreader.getType(blockposition);
|
||||
+ // CraftBukkit start - decompile errors
|
||||
+ boolean flag = short2booleanopenhashmap.computeIfAbsent(short0, (ix) -> {
|
||||
+ IBlockData iblockdatax = iworldreader.getType(blockposition2);
|
||||
|
||||
- return this.a((IBlockAccess) iworldreader, this.e(), blockposition1, iblockdata1, blockposition, iblockdata);
|
||||
+ return this.a((IBlockAccess) iworldreader, this.e(), blockposition1, iblockdata1, blockposition2, iblockdatax);
|
||||
});
|
||||
+ // CraftBukkit end
|
||||
int j;
|
||||
|
||||
if (flag) {
|
||||
|
@ -2,7 +2,7 @@
|
||||
+++ b/net/minecraft/server/ItemBoat.java
|
||||
@@ -52,6 +52,13 @@
|
||||
if (flag) {
|
||||
return new InteractionResultWrapper(EnumInteractionResult.PASS, itemstack);
|
||||
return new InteractionResultWrapper<>(EnumInteractionResult.PASS, itemstack);
|
||||
} else if (movingobjectposition.type == MovingObjectPosition.EnumMovingObjectType.BLOCK) {
|
||||
+ // CraftBukkit start - Boat placement
|
||||
+ org.bukkit.event.player.PlayerInteractEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerInteractEvent(entityhuman, org.bukkit.event.block.Action.RIGHT_CLICK_BLOCK, movingobjectposition.getBlockPosition(), movingobjectposition.direction, itemstack, enumhand);
|
||||
@ -15,7 +15,7 @@
|
||||
Block block = world.getType(blockposition).getBlock();
|
||||
EntityBoat entityboat = new EntityBoat(world, movingobjectposition.pos.x, movingobjectposition.pos.y, movingobjectposition.pos.z);
|
||||
@@ -62,7 +69,7 @@
|
||||
return new InteractionResultWrapper(EnumInteractionResult.FAIL, itemstack);
|
||||
return new InteractionResultWrapper<>(EnumInteractionResult.FAIL, itemstack);
|
||||
} else {
|
||||
if (!world.isClientSide) {
|
||||
- world.addEntity(entityboat);
|
||||
|
@ -15,11 +15,11 @@
|
||||
public class ItemBucket extends Item {
|
||||
|
||||
@@ -26,12 +33,21 @@
|
||||
if (this.fluidType == FluidTypes.a) {
|
||||
if (this.fluidType == FluidTypes.EMPTY) {
|
||||
iblockdata = world.getType(blockposition);
|
||||
if (iblockdata.getBlock() instanceof IFluidSource) {
|
||||
+ // CraftBukkit start
|
||||
+ FluidType dummyFluid = ((IFluidSource) iblockdata.getBlock()).a(DummyGeneratorAccess.INSTANCE, blockposition, iblockdata);
|
||||
+ FluidType dummyFluid = ((IFluidSource) iblockdata.getBlock()).removeFluid(DummyGeneratorAccess.INSTANCE, blockposition, iblockdata);
|
||||
+ PlayerBucketFillEvent event = CraftEventFactory.callPlayerBucketFillEvent(entityhuman, blockposition.getX(), blockposition.getY(), blockposition.getZ(), null, itemstack, dummyFluid.b());
|
||||
+
|
||||
+ if (event.isCancelled()) {
|
||||
@ -27,9 +27,9 @@
|
||||
+ return new InteractionResultWrapper(EnumInteractionResult.FAIL, itemstack);
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
FluidType fluidtype = ((IFluidSource) iblockdata.getBlock()).a(world, blockposition, iblockdata);
|
||||
FluidType fluidtype = ((IFluidSource) iblockdata.getBlock()).removeFluid(world, blockposition, iblockdata);
|
||||
|
||||
if (fluidtype != FluidTypes.a) {
|
||||
if (fluidtype != FluidTypes.EMPTY) {
|
||||
entityhuman.b(StatisticList.ITEM_USED.b(this));
|
||||
entityhuman.a(fluidtype.a(TagsFluid.LAVA) ? SoundEffects.ITEM_BUCKET_FILL_LAVA : SoundEffects.ITEM_BUCKET_FILL, 1.0F, 1.0F);
|
||||
- ItemStack itemstack1 = this.a(itemstack, entityhuman, fluidtype.b());
|
||||
|
@ -32,4 +32,4 @@
|
||||
+ // CraftBukkit end
|
||||
|
||||
entityhuman.b(StatisticList.ITEM_USED.b(this));
|
||||
return new InteractionResultWrapper(EnumInteractionResult.SUCCESS, itemstack);
|
||||
return new InteractionResultWrapper<>(EnumInteractionResult.SUCCESS, itemstack);
|
||||
|
@ -30,4 +30,4 @@
|
||||
+ // CraftBukkit end
|
||||
|
||||
entityhuman.b(StatisticList.ITEM_USED.b(this));
|
||||
return new InteractionResultWrapper(EnumInteractionResult.SUCCESS, itemstack);
|
||||
return new InteractionResultWrapper<>(EnumInteractionResult.SUCCESS, itemstack);
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/ItemStack.java
|
||||
+++ b/net/minecraft/server/ItemStack.java
|
||||
@@ -16,6 +16,22 @@
|
||||
@@ -15,6 +15,22 @@
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
public final class ItemStack {
|
||||
|
||||
private static final Logger c = LogManager.getLogger();
|
||||
@@ -50,25 +66,49 @@
|
||||
@@ -49,25 +65,49 @@
|
||||
this.E();
|
||||
}
|
||||
|
||||
@ -76,7 +76,7 @@
|
||||
this.E();
|
||||
}
|
||||
|
||||
@@ -98,7 +138,7 @@
|
||||
@@ -97,7 +137,7 @@
|
||||
return this.h ? Items.AIR : this.item;
|
||||
}
|
||||
|
||||
@ -85,7 +85,7 @@
|
||||
EntityHuman entityhuman = itemactioncontext.getEntity();
|
||||
BlockPosition blockposition = itemactioncontext.getClickPosition();
|
||||
ShapeDetectorBlock shapedetectorblock = new ShapeDetectorBlock(itemactioncontext.getWorld(), blockposition, false);
|
||||
@@ -106,12 +146,144 @@
|
||||
@@ -105,12 +145,144 @@
|
||||
if (entityhuman != null && !entityhuman.abilities.mayBuild && !this.b(itemactioncontext.getWorld().F(), shapedetectorblock)) {
|
||||
return EnumInteractionResult.PASS;
|
||||
} else {
|
||||
@ -231,7 +231,7 @@
|
||||
|
||||
return enuminteractionresult;
|
||||
}
|
||||
@@ -135,7 +307,7 @@
|
||||
@@ -134,7 +306,7 @@
|
||||
nbttagcompound.setString("id", minecraftkey == null ? "minecraft:air" : minecraftkey.toString());
|
||||
nbttagcompound.setByte("Count", (byte) this.count);
|
||||
if (this.tag != null) {
|
||||
@ -240,7 +240,7 @@
|
||||
}
|
||||
|
||||
return nbttagcompound;
|
||||
@@ -213,6 +385,11 @@
|
||||
@@ -212,6 +384,11 @@
|
||||
if (this.isDamaged(i, entityliving.getRandom(), entityliving instanceof EntityPlayer ? (EntityPlayer) entityliving : null)) {
|
||||
entityliving.c(this);
|
||||
Item item = this.getItem();
|
||||
@ -252,7 +252,7 @@
|
||||
|
||||
this.subtract(1);
|
||||
if (entityliving instanceof EntityHuman) {
|
||||
@@ -336,6 +513,17 @@
|
||||
@@ -335,6 +512,17 @@
|
||||
return this.tag;
|
||||
}
|
||||
|
||||
@ -270,7 +270,7 @@
|
||||
public NBTTagCompound getOrCreateTag() {
|
||||
if (this.tag == null) {
|
||||
this.setTag(new NBTTagCompound());
|
||||
@@ -480,6 +668,14 @@
|
||||
@@ -479,6 +667,14 @@
|
||||
}
|
||||
|
||||
public void setRepairCost(int i) {
|
||||
@ -285,7 +285,7 @@
|
||||
this.getOrCreateTag().setInt("RepairCost", i);
|
||||
}
|
||||
|
||||
@@ -522,6 +718,13 @@
|
||||
@@ -521,6 +717,13 @@
|
||||
nbttaglist.add((NBTBase) nbttagcompound);
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
@@ -30,7 +30,15 @@
|
||||
Fluid fluid = world.getFluid(blockposition);
|
||||
|
||||
if ((fluid.c() == FluidTypes.c || material == Material.ICE) && world.isEmpty(blockposition1)) {
|
||||
if ((fluid.c() == FluidTypes.WATER || material == Material.ICE) && world.isEmpty(blockposition1)) {
|
||||
+ // CraftBukkit start - special case for handling block placement with water lilies
|
||||
+ org.bukkit.block.BlockState blockstate = org.bukkit.craftbukkit.block.CraftBlockState.getBlockState(world, blockposition1);
|
||||
world.setTypeAndData(blockposition1, Blocks.LILY_PAD.getBlockData(), 11);
|
||||
|
@ -1,7 +1,7 @@
|
||||
--- a/net/minecraft/server/ItemWorldMap.java
|
||||
+++ b/net/minecraft/server/ItemWorldMap.java
|
||||
@@ -6,6 +6,11 @@
|
||||
import java.util.function.Function;
|
||||
import com.google.common.collect.Multisets;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
+// CraftBukkit start
|
||||
|
@ -1,15 +1,6 @@
|
||||
--- a/net/minecraft/server/JsonList.java
|
||||
+++ b/net/minecraft/server/JsonList.java
|
||||
@@ -56,7 +56,7 @@
|
||||
this.c = file;
|
||||
GsonBuilder gsonbuilder = (new GsonBuilder()).setPrettyPrinting();
|
||||
|
||||
- gsonbuilder.registerTypeHierarchyAdapter(JsonListEntry.class, new JsonList.JsonListEntrySerializer(null));
|
||||
+ gsonbuilder.registerTypeHierarchyAdapter(JsonListEntry.class, new JsonList.JsonListEntrySerializer()); // CraftBukkit - decompile error
|
||||
this.b = gsonbuilder.create();
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
@@ -85,7 +85,7 @@
|
||||
@Nullable
|
||||
public V get(K k0) {
|
||||
this.h();
|
||||
@ -18,7 +9,7 @@
|
||||
}
|
||||
|
||||
public void remove(K k0) {
|
||||
@@ -108,6 +108,12 @@
|
||||
@@ -107,6 +107,12 @@
|
||||
return (String[]) this.d.keySet().toArray(new String[this.d.size()]);
|
||||
}
|
||||
|
||||
@ -31,17 +22,35 @@
|
||||
public boolean isEmpty() {
|
||||
return this.d.size() < 1;
|
||||
}
|
||||
@@ -137,7 +143,7 @@
|
||||
@@ -124,7 +130,7 @@
|
||||
Iterator iterator = this.d.values().iterator();
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
Object object = iterator.next();
|
||||
- V v0 = (JsonListEntry) iterator.next();
|
||||
+ V v0 = (V) iterator.next(); // CraftBukkit - decompile error
|
||||
|
||||
- this.d.remove(this.a(object));
|
||||
+ this.d.remove(this.a((K) object)); // CraftBukkit - decompile error
|
||||
if (v0.hasExpired()) {
|
||||
list.add(v0.getKey());
|
||||
@@ -134,7 +140,7 @@
|
||||
iterator = list.iterator();
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
- K k0 = iterator.next();
|
||||
+ K k0 = (K) iterator.next(); // CraftBukkit - decompile error
|
||||
|
||||
this.d.remove(this.a(k0));
|
||||
}
|
||||
|
||||
@@ -142,7 +148,7 @@
|
||||
}
|
||||
@@ -180,7 +186,7 @@
|
||||
JsonListEntry jsonlistentry = (JsonListEntry) iterator.next();
|
||||
|
||||
protected JsonListEntry<K> a(JsonObject jsonobject) {
|
||||
- return new JsonListEntry<>((Object) null, jsonobject);
|
||||
+ return new JsonListEntry<>((K) null, jsonobject); // CraftBukkit - decompile error
|
||||
}
|
||||
|
||||
public Collection<V> e() {
|
||||
@@ -179,7 +185,7 @@
|
||||
JsonListEntry<K> jsonlistentry = (JsonListEntry) iterator.next();
|
||||
|
||||
if (jsonlistentry.getKey() != null) {
|
||||
- this.d.put(this.a(jsonlistentry.getKey()), jsonlistentry);
|
||||
|
@ -9,8 +9,8 @@
|
||||
switch (i) {
|
||||
case 0:
|
||||
LegacyPingHandler.a.debug("Ping: (<1.3.x) from {}:{}", inetsocketaddress.getAddress(), inetsocketaddress.getPort());
|
||||
- s = String.format("%s\u00a7%d\u00a7%d", new Object[] { minecraftserver.getMotd(), minecraftserver.getPlayerCount(), minecraftserver.getMaxPlayers()});
|
||||
+ s = String.format("%s\u00a7%d\u00a7%d", new Object[] { event.getMotd(), event.getNumPlayers(), event.getMaxPlayers()}); // CraftBukkit
|
||||
- s = String.format("%s\u00a7%d\u00a7%d", minecraftserver.getMotd(), minecraftserver.getPlayerCount(), minecraftserver.getMaxPlayers());
|
||||
+ s = String.format("%s\u00a7%d\u00a7%d", event.getMotd(), event.getNumPlayers(), event.getMaxPlayers()); // CraftBukkit
|
||||
this.a(channelhandlercontext, this.a(s));
|
||||
break;
|
||||
case 1:
|
||||
@ -18,8 +18,8 @@
|
||||
}
|
||||
|
||||
LegacyPingHandler.a.debug("Ping: (1.4-1.5.x) from {}:{}", inetsocketaddress.getAddress(), inetsocketaddress.getPort());
|
||||
- s = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", new Object[] { 127, minecraftserver.getVersion(), minecraftserver.getMotd(), minecraftserver.getPlayerCount(), minecraftserver.getMaxPlayers()});
|
||||
+ s = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", new Object[] { 127, minecraftserver.getVersion(), event.getMotd(), event.getNumPlayers(), event.getMaxPlayers()}); // CraftBukkit
|
||||
- s = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", 127, minecraftserver.getVersion(), minecraftserver.getMotd(), minecraftserver.getPlayerCount(), minecraftserver.getMaxPlayers());
|
||||
+ s = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", 127, minecraftserver.getVersion(), event.getMotd(), event.getNumPlayers(), event.getMaxPlayers()); // CraftBukkit
|
||||
this.a(channelhandlercontext, this.a(s));
|
||||
break;
|
||||
default:
|
||||
@ -27,8 +27,8 @@
|
||||
}
|
||||
|
||||
LegacyPingHandler.a.debug("Ping: (1.6) from {}:{}", inetsocketaddress.getAddress(), inetsocketaddress.getPort());
|
||||
- String s1 = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", new Object[] { 127, minecraftserver.getVersion(), minecraftserver.getMotd(), minecraftserver.getPlayerCount(), minecraftserver.getMaxPlayers()});
|
||||
+ String s1 = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", new Object[] { 127, minecraftserver.getVersion(), event.getMotd(), event.getNumPlayers(), event.getMaxPlayers()}); // CraftBukkit
|
||||
- String s1 = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", 127, minecraftserver.getVersion(), minecraftserver.getMotd(), minecraftserver.getPlayerCount(), minecraftserver.getMaxPlayers());
|
||||
+ String s1 = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", 127, minecraftserver.getVersion(), event.getMotd(), event.getNumPlayers(), event.getMaxPlayers()); // CraftBukkit
|
||||
ByteBuf bytebuf1 = this.a(s1);
|
||||
|
||||
try {
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/LoginListener.java
|
||||
+++ b/net/minecraft/server/LoginListener.java
|
||||
@@ -19,6 +19,12 @@
|
||||
@@ -18,6 +18,12 @@
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
public class LoginListener implements PacketLoginInListener, ITickable {
|
||||
|
||||
private static final AtomicInteger b = new AtomicInteger(0);
|
||||
@@ -33,6 +39,7 @@
|
||||
@@ -32,6 +38,7 @@
|
||||
private final String j;
|
||||
private SecretKey loginKey;
|
||||
private EntityPlayer l;
|
||||
@ -21,7 +21,7 @@
|
||||
|
||||
public LoginListener(MinecraftServer minecraftserver, NetworkManager networkmanager) {
|
||||
this.g = LoginListener.EnumProtocolState.HELLO;
|
||||
@@ -61,6 +68,20 @@
|
||||
@@ -60,6 +67,20 @@
|
||||
|
||||
}
|
||||
|
||||
@ -42,7 +42,7 @@
|
||||
public void disconnect(IChatBaseComponent ichatbasecomponent) {
|
||||
try {
|
||||
LoginListener.c.info("Disconnecting {}: {}", this.c(), ichatbasecomponent.getString());
|
||||
@@ -77,10 +98,12 @@
|
||||
@@ -76,10 +97,12 @@
|
||||
this.i = this.a(this.i);
|
||||
}
|
||||
|
||||
@ -58,7 +58,7 @@
|
||||
} else {
|
||||
this.g = LoginListener.EnumProtocolState.ACCEPTED;
|
||||
if (this.server.aw() >= 0 && !this.networkManager.isLocal()) {
|
||||
@@ -94,9 +117,9 @@
|
||||
@@ -93,9 +116,9 @@
|
||||
|
||||
if (entityplayer != null) {
|
||||
this.g = LoginListener.EnumProtocolState.DELAY_ACCEPT;
|
||||
@ -70,7 +70,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -141,6 +164,43 @@
|
||||
@@ -140,6 +163,43 @@
|
||||
|
||||
LoginListener.this.i = LoginListener.this.server.ap().hasJoinedServer(new GameProfile((UUID) null, gameprofile.getName()), s, this.a());
|
||||
if (LoginListener.this.i != null) {
|
||||
@ -114,7 +114,7 @@
|
||||
LoginListener.c.info("UUID of player {} is {}", LoginListener.this.i.getName(), LoginListener.this.i.getId());
|
||||
LoginListener.this.g = LoginListener.EnumProtocolState.READY_TO_ACCEPT;
|
||||
} else if (LoginListener.this.server.H()) {
|
||||
@@ -160,6 +220,11 @@
|
||||
@@ -159,6 +219,11 @@
|
||||
LoginListener.this.disconnect(new ChatMessage("multiplayer.disconnect.authservers_down", new Object[0]));
|
||||
LoginListener.c.error("Couldn't verify username because servers are unavailable");
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/MethodProfiler.java
|
||||
+++ b/net/minecraft/server/MethodProfiler.java
|
||||
@@ -13,6 +13,7 @@
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
public class MethodProfiler {
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
private static final Logger a = LogManager.getLogger();
|
||||
private final List<String> b = Lists.newArrayList();
|
||||
private final List<Long> c = Lists.newArrayList();
|
||||
@@ -41,6 +42,7 @@
|
||||
@@ -40,6 +41,7 @@
|
||||
}
|
||||
|
||||
public void a(int i) {
|
||||
@ -16,7 +16,7 @@
|
||||
if (!this.d) {
|
||||
this.d = true;
|
||||
this.f.clear();
|
||||
@@ -52,6 +54,7 @@
|
||||
@@ -51,6 +53,7 @@
|
||||
}
|
||||
|
||||
public void enter(String s) {
|
||||
@ -24,7 +24,7 @@
|
||||
if (this.d) {
|
||||
if (!this.e.isEmpty()) {
|
||||
this.e = this.e + ".";
|
||||
@@ -64,12 +67,14 @@
|
||||
@@ -63,12 +66,14 @@
|
||||
}
|
||||
|
||||
public void a(Supplier<String> supplier) {
|
||||
@ -39,15 +39,15 @@
|
||||
if (this.d && !this.c.isEmpty()) {
|
||||
long i = SystemUtils.getMonotonicNanos();
|
||||
long j = (Long) this.c.remove(this.c.size() - 1);
|
||||
@@ -92,6 +97,7 @@
|
||||
@@ -91,6 +96,7 @@
|
||||
}
|
||||
|
||||
public List<MethodProfiler.ProfilerInfo> b(String s) {
|
||||
+ if (!ENABLED) return Collections.emptyList(); // CraftBukkit
|
||||
long i = this.f.containsKey("root") ? (Long) this.f.get("root") : 0L;
|
||||
long j = this.f.containsKey(s) ? (Long) this.f.get(s) : -1L;
|
||||
ArrayList arraylist = Lists.newArrayList();
|
||||
@@ -154,11 +160,13 @@
|
||||
List<MethodProfiler.ProfilerInfo> list = Lists.newArrayList();
|
||||
@@ -153,11 +159,13 @@
|
||||
}
|
||||
|
||||
public void exitEnter(String s) {
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/net/minecraft/server/MinecraftServer.java
|
||||
@@ -59,6 +59,14 @@
|
||||
@@ -54,6 +54,14 @@
|
||||
import org.apache.commons.lang3.Validate;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@ -15,7 +15,7 @@
|
||||
|
||||
public abstract class MinecraftServer implements IAsyncTaskHandler, IMojangStatistics, ICommandListener, Runnable {
|
||||
|
||||
@@ -129,7 +137,21 @@
|
||||
@@ -124,7 +132,21 @@
|
||||
private boolean forceUpgrade;
|
||||
private float ap;
|
||||
|
||||
@ -36,9 +36,9 @@
|
||||
+
|
||||
+ public MinecraftServer(OptionSet options, Proxy proxy, DataFixer datafixer, CommandDispatcher commanddispatcher, YggdrasilAuthenticationService yggdrasilauthenticationservice, MinecraftSessionService minecraftsessionservice, GameProfileRepository gameprofilerepository, UserCache usercache) {
|
||||
this.ac = new ResourceManager(EnumResourcePackType.SERVER_DATA);
|
||||
this.resourcePackRepository = new ResourcePackRepository(ResourcePackLoader::new);
|
||||
this.resourcePackRepository = new ResourcePackRepository<>(ResourcePackLoader::new);
|
||||
this.ag = new CraftingManager();
|
||||
@@ -140,22 +162,51 @@
|
||||
@@ -135,22 +157,51 @@
|
||||
this.al = new AdvancementDataWorld();
|
||||
this.am = new CustomFunctionData(this);
|
||||
this.c = proxy;
|
||||
@ -94,7 +94,7 @@
|
||||
public abstract boolean init() throws IOException;
|
||||
|
||||
public void convertWorld(String s) {
|
||||
@@ -180,11 +231,11 @@
|
||||
@@ -175,11 +226,11 @@
|
||||
}
|
||||
|
||||
if (this.forceUpgrade) {
|
||||
@ -109,7 +109,7 @@
|
||||
IChatBaseComponent ichatbasecomponent = null;
|
||||
|
||||
while (!worldupgrader.b()) {
|
||||
@@ -223,8 +274,9 @@
|
||||
@@ -218,8 +269,9 @@
|
||||
}
|
||||
|
||||
public void a(String s, String s1, long i, WorldType worldtype, JsonElement jsonelement) {
|
||||
@ -120,7 +120,7 @@
|
||||
IDataManager idatamanager = this.getConvertable().a(s, this);
|
||||
|
||||
this.a(this.getWorld(), idatamanager);
|
||||
@@ -249,54 +301,144 @@
|
||||
@@ -244,54 +296,144 @@
|
||||
}
|
||||
|
||||
this.a(idatamanager.getDirectory(), worlddata);
|
||||
@ -158,8 +158,7 @@
|
||||
+ continue;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
- WorldServer worldserver = this.getWorldServer(DimensionManager.OVERWORLD);
|
||||
+
|
||||
+ String worldType = org.bukkit.World.Environment.getEnvironment(dimension).toString().toLowerCase();
|
||||
+ String name = (dimension == 0) ? s : s + "_" + worldType;
|
||||
+ this.convertWorld(name); // Run conversion now
|
||||
@ -178,32 +177,32 @@
|
||||
+ this.a(idatamanager.getDirectory(), worlddata);
|
||||
+ PersistentCollection persistentcollection = new PersistentCollection(idatamanager);
|
||||
|
||||
- worldserver.a(worldsettings);
|
||||
- worldserver.addIWorldAccess(new WorldManager(this, worldserver));
|
||||
- if (!this.H()) {
|
||||
- worldserver.getWorldData().setGameType(this.getGamemode());
|
||||
- }
|
||||
- WorldServer worldserver = this.getWorldServer(DimensionManager.OVERWORLD);
|
||||
+ if (this.L()) {
|
||||
+ world = (WorldServer) (new DemoWorldServer(this, idatamanager, persistentcollection, worlddata, DimensionManager.OVERWORLD, this.methodProfiler)).i_();
|
||||
+ } else {
|
||||
+ world = (WorldServer) (new WorldServer(this, idatamanager, persistentcollection, worlddata, DimensionManager.OVERWORLD, this.methodProfiler, org.bukkit.World.Environment.getEnvironment(dimension), gen)).i_();
|
||||
+ }
|
||||
|
||||
- SecondaryWorldServer secondaryworldserver = (new SecondaryWorldServer(this, idatamanager, DimensionManager.NETHER, worldserver, this.methodProfiler)).i_();
|
||||
- worldserver.a(worldsettings);
|
||||
- worldserver.addIWorldAccess(new WorldManager(this, worldserver));
|
||||
- if (!this.H()) {
|
||||
- worldserver.getWorldData().setGameType(this.getGamemode());
|
||||
- }
|
||||
+ world.a(worldsettings);
|
||||
+ this.server.scoreboardManager = new org.bukkit.craftbukkit.scoreboard.CraftScoreboardManager(this, world.getScoreboard());
|
||||
+ } else {
|
||||
+ String dim = "DIM" + dimension;
|
||||
|
||||
- SecondaryWorldServer secondaryworldserver = (new SecondaryWorldServer(this, idatamanager, DimensionManager.NETHER, worldserver, this.methodProfiler)).i_();
|
||||
+ File newWorld = new File(new File(name), dim);
|
||||
+ File oldWorld = new File(new File(s), dim);
|
||||
|
||||
- this.worldServer.put(DimensionManager.NETHER, secondaryworldserver);
|
||||
- secondaryworldserver.addIWorldAccess(new WorldManager(this, secondaryworldserver));
|
||||
- if (!this.H()) {
|
||||
- secondaryworldserver.getWorldData().setGameType(this.getGamemode());
|
||||
- }
|
||||
+ File newWorld = new File(new File(name), dim);
|
||||
+ File oldWorld = new File(new File(s), dim);
|
||||
|
||||
- SecondaryWorldServer secondaryworldserver1 = (new SecondaryWorldServer(this, idatamanager, DimensionManager.THE_END, worldserver, this.methodProfiler)).i_();
|
||||
+ if ((!newWorld.isDirectory()) && (oldWorld.isDirectory())) {
|
||||
+ MinecraftServer.LOGGER.info("---- Migration of old " + worldType + " folder required ----");
|
||||
+ MinecraftServer.LOGGER.info("Unfortunately due to the way that Minecraft implemented multiworld support in 1.6, Bukkit requires that you move your " + worldType + " folder to a new location in order to operate correctly.");
|
||||
@ -234,11 +233,7 @@
|
||||
+ }
|
||||
+ }
|
||||
|
||||
- this.worldServer.put(DimensionManager.THE_END, secondaryworldserver1);
|
||||
- secondaryworldserver1.addIWorldAccess(new WorldManager(this, secondaryworldserver1));
|
||||
- if (!this.H()) {
|
||||
- secondaryworldserver1.getWorldData().setGameType(this.getGamemode());
|
||||
- }
|
||||
- SecondaryWorldServer secondaryworldserver1 = (new SecondaryWorldServer(this, idatamanager, DimensionManager.THE_END, worldserver, this.methodProfiler)).i_();
|
||||
+ IDataManager idatamanager = new ServerNBTManager(server.getWorldContainer(), name, this, this.dataConverterManager);
|
||||
+ // world =, b0 to dimension, s1 to name, added Environment and gen
|
||||
+ worlddata = idatamanager.getWorldData();
|
||||
@ -248,20 +243,25 @@
|
||||
+ worlddata.checkName(name); // CraftBukkit - Migration did not rewrite the level.dat; This forces 1.8 to take the last loaded world as respawn (in this case the end)
|
||||
+ world = (WorldServer) new SecondaryWorldServer(this, idatamanager, DimensionManager.a(dimension), this.getWorldServer(DimensionManager.OVERWORLD), this.methodProfiler, worlddata, org.bukkit.World.Environment.getEnvironment(dimension), gen).i_();
|
||||
+ }
|
||||
+
|
||||
|
||||
- this.worldServer.put(DimensionManager.THE_END, secondaryworldserver1);
|
||||
- secondaryworldserver1.addIWorldAccess(new WorldManager(this, secondaryworldserver1));
|
||||
- if (!this.H()) {
|
||||
- secondaryworldserver1.getWorldData().setGameType(this.getGamemode());
|
||||
- }
|
||||
+ this.server.getPluginManager().callEvent(new org.bukkit.event.world.WorldInitEvent(world.getWorld()));
|
||||
+
|
||||
+ world.addIWorldAccess(new WorldManager(this, world));
|
||||
+ if (!this.H()) {
|
||||
+ world.getWorldData().setGameType(this.getGamemode());
|
||||
+ }
|
||||
+
|
||||
+ this.worldServer.put(world.dimension, world);
|
||||
+ this.getPlayerList().setPlayerFileData(world);
|
||||
|
||||
- this.getPlayerList().setPlayerFileData(worldserver);
|
||||
- if (worlddata.P() != null) {
|
||||
- this.getBossBattleCustomData().a(worlddata.P());
|
||||
+ this.worldServer.put(world.dimension, world);
|
||||
+ this.getPlayerList().setPlayerFileData(world);
|
||||
+
|
||||
+ if (worlddata.P() != null) {
|
||||
+ this.getBossBattleCustomData().a(worlddata.P());
|
||||
+ }
|
||||
@ -296,8 +296,8 @@
|
||||
+ // CraftBukkit end
|
||||
this.resourcePackRepository.a((ResourcePackSource) this.resourcePackFolder);
|
||||
this.resourcePackRepository.a();
|
||||
ArrayList arraylist = Lists.newArrayList();
|
||||
@@ -325,42 +467,52 @@
|
||||
List<ResourcePackLoader> list = Lists.newArrayList();
|
||||
@@ -320,42 +462,52 @@
|
||||
boolean flag4 = true;
|
||||
|
||||
this.b((IChatBaseComponent) (new ChatMessage("menu.generatingTerrain", new Object[0])));
|
||||
@ -305,30 +305,30 @@
|
||||
|
||||
- MinecraftServer.LOGGER.info("Preparing start region for dimension " + DimensionManager.a(worldserver.worldProvider.getDimensionManager()));
|
||||
- BlockPosition blockposition = worldserver.getSpawn();
|
||||
- ArrayList arraylist = Lists.newArrayList();
|
||||
- Set set = Sets.newConcurrentHashSet();
|
||||
- List<ChunkCoordIntPair> list = Lists.newArrayList();
|
||||
- Set<ChunkCoordIntPair> set = Sets.newConcurrentHashSet();
|
||||
+ // CraftBukkit start - fire WorldLoadEvent and handle whether or not to keep the spawn in memory
|
||||
Stopwatch stopwatch = Stopwatch.createStarted();
|
||||
-
|
||||
- for (int i = -192; i <= 192 && this.isRunning(); i += 16) {
|
||||
- for (int j = -192; j <= 192 && this.isRunning(); j += 16) {
|
||||
- arraylist.add(new ChunkCoordIntPair(blockposition.getX() + i >> 4, blockposition.getZ() + j >> 4));
|
||||
- list.add(new ChunkCoordIntPair(blockposition.getX() + i >> 4, blockposition.getZ() + j >> 4));
|
||||
+ for (WorldServer worldserver : this.getWorlds()) {
|
||||
+ MinecraftServer.LOGGER.info("Preparing start region for level " + worldserver.dimension + " (Seed: " + worldserver.getSeed() + ")");
|
||||
+ if (!worldserver.getWorld().getKeepSpawnInMemory()) {
|
||||
+ continue;
|
||||
}
|
||||
|
||||
- CompletableFuture completablefuture = worldserver.getChunkProvider().a((Iterable) arraylist, (chunk) -> {
|
||||
- CompletableFuture completablefuture = worldserver.getChunkProvider().a((Iterable) list, (chunk) -> {
|
||||
- set.add(chunk.getPos());
|
||||
- });
|
||||
+ BlockPosition blockposition = worldserver.getSpawn();
|
||||
+ ArrayList arraylist = Lists.newArrayList();
|
||||
+ Set set = Sets.newConcurrentHashSet();
|
||||
+ List<ChunkCoordIntPair> list = Lists.newArrayList();
|
||||
+ Set<ChunkCoordIntPair> set = Sets.newConcurrentHashSet();
|
||||
+
|
||||
+ for (int i = -192; i <= 192 && this.isRunning(); i += 16) {
|
||||
+ for (int j = -192; j <= 192 && this.isRunning(); j += 16) {
|
||||
+ arraylist.add(new ChunkCoordIntPair(blockposition.getX() + i >> 4, blockposition.getZ() + j >> 4));
|
||||
+ list.add(new ChunkCoordIntPair(blockposition.getX() + i >> 4, blockposition.getZ() + j >> 4));
|
||||
+ }
|
||||
|
||||
- while (!completablefuture.isDone()) {
|
||||
@ -340,7 +340,7 @@
|
||||
- if (executionexception.getCause() instanceof RuntimeException) {
|
||||
- throw (RuntimeException) executionexception.getCause();
|
||||
- }
|
||||
+ CompletableFuture completablefuture = worldserver.getChunkProvider().a((Iterable) arraylist, (chunk) -> {
|
||||
+ CompletableFuture completablefuture = worldserver.getChunkProvider().a((Iterable) list, (chunk) -> {
|
||||
+ set.add(chunk.getPos());
|
||||
+ });
|
||||
+
|
||||
@ -376,7 +376,7 @@
|
||||
MinecraftServer.LOGGER.info("Time elapsed: {} ms", stopwatch.elapsed(TimeUnit.MILLISECONDS));
|
||||
Iterator iterator = DimensionManager.b().iterator();
|
||||
|
||||
@@ -419,6 +571,10 @@
|
||||
@@ -414,6 +566,10 @@
|
||||
protected void l() {
|
||||
this.w = null;
|
||||
this.x = 0;
|
||||
@ -387,7 +387,7 @@
|
||||
}
|
||||
|
||||
protected void saveChunks(boolean flag) {
|
||||
@@ -442,8 +598,24 @@
|
||||
@@ -437,8 +593,24 @@
|
||||
|
||||
}
|
||||
|
||||
@ -413,7 +413,7 @@
|
||||
if (this.getServerConnection() != null) {
|
||||
this.getServerConnection().b();
|
||||
}
|
||||
@@ -452,6 +624,7 @@
|
||||
@@ -447,6 +619,7 @@
|
||||
MinecraftServer.LOGGER.info("Saving players");
|
||||
this.playerList.savePlayers();
|
||||
this.playerList.u();
|
||||
@ -421,7 +421,7 @@
|
||||
}
|
||||
|
||||
MinecraftServer.LOGGER.info("Saving worlds");
|
||||
@@ -516,11 +689,13 @@
|
||||
@@ -511,11 +684,13 @@
|
||||
if (i > 2000L && this.nextTick - this.lastOverloadTime >= 15000L) {
|
||||
long j = i / 50L;
|
||||
|
||||
@ -435,7 +435,7 @@
|
||||
this.a(this::canSleepForTick);
|
||||
this.nextTick += 50L;
|
||||
|
||||
@@ -559,6 +734,12 @@
|
||||
@@ -554,6 +729,12 @@
|
||||
} catch (Throwable throwable1) {
|
||||
MinecraftServer.LOGGER.error("Exception stopping the server", throwable1);
|
||||
} finally {
|
||||
@ -448,7 +448,7 @@
|
||||
this.t();
|
||||
}
|
||||
|
||||
@@ -627,7 +808,7 @@
|
||||
@@ -622,7 +803,7 @@
|
||||
this.m.b().a(agameprofile);
|
||||
}
|
||||
|
||||
@ -457,7 +457,7 @@
|
||||
this.methodProfiler.enter("save");
|
||||
this.playerList.savePlayers();
|
||||
this.saveChunks(true);
|
||||
@@ -653,6 +834,7 @@
|
||||
@@ -648,6 +829,7 @@
|
||||
}
|
||||
|
||||
public void b(BooleanSupplier booleansupplier) {
|
||||
@ -465,7 +465,7 @@
|
||||
this.methodProfiler.enter("jobs");
|
||||
|
||||
FutureTask futuretask;
|
||||
@@ -665,23 +847,40 @@
|
||||
@@ -660,23 +842,40 @@
|
||||
this.getFunctionData().tick();
|
||||
this.methodProfiler.exitEnter("levels");
|
||||
|
||||
@ -512,7 +512,7 @@
|
||||
|
||||
this.methodProfiler.enter("tick");
|
||||
|
||||
@@ -732,10 +931,11 @@
|
||||
@@ -727,10 +926,11 @@
|
||||
this.k.add(itickable);
|
||||
}
|
||||
|
||||
@ -525,7 +525,7 @@
|
||||
boolean flag = true;
|
||||
String s = null;
|
||||
String s1 = ".";
|
||||
@@ -783,13 +983,16 @@
|
||||
@@ -778,13 +978,16 @@
|
||||
++j;
|
||||
}
|
||||
}
|
||||
@ -543,7 +543,7 @@
|
||||
if (s != null) {
|
||||
dedicatedserver.h(s);
|
||||
}
|
||||
@@ -827,6 +1030,29 @@
|
||||
@@ -822,6 +1025,29 @@
|
||||
|
||||
thread.setUncaughtExceptionHandler(new DefaultUncaughtExceptionHandler(MinecraftServer.LOGGER));
|
||||
Runtime.getRuntime().addShutdownHook(thread);
|
||||
@ -573,7 +573,7 @@
|
||||
} catch (Exception exception) {
|
||||
MinecraftServer.LOGGER.fatal("Failed to start the minecraft server", exception);
|
||||
}
|
||||
@@ -838,11 +1064,13 @@
|
||||
@@ -833,11 +1059,13 @@
|
||||
}
|
||||
|
||||
public void v() {
|
||||
@ -587,7 +587,7 @@
|
||||
}
|
||||
|
||||
public File c(String s) {
|
||||
@@ -882,7 +1110,7 @@
|
||||
@@ -877,7 +1105,7 @@
|
||||
}
|
||||
|
||||
public boolean isDebugging() {
|
||||
@ -596,7 +596,7 @@
|
||||
}
|
||||
|
||||
public void f(String s) {
|
||||
@@ -897,7 +1125,7 @@
|
||||
@@ -892,7 +1120,7 @@
|
||||
}
|
||||
|
||||
public String getServerModName() {
|
||||
@ -605,7 +605,7 @@
|
||||
}
|
||||
|
||||
public CrashReport b(CrashReport crashreport) {
|
||||
@@ -933,7 +1161,7 @@
|
||||
@@ -928,7 +1156,7 @@
|
||||
}
|
||||
|
||||
public boolean D() {
|
||||
@ -614,7 +614,7 @@
|
||||
}
|
||||
|
||||
public void sendMessage(IChatBaseComponent ichatbasecomponent) {
|
||||
@@ -1073,7 +1301,7 @@
|
||||
@@ -1068,7 +1296,7 @@
|
||||
public abstract boolean Q();
|
||||
|
||||
public boolean getOnlineMode() {
|
||||
@ -623,36 +623,16 @@
|
||||
}
|
||||
|
||||
public void setOnlineMode(boolean flag) {
|
||||
@@ -1233,7 +1461,7 @@
|
||||
@@ -1228,7 +1456,7 @@
|
||||
|
||||
public <V> ListenableFuture<V> a(Callable<V> callable) {
|
||||
Validate.notNull(callable);
|
||||
- if (!this.isMainThread() && !this.isStopped()) {
|
||||
+ if (!this.isMainThread()) { // CraftBukkit && !this.isStopped()) {
|
||||
ListenableFutureTask listenablefuturetask = ListenableFutureTask.create(callable);
|
||||
ListenableFutureTask<V> listenablefuturetask = ListenableFutureTask.create(callable);
|
||||
|
||||
this.f.add(listenablefuturetask);
|
||||
@@ -1304,8 +1532,8 @@
|
||||
|
||||
if (!worlddata.N().contains(resourcepackloader.e()) && !arraylist.contains(resourcepackloader)) {
|
||||
MinecraftServer.LOGGER.info("Found new data pack {}, loading it automatically", resourcepackloader.e());
|
||||
- resourcepackloader.h().a(arraylist, resourcepackloader, (resourcepackloader) -> {
|
||||
- return resourcepackloader;
|
||||
+ resourcepackloader.h().a(arraylist, resourcepackloader, (resourcepackloader1) -> { // CraftBukkit - decompile error
|
||||
+ return resourcepackloader1; // CraftBukkit - decompile error
|
||||
}, false);
|
||||
}
|
||||
}
|
||||
@@ -1314,7 +1542,7 @@
|
||||
ArrayList arraylist1 = Lists.newArrayList();
|
||||
|
||||
this.resourcePackRepository.d().forEach((resourcepackloader) -> {
|
||||
- list.add(resourcepackloader.d());
|
||||
+ arraylist1.add(resourcepackloader.d()); // CraftBukkit - decompile error
|
||||
});
|
||||
this.ac.a((List) arraylist1);
|
||||
worlddata.O().clear();
|
||||
@@ -1416,4 +1644,11 @@
|
||||
@@ -1411,4 +1639,11 @@
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
--- a/net/minecraft/server/MobEffectList.java
|
||||
+++ b/net/minecraft/server/MobEffectList.java
|
||||
@@ -8,6 +8,11 @@
|
||||
import java.util.function.Supplier;
|
||||
@@ -7,6 +7,11 @@
|
||||
import java.util.Map.Entry;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
+// CraftBukkit start
|
||||
@ -12,7 +12,7 @@
|
||||
public class MobEffectList {
|
||||
|
||||
private final Map<IAttribute, AttributeModifier> a = Maps.newHashMap();
|
||||
@@ -25,7 +30,7 @@
|
||||
@@ -24,7 +29,7 @@
|
||||
}
|
||||
|
||||
public static int getId(MobEffectList mobeffectlist) {
|
||||
@ -21,7 +21,7 @@
|
||||
}
|
||||
|
||||
protected MobEffectList(boolean flag, int i) {
|
||||
@@ -47,11 +52,11 @@
|
||||
@@ -46,11 +51,11 @@
|
||||
public void tick(EntityLiving entityliving, int i) {
|
||||
if (this == MobEffects.REGENERATION) {
|
||||
if (entityliving.getHealth() < entityliving.getMaxHealth()) {
|
||||
@ -35,7 +35,7 @@
|
||||
}
|
||||
} else if (this == MobEffects.WITHER) {
|
||||
entityliving.damageEntity(DamageSource.WITHER, 1.0F);
|
||||
@@ -59,14 +64,25 @@
|
||||
@@ -58,14 +63,25 @@
|
||||
((EntityHuman) entityliving).applyExhaustion(0.005F * (float) (i + 1));
|
||||
} else if (this == MobEffects.SATURATION && entityliving instanceof EntityHuman) {
|
||||
if (!entityliving.world.isClientSide) {
|
||||
@ -63,7 +63,7 @@
|
||||
}
|
||||
|
||||
}
|
||||
@@ -87,7 +103,7 @@
|
||||
@@ -86,7 +102,7 @@
|
||||
}
|
||||
} else {
|
||||
j = (int) (d0 * (double) (4 << i) + 0.5D);
|
||||
@ -72,7 +72,7 @@
|
||||
}
|
||||
|
||||
}
|
||||
@@ -216,6 +232,11 @@
|
||||
@@ -215,6 +231,11 @@
|
||||
a(28, "slow_falling", (new MobEffectList(false, 16773073)).b(8, 0).l());
|
||||
a(29, "conduit_power", (new MobEffectList(false, 1950417)).b(9, 0).l());
|
||||
a(30, "dolphins_grace", (new MobEffectList(false, 8954814)).b(10, 0).l());
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/NameReferencingFileConverter.java
|
||||
+++ b/net/minecraft/server/NameReferencingFileConverter.java
|
||||
@@ -83,8 +83,9 @@
|
||||
@@ -81,8 +81,9 @@
|
||||
if (gameprofilebanlist.c().exists()) {
|
||||
try {
|
||||
gameprofilebanlist.load();
|
||||
@ -12,16 +12,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,7 +114,7 @@
|
||||
public void onProfileLookupFailed(GameProfile gameprofile, Exception exception) {
|
||||
NameReferencingFileConverter.e.warn("Could not lookup user banlist entry for {}", gameprofile.getName(), exception);
|
||||
if (!(exception instanceof ProfileNotFoundException)) {
|
||||
- throw new NameReferencingFileConverter.FileConversionException("Could not request user " + gameprofile.getName() + " from backend systems", exception, null);
|
||||
+ throw new NameReferencingFileConverter.FileConversionException("Could not request user " + gameprofile.getName() + " from backend systems", exception); // CraftBukkit - decompile error
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -141,8 +142,9 @@
|
||||
@@ -139,8 +140,9 @@
|
||||
if (ipbanlist.c().exists()) {
|
||||
try {
|
||||
ipbanlist.load();
|
||||
@ -33,7 +24,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -182,8 +184,9 @@
|
||||
@@ -180,8 +182,9 @@
|
||||
if (oplist.c().exists()) {
|
||||
try {
|
||||
oplist.load();
|
||||
@ -45,16 +36,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,7 +201,7 @@
|
||||
public void onProfileLookupFailed(GameProfile gameprofile, Exception exception) {
|
||||
NameReferencingFileConverter.e.warn("Could not lookup oplist entry for {}", gameprofile.getName(), exception);
|
||||
if (!(exception instanceof ProfileNotFoundException)) {
|
||||
- throw new NameReferencingFileConverter.FileConversionException("Could not request user " + gameprofile.getName() + " from backend systems", exception, null);
|
||||
+ throw new NameReferencingFileConverter.FileConversionException("Could not request user " + gameprofile.getName() + " from backend systems", exception); // CraftBukkit - decompile error
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -226,8 +229,9 @@
|
||||
@@ -224,8 +227,9 @@
|
||||
if (whitelist.c().exists()) {
|
||||
try {
|
||||
whitelist.load();
|
||||
@ -66,33 +48,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -242,7 +246,7 @@
|
||||
public void onProfileLookupFailed(GameProfile gameprofile, Exception exception) {
|
||||
NameReferencingFileConverter.e.warn("Could not lookup user whitelist entry for {}", gameprofile.getName(), exception);
|
||||
if (!(exception instanceof ProfileNotFoundException)) {
|
||||
- throw new NameReferencingFileConverter.FileConversionException("Could not request user " + gameprofile.getName() + " from backend systems", exception, null);
|
||||
+ throw new NameReferencingFileConverter.FileConversionException("Could not request user " + gameprofile.getName() + " from backend systems", exception); // CraftBukkit - decompile error
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -337,7 +341,7 @@
|
||||
|
||||
this.a(file, s, s);
|
||||
} else {
|
||||
- throw new NameReferencingFileConverter.FileConversionException("Could not request user " + gameprofile.getName() + " from backend systems", exception, null);
|
||||
+ throw new NameReferencingFileConverter.FileConversionException("Could not request user " + gameprofile.getName() + " from backend systems", exception); // CraftBukkit - decompile error
|
||||
}
|
||||
}
|
||||
|
||||
@@ -345,6 +349,30 @@
|
||||
File file1 = new File(file2, s + ".dat");
|
||||
File file3 = new File(file, s1 + ".dat");
|
||||
@@ -343,6 +347,30 @@
|
||||
File file5 = new File(file, s2 + ".dat");
|
||||
File file6 = new File(file4, s3 + ".dat");
|
||||
|
||||
+ // CraftBukkit start - Use old file name to seed lastKnownName
|
||||
+ NBTTagCompound root = null;
|
||||
+
|
||||
+ try {
|
||||
+ root = NBTCompressedStreamTools.a(new java.io.FileInputStream(file1));
|
||||
+ root = NBTCompressedStreamTools.a(new java.io.FileInputStream(file5));
|
||||
+ } catch (Exception exception) {
|
||||
+ exception.printStackTrace();
|
||||
+ }
|
||||
@ -102,7 +66,7 @@
|
||||
+ root.set("bukkit", new NBTTagCompound());
|
||||
+ }
|
||||
+ NBTTagCompound data = root.getCompound("bukkit");
|
||||
+ data.setString("lastKnownName", s);
|
||||
+ data.setString("lastKnownName", s2);
|
||||
+
|
||||
+ try {
|
||||
+ NBTCompressedStreamTools.a(root, new java.io.FileOutputStream(file2));
|
||||
@ -112,19 +76,10 @@
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
+
|
||||
NameReferencingFileConverter.b(file);
|
||||
if (!file1.renameTo(file3)) {
|
||||
throw new NameReferencingFileConverter.FileConversionException("Could not convert file for " + s, null);
|
||||
@@ -353,7 +381,7 @@
|
||||
|
||||
private String a(GameProfile gameprofile) {
|
||||
String s = null;
|
||||
- String[] astring = astring1;
|
||||
+ // String[] astring = astring1; // CraftBukkit - decompile error
|
||||
int i = astring.length;
|
||||
|
||||
for (int j = 0; j < i; ++j) {
|
||||
@@ -466,7 +494,7 @@
|
||||
NameReferencingFileConverter.b(file4);
|
||||
if (!file5.renameTo(file6)) {
|
||||
throw new NameReferencingFileConverter.FileConversionException("Could not convert file for " + s2);
|
||||
@@ -464,7 +492,7 @@
|
||||
|
||||
private static File d(PropertyManager propertymanager) {
|
||||
String s = propertymanager.getString("level-name", "world");
|
||||
|
@ -1,15 +1,6 @@
|
||||
--- a/net/minecraft/server/NetworkManager.java
|
||||
+++ b/net/minecraft/server/NetworkManager.java
|
||||
@@ -103,7 +103,7 @@
|
||||
if (flag) {
|
||||
NetworkManager.g.debug("Failed to sent packet", throwable);
|
||||
this.sendPacket(new PacketPlayOutKickDisconnect(chatmessage), (future) -> {
|
||||
- this.close(ichatbasecomponent);
|
||||
+ this.close(chatmessage); // CraftBukkit - decompile error
|
||||
});
|
||||
this.stopReading();
|
||||
} else {
|
||||
@@ -130,7 +130,7 @@
|
||||
@@ -129,7 +129,7 @@
|
||||
}
|
||||
|
||||
private static <T extends PacketListener> void a(Packet<T> packet, PacketListener packetlistener) {
|
||||
@ -18,7 +9,7 @@
|
||||
}
|
||||
|
||||
public void setPacketListener(PacketListener packetlistener) {
|
||||
@@ -241,7 +241,7 @@
|
||||
@@ -240,7 +240,7 @@
|
||||
|
||||
public void close(IChatBaseComponent ichatbasecomponent) {
|
||||
if (this.channel.isOpen()) {
|
||||
|
@ -9,7 +9,7 @@
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
- this.d = this.e.world.a(this.e.locX, this.e.locY + (double) this.e.getHeadHeight(), this.e.locZ, this.i(), this.i(), new Function() {
|
||||
- this.d = this.e.world.a(this.e.locX, this.e.locY + (double) this.e.getHeadHeight(), this.e.locZ, this.i(), this.i(), new Function<EntityHuman, Double>() {
|
||||
+ this.d = (T) this.e.world.a(this.e.locX, this.e.locY + (double) this.e.getHeadHeight(), this.e.locZ, this.i(), this.i(), new Function<EntityHuman, Double>() { // CraftBukkit - fix decompile error
|
||||
@Nullable
|
||||
public Double apply(@Nullable EntityHuman entityhuman) {
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -15,6 +15,10 @@
|
||||
@@ -13,6 +13,10 @@
|
||||
import java.util.function.Predicate;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
public class PlayerChunkMap {
|
||||
|
||||
private static final Predicate<EntityPlayer> a = (entityplayer) -> {
|
||||
@@ -34,6 +38,7 @@
|
||||
@@ -32,6 +36,7 @@
|
||||
private long k;
|
||||
private boolean l = true;
|
||||
private boolean m = true;
|
||||
@ -19,30 +19,7 @@
|
||||
|
||||
public PlayerChunkMap(WorldServer worldserver) {
|
||||
this.world = worldserver;
|
||||
@@ -103,16 +108,18 @@
|
||||
|
||||
if (this.l && i % 4L == 0L) {
|
||||
this.l = false;
|
||||
- Collections.sort(this.h, (playerchunk, playerchunk1) -> {
|
||||
- return ComparisonChain.start().compare(playerchunk.g(), playerchunk1.g()).result();
|
||||
+ // CraftBukkit start
|
||||
+ Collections.sort(this.h, (playerchunkx, playerchunk1x) -> {
|
||||
+ return ComparisonChain.start().compare(playerchunkx.g(), playerchunk1x.g()).result();
|
||||
});
|
||||
}
|
||||
|
||||
if (this.m && i % 4L == 2L) {
|
||||
this.m = false;
|
||||
- Collections.sort(this.g, (playerchunk, playerchunk1) -> {
|
||||
- return ComparisonChain.start().compare(playerchunk.g(), playerchunk1.g()).result();
|
||||
+ Collections.sort(this.g, (playerchunkx, playerchunk1x) -> {
|
||||
+ return ComparisonChain.start().compare(playerchunkx.g(), playerchunk1x.g()).result();
|
||||
});
|
||||
+ // CraftBukkit end
|
||||
}
|
||||
|
||||
if (!this.h.isEmpty()) {
|
||||
@@ -137,7 +144,11 @@
|
||||
@@ -135,7 +140,11 @@
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -54,7 +31,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,6 +210,16 @@
|
||||
@@ -197,6 +206,16 @@
|
||||
return playerchunk;
|
||||
}
|
||||
|
||||
@ -71,7 +48,7 @@
|
||||
public void flagDirty(BlockPosition blockposition) {
|
||||
int i = blockposition.getX() >> 4;
|
||||
int j = blockposition.getZ() >> 4;
|
||||
@@ -217,12 +238,22 @@
|
||||
@@ -215,12 +234,22 @@
|
||||
entityplayer.d = entityplayer.locX;
|
||||
entityplayer.e = entityplayer.locZ;
|
||||
|
||||
@ -95,7 +72,7 @@
|
||||
this.managedPlayers.add(entityplayer);
|
||||
this.e();
|
||||
}
|
||||
@@ -266,11 +297,14 @@
|
||||
@@ -264,11 +293,14 @@
|
||||
int j1 = i - k;
|
||||
int k1 = j - l;
|
||||
|
||||
@ -111,7 +88,7 @@
|
||||
}
|
||||
|
||||
if (!this.a(l1 - j1, i2 - k1, i, j, i1)) {
|
||||
@@ -286,6 +320,13 @@
|
||||
@@ -284,6 +316,13 @@
|
||||
entityplayer.d = entityplayer.locX;
|
||||
entityplayer.e = entityplayer.locZ;
|
||||
this.e();
|
||||
@ -125,7 +102,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -370,4 +411,47 @@
|
||||
@@ -368,4 +407,47 @@
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/PlayerConnection.java
|
||||
+++ b/net/minecraft/server/PlayerConnection.java
|
||||
@@ -17,6 +17,50 @@
|
||||
@@ -16,6 +16,50 @@
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
public class PlayerConnection implements PacketListenerPlayIn, ITickable {
|
||||
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
@@ -27,7 +71,10 @@
|
||||
@@ -26,7 +70,10 @@
|
||||
private long lastKeepAlive;
|
||||
private boolean awaitingKeepAlive;
|
||||
private long h;
|
||||
@ -61,9 +61,9 @@
|
||||
+ private static final AtomicIntegerFieldUpdater chatSpamField = AtomicIntegerFieldUpdater.newUpdater(PlayerConnection.class, "chatThrottle");
|
||||
+ // CraftBukkit end
|
||||
private int j;
|
||||
private final IntHashMap<Short> k = new IntHashMap();
|
||||
private final IntHashMap<Short> k = new IntHashMap<>();
|
||||
private double l;
|
||||
@@ -59,7 +106,33 @@
|
||||
@@ -58,7 +105,33 @@
|
||||
networkmanager.setPacketListener(this);
|
||||
this.player = entityplayer;
|
||||
entityplayer.playerConnection = this;
|
||||
@ -97,7 +97,7 @@
|
||||
|
||||
public void tick() {
|
||||
this.syncPosition();
|
||||
@@ -105,7 +178,7 @@
|
||||
@@ -104,7 +177,7 @@
|
||||
this.minecraftServer.methodProfiler.enter("keepAlive");
|
||||
long i = SystemUtils.getMonotonicMillis();
|
||||
|
||||
@ -106,7 +106,7 @@
|
||||
if (this.awaitingKeepAlive) {
|
||||
this.disconnect(new ChatMessage("disconnect.timeout", new Object[0]));
|
||||
} else {
|
||||
@@ -117,15 +190,21 @@
|
||||
@@ -116,15 +189,21 @@
|
||||
}
|
||||
|
||||
this.minecraftServer.methodProfiler.exit();
|
||||
@ -128,7 +128,7 @@
|
||||
this.disconnect(new ChatMessage("multiplayer.disconnect.idling", new Object[0]));
|
||||
}
|
||||
|
||||
@@ -144,16 +223,46 @@
|
||||
@@ -143,16 +222,46 @@
|
||||
return this.networkManager;
|
||||
}
|
||||
|
||||
@ -176,7 +176,7 @@
|
||||
}
|
||||
|
||||
public void a(PacketPlayInSteerVehicle packetplayinsteervehicle) {
|
||||
@@ -192,7 +301,34 @@
|
||||
@@ -191,7 +300,34 @@
|
||||
double d9 = entity.motX * entity.motX + entity.motY * entity.motY + entity.motZ * entity.motZ;
|
||||
double d10 = d6 * d6 + d7 * d7 + d8 * d8;
|
||||
|
||||
@ -212,7 +212,7 @@
|
||||
PlayerConnection.LOGGER.warn("{} (vehicle of {}) moved too quickly! {},{},{}", entity.getDisplayName().getString(), this.player.getDisplayName().getString(), d6, d7, d8);
|
||||
this.networkManager.sendPacket(new PacketPlayOutVehicleMove(entity));
|
||||
return;
|
||||
@@ -222,14 +358,72 @@
|
||||
@@ -221,14 +357,72 @@
|
||||
}
|
||||
|
||||
entity.setLocation(d3, d4, d5, f, f1);
|
||||
@ -285,7 +285,7 @@
|
||||
this.minecraftServer.getPlayerList().updateChunks(this.player);
|
||||
this.player.checkMovement(this.player.locX - d0, this.player.locY - d1, this.player.locZ - d2);
|
||||
this.D = d11 >= -0.03125D && !this.minecraftServer.getAllowFlight() && !worldserver.a(entity.getBoundingBox().g(0.0625D).b(0.0D, -0.55D, 0.0D));
|
||||
@@ -243,7 +437,7 @@
|
||||
@@ -242,7 +436,7 @@
|
||||
|
||||
public void a(PacketPlayInTeleportAccept packetplayinteleportaccept) {
|
||||
PlayerConnectionUtils.ensureMainThread(packetplayinteleportaccept, this, this.player.getWorldServer());
|
||||
@ -294,7 +294,7 @@
|
||||
this.player.setLocation(this.teleportPos.x, this.teleportPos.y, this.teleportPos.z, this.player.yaw, this.player.pitch);
|
||||
this.o = this.teleportPos.x;
|
||||
this.p = this.teleportPos.y;
|
||||
@@ -253,6 +447,7 @@
|
||||
@@ -252,6 +446,7 @@
|
||||
}
|
||||
|
||||
this.teleportPos = null;
|
||||
@ -302,7 +302,7 @@
|
||||
}
|
||||
|
||||
}
|
||||
@@ -289,6 +484,12 @@
|
||||
@@ -288,6 +483,12 @@
|
||||
|
||||
public void a(PacketPlayInTabComplete packetplayintabcomplete) {
|
||||
PlayerConnectionUtils.ensureMainThread(packetplayintabcomplete, this, this.player.getWorldServer());
|
||||
@ -314,9 +314,9 @@
|
||||
+ // CraftBukkit end
|
||||
StringReader stringreader = new StringReader(packetplayintabcomplete.c());
|
||||
|
||||
if (stringreader.canRead() && stringreader.peek() == 47) {
|
||||
@@ -298,7 +499,8 @@
|
||||
ParseResults parseresults = this.minecraftServer.getCommandDispatcher().a().parse(stringreader, this.player.getCommandListener());
|
||||
if (stringreader.canRead() && stringreader.peek() == '/') {
|
||||
@@ -297,7 +498,8 @@
|
||||
ParseResults<CommandListenerWrapper> parseresults = this.minecraftServer.getCommandDispatcher().a().parse(stringreader, this.player.getCommandListener());
|
||||
|
||||
this.minecraftServer.getCommandDispatcher().a().getCompletionSuggestions(parseresults).thenAccept((suggestions) -> {
|
||||
- this.networkManager.sendPacket(new PacketPlayOutTabComplete(packetplayintabcomplete.b(), suggestions));
|
||||
@ -325,7 +325,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
@@ -490,6 +692,15 @@
|
||||
@@ -489,6 +691,15 @@
|
||||
}
|
||||
|
||||
public void a(PacketPlayInBEdit packetplayinbedit) {
|
||||
@ -341,7 +341,7 @@
|
||||
ItemStack itemstack = packetplayinbedit.b();
|
||||
|
||||
if (!itemstack.isEmpty()) {
|
||||
@@ -514,11 +725,13 @@
|
||||
@@ -513,11 +724,13 @@
|
||||
}
|
||||
|
||||
itemstack2.a("pages", (NBTBase) nbttaglist);
|
||||
@ -357,7 +357,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -558,7 +771,7 @@
|
||||
@@ -557,7 +770,7 @@
|
||||
} else {
|
||||
WorldServer worldserver = this.minecraftServer.getWorldServer(this.player.dimension);
|
||||
|
||||
@ -366,7 +366,7 @@
|
||||
if (this.e == 0) {
|
||||
this.syncPosition();
|
||||
}
|
||||
@@ -568,13 +781,21 @@
|
||||
@@ -567,13 +780,21 @@
|
||||
this.A = this.e;
|
||||
this.a(this.teleportPos.x, this.teleportPos.y, this.teleportPos.z, this.player.yaw, this.player.pitch);
|
||||
}
|
||||
@ -389,7 +389,7 @@
|
||||
double d0 = this.player.locX;
|
||||
double d1 = this.player.locY;
|
||||
double d2 = this.player.locZ;
|
||||
@@ -599,15 +820,33 @@
|
||||
@@ -598,15 +819,33 @@
|
||||
++this.receivedMovePackets;
|
||||
int i = this.receivedMovePackets - this.processedMovePackets;
|
||||
|
||||
@ -425,7 +425,7 @@
|
||||
PlayerConnection.LOGGER.warn("{} moved too quickly! {},{},{}", this.player.getDisplayName().getString(), d7, d8, d9);
|
||||
this.a(this.player.locX, this.player.locY, this.player.locZ, this.player.yaw, this.player.pitch);
|
||||
return;
|
||||
@@ -653,6 +892,69 @@
|
||||
@@ -652,6 +891,69 @@
|
||||
}
|
||||
}
|
||||
|
||||
@ -495,7 +495,7 @@
|
||||
this.B = d12 >= -0.03125D;
|
||||
this.B &= !this.minecraftServer.getAllowFlight() && !this.player.abilities.canFly;
|
||||
this.B &= !this.player.hasEffect(MobEffects.LEVITATION) && !this.player.dc() && !worldserver.a(this.player.getBoundingBox().g(0.0625D).b(0.0D, -0.55D, 0.0D));
|
||||
@@ -670,10 +972,76 @@
|
||||
@@ -669,10 +971,76 @@
|
||||
}
|
||||
|
||||
public void a(double d0, double d1, double d2, float f, float f1) {
|
||||
@ -573,7 +573,7 @@
|
||||
double d3 = set.contains(PacketPlayOutPosition.EnumPlayerTeleportFlags.X) ? this.player.locX : 0.0D;
|
||||
double d4 = set.contains(PacketPlayOutPosition.EnumPlayerTeleportFlags.Y) ? this.player.locY : 0.0D;
|
||||
double d5 = set.contains(PacketPlayOutPosition.EnumPlayerTeleportFlags.Z) ? this.player.locZ : 0.0D;
|
||||
@@ -685,6 +1053,14 @@
|
||||
@@ -684,6 +1052,14 @@
|
||||
this.teleportAwait = 0;
|
||||
}
|
||||
|
||||
@ -588,7 +588,7 @@
|
||||
this.A = this.e;
|
||||
this.player.setLocation(d0, d1, d2, f, f1);
|
||||
this.player.playerConnection.sendPacket(new PacketPlayOutPosition(d0 - d3, d1 - d4, d2 - d5, f - f2, f1 - f3, set, this.teleportAwait));
|
||||
@@ -692,6 +1068,7 @@
|
||||
@@ -691,6 +1067,7 @@
|
||||
|
||||
public void a(PacketPlayInBlockDig packetplayinblockdig) {
|
||||
PlayerConnectionUtils.ensureMainThread(packetplayinblockdig, this, this.player.getWorldServer());
|
||||
@ -596,7 +596,7 @@
|
||||
WorldServer worldserver = this.minecraftServer.getWorldServer(this.player.dimension);
|
||||
BlockPosition blockposition = packetplayinblockdig.b();
|
||||
|
||||
@@ -701,13 +1078,45 @@
|
||||
@@ -700,13 +1077,45 @@
|
||||
if (!this.player.isSpectator()) {
|
||||
ItemStack itemstack = this.player.b(EnumHand.OFF_HAND);
|
||||
|
||||
@ -644,7 +644,7 @@
|
||||
this.player.a(false);
|
||||
}
|
||||
|
||||
@@ -738,7 +1147,15 @@
|
||||
@@ -737,7 +1146,15 @@
|
||||
if (!this.minecraftServer.a(worldserver, blockposition, this.player) && worldserver.getWorldBorder().a(blockposition)) {
|
||||
this.player.playerInteractManager.a(blockposition, packetplayinblockdig.c());
|
||||
} else {
|
||||
@ -660,7 +660,7 @@
|
||||
}
|
||||
} else {
|
||||
if (packetplayinblockdig.d() == PacketPlayInBlockDig.EnumPlayerDigType.STOP_DESTROY_BLOCK) {
|
||||
@@ -757,10 +1174,12 @@
|
||||
@@ -756,10 +1173,12 @@
|
||||
default:
|
||||
throw new IllegalArgumentException("Invalid player action");
|
||||
}
|
||||
@ -673,7 +673,7 @@
|
||||
WorldServer worldserver = this.minecraftServer.getWorldServer(this.player.dimension);
|
||||
EnumHand enumhand = packetplayinuseitem.d();
|
||||
ItemStack itemstack = this.player.b(enumhand);
|
||||
@@ -773,6 +1192,13 @@
|
||||
@@ -772,6 +1191,13 @@
|
||||
|
||||
this.player.playerConnection.sendPacket(new PacketPlayOutChat(ichatbasecomponent, ChatMessageType.GAME_INFO));
|
||||
} else if (this.teleportPos == null && this.player.d((double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D) < 64.0D && !this.minecraftServer.a(worldserver, blockposition, this.player) && worldserver.getWorldBorder().a(blockposition)) {
|
||||
@ -687,7 +687,7 @@
|
||||
this.player.playerInteractManager.a(this.player, worldserver, itemstack, enumhand, blockposition, enumdirection, packetplayinuseitem.e(), packetplayinuseitem.f(), packetplayinuseitem.g());
|
||||
}
|
||||
|
||||
@@ -782,13 +1208,52 @@
|
||||
@@ -781,13 +1207,52 @@
|
||||
|
||||
public void a(PacketPlayInBlockPlace packetplayinblockplace) {
|
||||
PlayerConnectionUtils.ensureMainThread(packetplayinblockplace, this, this.player.getWorldServer());
|
||||
@ -741,7 +741,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -808,13 +1273,18 @@
|
||||
@@ -807,13 +1272,18 @@
|
||||
}
|
||||
|
||||
if (entity != null) {
|
||||
@ -762,7 +762,7 @@
|
||||
|
||||
public void a(PacketPlayInBoatMove packetplayinboatmove) {
|
||||
PlayerConnectionUtils.ensureMainThread(packetplayinboatmove, this, this.player.getWorldServer());
|
||||
@@ -827,11 +1297,26 @@
|
||||
@@ -826,11 +1296,26 @@
|
||||
}
|
||||
|
||||
public void a(IChatBaseComponent ichatbasecomponent) {
|
||||
@ -790,7 +790,7 @@
|
||||
if (this.minecraftServer.H() && this.player.getDisplayName().getString().equals(this.minecraftServer.G())) {
|
||||
PlayerConnection.LOGGER.info("Stopping singleplayer server as player logged out");
|
||||
this.minecraftServer.safeShutdown();
|
||||
@@ -857,6 +1342,15 @@
|
||||
@@ -856,6 +1341,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
@ -806,7 +806,7 @@
|
||||
try {
|
||||
this.networkManager.sendPacket(packet, genericfuturelistener);
|
||||
} catch (Throwable throwable) {
|
||||
@@ -872,17 +1366,37 @@
|
||||
@@ -871,17 +1365,37 @@
|
||||
|
||||
public void a(PacketPlayInHeldItemSlot packetplayinhelditemslot) {
|
||||
PlayerConnectionUtils.ensureMainThread(packetplayinhelditemslot, this, this.player.getWorldServer());
|
||||
@ -846,7 +846,7 @@
|
||||
this.sendPacket(new PacketPlayOutChat((new ChatMessage("chat.cannotSend", new Object[0])).a(EnumChatFormat.RED)));
|
||||
} else {
|
||||
this.player.resetIdleTimer();
|
||||
@@ -892,39 +1406,249 @@
|
||||
@@ -891,39 +1405,249 @@
|
||||
|
||||
for (int i = 0; i < s.length(); ++i) {
|
||||
if (!SharedConstants.isAllowedChatCharacter(s.charAt(i))) {
|
||||
@ -1103,7 +1103,7 @@
|
||||
this.player.resetIdleTimer();
|
||||
IJumpable ijumpable;
|
||||
|
||||
@@ -987,6 +1711,7 @@
|
||||
@@ -986,6 +1710,7 @@
|
||||
|
||||
public void a(PacketPlayInUseEntity packetplayinuseentity) {
|
||||
PlayerConnectionUtils.ensureMainThread(packetplayinuseentity, this, this.player.getWorldServer());
|
||||
@ -1111,7 +1111,7 @@
|
||||
WorldServer worldserver = this.minecraftServer.getWorldServer(this.player.dimension);
|
||||
Entity entity = packetplayinuseentity.a((World) worldserver);
|
||||
|
||||
@@ -1002,20 +1727,73 @@
|
||||
@@ -1001,20 +1726,73 @@
|
||||
if (this.player.h(entity) < d0) {
|
||||
EnumHand enumhand;
|
||||
|
||||
@ -1186,7 +1186,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1031,7 +1809,8 @@
|
||||
@@ -1030,7 +1808,8 @@
|
||||
case PERFORM_RESPAWN:
|
||||
if (this.player.viewingCredits) {
|
||||
this.player.viewingCredits = false;
|
||||
@ -1196,7 +1196,7 @@
|
||||
CriterionTriggers.v.a(this.player, DimensionManager.THE_END, DimensionManager.OVERWORLD);
|
||||
} else {
|
||||
if (this.player.getHealth() > 0.0F) {
|
||||
@@ -1053,14 +1832,20 @@
|
||||
@@ -1052,14 +1831,20 @@
|
||||
|
||||
public void a(PacketPlayInCloseWindow packetplayinclosewindow) {
|
||||
PlayerConnectionUtils.ensureMainThread(packetplayinclosewindow, this, this.player.getWorldServer());
|
||||
@ -1216,10 +1216,10 @@
|
||||
+ if (this.player.activeContainer.windowId == packetplayinwindowclick.b() && this.player.activeContainer.c(this.player) && this.player.activeContainer.canUse(this.player)) { // CraftBukkit
|
||||
+ boolean cancelled = this.player.isSpectator(); // CraftBukkit - see below if
|
||||
+ if (false/*this.player.isSpectator()*/) { // CraftBukkit
|
||||
NonNullList nonnulllist = NonNullList.a();
|
||||
NonNullList<ItemStack> nonnulllist = NonNullList.a();
|
||||
|
||||
for (int i = 0; i < this.player.activeContainer.slots.size(); ++i) {
|
||||
@@ -1069,8 +1854,274 @@
|
||||
@@ -1068,8 +1853,274 @@
|
||||
|
||||
this.player.a(this.player.activeContainer, nonnulllist);
|
||||
} else {
|
||||
@ -1495,7 +1495,7 @@
|
||||
if (ItemStack.matches(packetplayinwindowclick.f(), itemstack)) {
|
||||
this.player.playerConnection.sendPacket(new PacketPlayOutTransaction(packetplayinwindowclick.b(), packetplayinwindowclick.e(), true));
|
||||
this.player.f = true;
|
||||
@@ -1113,6 +2164,7 @@
|
||||
@@ -1112,6 +2163,7 @@
|
||||
|
||||
public void a(PacketPlayInEnchantItem packetplayinenchantitem) {
|
||||
PlayerConnectionUtils.ensureMainThread(packetplayinenchantitem, this, this.player.getWorldServer());
|
||||
@ -1503,7 +1503,7 @@
|
||||
this.player.resetIdleTimer();
|
||||
if (this.player.activeContainer.windowId == packetplayinenchantitem.b() && this.player.activeContainer.c(this.player) && !this.player.isSpectator()) {
|
||||
this.player.activeContainer.a(this.player, packetplayinenchantitem.c());
|
||||
@@ -1144,6 +2196,43 @@
|
||||
@@ -1143,6 +2195,43 @@
|
||||
|
||||
boolean flag1 = packetplayinsetcreativeslot.b() >= 1 && packetplayinsetcreativeslot.b() <= 45;
|
||||
boolean flag2 = itemstack.isEmpty() || itemstack.getDamage() >= 0 && itemstack.getCount() <= 64 && !itemstack.isEmpty();
|
||||
@ -1547,7 +1547,7 @@
|
||||
|
||||
if (flag1 && flag2) {
|
||||
if (itemstack.isEmpty()) {
|
||||
@@ -1167,6 +2256,7 @@
|
||||
@@ -1166,6 +2255,7 @@
|
||||
|
||||
public void a(PacketPlayInTransaction packetplayintransaction) {
|
||||
PlayerConnectionUtils.ensureMainThread(packetplayintransaction, this, this.player.getWorldServer());
|
||||
@ -1555,7 +1555,7 @@
|
||||
Short oshort = (Short) this.k.get(this.player.activeContainer.windowId);
|
||||
|
||||
if (oshort != null && packetplayintransaction.c() == oshort && this.player.activeContainer.windowId == packetplayintransaction.b() && !this.player.activeContainer.c(this.player) && !this.player.isSpectator()) {
|
||||
@@ -1177,6 +2267,7 @@
|
||||
@@ -1176,6 +2266,7 @@
|
||||
|
||||
public void a(PacketPlayInUpdateSign packetplayinupdatesign) {
|
||||
PlayerConnectionUtils.ensureMainThread(packetplayinupdatesign, this, this.player.getWorldServer());
|
||||
@ -1563,7 +1563,7 @@
|
||||
this.player.resetIdleTimer();
|
||||
WorldServer worldserver = this.minecraftServer.getWorldServer(this.player.dimension);
|
||||
BlockPosition blockposition = packetplayinupdatesign.b();
|
||||
@@ -1193,14 +2284,30 @@
|
||||
@@ -1192,14 +2283,30 @@
|
||||
|
||||
if (!tileentitysign.d() || tileentitysign.e() != this.player) {
|
||||
this.minecraftServer.warning("Player " + this.player.getDisplayName().getString() + " just tried to change non-editable sign");
|
||||
@ -1595,7 +1595,7 @@
|
||||
|
||||
tileentitysign.update();
|
||||
worldserver.notify(blockposition, iblockdata, iblockdata, 3);
|
||||
@@ -1209,6 +2316,7 @@
|
||||
@@ -1208,6 +2315,7 @@
|
||||
}
|
||||
|
||||
public void a(PacketPlayInKeepAlive packetplayinkeepalive) {
|
||||
@ -1603,7 +1603,7 @@
|
||||
if (this.awaitingKeepAlive && packetplayinkeepalive.b() == this.h) {
|
||||
int i = (int) (SystemUtils.getMonotonicMillis() - this.lastKeepAlive);
|
||||
|
||||
@@ -1222,7 +2330,17 @@
|
||||
@@ -1221,7 +2329,17 @@
|
||||
|
||||
public void a(PacketPlayInAbilities packetplayinabilities) {
|
||||
PlayerConnectionUtils.ensureMainThread(packetplayinabilities, this, this.player.getWorldServer());
|
||||
@ -1622,7 +1622,7 @@
|
||||
}
|
||||
|
||||
public void a(PacketPlayInSettings packetplayinsettings) {
|
||||
@@ -1230,5 +2348,47 @@
|
||||
@@ -1229,5 +2347,47 @@
|
||||
this.player.a(packetplayinsettings);
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/PlayerList.java
|
||||
+++ b/net/minecraft/server/PlayerList.java
|
||||
@@ -19,6 +19,29 @@
|
||||
@@ -18,6 +18,29 @@
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
public abstract class PlayerList {
|
||||
|
||||
public static final File a = new File("banned-players.json");
|
||||
@@ -28,14 +51,16 @@
|
||||
@@ -27,14 +50,16 @@
|
||||
private static final Logger f = LogManager.getLogger();
|
||||
private static final SimpleDateFormat g = new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z");
|
||||
private final MinecraftServer server;
|
||||
@ -50,7 +50,7 @@
|
||||
public IPlayerFileData playerFileData;
|
||||
private boolean hasWhitelist;
|
||||
protected int maxPlayers;
|
||||
@@ -44,13 +69,23 @@
|
||||
@@ -43,13 +68,23 @@
|
||||
private boolean u;
|
||||
private int v;
|
||||
|
||||
@ -76,7 +76,7 @@
|
||||
this.server = minecraftserver;
|
||||
this.getProfileBans().a(true);
|
||||
this.getIPBans().a(true);
|
||||
@@ -65,6 +100,12 @@
|
||||
@@ -64,6 +99,12 @@
|
||||
|
||||
usercache.a(gameprofile);
|
||||
NBTTagCompound nbttagcompound = this.a(entityplayer);
|
||||
@ -89,7 +89,7 @@
|
||||
|
||||
entityplayer.spawnIn(this.server.getWorldServer(entityplayer.dimension));
|
||||
entityplayer.playerInteractManager.a((WorldServer) entityplayer.world);
|
||||
@@ -74,7 +115,8 @@
|
||||
@@ -73,7 +114,8 @@
|
||||
s1 = networkmanager.getSocketAddress().toString();
|
||||
}
|
||||
|
||||
@ -99,7 +99,7 @@
|
||||
WorldServer worldserver = this.server.getWorldServer(entityplayer.dimension);
|
||||
WorldData worlddata = worldserver.getWorldData();
|
||||
|
||||
@@ -82,6 +124,7 @@
|
||||
@@ -81,6 +123,7 @@
|
||||
PlayerConnection playerconnection = new PlayerConnection(this.server, networkmanager, entityplayer);
|
||||
|
||||
playerconnection.sendPacket(new PacketPlayOutLogin(entityplayer.getId(), entityplayer.playerInteractManager.getGameMode(), worlddata.isHardcore(), worldserver.worldProvider.getDimensionManager(), worldserver.getDifficulty(), this.getMaxPlayers(), worlddata.getType(), worldserver.getGameRules().getBoolean("reducedDebugInfo")));
|
||||
@ -107,7 +107,7 @@
|
||||
playerconnection.sendPacket(new PacketPlayOutCustomPayload(PacketPlayOutCustomPayload.b, (new PacketDataSerializer(Unpooled.buffer())).a(this.getServer().getServerModName())));
|
||||
playerconnection.sendPacket(new PacketPlayOutServerDifficulty(worlddata.getDifficulty(), worlddata.isDifficultyLocked()));
|
||||
playerconnection.sendPacket(new PacketPlayOutAbilities(entityplayer.abilities));
|
||||
@@ -101,8 +144,10 @@
|
||||
@@ -100,8 +143,10 @@
|
||||
chatmessage = new ChatMessage("multiplayer.player.joined.renamed", new Object[] { entityplayer.getScoreboardDisplayName(), s});
|
||||
}
|
||||
|
||||
@ -120,7 +120,7 @@
|
||||
playerconnection.a(entityplayer.locX, entityplayer.locY, entityplayer.locZ, entityplayer.yaw, entityplayer.pitch);
|
||||
this.b(entityplayer, worldserver);
|
||||
if (!this.server.getResourcePack().isEmpty()) {
|
||||
@@ -154,6 +199,8 @@
|
||||
@@ -153,6 +198,8 @@
|
||||
}
|
||||
|
||||
entityplayer.syncInventory();
|
||||
@ -129,7 +129,7 @@
|
||||
}
|
||||
|
||||
public void sendScoreboard(ScoreboardServer scoreboardserver, EntityPlayer entityplayer) {
|
||||
@@ -186,26 +233,27 @@
|
||||
@@ -185,26 +232,27 @@
|
||||
}
|
||||
|
||||
public void setPlayerFileData(WorldServer worldserver) {
|
||||
@ -162,7 +162,7 @@
|
||||
}
|
||||
|
||||
public void b(WorldBorder worldborder, double d0) {}
|
||||
@@ -253,14 +301,15 @@
|
||||
@@ -252,14 +300,15 @@
|
||||
}
|
||||
|
||||
protected void savePlayerFile(EntityPlayer entityplayer) {
|
||||
@ -180,7 +180,7 @@
|
||||
|
||||
if (advancementdataplayer != null) {
|
||||
advancementdataplayer.c();
|
||||
@@ -268,29 +317,80 @@
|
||||
@@ -267,29 +316,80 @@
|
||||
|
||||
}
|
||||
|
||||
@ -268,7 +268,7 @@
|
||||
this.savePlayerFile(entityplayer);
|
||||
if (entityplayer.isPassenger()) {
|
||||
Entity entity = entityplayer.getRootVehicle();
|
||||
@@ -321,18 +421,68 @@
|
||||
@@ -320,18 +420,68 @@
|
||||
|
||||
if (entityplayer1 == entityplayer) {
|
||||
this.j.remove(uuid);
|
||||
@ -311,18 +311,18 @@
|
||||
- if (this.k.isBanned(gameprofile)) {
|
||||
+ // Moved from processLogin
|
||||
+ UUID uuid = EntityHuman.a(gameprofile);
|
||||
+ ArrayList arraylist = Lists.newArrayList();
|
||||
+ List<EntityPlayer> list = Lists.newArrayList();
|
||||
+
|
||||
+ EntityPlayer entityplayer;
|
||||
+
|
||||
+ for (int i = 0; i < this.players.size(); ++i) {
|
||||
+ entityplayer = (EntityPlayer) this.players.get(i);
|
||||
+ if (entityplayer.getUniqueID().equals(uuid)) {
|
||||
+ arraylist.add(entityplayer);
|
||||
+ list.add(entityplayer);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ Iterator iterator = arraylist.iterator();
|
||||
+ Iterator iterator = list.iterator();
|
||||
+
|
||||
+ while (iterator.hasNext()) {
|
||||
+ entityplayer = (EntityPlayer) iterator.next();
|
||||
@ -343,7 +343,7 @@
|
||||
GameProfileBanEntry gameprofilebanentry = (GameProfileBanEntry) this.k.get(gameprofile);
|
||||
|
||||
chatmessage = new ChatMessage("multiplayer.disconnect.banned.reason", new Object[] { gameprofilebanentry.getReason()});
|
||||
@@ -340,10 +490,12 @@
|
||||
@@ -339,10 +489,12 @@
|
||||
chatmessage.addSibling(new ChatMessage("multiplayer.disconnect.banned.expiration", new Object[] { PlayerList.g.format(gameprofilebanentry.getExpires())}));
|
||||
}
|
||||
|
||||
@ -359,7 +359,7 @@
|
||||
IpBanEntry ipbanentry = this.l.get(socketaddress);
|
||||
|
||||
chatmessage = new ChatMessage("multiplayer.disconnect.banned_ip.reason", new Object[] { ipbanentry.getReason()});
|
||||
@@ -351,13 +503,25 @@
|
||||
@@ -350,13 +502,25 @@
|
||||
chatmessage.addSibling(new ChatMessage("multiplayer.disconnect.banned_ip.expiration", new Object[] { PlayerList.g.format(ipbanentry.getExpires())}));
|
||||
}
|
||||
|
||||
@ -386,9 +386,9 @@
|
||||
+ public EntityPlayer processLogin(GameProfile gameprofile, EntityPlayer player) { // CraftBukkit - added EntityPlayer
|
||||
+ /* CraftBukkit startMoved up
|
||||
UUID uuid = EntityHuman.a(gameprofile);
|
||||
ArrayList arraylist = Lists.newArrayList();
|
||||
List<EntityPlayer> list = Lists.newArrayList();
|
||||
|
||||
@@ -392,17 +556,27 @@
|
||||
@@ -391,17 +555,27 @@
|
||||
}
|
||||
|
||||
return new EntityPlayer(this.server, this.server.getWorldServer(DimensionManager.OVERWORLD), gameprofile, (PlayerInteractManager) object);
|
||||
@ -417,7 +417,7 @@
|
||||
entityplayer.dimension = dimensionmanager;
|
||||
Object object;
|
||||
|
||||
@@ -413,6 +587,11 @@
|
||||
@@ -412,6 +586,11 @@
|
||||
}
|
||||
|
||||
EntityPlayer entityplayer1 = new EntityPlayer(this.server, this.server.getWorldServer(entityplayer.dimension), entityplayer.getProfile(), (PlayerInteractManager) object);
|
||||
@ -429,7 +429,7 @@
|
||||
|
||||
entityplayer1.playerConnection = entityplayer.playerConnection;
|
||||
entityplayer1.copyFrom(entityplayer, flag);
|
||||
@@ -426,43 +605,160 @@
|
||||
@@ -425,43 +604,160 @@
|
||||
entityplayer1.addScoreboardTag(s);
|
||||
}
|
||||
|
||||
@ -607,7 +607,7 @@
|
||||
public void f(EntityPlayer entityplayer) {
|
||||
GameProfile gameprofile = entityplayer.getProfile();
|
||||
int i = this.server.a(gameprofile);
|
||||
@@ -499,42 +795,69 @@
|
||||
@@ -498,42 +794,69 @@
|
||||
}
|
||||
|
||||
public void changeWorld(Entity entity, DimensionManager dimensionmanager, WorldServer worldserver, WorldServer worldserver1) {
|
||||
@ -680,7 +680,7 @@
|
||||
}
|
||||
|
||||
worldserver.methodProfiler.exit();
|
||||
@@ -542,22 +865,119 @@
|
||||
@@ -541,22 +864,119 @@
|
||||
worldserver.methodProfiler.enter("placing");
|
||||
d0 = (double) MathHelper.clamp((int) d0, -29999872, 29999872);
|
||||
d1 = (double) MathHelper.clamp((int) d1, -29999872, 29999872);
|
||||
@ -801,7 +801,7 @@
|
||||
this.v = 0;
|
||||
}
|
||||
|
||||
@@ -570,6 +990,25 @@
|
||||
@@ -569,6 +989,25 @@
|
||||
|
||||
}
|
||||
|
||||
@ -827,7 +827,7 @@
|
||||
public void a(Packet<?> packet, DimensionManager dimensionmanager) {
|
||||
for (int i = 0; i < this.players.size(); ++i) {
|
||||
EntityPlayer entityplayer = (EntityPlayer) this.players.get(i);
|
||||
@@ -670,6 +1109,7 @@
|
||||
@@ -669,6 +1108,7 @@
|
||||
entityplayer.playerConnection.sendPacket(new PacketPlayOutEntityStatus(entityplayer, b0));
|
||||
}
|
||||
|
||||
@ -835,7 +835,7 @@
|
||||
this.server.getCommandDispatcher().a(entityplayer);
|
||||
}
|
||||
|
||||
@@ -702,6 +1142,12 @@
|
||||
@@ -701,6 +1141,12 @@
|
||||
for (int i = 0; i < this.players.size(); ++i) {
|
||||
EntityPlayer entityplayer = (EntityPlayer) this.players.get(i);
|
||||
|
||||
@ -848,7 +848,7 @@
|
||||
if (entityplayer != entityhuman && entityplayer.dimension == dimensionmanager) {
|
||||
double d4 = d0 - entityplayer.locX;
|
||||
double d5 = d1 - entityplayer.locY;
|
||||
@@ -741,7 +1187,7 @@
|
||||
@@ -740,7 +1186,7 @@
|
||||
public void reloadWhitelist() {}
|
||||
|
||||
public void b(EntityPlayer entityplayer, WorldServer worldserver) {
|
||||
@ -857,7 +857,7 @@
|
||||
|
||||
entityplayer.playerConnection.sendPacket(new PacketPlayOutWorldBorder(worldborder, PacketPlayOutWorldBorder.EnumWorldBorderAction.INITIALIZE));
|
||||
entityplayer.playerConnection.sendPacket(new PacketPlayOutUpdateTime(worldserver.getTime(), worldserver.getDayTime(), worldserver.getGameRules().getBoolean("doDaylightCycle")));
|
||||
@@ -749,16 +1195,21 @@
|
||||
@@ -748,16 +1194,21 @@
|
||||
|
||||
entityplayer.playerConnection.sendPacket(new PacketPlayOutSpawnPosition(blockposition));
|
||||
if (worldserver.isRaining()) {
|
||||
@ -883,7 +883,7 @@
|
||||
entityplayer.playerConnection.sendPacket(new PacketPlayOutHeldItemSlot(entityplayer.inventory.itemInHandIndex));
|
||||
}
|
||||
|
||||
@@ -820,26 +1271,39 @@
|
||||
@@ -819,26 +1270,39 @@
|
||||
}
|
||||
|
||||
public void u() {
|
||||
@ -928,7 +928,7 @@
|
||||
|
||||
if (serverstatisticmanager == null) {
|
||||
File file = new File(this.server.getWorldServer(DimensionManager.OVERWORLD).getDataManager().getDirectory(), "stats");
|
||||
@@ -854,7 +1318,7 @@
|
||||
@@ -853,7 +1317,7 @@
|
||||
}
|
||||
|
||||
serverstatisticmanager = new ServerStatisticManager(this.server, file1);
|
||||
@ -937,7 +937,7 @@
|
||||
}
|
||||
|
||||
return serverstatisticmanager;
|
||||
@@ -862,14 +1326,14 @@
|
||||
@@ -861,14 +1325,14 @@
|
||||
|
||||
public AdvancementDataPlayer h(EntityPlayer entityplayer) {
|
||||
UUID uuid = entityplayer.getUniqueID();
|
||||
@ -954,7 +954,7 @@
|
||||
}
|
||||
|
||||
advancementdataplayer.a(entityplayer);
|
||||
@@ -905,13 +1369,20 @@
|
||||
@@ -904,13 +1368,20 @@
|
||||
}
|
||||
|
||||
public void reload() {
|
||||
|
@ -2,7 +2,7 @@
|
||||
+++ b/net/minecraft/server/RecipeArmorDye.java
|
||||
@@ -3,11 +3,13 @@
|
||||
import com.google.common.collect.Lists;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
-public class RecipeArmorDye extends IRecipeComplex {
|
||||
+public class RecipeArmorDye extends ShapelessRecipes implements IRecipe { // CraftBukkit - added extends
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/server/RecipeBookServer.java
|
||||
+++ b/net/minecraft/server/RecipeBookServer.java
|
||||
@@ -8,6 +8,7 @@
|
||||
@@ -7,6 +7,7 @@
|
||||
import java.util.List;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@ -8,7 +8,7 @@
|
||||
|
||||
public class RecipeBookServer extends RecipeBook {
|
||||
|
||||
@@ -27,7 +28,7 @@
|
||||
@@ -26,7 +27,7 @@
|
||||
IRecipe irecipe = (IRecipe) iterator.next();
|
||||
MinecraftKey minecraftkey = irecipe.getKey();
|
||||
|
||||
@ -16,8 +16,8 @@
|
||||
+ if (!this.a.contains(minecraftkey) && !irecipe.c() && CraftEventFactory.handlePlayerRecipeListUpdateEvent(entityplayer, minecraftkey)) { // CraftBukkit
|
||||
this.a(minecraftkey);
|
||||
this.c(minecraftkey);
|
||||
arraylist.add(minecraftkey);
|
||||
@@ -61,6 +62,7 @@
|
||||
list.add(minecraftkey);
|
||||
@@ -60,6 +61,7 @@
|
||||
}
|
||||
|
||||
private void a(PacketPlayOutRecipes.Action packetplayoutrecipes_action, EntityPlayer entityplayer, List<MinecraftKey> list) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
--- a/net/minecraft/server/RecipeFireworksFade.java
|
||||
+++ b/net/minecraft/server/RecipeFireworksFade.java
|
||||
@@ -4,13 +4,15 @@
|
||||
import java.util.ArrayList;
|
||||
@@ -3,13 +3,15 @@
|
||||
import com.google.common.collect.Lists;
|
||||
import java.util.List;
|
||||
|
||||
-public class RecipeFireworksFade extends IRecipeComplex {
|
||||
|
@ -1,8 +1,8 @@
|
||||
--- a/net/minecraft/server/RecipeFireworksStar.java
|
||||
+++ b/net/minecraft/server/RecipeFireworksStar.java
|
||||
@@ -8,12 +8,12 @@
|
||||
@@ -6,12 +6,12 @@
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
-public class RecipeFireworksStar extends IRecipeComplex {
|
||||
+public class RecipeFireworksStar extends ShapelessRecipes implements IRecipe { // CraftBukkit - added extends
|
||||
@ -15,7 +15,7 @@
|
||||
hashmap.put(Items.FIRE_CHARGE, ItemFireworks.EffectType.LARGE_BALL);
|
||||
hashmap.put(Items.FEATHER, ItemFireworks.EffectType.BURST);
|
||||
hashmap.put(Items.GOLD_NUGGET, ItemFireworks.EffectType.STAR);
|
||||
@@ -26,9 +26,11 @@
|
||||
@@ -24,9 +24,11 @@
|
||||
});
|
||||
private static final RecipeItemStack e = RecipeItemStack.a(Items.GUNPOWDER);
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
@@ -2,12 +2,15 @@
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
+import java.util.stream.Stream;
|
||||
|
||||
-public class RecipeRepair extends IRecipeComplex {
|
||||
|
Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden Mehr anzeigen
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren