net.minecraft.world.World.getLootTableManager()方法的使用及代码示例

x33g5p2x  于2022-02-02 转载在 其他  
字(13.8k)|赞(0)|评价(0)|浏览(118)

本文整理了Java中net.minecraft.world.World.getLootTableManager()方法的一些代码示例,展示了World.getLootTableManager()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。World.getLootTableManager()方法的具体详情如下:
包路径:net.minecraft.world.World
类名称:World
方法名:getLootTableManager

World.getLootTableManager介绍

暂无

代码示例

代码示例来源:origin: Vazkii/Botania

  1. List<ItemStack> stacks = world.getLootTableManager().getLootTableFromLocation(lootTable).generateLootForPools(rand, new LootContext.Builder((WorldServer) world).build());
  2. if (stacks.isEmpty())
  3. return;

代码示例来源:origin: SleepyTrousers/EnderIO

  1. @Override
  2. public @Nonnull LootTableManager getLootTableManager() {
  3. return wrapped.getLootTableManager();
  4. }

代码示例来源:origin: amadornes/MCMultiPart

  1. @Override
  2. public LootTableManager getLootTableManager() {
  3. return getActualWorld().getLootTableManager();
  4. }

代码示例来源:origin: P3pp3rF1y/AncientWarfare2

  1. private boolean lootTableExists(World world, ResourceLocation lootTableName) {
  2. return world.getLootTableManager().getLootTableFromLocation(lootTableName) != null;
  3. }

代码示例来源:origin: Alex-the-666/Ice_and_Fire

  1. public void fillWithLoot(@Nullable EntityPlayer player) {
  2. if (this.lootTable != null && this.world != null && this.world.getLootTableManager() != null) {
  3. LootTable loottable = this.world.getLootTableManager().getLootTableFromLocation(this.lootTable);
  4. this.lootTable = null;
  5. Random random;
  6. if (this.lootTableSeed == 0L) {
  7. random = new Random();
  8. } else {
  9. random = new Random(this.lootTableSeed);
  10. }
  11. LootContext.Builder lootcontext$builder = new LootContext.Builder((WorldServer) this.world);
  12. if (player != null) {
  13. lootcontext$builder.withLuck(player.getLuck()).withPlayer(player); // Forge: add player to LootContext
  14. }
  15. loottable.fillInventory(this, random, lootcontext$builder.build());
  16. }
  17. }

代码示例来源:origin: ldtteam/minecolonies

  1. /**
  2. * Return some random loot of a defined lootTable.
  3. *
  4. * @param lootTable the lootTable.
  5. * @return the ItemStack of the loot.
  6. */
  7. private ItemStack getLootForLootTable(final ResourceLocation lootTable)
  8. {
  9. final LootContext.Builder lootContextBuilder = new LootContext.Builder((WorldServer) CompatibilityUtils.getWorld(this));
  10. return CompatibilityUtils.getWorld(this).getLootTableManager()
  11. .getLootTableFromLocation(lootTable)
  12. .generateLootForPools(this.rand, lootContextBuilder.build()).stream().findFirst().orElse(null);
  13. }

代码示例来源:origin: Esteemed-Innovation/Esteemed-Innovation

  1. @Override
  2. public void safeUpdate() {
  3. Pair<Chunk, Integer> pair = randSourceBlock();
  4. int src = pair.getRight();
  5. if (getSteamShare() > src) {
  6. decrSteam(src);
  7. if (world.rand.nextInt((int) (300.0F / src)) == 0 && !world.isRemote) {
  8. Chunk loc = pair.getLeft();
  9. LootContext lootContext = new LootContext.Builder((WorldServer) world).build();
  10. List<ItemStack> fishes = world.getLootTableManager().getLootTableFromLocation(
  11. LootTableList.GAMEPLAY_FISHING_FISH).generateLootForPools(world.rand, lootContext);
  12. ItemStack output = fishes.get(world.rand.nextInt(fishes.size()));
  13. ItemStack smeltingResult = FurnaceRecipes.instance().getSmeltingResult(output);
  14. if (smeltingResult != null) {
  15. output = smeltingResult;
  16. }
  17. dropItem(output, loc.x + 0.5F, pos.getY() + 1.0F, loc.z + 0.5F);
  18. }
  19. }
  20. super.safeUpdate();
  21. }

