Skip to content
This repository has been archived by the owner on Apr 21, 2023. It is now read-only.

Commit

Permalink
Merge branch 'ver/1.19.2' of https://github.com/PrismarineTeam/Prisma…
Browse files Browse the repository at this point in the history
…rine into dev/rewrite-chunk-system
  • Loading branch information
AlphaKR93 committed Sep 18, 2022
2 parents c39606a + ac1142d commit 71d339e
Showing 1 changed file with 25 additions and 17 deletions.
42 changes: 25 additions & 17 deletions patches/server/0005-Purpur-Server-Changes.patch
Original file line number Diff line number Diff line change
Expand Up @@ -15914,10 +15914,10 @@ index af81ba310dbd7fdbdccdd0cc74b7c085ad54027f..3e529ea7548a2a6617f70a3c3ad2d8f4
world.playSound((Player) null, entityarmorstand.getX(), entityarmorstand.getY(), entityarmorstand.getZ(), SoundEvents.ARMOR_STAND_PLACE, SoundSource.BLOCKS, 0.75F, 0.8F);
entityarmorstand.gameEvent(GameEvent.ENTITY_PLACE, context.getPlayer());
diff --git a/src/main/java/net/minecraft/world/item/AxeItem.java b/src/main/java/net/minecraft/world/item/AxeItem.java
index 9c49d8f696864d2aad23208422c4ab5b598a0cd9..c6da19410c2eec938902c52789d9a27741a0f559 100644
index 9c49d8f696864d2aad23208422c4ab5b598a0cd9..98617a20b7735654124715256157706f3c15ca3a 100644
--- a/src/main/java/net/minecraft/world/item/AxeItem.java
+++ b/src/main/java/net/minecraft/world/item/AxeItem.java
@@ -33,22 +33,22 @@ public class AxeItem extends DiggerItem {
@@ -33,29 +33,29 @@ public class AxeItem extends DiggerItem {
BlockPos blockPos = context.getClickedPos();
Player player = context.getPlayer();
BlockState blockState = level.getBlockState(blockPos);
Expand Down Expand Up @@ -15949,6 +15949,14 @@ index 9c49d8f696864d2aad23208422c4ab5b598a0cd9..c6da19410c2eec938902c52789d9a277
level.levelEvent(player, 3004, blockPos, 0);
optional4 = optional3;
}

if (optional4.isPresent()) {
// Paper start - EntityChangeBlockEvent
- if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(player, blockPos, optional4.get()).isCancelled()) {
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(player, blockPos, optional4.get().into().withPropertiesOf(blockState)).isCancelled()) {
return InteractionResult.PASS;
}
// Paper end
@@ -63,15 +63,23 @@ public class AxeItem extends DiggerItem {
CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger((ServerPlayer)player, blockPos, itemStack);
}
Expand Down Expand Up @@ -17408,10 +17416,10 @@ index a6c25647fb37f59307de0d390f8e8cf55504d7d3..52aae8bd4023b2bb48f12983f54b20fa
world.scheduleTick(pos, this, 1);
return super.updateShape(state, direction, neighborState, world, pos, neighborPos);
diff --git a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java
index 492e3ffd6a4588a521486db631f3e8b2a25b74ec..5d10f92de9ee9f66f9c7b16cc3155cb3979151fe 100644
index 492e3ffd6a4588a521486db631f3e8b2a25b74ec..aa9295dea6f31fd4efdb93abd449af200da4516c 100644
--- a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java
@@ -220,23 +220,21 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
@@ -220,23 +220,28 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
ItemStack itemstack = player.getItemInHand(hand);

if (i < 8 && ComposterBlock.COMPOSTABLES.containsKey(itemstack.getItem())) {
Expand All @@ -17431,39 +17439,39 @@ index 492e3ffd6a4588a521486db631f3e8b2a25b74ec..5d10f92de9ee9f66f9c7b16cc3155cb3
- itemstack.shrink(1);
- }
+ // Purpur start
+ BlockState newState = process(i, state, world, itemstack, pos, player);
+ // Paper start - EntityChangeBlockEvent
+ double rand = world.getRandom().nextDouble();
+ BlockState dummyBlockState = ComposterBlock.addItem(state, org.bukkit.craftbukkit.util.DummyGeneratorAccess.INSTANCE, pos, itemstack, rand);
+ if (state != dummyBlockState && org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(player, pos, dummyBlockState).isCancelled()) { // if block state will change and event cancelled
+ return InteractionResult.sidedSuccess(world.isClientSide);
}
-
+ // Paper end
+ BlockState newState = process(i, state, world, itemstack, pos, player, rand);
+ if (world.purpurConfig.composterBulkProcess && player.isShiftKeyDown()) {
+ BlockState oldState;
+ int oldCount, newCount, oldLevel, newLevel;
+ do {
+ oldState = newState;
+ oldCount = itemstack.getCount();
+ oldLevel = oldState.getValue(ComposterBlock.LEVEL);
+ newState = process(oldLevel, oldState, world, itemstack, pos, player);
+ newState = process(oldLevel, oldState, world, itemstack, pos, player, rand);
+ newCount = itemstack.getCount();
+ newLevel = newState.getValue(ComposterBlock.LEVEL);
+ } while (newCount > 0 && (newCount != oldCount || newLevel != oldLevel || newState != oldState));
}
-
+ }
+ // Purpur end
return InteractionResult.sidedSuccess(world.isClientSide);
} else if (i == 8) {
ComposterBlock.extractProduce(state, world, pos, (Entity) null); // CraftBukkit - no event for players
@@ -246,6 +244,29 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
@@ -246,6 +251,22 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
}
}

+ // Purpur start
+ private static BlockState process(int level, BlockState state, Level world, ItemStack itemstack, BlockPos pos, Player player) {
+ private static BlockState process(int level, BlockState state, Level world, ItemStack itemstack, BlockPos pos, Player player, double rand) {
+ if (level < 7) {
+ // Paper start - EntityChangeBlockEvent
+ double rand = world.getRandom().nextDouble();
+ BlockState dummyBlockState = ComposterBlock.addItem(state, org.bukkit.craftbukkit.util.DummyGeneratorAccess.INSTANCE, pos, itemstack, rand);
+ if (state != dummyBlockState && org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(player, pos, dummyBlockState).isCancelled()) { // if block state will change and event cancelled
+ return InteractionResult.sidedSuccess(world.isClientSide);
+ }
+ BlockState state1 = ComposterBlock.addItem(state, world, pos, itemstack, rand);
+ // Paper end
+
+ world.levelEvent(1500, pos, state != state1 ? 1 : 0);
+ player.awardStat(Stats.ITEM_USED.get(itemstack.getItem()));
Expand Down

0 comments on commit 71d339e

Please sign in to comment.