Skip to content

Commit

Permalink
Merge branch 'feature/enchantCommandNoRestriction' into 1.15.2
Browse files Browse the repository at this point in the history
  • Loading branch information
Fallen-Breath committed Apr 21, 2021
2 parents dea2e12 + 1a40527 commit fa91db7
Show file tree
Hide file tree
Showing 6 changed files with 102 additions and 0 deletions.
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ Use with carpet mod in the same Minecraft version. Use newer carpet mod versions
- [creativeOpenShulkerBoxForcely](#creativeOpenShulkerBoxForcely)
- [dispenserNoItemCost](#dispenserNoItemCost)
- [dispensersFireDragonBreath](#dispensersFireDragonBreath)
- [enchantCommandNoRestriction](#enchantCommandNoRestriction)
- [entityMomentumLoss](#entityMomentumLoss)
- [fakePlayerNamePrefix](#fakePlayerNamePrefix)
- [fakePlayerNameSuffix](#fakePlayerNameSuffix)
Expand Down Expand Up @@ -215,6 +216,16 @@ Dispenser can fire dragon breath bottle to create a dragon breath effect cloud
- Categories: `TIS`, `FEATURE`, `DISPENSER`


## enchantCommandNoRestriction

Remove all enchantment restriction checks inside `/enchant` command

- Type: `boolean`
- Default value: `false`
- Suggested options: `false`, `true`
- Categories: `TIS`, `CREATIVE`


## entityMomentumLoss

Set it to `false` to disable entity axis momentum cancellation if it's above 10m/gt when being loaded from disk
Expand Down
11 changes: 11 additions & 0 deletions README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
- [创造玩家强制打开容器](#创造玩家强制打开容器-creativeOpenContainerForcibly)
- [发射器不消耗物品](#发射器不消耗物品-dispenserNoItemCost)
- [发射器发射龙息](#发射器发射龙息-dispensersFireDragonBreath)
- [enchant指令约束移除](#enchant指令约束移除-enchantCommandNoRestriction)
- [实体速度丢失](#实体速度丢失-entityMomentumLoss)
- [假人名称前缀](#假人名称前缀-fakePlayerNamePrefix)
- [假人名称后缀](#假人名称后缀-fakePlayerNameSuffix)
Expand Down Expand Up @@ -215,6 +216,16 @@
- 分类: `TIS`, `FEATURE`, `DISPENSER`


## enchant指令约束移除 (enchantCommandNoRestriction)

移除 `/enchant` 指令中所有对目标附魔的约束

- 类型: `boolean`
- 默认值: `false`
- 参考选项: `false`, `true`
- 分类: `TIS`, `CREATIVE`


## 实体速度丢失 (entityMomentumLoss)

将其设为 `false` 以关闭从磁盘载入时实体超过10m/gt部分的沿轴速度的丢失
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,12 @@ public class CarpetTISAdditionSettings
)
public static boolean dispensersFireDragonBreath = false;

@Rule(
desc = "Remove all enchantment restriction checks inside /enchant command",
category = {TIS, CREATIVE}
)
public static boolean enchantCommandNoRestriction = false;

@Rule(
desc = "Set it to false to disable entity axis momentum cancellation if it's above 10m/gt when being loaded from disk",
category = {TIS, EXPERIMENTAL}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package carpettisaddition.mixins.rule.enchantCommandNoRestriction;

import carpettisaddition.CarpetTISAdditionSettings;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.item.ItemStack;
import net.minecraft.server.command.EnchantCommand;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyArg;
import org.spongepowered.asm.mixin.injection.Redirect;

import java.util.Collection;
import java.util.Collections;

@Mixin(EnchantCommand.class)
public abstract class EnchantCommandMixin
{
@Redirect(
method = "execute",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/enchantment/Enchantment;getMaximumLevel()I"
),
require = 0 // for potential mod compatibility
)
private static int removeLevelRestriction(Enchantment enchantment)
{
if (CarpetTISAdditionSettings.enchantCommandNoRestriction)
{
return Integer.MAX_VALUE;
}
// vanilla copy
return enchantment.getMaximumLevel();
}

@Redirect(
method = "execute",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/enchantment/Enchantment;isAcceptableItem(Lnet/minecraft/item/ItemStack;)Z"
),
require = 0 // for potential mod compatibility
)
private static boolean removeAcceptableCheck(Enchantment enchantment, ItemStack stack)
{
if (CarpetTISAdditionSettings.enchantCommandNoRestriction)
{
return true;
}
// vanilla copy
return enchantment.isAcceptableItem(stack);
}

@ModifyArg(
method = "execute",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/enchantment/EnchantmentHelper;contains(Ljava/util/Collection;Lnet/minecraft/enchantment/Enchantment;)Z"
),
index = 0
)
private static Collection<Enchantment> removeExistingCheck(Collection<Enchantment> enchantments)
{
if (CarpetTISAdditionSettings.enchantCommandNoRestriction)
{
return Collections.emptySet();
}
return enchantments;
}
}
3 changes: 3 additions & 0 deletions src/main/resources/assets/carpettisaddition/lang/zh_cn.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@
"rule.dispensersFireDragonBreath.name": "发射器发射龙息",
"rule.dispensersFireDragonBreath.desc": "发射器可使用龙息瓶创造出龙息效果云",

"rule.enchantCommandNoRestriction.name": "enchant指令约束移除",
"rule.enchantCommandNoRestriction.desc": "移除/enchant指令中所有对目标附魔的约束",

"rule.entityMomentumLoss.name": "实体速度丢失",
"rule.entityMomentumLoss.desc": "将其设为 false 以关闭从磁盘载入时实体超过10m/gt部分的沿轴速度的丢失",

Expand Down
1 change: 1 addition & 0 deletions src/main/resources/carpet-tis-addition.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@
"rule.creativeOpenContainerForcibly.ShulkerBoxBlockMixin",
"rule.dispenserNoItemCost.ItemDispenserBehaviorMixin",
"rule.dispensersFireDragonBreath.DispenserBlockMixin",
"rule.enchantCommandNoRestriction.EnchantCommandMixin",
"rule.entityMomentumLoss.EntityMixin",
"rule.fakePlayerName.PlayerCommandMixin",
"rule.fluidDestructionDisabled.BaseFluidMixin",
Expand Down

0 comments on commit fa91db7

Please sign in to comment.