代码示例来源:origin: SleepyTrousers/EnderIO

  1. @Override
  2. public @Nonnull EnumActionResult onItemUseFirst(@Nonnull EntityPlayer player, @Nonnull World world, @Nonnull BlockPos pos, @Nonnull EnumFacing side,
  3. float hitX, float hitY, float hitZ, @Nonnull EnumHand hand) {
  4. if (world.isRemote || System.getProperty("INDEV") == null || !player.isCreative()) {
  5. return EnumActionResult.PASS;
  6. }
  7. TileEntity te = world.getTileEntity(pos);
  8. if (te instanceof TileEntityChest) {
  9. TileEntityChest chest = (TileEntityChest) te;
  10. chest.clear();
  11. LootContext.Builder lootcontext$builder = new LootContext.Builder((WorldServer) world);
  12. lootcontext$builder.withLuck(player.getLuck());
  13. LootTable loottable = world.getLootTableManager().getLootTableFromLocation(LootTableList.CHESTS_SIMPLE_DUNGEON);
  14. // LootTable loottable = world.getLootTableManager().getLootTableFromLocation(LootTableList.CHESTS_IGLOO_CHEST);
  15. loottable.fillInventory(chest, world.rand, lootcontext$builder.build());
  16. return EnumActionResult.PASS;
  17. } else {
  18. IBlockState blockState = world.getBlockState(pos);
  19. int meta = blockState.getBlock().getMetaFromState(blockState);
  20. player.sendMessage(new TextComponentString(blockState + " (" + meta + ")"));
  21. }
  22. return EnumActionResult.PASS;
  23. }

代码示例来源:origin: Silentine/GrimoireOfGaia

  1. private static List<ItemStack> getLoot(World world, @Nullable EntityPlayer player, boolean entityWasRecentlyHit, ResourceLocation lootTableName) {
  2. LootContext.Builder builder = new LootContext.Builder((WorldServer) world);
  3. LootTable lootTable = world.getLootTableManager().getLootTableFromLocation(lootTableName);
  4. if (entityWasRecentlyHit && player != null) {
  5. builder.withLuck(player.getLuck()).withPlayer(player);
  6. }
  7. return lootTable.generateLootForPools(world.rand, builder.build());
  8. }

代码示例来源:origin: Alex-the-666/Ice_and_Fire

  1. public ItemStack getItemFromLootTable() {
  2. LootTable loottable = this.world.getLootTableManager().getLootTableFromLocation(getDeadLootTable());
  3. LootContext.Builder lootcontext$builder = (new LootContext.Builder((WorldServer) this.world)).withLootedEntity(this).withDamageSource(DamageSource.GENERIC);
  4. if (this.attackingPlayer != null) {
  5. lootcontext$builder = lootcontext$builder.withPlayer(this.attackingPlayer).withLuck(this.attackingPlayer.getLuck());
  6. }
  7. List<ItemStack> loot = loottable.generateLootForPools(this.rand, lootcontext$builder.build());
  8. if (loot.isEmpty()) {
  9. return ItemStack.EMPTY;
  10. } else {
  11. return loot.get(0);
  12. }
  13. }

