mirror of
https://github.com/Creators-of-Create/Create.git
synced 2025-03-04 06:44:40 +01:00
Fortuneful Crushers
- Fix Crushing Wheels not applying fortune like they should - Remove extra FIXME
This commit is contained in:
parent
b28427fe2d
commit
658225e318
6 changed files with 570 additions and 519 deletions
|
@ -129,6 +129,7 @@ _Now using Flywheel 1.0_
|
|||
- Fixed lighting on signal block indicators
|
||||
- Fixed vaults and tanks rotated in place not updating their multiblock correctly
|
||||
- Hose pulley now deletes lilypads and other surface foliage
|
||||
- Fixed crushing wheels not applying looting to killed entities
|
||||
|
||||
#### API Changes
|
||||
|
||||
|
|
|
@ -174,7 +174,7 @@ public class ChainConveyorBlockEntity extends KineticBlockEntity implements Tran
|
|||
if (!(level.getBlockEntity(worldPosition.offset(offset)) instanceof ChainConveyorBlockEntity otherLift))
|
||||
continue;
|
||||
for (Iterator<ChainConveyorPackage> iterator = entry.getValue()
|
||||
.iterator(); iterator.hasNext();) {
|
||||
.iterator(); iterator.hasNext(); ) {
|
||||
ChainConveyorPackage box = iterator.next();
|
||||
if (box.justFlipped)
|
||||
continue;
|
||||
|
@ -195,8 +195,9 @@ public class ChainConveyorBlockEntity extends KineticBlockEntity implements Tran
|
|||
if (stats == null)
|
||||
continue;
|
||||
|
||||
Travelling: for (Iterator<ChainConveyorPackage> iterator = entry.getValue()
|
||||
.iterator(); iterator.hasNext();) {
|
||||
Travelling:
|
||||
for (Iterator<ChainConveyorPackage> iterator = entry.getValue()
|
||||
.iterator(); iterator.hasNext(); ) {
|
||||
ChainConveyorPackage box = iterator.next();
|
||||
box.justFlipped = false;
|
||||
|
||||
|
@ -251,7 +252,8 @@ public class ChainConveyorBlockEntity extends KineticBlockEntity implements Tran
|
|||
}
|
||||
}
|
||||
|
||||
Looping: for (Iterator<ChainConveyorPackage> iterator = loopingPackages.iterator(); iterator.hasNext();) {
|
||||
Looping:
|
||||
for (Iterator<ChainConveyorPackage> iterator = loopingPackages.iterator(); iterator.hasNext(); ) {
|
||||
ChainConveyorPackage box = iterator.next();
|
||||
box.justFlipped = false;
|
||||
|
||||
|
@ -313,7 +315,7 @@ public class ChainConveyorBlockEntity extends KineticBlockEntity implements Tran
|
|||
|
||||
public void removeInvalidConnections() {
|
||||
boolean changed = false;
|
||||
for (Iterator<BlockPos> iterator = connections.iterator(); iterator.hasNext();) {
|
||||
for (Iterator<BlockPos> iterator = connections.iterator(); iterator.hasNext(); ) {
|
||||
BlockPos next = iterator.next();
|
||||
BlockPos target = worldPosition.offset(next);
|
||||
if (!level.isLoaded(target))
|
||||
|
@ -774,7 +776,7 @@ public class ChainConveyorBlockEntity extends KineticBlockEntity implements Tran
|
|||
|
||||
@Override
|
||||
public ItemRequirement getRequiredItems(BlockState state) {
|
||||
// Uncomment when Schematicannon is able to print these with chains
|
||||
// TODO: Uncomment when Schematicannon is able to print these with chains
|
||||
// int totalCost = 0;
|
||||
// for (BlockPos pos : connections)
|
||||
// totalCost += getChainCost(pos);
|
||||
|
|
|
@ -16,6 +16,7 @@ import net.minecraft.world.level.block.entity.BlockEntityType;
|
|||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
|
||||
import net.minecraftforge.event.entity.living.LivingDropsEvent;
|
||||
import net.minecraftforge.event.entity.living.LootingLevelEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
|
@ -57,12 +58,14 @@ public class CrushingWheelBlockEntity extends KineticBlockEntity {
|
|||
fixControllers();
|
||||
}
|
||||
|
||||
// This increases the drops when dropCustomDeathLoot is called, and LootingEnchantFunctionMixin increases the drops
|
||||
// defined in the entity loot table
|
||||
@SubscribeEvent
|
||||
public static void crushingIsFortunate(LootingLevelEvent event) {
|
||||
DamageSource damageSource = event.getDamageSource();
|
||||
if (damageSource == null || !damageSource.is(AllDamageTypes.CRUSH))
|
||||
return;
|
||||
event.setLootingLevel(2); //This does not currently increase mob drops. It seems like this only works for damage done by an entity.
|
||||
event.setLootingLevel(2);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
|
|
|
@ -280,7 +280,6 @@ public class AllAdvancements implements DataProvider {
|
|||
.after(CARDBOARD_ARMOR)
|
||||
.special(SECRET)),
|
||||
|
||||
// TODO: award using AllAdvancements.CARDBOARD_ARMOR_TRIM.awardTo() on server
|
||||
CARDBOARD_ARMOR_TRIM = create("cardboard_armor_trim",
|
||||
b -> b.icon(createArmorTrimmedCardboardChestplate())
|
||||
.title("Arts and Crafts")
|
||||
|
@ -715,6 +714,7 @@ public class AllAdvancements implements DataProvider {
|
|||
advancement.provideLang(consumer);
|
||||
}
|
||||
|
||||
public static void register() {}
|
||||
public static void register() {
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
package com.simibubi.create.foundation.mixin;
|
||||
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
|
||||
import com.simibubi.create.AllDamageTypes;
|
||||
|
||||
import net.minecraft.world.damagesource.DamageSource;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import net.minecraft.world.level.storage.loot.functions.LootingEnchantFunction;
|
||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
|
||||
import net.minecraft.world.level.storage.loot.providers.number.NumberProvider;
|
||||
|
||||
@Mixin(LootingEnchantFunction.class)
|
||||
public abstract class LootingEnchantFunctionMixin {
|
||||
@Shadow
|
||||
@Final
|
||||
NumberProvider value;
|
||||
|
||||
@Shadow
|
||||
@Final
|
||||
int limit;
|
||||
|
||||
@Shadow
|
||||
abstract boolean hasLimit();
|
||||
|
||||
@Inject(method = "run", at = @At("TAIL"))
|
||||
private void create$crushingWheelsHaveLooting(ItemStack stack, LootContext context, CallbackInfoReturnable<ItemStack> cir) {
|
||||
DamageSource damageSource = context.getParamOrNull(LootContextParams.DAMAGE_SOURCE);
|
||||
if (damageSource != null && damageSource.is(AllDamageTypes.CRUSH)) {
|
||||
int lootingLevel = 2;
|
||||
|
||||
float f = (float) lootingLevel * this.value.getFloat(context);
|
||||
stack.grow(Math.round(f));
|
||||
if (this.hasLimit() && stack.getCount() > this.limit)
|
||||
stack.setCount(this.limit);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -13,6 +13,7 @@
|
|||
"CustomItemUseEffectsMixin",
|
||||
"EntityMixin",
|
||||
"LavaSwimmingMixin",
|
||||
"LootingEnchantFunctionMixin",
|
||||
"MapItemSavedDataMixin",
|
||||
"ProjectileUtilMixin",
|
||||
"ShulkerBoxBlockMixin",
|
||||
|
|
Loading…
Add table
Reference in a new issue