aboutsummaryrefslogtreecommitdiffhomepage
path: root/patch-remap/mache-vineflower/net/minecraft/server/commands/GiveCommand.java.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patch-remap/mache-vineflower/net/minecraft/server/commands/GiveCommand.java.patch')
-rw-r--r--patch-remap/mache-vineflower/net/minecraft/server/commands/GiveCommand.java.patch158
1 files changed, 158 insertions, 0 deletions
diff --git a/patch-remap/mache-vineflower/net/minecraft/server/commands/GiveCommand.java.patch b/patch-remap/mache-vineflower/net/minecraft/server/commands/GiveCommand.java.patch
new file mode 100644
index 0000000000..22ce2f6dab
--- /dev/null
+++ b/patch-remap/mache-vineflower/net/minecraft/server/commands/GiveCommand.java.patch
@@ -0,0 +1,158 @@
+--- a/net/minecraft/server/commands/GiveCommand.java
++++ b/net/minecraft/server/commands/GiveCommand.java
+@@ -2,12 +2,13 @@
+
+ import com.mojang.brigadier.CommandDispatcher;
+ import com.mojang.brigadier.arguments.IntegerArgumentType;
+-import com.mojang.brigadier.context.CommandContext;
++import com.mojang.brigadier.builder.LiteralArgumentBuilder;
++import com.mojang.brigadier.builder.RequiredArgumentBuilder;
+ import com.mojang.brigadier.exceptions.CommandSyntaxException;
+ import java.util.Collection;
++import java.util.Iterator;
+ import net.minecraft.commands.CommandBuildContext;
+ import net.minecraft.commands.CommandSourceStack;
+-import net.minecraft.commands.Commands;
+ import net.minecraft.commands.arguments.EntityArgument;
+ import net.minecraft.commands.arguments.item.ItemArgument;
+ import net.minecraft.commands.arguments.item.ItemInput;
+@@ -16,92 +17,75 @@
+ import net.minecraft.sounds.SoundEvents;
+ import net.minecraft.sounds.SoundSource;
+ import net.minecraft.world.entity.item.ItemEntity;
++import net.minecraft.world.entity.player.Player;
+ import net.minecraft.world.item.ItemStack;
+
+ public class GiveCommand {
++
+ public static final int MAX_ALLOWED_ITEMSTACKS = 100;
+
++ public GiveCommand() {}
++
+ public static void register(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext context) {
+- dispatcher.register(
+- Commands.literal("give")
+- .requires(source -> source.hasPermission(2))
+- .then(
+- Commands.argument("targets", EntityArgument.players())
+- .then(
+- Commands.argument("item", ItemArgument.item(context))
+- .executes(
+- context1 -> giveItem(
+- context1.getSource(), ItemArgument.getItem(context1, "item"), EntityArgument.getPlayers(context1, "targets"), 1
+- )
+- )
+- .then(
+- Commands.argument("count", IntegerArgumentType.integer(1))
+- .executes(
+- context1 -> giveItem(
+- context1.getSource(),
+- ItemArgument.getItem(context1, "item"),
+- EntityArgument.getPlayers(context1, "targets"),
+- IntegerArgumentType.getInteger(context1, "count")
+- )
+- )
+- )
+- )
+- )
+- );
++ dispatcher.register((LiteralArgumentBuilder) ((LiteralArgumentBuilder) net.minecraft.commands.Commands.literal("give").requires((commandlistenerwrapper) -> {
++ return commandlistenerwrapper.hasPermission(2);
++ })).then(net.minecraft.commands.Commands.argument("targets", EntityArgument.players()).then(((RequiredArgumentBuilder) net.minecraft.commands.Commands.argument("item", ItemArgument.item(context)).executes((commandcontext) -> {
++ return giveItem((CommandSourceStack) commandcontext.getSource(), ItemArgument.getItem(commandcontext, "item"), EntityArgument.getPlayers(commandcontext, "targets"), 1);
++ })).then(net.minecraft.commands.Commands.argument("count", IntegerArgumentType.integer(1)).executes((commandcontext) -> {
++ return giveItem((CommandSourceStack) commandcontext.getSource(), ItemArgument.getItem(commandcontext, "item"), EntityArgument.getPlayers(commandcontext, "targets"), IntegerArgumentType.getInteger(commandcontext, "count"));
++ })))));
+ }
+
+ private static int giveItem(CommandSourceStack source, ItemInput item, Collection<ServerPlayer> targets, int count) throws CommandSyntaxException {
+- int maxStackSize = item.getItem().getMaxStackSize();
+- int i = maxStackSize * 100;
+- ItemStack itemStack = item.createItemStack(count, false);
+- if (count > i) {
+- source.sendFailure(Component.translatable("commands.give.failed.toomanyitems", i, itemStack.getDisplayName()));
++ int j = item.getItem().getMaxStackSize();
++ int k = j * 100;
++ ItemStack itemstack = item.createItemStack(count, false);
++
++ if (count > k) {
++ source.sendFailure(Component.translatable("commands.give.failed.toomanyitems", k, itemstack.getDisplayName()));
+ return 0;
+ } else {
+- for (ServerPlayer serverPlayer : targets) {
+- int i1 = count;
++ Iterator iterator = targets.iterator();
+
+- while (i1 > 0) {
+- int min = Math.min(maxStackSize, i1);
+- i1 -= min;
+- ItemStack itemStack1 = item.createItemStack(min, false);
+- boolean flag = serverPlayer.getInventory().add(itemStack1);
+- if (flag && itemStack1.isEmpty()) {
+- itemStack1.setCount(1);
+- ItemEntity itemEntity = serverPlayer.drop(itemStack1, false);
+- if (itemEntity != null) {
+- itemEntity.makeFakeItem();
++ while (iterator.hasNext()) {
++ ServerPlayer entityplayer = (ServerPlayer) iterator.next();
++ int l = count;
++
++ while (l > 0) {
++ int i1 = Math.min(j, l);
++
++ l -= i1;
++ ItemStack itemstack1 = item.createItemStack(i1, false);
++ boolean flag = entityplayer.getInventory().add(itemstack1);
++ ItemEntity entityitem;
++
++ if (flag && itemstack1.isEmpty()) {
++ itemstack1.setCount(1);
++ entityitem = entityplayer.drop(itemstack1, false, false, false); // SPIGOT-2942: Add boolean to call event
++ if (entityitem != null) {
++ entityitem.makeFakeItem();
+ }
+
+- serverPlayer.level()
+- .playSound(
+- null,
+- serverPlayer.getX(),
+- serverPlayer.getY(),
+- serverPlayer.getZ(),
+- SoundEvents.ITEM_PICKUP,
+- SoundSource.PLAYERS,
+- 0.2F,
+- ((serverPlayer.getRandom().nextFloat() - serverPlayer.getRandom().nextFloat()) * 0.7F + 1.0F) * 2.0F
+- );
+- serverPlayer.containerMenu.broadcastChanges();
++ entityplayer.level().playSound((Player) null, entityplayer.getX(), entityplayer.getY(), entityplayer.getZ(), SoundEvents.ITEM_PICKUP, SoundSource.PLAYERS, 0.2F, ((entityplayer.getRandom().nextFloat() - entityplayer.getRandom().nextFloat()) * 0.7F + 1.0F) * 2.0F);
++ entityplayer.containerMenu.broadcastChanges();
+ } else {
+- ItemEntity itemEntity = serverPlayer.drop(itemStack1, false);
+- if (itemEntity != null) {
+- itemEntity.setNoPickUpDelay();
+- itemEntity.setTarget(serverPlayer.getUUID());
++ entityitem = entityplayer.drop(itemstack1, false);
++ if (entityitem != null) {
++ entityitem.setNoPickUpDelay();
++ entityitem.setTarget(entityplayer.getUUID());
+ }
+ }
+ }
+ }
+
+ if (targets.size() == 1) {
+- source.sendSuccess(
+- () -> Component.translatable("commands.give.success.single", count, itemStack.getDisplayName(), targets.iterator().next().getDisplayName()),
+- true
+- );
++ source.sendSuccess(() -> {
++ return Component.translatable("commands.give.success.single", count, itemstack.getDisplayName(), ((ServerPlayer) targets.iterator().next()).getDisplayName());
++ }, true);
+ } else {
+- source.sendSuccess(() -> Component.translatable("commands.give.success.single", count, itemStack.getDisplayName(), targets.size()), true);
++ source.sendSuccess(() -> {
++ return Component.translatable("commands.give.success.single", count, itemstack.getDisplayName(), targets.size());
++ }, true);
+ }
+
+ return targets.size();