代码示例来源:origin: PenguinSquad/Harvest-Festival

  1. public static ItemStack getStack(World world, EntityPlayer player, ResourceLocation lootTable) {
  2. long lootTableSeed = world.rand.nextLong();
  3. LootTable loottable = world.getLootTableManager().getLootTableFromLocation(lootTable);
  4. Random random;
  5. if (lootTableSeed == 0L) {
  6. random = new Random();
  7. } else {
  8. random = new Random(lootTableSeed);
  9. }
  10. LootContext.Builder lootcontext$builder = new LootContext.Builder((WorldServer)world);
  11. if (player != null) {
  12. lootcontext$builder.withLuck(player.getLuck());
  13. }
  14. loottable.fillInventory(INVENTORY, random, lootcontext$builder.build());
  15. ItemStack result = INVENTORY.getStackInSlot(0);
  16. if (result != null) result = result.copy();
  17. INVENTORY.setInventorySlotContents(0, null);
  18. return result;
  19. }
  20. }

代码示例来源:origin: Ellpeck/ActuallyAdditions

  1. public void fillWithLoot(EntityPlayer player){
  2. if(this.lootTable != null && !this.world.isRemote && this.world instanceof WorldServer){
  3. LootTable table = this.world.getLootTableManager().getLootTableFromLocation(this.lootTable);
  4. this.lootTable = null;
  5. LootContext.Builder builder = new LootContext.Builder((WorldServer)this.world);
  6. if(player != null){
  7. builder.withLuck(player.getLuck());
  8. }
  9. AwfulUtil.fillInventory(table, this.inv, world.rand, builder.build());
  10. }
  11. }
  12. }

代码示例来源:origin: P3pp3rF1y/AncientWarfare2

  1. public static void generateLootFor(World world,
  2. @Nullable EntityPlayer player, IItemHandler inventory, Random rng, ResourceLocation lootTableName, int rolls) {
  3. LootContext.Builder builder = new LootContext.Builder((WorldServer) world);
  4. LootTable lootTable = world.getLootTableManager().getLootTableFromLocation(lootTableName);
  5. if (player != null) {
  6. builder.withLuck(player.getLuck()).withPlayer(player);
  7. }
  8. LootContext lootContext = builder.build();
  9. NonNullList<ItemStack> loot = NonNullList.create();
  10. for (int i = 0; i < rolls; i++) {
  11. mergeItemStacks(loot, toNonNullList(lootTable.generateLootForPools(rng, lootContext)));
  12. }
  13. List<Integer> randomSlots = getEmptySlotsRandomized(inventory, rng);
  14. shuffleItems(loot, randomSlots.size(), rng);
  15. for (ItemStack itemstack : loot) {
  16. if (randomSlots.isEmpty()) {
  17. AncientWarfareCore.LOG.warn("Tried to over-fill a container");
  18. return;
  19. }
  20. if (!itemstack.isEmpty()) {
  21. inventory.insertItem(randomSlots.remove(randomSlots.size() - 1), itemstack, false);
  22. }
  23. }
  24. }

代码示例来源:origin: Silentine/GrimoireOfGaia

  1. /**
  2. * Our Method to drop a random item from an entire Loot Table
  3. */
  4. public void dropRandomLootFromLootTable(ResourceLocation dungeonLoot, boolean wasRecentlyHit, int lootingModifier, DamageSource source) {
  5. long LootTableSeed = 0;
  6. int maxCount = 0;
  7. int currentCount = 0;
  8. Random Randomize = new Random();
  9. int roll = 0;
  10. // Things for Looting enchant calculations
  11. LootTable loottable = world.getLootTableManager().getLootTableFromLocation(dungeonLoot);
  12. LootContext.Builder lootcontext$builder = (new LootContext.Builder((WorldServer) world)).withLootedEntity(this).withDamageSource(source);
  13. if (wasRecentlyHit && attackingPlayer != null) {
  14. lootcontext$builder = lootcontext$builder.withPlayer(attackingPlayer).withLuck(attackingPlayer.getLuck());
  15. }
  16. // Here we count the amount of pools are in the Loot Table Array
  17. for (ItemStack itemstack : loottable.generateLootForPools(LootTableSeed == 0L ? rand : new Random(LootTableSeed), lootcontext$builder.build())) {
  18. maxCount++;
  19. }
  20. // Our Roll dependent on the amount of pools we counted
  21. roll = Randomize.nextInt(maxCount);
  22. for (ItemStack itemstack : loottable.generateLootForPools(LootTableSeed == 0L ? rand : new Random(LootTableSeed), lootcontext$builder.build())) {
  23. // Check if our current iteration matches our roll
  24. if (currentCount == roll) {
  25. entityDropItem(itemstack, 0.0F);
  26. }
  27. currentCount++; // Incrementing the current Iteration
  28. }
  29. }

