Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master—' into master—
Browse files Browse the repository at this point in the history
  • Loading branch information
Lithewings committed Aug 5, 2024
1 parent f2544a3 commit 2f51ce0
Show file tree
Hide file tree
Showing 16 changed files with 205 additions and 71 deletions.
6 changes: 4 additions & 2 deletions src/main/java/com/equilibrium/MITEequilibrium.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@
import static com.equilibrium.entity.ModEntities.registerModEntities;



import static com.equilibrium.status.registerStatusEffect.registerStatusEffects;
import static com.equilibrium.tags.ModBlockTags.registerModBlockTags;
import static com.equilibrium.tags.ModItemTags.registerModItemTags;
import static com.equilibrium.util.LootTableModifier.modifierLootTables;
Expand Down Expand Up @@ -89,8 +91,8 @@ public void onInitialize() {
registerModBlockTags();
registerModItemTags();



//注册(药水)效果
registerStatusEffects();



Expand Down
18 changes: 9 additions & 9 deletions src/main/java/com/equilibrium/event/BreakBlockEvent.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,49 +47,49 @@ public void afterBlockBreak(World world, PlayerEntity player, BlockPos pos, Bloc


if(state.isIn(ModBlockTags.LOG_120)){
itemStack.damage(120-1,player, EquipmentSlot.MAINHAND);
itemStack.damage(120,player, EquipmentSlot.MAINHAND);
player.sendMessage(Text.of("-120"));
}else

if(state.isIn(ModBlockTags.STONE_LIKE_240)){
itemStack.damage(240-1,player, EquipmentSlot.MAINHAND);
itemStack.damage(240,player, EquipmentSlot.MAINHAND);
player.sendMessage(Text.of("-240"));
}
else
if(state.isIn(ModBlockTags.STONE_LIKE_360)){
itemStack.damage(360-1,player, EquipmentSlot.MAINHAND);
itemStack.damage(360,player, EquipmentSlot.MAINHAND);
player.sendMessage(Text.of("-360"));
}
else
if(state.isIn(ModBlockTags.STONE_LIKE_480)){
itemStack.damage(480-1,player, EquipmentSlot.MAINHAND);
itemStack.damage(480,player, EquipmentSlot.MAINHAND);
player.sendMessage(Text.of("-480"));
}

//240 360 480其余没有列出的,但是确实比较硬的物品,而且在三者子集里容易冲突
else
if(state.isIn(BlockTags.NEEDS_STONE_TOOL)){
itemStack.damage(240-1,player, EquipmentSlot.MAINHAND);
itemStack.damage(240,player, EquipmentSlot.MAINHAND);
player.sendMessage(Text.of("-240"));}
else
if(state.isIn(BlockTags.NEEDS_IRON_TOOL)) {
itemStack.damage(360 - 1, player, EquipmentSlot.MAINHAND);
itemStack.damage(360, player, EquipmentSlot.MAINHAND);
player.sendMessage(Text.of("-360"));
}
else
if(state.isIn(BlockTags.NEEDS_DIAMOND_TOOL)) {
itemStack.damage(480 - 1, player, EquipmentSlot.MAINHAND);
itemStack.damage(480, player, EquipmentSlot.MAINHAND);
player.sendMessage(Text.of("-480"));
}

else
if(state.isIn(ModBlockTags.NORMAL_30)){
itemStack.damage(30-1,player, EquipmentSlot.MAINHAND);
itemStack.damage(30,player, EquipmentSlot.MAINHAND);
player.sendMessage(Text.of("-30"));
}
else
if(state.isIn(ModBlockTags.NORMAL_60)){
itemStack.damage(60-1,player, EquipmentSlot.MAINHAND);
itemStack.damage(60,player, EquipmentSlot.MAINHAND);
player.sendMessage(Text.of("-60"));
}

Expand Down
19 changes: 12 additions & 7 deletions src/main/java/com/equilibrium/item/Tools.java
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,12 @@ public class Tools {
public static final Item MITHRIL_SWORD = createMetalSwordItem(ModToolMaterials.MITHRIL_SWORD,9,3f);
public static final Item ADMANTIUM_SWORD =createMetalSwordItem(ModToolMaterials.ADAMANTIUM_SHOVEL,10,3f);

public static final Item COPPER_DAGGER = createMetalSwordItem(ModToolMaterials.COOPER_DAGGER,6,4f);
public static final Item GOLD_DAGGER = createMetalSwordItem(ModToolMaterials.GOLD_DAGGER,6,4f);
public static final Item SILVER_DAGGER = createMetalSwordItem(ModToolMaterials.SILVER_DAGGER,6,4f);
public static final Item IRON_DAGGER = createMetalSwordItem(ModToolMaterials.IRON_DAGGER,7,4f);
public static final Item MITHRIL_DAGGER = createMetalSwordItem(ModToolMaterials.MITHRIL_DAGGER,8,4f);
public static final Item ADMANTIUM_DAGGER =createMetalSwordItem(ModToolMaterials.ADAMANTIUM_DAGGER,9,4f);
public static final Item COPPER_DAGGER = createMetalDaggerItem(ModToolMaterials.COOPER_DAGGER,6,4f);
public static final Item GOLD_DAGGER = createMetalDaggerItem(ModToolMaterials.GOLD_DAGGER,6,4f);
public static final Item SILVER_DAGGER = createMetalDaggerItem(ModToolMaterials.SILVER_DAGGER,6,4f);
public static final Item IRON_DAGGER = createMetalDaggerItem(ModToolMaterials.IRON_DAGGER,7,4f);
public static final Item MITHRIL_DAGGER = createMetalDaggerItem(ModToolMaterials.MITHRIL_DAGGER,8,4f);
public static final Item ADMANTIUM_DAGGER =createMetalDaggerItem(ModToolMaterials.ADAMANTIUM_DAGGER,9,4f);



Expand Down Expand Up @@ -125,7 +125,7 @@ public static Item createMetalShovelItem(ToolMaterial material, int finalDamage,


public static Item createMetalPickAxeItem(ToolMaterial material, int finalDamage,float finalDamageSpeed){
return new MetalPickAxe(material,BlockTags.PICKAXE_MINEABLE,new Item.Settings().
return new MetalPickAxe(material,new Item.Settings().
attributeModifiers(MiningToolItem.createAttributeModifiers(material,-1+finalDamage,-4+finalDamageSpeed))
);
}
Expand All @@ -135,7 +135,12 @@ public static Item createMetalSwordItem(ToolMaterial material, int finalDamage,f
attributeModifiers(MiningToolItem.createAttributeModifiers(material,-1+finalDamage,-4+finalDamageSpeed))
);
}
public static Item createMetalDaggerItem(ToolMaterial material, int finalDamage,float finalDamageSpeed){

return new MetalDagger(material,new Item.Settings().
attributeModifiers(MiningToolItem.createAttributeModifiers(material,-1+finalDamage,-4+finalDamageSpeed))
);
}



Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import com.google.common.collect.ImmutableMap;
import net.minecraft.advancement.criterion.Criteria;
import net.minecraft.block.*;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.component.type.ToolComponent;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
Expand All @@ -21,10 +23,11 @@
import net.minecraft.world.event.GameEvent;
import org.jetbrains.annotations.Nullable;

import java.util.List;
import java.util.Map;
import java.util.Optional;

public class MetalAxe extends MiningToolItem {
public class MetalAxe extends ToolItem {
protected static final Map<Block, Block> STRIPPED_BLOCKS = new ImmutableMap.Builder<Block, Block>()
.put(Blocks.OAK_WOOD, Blocks.STRIPPED_OAK_WOOD)
.put(Blocks.OAK_LOG, Blocks.STRIPPED_OAK_LOG)
Expand All @@ -50,7 +53,14 @@ public class MetalAxe extends MiningToolItem {
.build();

public MetalAxe(ToolMaterial material, Settings settings) {
super(material, BlockTags.AXE_MINEABLE, settings);
super(material, settings.component(DataComponentTypes.TOOL, createToolComponent()));

}
//ofAlwaysDropping 可以将为工具添加一个正确挖掘的"标签"
private static ToolComponent createToolComponent() {
return new ToolComponent(
List.of(ToolComponent.Rule.ofAlwaysDropping(BlockTags.AXE_MINEABLE, 4F)), 1.0F, 0
);
}
@Override
public ActionResult useOnBlock(ItemUsageContext context) {
Expand Down Expand Up @@ -80,6 +90,8 @@ public ActionResult useOnBlock(ItemUsageContext context) {
}
}



private static boolean shouldCancelStripAttempt(ItemUsageContext context) {
PlayerEntity playerEntity = context.getPlayer();
return context.getHand().equals(Hand.MAIN_HAND) && playerEntity.getOffHandStack().isOf(Items.SHIELD) && !playerEntity.shouldCancelInteraction();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@
import net.minecraft.entity.attribute.EntityAttributeModifier;
import net.minecraft.entity.attribute.EntityAttributes;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.*;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ToolItem;
import net.minecraft.item.ToolMaterial;
import net.minecraft.registry.tag.BlockTags;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
Expand All @@ -25,7 +28,7 @@ public MetalDagger(ToolMaterial toolMaterial, Item.Settings settings) {

private static ToolComponent createToolComponent() {
return new ToolComponent(
List.of(ToolComponent.Rule.ofAlwaysDropping(List.of(Blocks.COBWEB), 15.0F), ToolComponent.Rule.of(BlockTags.SWORD_EFFICIENT, 1.5F)), 1.0F, 2
List.of(ToolComponent.Rule.ofAlwaysDropping(List.of(Blocks.COBWEB), 15.0F), ToolComponent.Rule.of(BlockTags.SWORD_EFFICIENT, 1.5F)), 1.0F, 0
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.component.type.ToolComponent;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
Expand All @@ -19,11 +21,12 @@
import net.minecraft.world.World;
import net.minecraft.world.event.GameEvent;

import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Predicate;

public class MetalHoe extends MiningToolItem{
public class MetalHoe extends ToolItem{
/**
* A map of input blocks to predicate-consumer action pairs.
*
Expand All @@ -45,8 +48,16 @@ public class MetalHoe extends MiningToolItem{
)
);


public MetalHoe(ToolMaterial toolMaterial, Item.Settings settings) {
super(toolMaterial, BlockTags.HOE_MINEABLE, settings);
super(toolMaterial,settings.component(DataComponentTypes.TOOL, createToolComponent()));
}


private static ToolComponent createToolComponent() {
return new ToolComponent(
List.of(ToolComponent.Rule.ofAlwaysDropping(BlockTags.HOE_MINEABLE, 4F)), 1.0F, 0
);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,51 @@
package com.equilibrium.item.tools_attribute.metal;

import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.component.type.ToolComponent;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.entity.LivingEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.MiningToolItem;
import net.minecraft.item.ToolItem;
import net.minecraft.item.ToolMaterial;
import net.minecraft.registry.tag.BlockTags;
import net.minecraft.registry.tag.TagKey;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;

public class MetalPickAxe extends MiningToolItem {
import java.util.List;

public MetalPickAxe(ToolMaterial material, TagKey<Block> effectiveBlocks, Settings settings) {
super(material, effectiveBlocks, settings);


public class MetalPickAxe extends ToolItem {

public MetalPickAxe(ToolMaterial material,Settings settings) {
super(material,settings.component(DataComponentTypes.TOOL, createToolComponent()));
}

@Override
public boolean postMine(ItemStack stack, World world, BlockState state, BlockPos pos, LivingEntity miner) {
ToolComponent toolComponent = stack.get(DataComponentTypes.TOOL);
if (toolComponent == null) {
return false;
} else {
if (!world.isClient && state.getHardness(world, pos) != 0.0F) {
stack.damage(stack.isSuitableFor(state)? 0 : 480 , miner, EquipmentSlot.MAINHAND);
}

return true;
}
}
private static ToolComponent createToolComponent() {
return new ToolComponent(
List.of(ToolComponent.Rule.ofAlwaysDropping(BlockTags.PICKAXE_MINEABLE, 4F)), 1.0F, 0
);
}



@Override
public void postDamageEntity(ItemStack stack, LivingEntity target, LivingEntity attacker) {
stack.damage(150, attacker, EquipmentSlot.MAINHAND);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.CampfireBlock;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.component.type.ToolComponent;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemUsageContext;
import net.minecraft.item.MiningToolItem;
import net.minecraft.item.ToolItem;
import net.minecraft.item.ToolMaterial;
import net.minecraft.registry.tag.BlockTags;
import net.minecraft.sound.SoundCategory;
Expand All @@ -23,9 +25,10 @@
import net.minecraft.world.WorldEvents;
import net.minecraft.world.event.GameEvent;

import java.util.List;
import java.util.Map;

public class MetalShovel extends MiningToolItem {
public class MetalShovel extends ToolItem {
protected static final Map<Block, BlockState> PATH_STATES = Maps.<Block, BlockState>newHashMap(
new ImmutableMap.Builder()
.put(Blocks.GRASS_BLOCK, Blocks.DIRT_PATH.getDefaultState())
Expand All @@ -37,10 +40,24 @@ public class MetalShovel extends MiningToolItem {
.build()
);


public MetalShovel(ToolMaterial toolMaterial, Settings settings) {
super(toolMaterial, BlockTags.SHOVEL_MINEABLE, settings);
super(toolMaterial,settings.component(DataComponentTypes.TOOL, createToolComponent()));
}

private static ToolComponent createToolComponent() {
return new ToolComponent(
List.of(ToolComponent.Rule.ofAlwaysDropping(BlockTags.SHOVEL_MINEABLE,4F)), 1.0F, 0
);
}








@Override
public ActionResult useOnBlock(ItemUsageContext context) {
World world = context.getWorld();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,9 @@
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.component.type.AttributeModifierSlot;
import net.minecraft.component.type.AttributeModifiersComponent;
import net.minecraft.component.type.ToolComponent;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.attribute.EntityAttributeModifier;
import net.minecraft.entity.attribute.EntityAttributes;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ToolItem;
Expand All @@ -27,27 +23,10 @@ public MetalSword(ToolMaterial toolMaterial, Settings settings) {

private static ToolComponent createToolComponent() {
return new ToolComponent(
List.of(ToolComponent.Rule.ofAlwaysDropping(List.of(Blocks.COBWEB), 15.0F), ToolComponent.Rule.of(BlockTags.SWORD_EFFICIENT, 1.5F)), 1.0F, 2
List.of(ToolComponent.Rule.ofAlwaysDropping(List.of(Blocks.COBWEB), 15.0F), ToolComponent.Rule.of(BlockTags.SWORD_EFFICIENT, 1.5F)), 1.0F, 0
);
}

public static AttributeModifiersComponent createAttributeModifiers(ToolMaterial material, int baseAttackDamage, float attackSpeed) {
return AttributeModifiersComponent.builder()
.add(
EntityAttributes.GENERIC_ATTACK_DAMAGE,
new EntityAttributeModifier(
BASE_ATTACK_DAMAGE_MODIFIER_ID, (double)((float)baseAttackDamage + material.getAttackDamage()), EntityAttributeModifier.Operation.ADD_VALUE
),
AttributeModifierSlot.MAINHAND
)
.add(
EntityAttributes.GENERIC_ATTACK_SPEED,
new EntityAttributeModifier(BASE_ATTACK_SPEED_MODIFIER_ID, (double)attackSpeed, EntityAttributeModifier.Operation.ADD_VALUE),
AttributeModifierSlot.MAINHAND
)
.build();
}

@Override
public boolean canMine(BlockState state, World world, BlockPos pos, PlayerEntity miner) {
return !miner.isCreative();
Expand Down
13 changes: 13 additions & 0 deletions src/main/java/com/equilibrium/mixin/MiningToolItemMixin.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.equilibrium.mixin;

import net.minecraft.component.DataComponentTypes;
import net.minecraft.item.Item;
import net.minecraft.item.MiningToolItem;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyArg;

@Mixin(MiningToolItem.class)
public class MiningToolItemMixin {

}
Loading

0 comments on commit 2f51ce0

Please sign in to comment.