Skip to content

Commit

Permalink
Fixed redstone machines dropping themselves in onReplace
Browse files Browse the repository at this point in the history
  • Loading branch information
fuj1n committed Sep 21, 2019
1 parent f82292f commit 17fac09
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 16 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Expand Up @@ -115,7 +115,7 @@ dependencies {
// at runtime, use the full JEI jar
runtimeOnly fg.deobf("mezz.jei:jei-${minecraft_version}:${jei_version}")

//compile fg.deobf("mcp.mobius.waila:Hwyla:${hwyla_version}_${minecraft_version}")
compile fg.deobf("mcp.mobius.waila:Hwyla:${hwyla_version}_${minecraft_version}")
}

sourceSets {
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Expand Up @@ -18,4 +18,4 @@ mantle_version=1.4.+
tinkers_version=2.12.0.+

jei_version=6.0.0.+
hwyla_version=1.8.26-B41
hwyla_version=1.10.6-B67
Expand Up @@ -8,6 +8,7 @@
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.InventoryHelper;
import net.minecraft.inventory.container.INamedContainerProvider;
import net.minecraft.item.BlockItemUseContext;
Expand All @@ -18,6 +19,7 @@
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Direction;
import net.minecraft.util.Hand;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.text.ITextComponent;
Expand All @@ -27,6 +29,7 @@
import net.minecraft.world.IWorldReader;
import net.minecraft.world.World;
import net.minecraft.world.storage.loot.LootContext;
import net.minecraft.world.storage.loot.LootParameters;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.util.Constants;
Expand Down Expand Up @@ -115,29 +118,37 @@ public void onBlockPlacedBy(World worldIn, BlockPos pos, BlockState state, @Nonn

@Override
public List<ItemStack> getDrops(BlockState state, LootContext.Builder builder) {
return Collections.emptyList();
TileEntity te = builder.get(LootParameters.BLOCK_ENTITY);

if(te instanceof RedstoneMachineTileEntity) {
List<ItemStack> drops = NonNullList.create();

RedstoneMachineTileEntity machine = (RedstoneMachineTileEntity) te;
ItemStack item = new ItemStack(this, 1);

writeAdditionalItemData(state, builder.getWorld(), builder.get(LootParameters.POSITION), item);

if (dropState)
machine.storeTileData(item);

drops.add(item);
return drops;
}

return super.getDrops(state, builder);
}

@Override
public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) {
if (blockMatches(state, worldIn, pos, newState, isMoving))
return;
TileEntity te = worldIn.getTileEntity(pos);

if (te instanceof RedstoneMachineTileEntity) {
// Forego loot table as they scare me when this much data is needed
RedstoneMachineTileEntity machine = (RedstoneMachineTileEntity) te;
ItemStack item = new ItemStack(this, 1);

writeAdditionalItemData(state, worldIn, pos, item);
TileEntity te = worldIn.getTileEntity(pos);

if (dropState) {
machine.storeTileData(item);
} else {
InventoryHelper.dropInventoryItems(worldIn, pos, machine);
}
if(te instanceof IInventory) {
if(!dropState)
InventoryHelper.dropInventoryItems(worldIn, pos, (IInventory)te);

InventoryHelper.spawnItemStack(worldIn, pos.getX(), pos.getY(), pos.getZ(), item);
worldIn.updateComparatorOutputLevel(pos, this);
}

Expand Down

0 comments on commit 17fac09

Please sign in to comment.