Commit 69767e09 authored by AtomicInteger's avatar AtomicInteger
Browse files

Implemented CB-code for Advancements and Blocks

parent 617457ff
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ public class Advancement
    private final String[][] requirements;
    private final Set<Advancement> children = Sets.<Advancement>newLinkedHashSet();
    private final ITextComponent displayText;
    public final org.bukkit.advancement.Advancement bukkit = new org.bukkit.craftbukkit.advancement.CraftAdvancement(this);

    public Advancement(ResourceLocation id, @Nullable Advancement parentIn, @Nullable DisplayInfo displayIn, AdvancementRewards rewardsIn, Map<String, Criterion> criteriaIn, String[][] requirementsIn)
    {
+10 −9
Original line number Diff line number Diff line
@@ -194,37 +194,38 @@ public class PlayerAdvancements
        }
    }

    public boolean grantCriterion(Advancement p_192750_1_, String p_192750_2_)
    public boolean grantCriterion(Advancement advancement, String p_192750_2_)
    {
        // Forge: don't grant advancements for fake players
        if (this.player instanceof net.minecraftforge.common.util.FakePlayer) return false;

        boolean flag = false;
        AdvancementProgress advancementprogress = this.getProgress(p_192750_1_);
        AdvancementProgress advancementprogress = this.getProgress(advancement);
        boolean flag1 = advancementprogress.isDone();

        if (advancementprogress.grantCriterion(p_192750_2_))
        {
            this.unregisterListeners(p_192750_1_);
            this.progressChanged.add(p_192750_1_);
            this.unregisterListeners(advancement);
            this.progressChanged.add(advancement);
            flag = true;

            if (!flag1 && advancementprogress.isDone())
            {
                p_192750_1_.getRewards().apply(this.player);
                this.player.world.getServer().getPluginManager().callEvent(new org.bukkit.event.player.PlayerAdvancementDoneEvent(this.player.getBukkitEntity(), advancement.bukkit));
                advancement.getRewards().apply(this.player);

                if (p_192750_1_.getDisplay() != null && p_192750_1_.getDisplay().shouldAnnounceToChat() && this.player.world.getGameRules().getBoolean("announceAdvancements"))
                if (advancement.getDisplay() != null && advancement.getDisplay().shouldAnnounceToChat() && this.player.world.getGameRules().getBoolean("announceAdvancements"))
                {
                    this.server.getPlayerList().sendMessage(new TextComponentTranslation("chat.type.advancement." + p_192750_1_.getDisplay().getFrame().getName(), new Object[] {this.player.getDisplayName(), p_192750_1_.getDisplayText()}));
                    this.server.getPlayerList().sendMessage(new TextComponentTranslation("chat.type.advancement." + advancement.getDisplay().getFrame().getName(), new Object[] {this.player.getDisplayName(), advancement.getDisplayText()}));
                }

                net.minecraftforge.common.ForgeHooks.onAdvancement(this.player, p_192750_1_);
                net.minecraftforge.common.ForgeHooks.onAdvancement(this.player, advancement);
            }
        }

        if (advancementprogress.isDone())
        {
            this.ensureVisibility(p_192750_1_);
            this.ensureVisibility(advancement);
        }

        return flag;
+11 −2
Original line number Diff line number Diff line
@@ -573,7 +573,8 @@ public class Block extends net.minecraftforge.registries.IForgeRegistryEntry.Imp

            for (ItemStack drop : drops)
            {
                if (worldIn.rand.nextFloat() <= chance)
                // CraftBukkit - <= to < to allow for plugins to completely disable block drops from explosions
                if (worldIn.rand.nextFloat() < chance)
                {
                    spawnAsEntity(worldIn, pos, drop);
                }
@@ -596,9 +597,17 @@ public class Block extends net.minecraftforge.registries.IForgeRegistryEntry.Imp
            double d2 = (double)(worldIn.rand.nextFloat() * 0.5F) + 0.25D;
            EntityItem entityitem = new EntityItem(worldIn, (double)pos.getX() + d0, (double)pos.getY() + d1, (double)pos.getZ() + d2, stack);
            entityitem.setDefaultPickupDelay();
            if (worldIn.captureDrops != null) {
                worldIn.captureDrops.add(entityitem);
            } else {
                worldIn.spawnEntity(entityitem);
            }
        }
    }

    public int getExpDrop(World world, IBlockState state, int enchantmentLevel) {
        return 0;
    }

    public void dropXpOnBlockBreak(World worldIn, BlockPos pos, int amount)
    {
+12 −0
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import org.bukkit.event.block.BlockRedstoneEvent;

public abstract class BlockBasePressurePlate extends Block
{
@@ -125,6 +126,17 @@ public abstract class BlockBasePressurePlate extends Block
        boolean flag = oldRedstoneStrength > 0;
        boolean flag1 = i > 0;

        org.bukkit.World bworld = worldIn.getWorld();
        org.bukkit.plugin.PluginManager manager = worldIn.getServer().getPluginManager();

        if (flag != flag1) {
            BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(bworld.getBlockAt(pos.getX(), pos.getY(), pos.getZ()), oldRedstoneStrength, i);
            manager.callEvent(eventRedstone);

            flag1 = eventRedstone.getNewCurrent() > 0;
            i = eventRedstone.getNewCurrent();
        }

        if (oldRedstoneStrength != i)
        {
            state = this.setRedstoneStrength(state, i);
+3 −0
Original line number Diff line number Diff line
@@ -64,6 +64,9 @@ public class BlockBush extends Block implements net.minecraftforge.common.IPlant
    {
        if (!this.canBlockStay(worldIn, pos, state))
        {
            if (org.bukkit.craftbukkit.event.CraftEventFactory.callBlockPhysicsEvent(worldIn, pos).isCancelled()) {
                return;
            }
            this.dropBlockAsItem(worldIn, pos, state, 0);
            worldIn.setBlockState(pos, Blocks.AIR.getDefaultState(), 3);
        }
Loading