代码示例来源:origin: PenguinSquad/Harvest-Festival

  1. public static List<ItemStack> getLoot(ResourceLocation loot, World world, EntityPlayer player, float luck) {
  2. LootContext.Builder lootcontext$builder = new LootContext.Builder((WorldServer) world);
  3. lootcontext$builder.withLuck(player.getLuck() + luck);
  4. lootcontext$builder.withPlayer(player);
  5. return world.getLootTableManager().getLootTableFromLocation(loot).generateLootForPools(world.rand, lootcontext$builder.build());
  6. }

代码示例来源:origin: SleepyTrousers/EnderIO

  1. LootTable loottable = entity.world.getLootTableManager().getLootTableFromLocation(resourcelocation);
  2. LootContext.Builder builder = (new LootContext.Builder((WorldServer) entity.world)).withLootedEntity(entity).withDamageSource(source);

代码示例来源:origin: CyclopsMC/EvilCraft

  1. @Override
  2. protected void dropLoot(boolean wasRecentlyHit, int lootingModifier, @Nullable DamageSource damageSource) {
  3. super.dropLoot(wasRecentlyHit, lootingModifier, damageSource);
  4. // Also drop loot from inner entity!
  5. EntityLivingBase innerEntity = getInnerEntity();
  6. if (innerEntity instanceof EntityLiving && damageSource != DamageSource.OUT_OF_WORLD) {
  7. ResourceLocation deathLootTable = ObfuscationHelpers.getLootTable((EntityLiving) innerEntity);
  8. if (deathLootTable != null) {
  9. LootTable loottable = getEntityWorld().getLootTableManager().getLootTableFromLocation(deathLootTable);
  10. LootContext.Builder lootcontext$builder = (new LootContext.Builder((WorldServer) getEntityWorld()))
  11. .withLootedEntity(innerEntity)
  12. .withDamageSource(DamageSource.GENERIC);
  13. if (wasRecentlyHit && this.attackingPlayer != null) {
  14. lootcontext$builder = lootcontext$builder.withPlayer(this.attackingPlayer).withLuck(this.attackingPlayer.getLuck());
  15. }
  16. for (ItemStack itemstack : loottable.generateLootForPools(getEntityWorld().rand, lootcontext$builder.build())) {
  17. this.entityDropItem(itemstack, 0.0F);
  18. }
  19. }
  20. }
  21. }

代码示例来源:origin: PenguinSquad/Harvest-Festival

  1. @Override
  2. @SuppressWarnings("ConstantConditions")
  3. public void newDay(World world, BlockPos pos, IBlockState state) {
  4. TileTrap trap = (TileTrap) world.getTileEntity(pos);
  5. if (trap.stack != null && FishingAPI.INSTANCE.isBait(trap.stack)) {
  6. if (trap.isSurroundedByWater(world, pos)) {
  7. LootContext.Builder lootcontext$builder = new LootContext.Builder((WorldServer) world);
  8. lootcontext$builder.withLootedEntity(FakePlayerHelper.getFakePlayerWithPosition((WorldServer) world, pos));
  9. if (FishingHelper.isWater(world, pos.down())) lootcontext$builder.withLuck(1F);
  10. for (ItemStack itemstack : world.getLootTableManager().getLootTableFromLocation(trap.getLootTable()).generateLootForPools(world.rand, lootcontext$builder.build())) {
  11. trap.baited = false;
  12. trap.stack = itemstack.copy();
  13. }
  14. trap.saveAndRefresh();
  15. }
  16. }
  17. }
  18. };

