IDFK
This commit is contained in:
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"criteria": {
|
||||||
|
"tick": {
|
||||||
|
"trigger": "minecraft:tick"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"display": {
|
||||||
|
"announce_to_chat": false,
|
||||||
|
"background": "minecraft:textures/block/stone.png",
|
||||||
|
"description": "Advancements for Ace's BS",
|
||||||
|
"icon": {
|
||||||
|
"count": 1,
|
||||||
|
"id": "minecraft:diamond"
|
||||||
|
},
|
||||||
|
"show_toast": false,
|
||||||
|
"title": "Ace's BS"
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"tick"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"sends_telemetry_event": true
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"parent": "minecraft:acesbs/root",
|
||||||
|
"criteria": {
|
||||||
|
"iron": {
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"items": "minecraft:iron_ingot"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"trigger": "minecraft:inventory_changed"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"display": {
|
||||||
|
"description": "Test advancement",
|
||||||
|
"icon": {
|
||||||
|
"count": 1,
|
||||||
|
"id": "minecraft:iron_ingot"
|
||||||
|
},
|
||||||
|
"title": "Test"
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"iron"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"sends_telemetry_event": true
|
||||||
|
}
|
||||||
@@ -15,6 +15,7 @@ import com.acethewildfire.acesbs.recipe.ModRecipies;
|
|||||||
import com.acethewildfire.acesbs.screen.ModScreenHandlers;
|
import com.acethewildfire.acesbs.screen.ModScreenHandlers;
|
||||||
import com.acethewildfire.acesbs.sounds.ModSounds;
|
import com.acethewildfire.acesbs.sounds.ModSounds;
|
||||||
import com.acethewildfire.acesbs.util.HammerUsageEvent;
|
import com.acethewildfire.acesbs.util.HammerUsageEvent;
|
||||||
|
import com.acethewildfire.acesbs.util.ModStats;
|
||||||
import com.acethewildfire.acesbs.util.UpdateRecipies;
|
import com.acethewildfire.acesbs.util.UpdateRecipies;
|
||||||
import com.acethewildfire.acesbs.util.YouMonsterEvent;
|
import com.acethewildfire.acesbs.util.YouMonsterEvent;
|
||||||
import com.acethewildfire.acesbs.world.gen.ModWorldGeneration;
|
import com.acethewildfire.acesbs.world.gen.ModWorldGeneration;
|
||||||
@@ -59,6 +60,7 @@ public class AcesBS implements ModInitializer {
|
|||||||
ModScreenHandlers.registerScreenHandlers();
|
ModScreenHandlers.registerScreenHandlers();
|
||||||
ModRecipies.registerRecipes();
|
ModRecipies.registerRecipes();
|
||||||
ModParticles.registerModParticles();
|
ModParticles.registerModParticles();
|
||||||
|
ModStats.registerStats();
|
||||||
|
|
||||||
ModDataComponentTypes.registerDataComponentsTypes();
|
ModDataComponentTypes.registerDataComponentsTypes();
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ public class AcesBSDataGenerator implements DataGeneratorEntrypoint {
|
|||||||
pack.addProvider(ModModelProvider::new);
|
pack.addProvider(ModModelProvider::new);
|
||||||
pack.addProvider(ModRecipeProvider::new);
|
pack.addProvider(ModRecipeProvider::new);
|
||||||
pack.addProvider(ModRegistryDataGenerator::new);
|
pack.addProvider(ModRegistryDataGenerator::new);
|
||||||
|
pack.addProvider(ModAdvancementProvider::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -24,8 +24,6 @@ X Bricked Up (Brick + End-tropy)
|
|||||||
X Stomach grumble
|
X Stomach grumble
|
||||||
X Fart reverb and shoot into sky
|
X Fart reverb and shoot into sky
|
||||||
X Infernal Beef (Mob/Ashes + Cooked Beef)
|
X Infernal Beef (Mob/Ashes + Cooked Beef)
|
||||||
- Hyper Stimulants (Hyper Sugar)
|
|
||||||
- Narcan (Stimulants + Entropic Eviscerator)
|
|
||||||
O Tobacco (Makes you sick)
|
O Tobacco (Makes you sick)
|
||||||
- Cigarette (Speed for 5, slow for 5, 30 of jittery) (Acheivements) (Stats)
|
- Cigarette (Speed for 5, slow for 5, 30 of jittery) (Acheivements) (Stats)
|
||||||
- Cigarette (Funny) (Blows inordinate amounts of smoke)
|
- Cigarette (Funny) (Blows inordinate amounts of smoke)
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
package com.acethewildfire.acesbs.datagen;
|
||||||
|
|
||||||
|
import com.acethewildfire.acesbs.item.ModItems;
|
||||||
|
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
|
||||||
|
import net.fabricmc.fabric.api.datagen.v1.provider.FabricAdvancementProvider;
|
||||||
|
import net.minecraft.advancement.Advancement;
|
||||||
|
import net.minecraft.advancement.AdvancementEntry;
|
||||||
|
import net.minecraft.advancement.AdvancementFrame;
|
||||||
|
import net.minecraft.advancement.criterion.ImpossibleCriterion;
|
||||||
|
import net.minecraft.advancement.criterion.InventoryChangedCriterion;
|
||||||
|
import net.minecraft.advancement.criterion.TickCriterion;
|
||||||
|
import net.minecraft.item.Items;
|
||||||
|
import net.minecraft.registry.RegistryWrapper;
|
||||||
|
import net.minecraft.text.Text;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
public class ModAdvancementProvider extends FabricAdvancementProvider {
|
||||||
|
|
||||||
|
|
||||||
|
public ModAdvancementProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registryLookup) {
|
||||||
|
super(output, registryLookup);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void generateAdvancement(RegistryWrapper.WrapperLookup wrapperLookup, Consumer<AdvancementEntry> consumer) {
|
||||||
|
AdvancementEntry root = Advancement.Builder.create()
|
||||||
|
.display(
|
||||||
|
Items.DIAMOND,
|
||||||
|
Text.literal("Ace's BS"),
|
||||||
|
Text.literal("Advancements for Ace's BS"),
|
||||||
|
Identifier.ofVanilla("textures/block/stone.png"),
|
||||||
|
AdvancementFrame.TASK,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
.criterion("tick", TickCriterion.Conditions.createTick())
|
||||||
|
.build(consumer, "acesbs/root");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,10 +8,7 @@ import com.acethewildfire.acesbs.potion.ModPotions;
|
|||||||
import com.acethewildfire.acesbs.sounds.ModSounds;
|
import com.acethewildfire.acesbs.sounds.ModSounds;
|
||||||
import net.minecraft.client.gui.screen.Screen;
|
import net.minecraft.client.gui.screen.Screen;
|
||||||
import net.minecraft.component.DataComponentTypes;
|
import net.minecraft.component.DataComponentTypes;
|
||||||
import net.minecraft.component.type.AttributeModifierSlot;
|
import net.minecraft.component.type.*;
|
||||||
import net.minecraft.component.type.AttributeModifiersComponent;
|
|
||||||
import net.minecraft.component.type.LoreComponent;
|
|
||||||
import net.minecraft.component.type.PotionContentsComponent;
|
|
||||||
import net.minecraft.entity.attribute.EntityAttributeModifier;
|
import net.minecraft.entity.attribute.EntityAttributeModifier;
|
||||||
import net.minecraft.entity.attribute.EntityAttributes;
|
import net.minecraft.entity.attribute.EntityAttributes;
|
||||||
import net.minecraft.item.*;
|
import net.minecraft.item.*;
|
||||||
|
|||||||
@@ -2,21 +2,27 @@ package com.acethewildfire.acesbs.item.custom;
|
|||||||
|
|
||||||
import com.acethewildfire.acesbs.component.ModDataComponentTypes;
|
import com.acethewildfire.acesbs.component.ModDataComponentTypes;
|
||||||
import com.acethewildfire.acesbs.effect.ModEffects;
|
import com.acethewildfire.acesbs.effect.ModEffects;
|
||||||
|
import com.acethewildfire.acesbs.item.ModItems;
|
||||||
|
import com.acethewildfire.acesbs.util.ModStats;
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
import net.minecraft.entity.effect.StatusEffectInstance;
|
import net.minecraft.entity.effect.StatusEffectInstance;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.particle.ParticleTypes;
|
import net.minecraft.particle.ParticleTypes;
|
||||||
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
import net.minecraft.sound.SoundCategory;
|
import net.minecraft.sound.SoundCategory;
|
||||||
import net.minecraft.sound.SoundEvent;
|
import net.minecraft.sound.SoundEvent;
|
||||||
import net.minecraft.sound.SoundEvents;
|
import net.minecraft.sound.SoundEvents;
|
||||||
|
import net.minecraft.stat.Stats;
|
||||||
import net.minecraft.util.Hand;
|
import net.minecraft.util.Hand;
|
||||||
import net.minecraft.util.TypedActionResult;
|
import net.minecraft.util.TypedActionResult;
|
||||||
import net.minecraft.util.UseAction;
|
import net.minecraft.util.UseAction;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
import static com.acethewildfire.acesbs.util.ModStats.grantAdvancement;
|
||||||
|
|
||||||
public class Cigarette extends Item {
|
public class Cigarette extends Item {
|
||||||
public Cigarette(Settings settings) {
|
public Cigarette(Settings settings) {
|
||||||
super(settings);
|
super(settings);
|
||||||
@@ -50,7 +56,7 @@ public class Cigarette extends Item {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMaxUseTime(ItemStack stack, LivingEntity user) {
|
public int getMaxUseTime(ItemStack stack, LivingEntity user) {
|
||||||
return 50; // basically infinite hold
|
return 50;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -113,7 +119,22 @@ public class Cigarette extends Item {
|
|||||||
if (user instanceof PlayerEntity player) {
|
if (user instanceof PlayerEntity player) {
|
||||||
player.getItemCooldownManager().set(this, 2400);
|
player.getItemCooldownManager().set(this, 2400);
|
||||||
stack.decrement(1);
|
stack.decrement(1);
|
||||||
|
|
||||||
|
if (!world.isClient) {
|
||||||
|
player.incrementStat(ModStats.CIGARETTES_USED);
|
||||||
|
player.incrementStat(Stats.USED.getOrCreateStat(ModItems.CIGARETTE));
|
||||||
|
if (player instanceof ServerPlayerEntity s_player){
|
||||||
|
int uses = s_player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(ModStats.CIGARETTES_USED));
|
||||||
|
|
||||||
|
if (uses >= 500) {
|
||||||
|
grantAdvancement(s_player, "500_cigarettes");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return stack;
|
return stack;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
package com.acethewildfire.acesbs.item.custom;
|
package com.acethewildfire.acesbs.item.custom;
|
||||||
|
|
||||||
|
import com.acethewildfire.acesbs.AcesBS;
|
||||||
import com.acethewildfire.acesbs.component.ModDataComponentTypes;
|
import com.acethewildfire.acesbs.component.ModDataComponentTypes;
|
||||||
import com.acethewildfire.acesbs.effect.ModEffects;
|
import com.acethewildfire.acesbs.effect.ModEffects;
|
||||||
|
import com.acethewildfire.acesbs.item.ModItems;
|
||||||
import com.acethewildfire.acesbs.sounds.ModSounds;
|
import com.acethewildfire.acesbs.sounds.ModSounds;
|
||||||
import com.acethewildfire.acesbs.sounds.PlayerAttachedSound;
|
import com.acethewildfire.acesbs.sounds.PlayerAttachedSound;
|
||||||
|
import com.acethewildfire.acesbs.util.ModStats;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
import net.minecraft.entity.effect.StatusEffectInstance;
|
import net.minecraft.entity.effect.StatusEffectInstance;
|
||||||
@@ -11,14 +14,18 @@ import net.minecraft.entity.player.PlayerEntity;
|
|||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.particle.ParticleTypes;
|
import net.minecraft.particle.ParticleTypes;
|
||||||
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
import net.minecraft.sound.SoundEvent;
|
import net.minecraft.sound.SoundEvent;
|
||||||
import net.minecraft.sound.SoundEvents;
|
import net.minecraft.sound.SoundEvents;
|
||||||
|
import net.minecraft.stat.Stats;
|
||||||
import net.minecraft.util.Hand;
|
import net.minecraft.util.Hand;
|
||||||
import net.minecraft.util.TypedActionResult;
|
import net.minecraft.util.TypedActionResult;
|
||||||
import net.minecraft.util.UseAction;
|
import net.minecraft.util.UseAction;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
import static com.acethewildfire.acesbs.util.ModStats.grantAdvancement;
|
||||||
|
|
||||||
public class CigaretteFunny extends Item {
|
public class CigaretteFunny extends Item {
|
||||||
public CigaretteFunny(Settings settings) {
|
public CigaretteFunny(Settings settings) {
|
||||||
super(settings);
|
super(settings);
|
||||||
@@ -46,6 +53,20 @@ public class CigaretteFunny extends Item {
|
|||||||
activeSound = null;
|
activeSound = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (user instanceof PlayerEntity player) {
|
||||||
|
if (!world.isClient) {
|
||||||
|
player.incrementStat(ModStats.CIGARETTES_USED);
|
||||||
|
player.incrementStat(Stats.USED.getOrCreateStat(ModItems.CIGARETTE_FUNNY));
|
||||||
|
if (player instanceof ServerPlayerEntity s_player){
|
||||||
|
int uses = s_player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(ModStats.CIGARETTES_USED));
|
||||||
|
|
||||||
|
if (uses >= 500) {
|
||||||
|
grantAdvancement(s_player, AcesBS.MOD_ID + "/memes/500_cigarettes");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
stack.set(ModDataComponentTypes.SMOKING, false);
|
stack.set(ModDataComponentTypes.SMOKING, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,6 +151,10 @@ public class CigaretteFunny extends Item {
|
|||||||
if (user instanceof PlayerEntity player) {
|
if (user instanceof PlayerEntity player) {
|
||||||
player.getItemCooldownManager().set(this, 2400);
|
player.getItemCooldownManager().set(this, 2400);
|
||||||
stack.decrement(1);
|
stack.decrement(1);
|
||||||
|
|
||||||
|
if (!world.isClient) {
|
||||||
|
player.incrementStat(ModStats.CIGARETTES_USED);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return stack;
|
return stack;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,18 @@
|
|||||||
package com.acethewildfire.acesbs.item.custom;
|
package com.acethewildfire.acesbs.item.custom;
|
||||||
|
|
||||||
import com.acethewildfire.acesbs.component.ModDataComponentTypes;
|
import com.acethewildfire.acesbs.component.ModDataComponentTypes;
|
||||||
|
import com.acethewildfire.acesbs.item.ModItems;
|
||||||
|
import com.acethewildfire.acesbs.util.ModStats;
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.particle.ParticleTypes;
|
import net.minecraft.particle.ParticleTypes;
|
||||||
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
import net.minecraft.sound.SoundCategory;
|
import net.minecraft.sound.SoundCategory;
|
||||||
import net.minecraft.sound.SoundEvent;
|
import net.minecraft.sound.SoundEvent;
|
||||||
import net.minecraft.sound.SoundEvents;
|
import net.minecraft.sound.SoundEvents;
|
||||||
|
import net.minecraft.stat.Stats;
|
||||||
import net.minecraft.util.Hand;
|
import net.minecraft.util.Hand;
|
||||||
import net.minecraft.util.TypedActionResult;
|
import net.minecraft.util.TypedActionResult;
|
||||||
import net.minecraft.util.UseAction;
|
import net.minecraft.util.UseAction;
|
||||||
@@ -16,6 +20,8 @@ import net.minecraft.util.math.Vec3d;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.explosion.Explosion;
|
import net.minecraft.world.explosion.Explosion;
|
||||||
|
|
||||||
|
import static com.acethewildfire.acesbs.util.ModStats.grantAdvancement;
|
||||||
|
|
||||||
public class CigaretteLemon extends Item {
|
public class CigaretteLemon extends Item {
|
||||||
public CigaretteLemon(Settings settings) {
|
public CigaretteLemon(Settings settings) {
|
||||||
super(settings);
|
super(settings);
|
||||||
@@ -139,6 +145,19 @@ public class CigaretteLemon extends Item {
|
|||||||
if (user instanceof PlayerEntity player) {
|
if (user instanceof PlayerEntity player) {
|
||||||
player.getItemCooldownManager().set(this, 2400);
|
player.getItemCooldownManager().set(this, 2400);
|
||||||
stack.decrement(1);
|
stack.decrement(1);
|
||||||
|
|
||||||
|
if (!world.isClient) {
|
||||||
|
player.incrementStat(ModStats.CIGARETTES_USED);
|
||||||
|
player.incrementStat(Stats.USED.getOrCreateStat(ModItems.CIGARETTE_LEMON));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (player instanceof ServerPlayerEntity s_player){
|
||||||
|
int uses = s_player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(ModStats.CIGARETTES_USED));
|
||||||
|
|
||||||
|
if (uses >= 500) {
|
||||||
|
grantAdvancement(s_player, "500_cigarettes");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return stack;
|
return stack;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package com.acethewildfire.acesbs.item.custom;
|
package com.acethewildfire.acesbs.item.custom;
|
||||||
|
|
||||||
|
import com.acethewildfire.acesbs.item.ModItems;
|
||||||
|
import com.acethewildfire.acesbs.item.PrismaSteelItems;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EquipmentSlot;
|
import net.minecraft.entity.EquipmentSlot;
|
||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
@@ -7,6 +9,7 @@ import net.minecraft.item.ArmorItem;
|
|||||||
import net.minecraft.item.ArmorMaterial;
|
import net.minecraft.item.ArmorMaterial;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.registry.entry.RegistryEntry;
|
import net.minecraft.registry.entry.RegistryEntry;
|
||||||
|
import net.minecraft.util.math.MathHelper;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
public class SovsPlateCarrierArmorItem extends ArmorItem {
|
public class SovsPlateCarrierArmorItem extends ArmorItem {
|
||||||
@@ -14,7 +17,21 @@ public class SovsPlateCarrierArmorItem extends ArmorItem {
|
|||||||
super(material, type, settings);
|
super(material, type, settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isItemBarVisible(ItemStack stack) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemBarStep(ItemStack stack) {
|
||||||
|
return Math.round(13.0F * (1.0F - (float) stack.getDamage() / stack.getMaxDamage()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemBarColor(ItemStack stack) {
|
||||||
|
float f = Math.max(0.0F, ((float) stack.getMaxDamage() - stack.getDamage()) / stack.getMaxDamage());
|
||||||
|
return MathHelper.hsvToRgb(f / 3.0F, 1.0F, 1.0F);
|
||||||
|
}
|
||||||
|
|
||||||
public static float getDamageMultiplier(ItemStack stack) {
|
public static float getDamageMultiplier(ItemStack stack) {
|
||||||
float durabilityRatio =
|
float durabilityRatio =
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|||||||
@Mixin(ItemStack.class)
|
@Mixin(ItemStack.class)
|
||||||
public abstract class ItemStackMixin {
|
public abstract class ItemStackMixin {
|
||||||
|
|
||||||
@Inject(method = "damage*", at = @At("HEAD"), cancellable = true)
|
@Inject(method = "damage", at = @At("HEAD"), cancellable = true)
|
||||||
private void preventChestplateBreak(
|
private void preventChestplateBreak(
|
||||||
int amount,
|
int amount,
|
||||||
LivingEntity entity,
|
LivingEntity entity,
|
||||||
|
|||||||
@@ -1,10 +1,13 @@
|
|||||||
package com.acethewildfire.acesbs.mixin;
|
package com.acethewildfire.acesbs.mixin;
|
||||||
|
|
||||||
import com.acethewildfire.acesbs.item.ModItems;
|
import com.acethewildfire.acesbs.item.ModItems;
|
||||||
|
import com.acethewildfire.acesbs.item.custom.SovsPlateCarrierArmorItem;
|
||||||
|
import net.minecraft.entity.EquipmentSlot;
|
||||||
import net.minecraft.entity.damage.DamageSource;
|
import net.minecraft.entity.damage.DamageSource;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.entity.player.PlayerInventory;
|
import net.minecraft.entity.player.PlayerInventory;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.sound.SoundCategory;
|
import net.minecraft.sound.SoundCategory;
|
||||||
import net.minecraft.sound.SoundEvents;
|
import net.minecraft.sound.SoundEvents;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
@@ -14,6 +17,7 @@ import org.spongepowered.asm.mixin.Mixin;
|
|||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
||||||
|
|
||||||
@@ -38,5 +42,31 @@ public abstract class PlayerEntityMixin{
|
|||||||
}
|
}
|
||||||
cir.setReturnValue(true);
|
cir.setReturnValue(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PlayerEntity player = (PlayerEntity)(Object)this;
|
||||||
|
|
||||||
|
ItemStack chest = player.getEquippedStack(EquipmentSlot.CHEST);
|
||||||
|
|
||||||
|
if (chest.getItem() instanceof SovsPlateCarrierArmorItem) {
|
||||||
|
|
||||||
|
int durabilityDamage = 1;
|
||||||
|
|
||||||
|
chest.setDamage(Math.min(
|
||||||
|
chest.getDamage() + durabilityDamage,
|
||||||
|
chest.getMaxDamage() - 1
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Inject(method = "damageArmor", at = @At("HEAD"), cancellable = true)
|
||||||
|
private void stopVanillaArmorDamage(DamageSource source, float amount, CallbackInfo ci) {
|
||||||
|
|
||||||
|
PlayerEntity player = (PlayerEntity)(Object)this;
|
||||||
|
|
||||||
|
ItemStack chest = player.getEquippedStack(EquipmentSlot.CHEST);
|
||||||
|
|
||||||
|
if (chest.getItem() instanceof SovsPlateCarrierArmorItem) {
|
||||||
|
ci.cancel(); // prevent vanilla durability loss
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
package com.acethewildfire.acesbs.util;
|
||||||
|
|
||||||
|
import com.acethewildfire.acesbs.AcesBS;
|
||||||
|
import com.acethewildfire.acesbs.item.ModItems;
|
||||||
|
import net.minecraft.advancement.Advancement;
|
||||||
|
import net.minecraft.advancement.AdvancementEntry;
|
||||||
|
import net.minecraft.advancement.AdvancementProgress;
|
||||||
|
import net.minecraft.registry.Registries;
|
||||||
|
import net.minecraft.registry.Registry;
|
||||||
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
|
import net.minecraft.stat.StatFormatter;
|
||||||
|
import net.minecraft.stat.Stats;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public class ModStats {
|
||||||
|
|
||||||
|
public static final Identifier CIGARETTES_USED = createStat(Identifier.of(AcesBS.MOD_ID, "cigarettes_used"));
|
||||||
|
|
||||||
|
public static Identifier createStat(Identifier id){
|
||||||
|
Registry.register(Registries.CUSTOM_STAT, id, id);
|
||||||
|
Stats.CUSTOM.getOrCreateStat(id, StatFormatter.DEFAULT);
|
||||||
|
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void grantAdvancement(ServerPlayerEntity player, String id) {
|
||||||
|
|
||||||
|
AdvancementEntry advancement =
|
||||||
|
Objects.requireNonNull(player.getServer()).getAdvancementLoader().get(Identifier.ofVanilla(id));
|
||||||
|
|
||||||
|
if (advancement == null) {
|
||||||
|
AcesBS.LOGGER.info("Granting null");
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
AcesBS.LOGGER.info("Granting {}", advancement.toString());
|
||||||
|
|
||||||
|
AdvancementProgress progress = player.getAdvancementTracker().getProgress(advancement);
|
||||||
|
|
||||||
|
if (!progress.isDone()) {
|
||||||
|
for (String criterion : progress.getUnobtainedCriteria()) {
|
||||||
|
player.getAdvancementTracker().grantCriterion(advancement, criterion);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void registerStats() {
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,14 +8,13 @@
|
|||||||
"CreeperTransformStateMixin",
|
"CreeperTransformStateMixin",
|
||||||
"EntityMixin",
|
"EntityMixin",
|
||||||
"LivingEntityMixin",
|
"LivingEntityMixin",
|
||||||
"ItemStackMixin",
|
"ExampleMixin",
|
||||||
"ExampleMixin"
|
"PlayerEntityMixin"
|
||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
},
|
},
|
||||||
"client": [
|
"client": [
|
||||||
"AbstractClientPlayerEntityMixin",
|
"AbstractClientPlayerEntityMixin"
|
||||||
"PlayerEntityMixin"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -201,5 +201,7 @@
|
|||||||
"effect.acesbs.bricked_up": "Bricked Up",
|
"effect.acesbs.bricked_up": "Bricked Up",
|
||||||
"effect.acesbs.cigarette": "Cigarette",
|
"effect.acesbs.cigarette": "Cigarette",
|
||||||
"effect.acesbs.withdrawal": "Withdrawal",
|
"effect.acesbs.withdrawal": "Withdrawal",
|
||||||
"effect.acesbs.jittery": "Jittery"
|
"effect.acesbs.jittery": "Jittery",
|
||||||
|
|
||||||
|
"stat.acesbs.cigarettes_used": "Times Used Cigarettes (Any)"
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"criteria": {
|
||||||
|
"500_cigarettes": {
|
||||||
|
"trigger": "minecraft:impossible"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rewards": {
|
||||||
|
"experience": 50
|
||||||
|
},
|
||||||
|
"parent": "minecraft:acesbs/root",
|
||||||
|
"display": {
|
||||||
|
"icon": {
|
||||||
|
"id": "acesbs:cigarette"
|
||||||
|
},
|
||||||
|
"title": "Five Hundred Cigarettes",
|
||||||
|
"description": "Smoke 500 Cigarettes. The sensation is... wonderful!",
|
||||||
|
"frame": "task",
|
||||||
|
"show_toast": true,
|
||||||
|
"announce_to_chat": true,
|
||||||
|
"hidden": true
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user