代码示例来源:origin: Ellpeck/ActuallyAdditions

  1. @Override
  2. public void updateEntity(){
  3. super.updateEntity();
  4. if(!this.world.isRemote){
  5. if(!this.isRedstonePowered){
  6. if(this.world.getBlockState(this.pos.down()).getMaterial() == Material.WATER){
  7. if(this.timeUntilNextDrop > 0){
  8. this.timeUntilNextDrop--;
  9. if(this.timeUntilNextDrop <= 0){
  10. LootContext.Builder builder = new LootContext.Builder((WorldServer)this.world);
  11. List<ItemStack> fishables = this.world.getLootTableManager().getLootTableFromLocation(LootTableList.GAMEPLAY_FISHING).generateLootForPools(this.world.rand, builder.build());
  12. for(ItemStack fishable : fishables){
  13. ItemStack leftover = this.storeInContainer(fishable);
  14. if(StackUtil.isValid(leftover)){
  15. EntityItem item = new EntityItem(this.world, this.pos.getX()+0.5, this.pos.getY()+0.5, this.pos.getZ()+0.5, leftover.copy());
  16. item.lifespan = 2000;
  17. this.world.spawnEntity(item);
  18. }
  19. }
  20. }
  21. }
  22. else{
  23. int time = 15000;
  24. this.timeUntilNextDrop = time+this.world.rand.nextInt(time/2);
  25. }
  26. }
  27. }
  28. }
  29. }

代码示例来源:origin: joshiejack/Mariculture

  1. @SubscribeEvent
  2. public void onKillChicken(LivingDeathEvent event) {
  3. if (Debug.CHICKEN_FISHING > 0) {
  4. EntityPlayer angler = event.getSource().getEntity() instanceof EntityPlayer ? (EntityPlayer) event.getSource().getEntity() : null;
  5. if (angler != null && !angler.worldObj.isRemote && event.getEntityLiving() instanceof EntityChicken) {
  6. for (int i = 0; i < Debug.CHICKEN_FISHING; i++) {
  7. LootContext.Builder lootcontext$builder = new LootContext.Builder((WorldServer) angler.worldObj);
  8. lootcontext$builder.withLuck((float) EnchantmentHelper.getLuckOfSeaModifier(angler) + angler.getLuck());
  9. lootcontext$builder.withPlayer(angler); //Added by Mariculture
  10. lootcontext$builder.withLootedEntity(event.getEntityLiving()); //Added by Mariculture
  11. for (ItemStack itemstack : angler.worldObj.getLootTableManager().getLootTableFromLocation(LootTableList.GAMEPLAY_FISHING).generateLootForPools(this.rand, lootcontext$builder.build())) {
  12. EntityItem entityitem = new EntityItem(angler.worldObj, event.getEntityLiving().posX, event.getEntityLiving().posY, event.getEntityLiving().posZ, itemstack);
  13. double d0 = angler.posX - event.getEntityLiving().posX;
  14. double d1 = angler.posY - event.getEntityLiving().posY;
  15. double d2 = angler.posZ - event.getEntityLiving().posZ;
  16. double d3 = (double) MathHelper.sqrt_double(d0 * d0 + d1 * d1 + d2 * d2);
  17. double d4 = 0.1D;
  18. entityitem.motionX = d0 * d4;
  19. entityitem.motionY = d1 * d4 + (double) MathHelper.sqrt_double(d3) * 0.08D;
  20. entityitem.motionZ = d2 * d4;
  21. angler.worldObj.spawnEntityInWorld(entityitem);
  22. angler.worldObj.spawnEntityInWorld(new EntityXPOrb(angler.worldObj, angler.posX, angler.posY + 0.5D, angler.posZ + 0.5D, this.rand.nextInt(6) + 1));
  23. }
  24. }
  25. }
  26. }
  27. }
  28. }

相关文章

World类方法