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 Jul 22, 2024
1 parent 27fff45 commit 8fd3019
Show file tree
Hide file tree
Showing 19 changed files with 896 additions and 65 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
// 1.21 2024-07-21T05:39:39.9208483 MITEequilibrium/Language (zh_cn)
582122e265b4c630127b356fab100a52fa8e8686 assets\miteequilibrium\lang\zh_cn.json
40 changes: 0 additions & 40 deletions src/main/generated/.cache/8ce55c2d46c78681d7eebf7cad72e9c2de67a045

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
package com.equilibrium;

import com.equilibrium.gen.ModLanguageTranslatorZhCn;
import com.equilibrium.gen.ModModelProvider;
import com.equilibrium.gen.ModRecipeGenerator;
import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint;
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider;
import net.minecraft.data.DataGenerator;

public class MITEequilibriumDataGenerator implements DataGeneratorEntrypoint {
@Override
public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator){
FabricDataGenerator.Pack pack=fabricDataGenerator.createPack();
// pack.addProvider(ModRecipeGenerator::new);
pack.addProvider(ModModelProvider::new);

// pack.addProvider(ModModelProvider::new);
pack.addProvider(ModLanguageTranslatorZhCn::new);
}
}
22 changes: 22 additions & 0 deletions src/main/java/com/equilibrium/constant/ConstantString.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.equilibrium.constant;


import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;
import com.equilibrium.MITEequilibrium;
import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroupEntries;
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents;
import net.fabricmc.fabric.api.registry.FuelRegistry;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroups;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;

public class ConstantString {
public static String TRANSPORT_TARGET1="You will transport to overworld";
public static String TRANSPORT_TARGET2="You will transport to underworld";
public static String TRANSPORT_TARGET3="You will transport to nether";

}
35 changes: 35 additions & 0 deletions src/main/java/com/equilibrium/gen/ModLanguageTranslatorZhCn.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.equilibrium.gen;

import com.equilibrium.block.ModBlocks;
import com.equilibrium.constant.ConstantString;
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricLanguageProvider;
import net.minecraft.registry.RegistryWrapper;

import java.util.concurrent.CompletableFuture;

public class ModLanguageTranslatorZhCn extends FabricLanguageProvider {


public ModLanguageTranslatorZhCn(FabricDataOutput dataOutput, CompletableFuture<RegistryWrapper.WrapperLookup> registryLookup) {
super(dataOutput,"zh_cn", registryLookup);
}

/**
* Implement this method to register languages.
*
* <p>Call {@link TranslationBuilder#add(String, String)} to add a translation.
*
* @param registryLookup
* @param translationBuilder
*/
@Override
public void generateTranslations(RegistryWrapper.WrapperLookup registryLookup, TranslationBuilder translationBuilder) {
translationBuilder.add(ConstantString.TRANSPORT_TARGET1,"该传送门会将你传送至主世界");
translationBuilder.add(ConstantString.TRANSPORT_TARGET2,"该传送门会将你传送至地下世界");
translationBuilder.add(ConstantString.TRANSPORT_TARGET3,"该传送门会将你传送至下界");



}
}
108 changes: 102 additions & 6 deletions src/main/java/com/equilibrium/mixin/NetherPortalBlockMixin.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,29 @@
package com.equilibrium.mixin;

import com.equilibrium.constant.ConstantString;
import com.equilibrium.util.ShouldSentText;
import com.mojang.brigadier.Message;
import net.fabricmc.fabric.api.client.message.v1.ClientSendMessageEvents;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricLanguageProvider;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.NetherPortalBlock;
import net.minecraft.block.Portal;
import net.minecraft.block.entity.VaultBlockEntity;
import net.minecraft.command.TranslatableBuiltInExceptions;
import net.minecraft.enchantment.effect.AllOfEnchantmentEffects;
import net.minecraft.entity.Entity;
import net.minecraft.entity.effect.StatusEffect;
import net.minecraft.entity.effect.StatusEffectInstance;
import net.minecraft.entity.effect.StatusEffectUtil;
import net.minecraft.entity.effect.StatusEffects;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.network.message.SentMessage;
import net.minecraft.network.message.SignedMessage;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
Expand All @@ -26,12 +38,15 @@
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.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

import java.util.Set;



@Mixin(NetherPortalBlock.class)
public abstract class NetherPortalBlockMixin extends Block implements Portal {
public abstract class NetherPortalBlockMixin extends Block implements Portal{


@Shadow @Nullable protected abstract TeleportTarget getOrCreateExitPortalTarget(ServerWorld world, Entity entity, BlockPos pos, BlockPos scaledPos, boolean inNether, WorldBorder worldBorder);
Expand All @@ -42,12 +57,84 @@ public NetherPortalBlockMixin(Settings settings) {
super(settings);
}





private static String getTeleportWorld(World world, Entity entity) {

//获取目前的世界类型(访问注册方法)
RegistryKey<World> registryKey = world.getRegistryKey();
//传送后的世界类型
RegistryKey<World> teleport;
//避免空指针错误

if (registryKey == null) {
return "Not an illegal transportation";
} else {
boolean atBottom = Math.abs(entity.getY()-world.getBottomY())<5;
if(world.getRegistryKey()==overworld && atBottom){
teleport=underworld;
} else if (world.getRegistryKey()==overworld && !atBottom) {
teleport=overworld;
} else if (world.getRegistryKey()==underworld && !atBottom) {
teleport=overworld;
} else if (world.getRegistryKey()==underworld && atBottom) {
teleport=nether;
} else if(world.getRegistryKey()==nether){
teleport=underworld;
}
else {
teleport=world.getRegistryKey();
}
String worldType;
if(teleport==underworld){
worldType=ConstantString.TRANSPORT_TARGET2;
} else if (teleport==overworld) {
worldType= ConstantString.TRANSPORT_TARGET1;
} else if (teleport==nether) {
worldType=ConstantString.TRANSPORT_TARGET3;
}else{
worldType="Not an illegal transportation";
}

return worldType;
}


}




@Inject(method = "onEntityCollision",at = @At(value = "HEAD"),cancellable = true)
protected void onEntityCollision(BlockState state, World world, BlockPos pos, Entity entity, CallbackInfo ci) {
ci.cancel();

if (entity.canUsePortals(false)) {
entity.tryUsePortal(this, pos);
if(ShouldSentText.count>=170) {
String teleport = getTeleportWorld(world, entity);
entity.sendMessage(Text.of(teleport));
ShouldSentText.count=0;
}

}
}




private static RegistryKey<World> overworld = World.OVERWORLD;
private static RegistryKey<World> nether = World.NETHER;
private static RegistryKey<World> underworld = RegistryKey.of(RegistryKeys.WORLD, Identifier.of("miteequilibrium", "underworld"));



@Inject(method = "createTeleportTarget",at=@At(value = "HEAD"),cancellable = true)
public void createTeleportTarget(ServerWorld world, Entity entity, BlockPos pos, CallbackInfoReturnable<TeleportTarget> cir) {
cir.cancel();
RegistryKey<World> overworld = World.OVERWORLD;
RegistryKey<World> nether = World.NETHER;
RegistryKey<World> underworld = RegistryKey.of(RegistryKeys.WORLD, Identifier.of("miteequilibrium", "underworld"));

//获取目前的世界类型(访问注册方法)
RegistryKey<World> registryKey = world.getRegistryKey();
//传送后的世界类型
Expand All @@ -65,7 +152,7 @@ public void createTeleportTarget(ServerWorld world, Entity entity, BlockPos pos,
double d = DimensionType.getCoordinateScaleFactor(world.getDimension(), world.getDimension());
BlockPos blockPos = worldBorder.clamp(entity.getX() * d, entity.getY(), entity.getZ() * d);

boolean atBottom = Math.abs(blockPos.getY()-world.getBottomY())<5;
boolean atBottom = Math.abs(entity.getY()-world.getBottomY())<5;



Expand Down Expand Up @@ -116,20 +203,29 @@ public void createTeleportTarget(ServerWorld world, Entity entity, BlockPos pos,

return;
}

else{
teleport=underworld;
}
} else if (world.getRegistryKey()==underworld && !atBottom) {
teleport=overworld;



} else if (world.getRegistryKey()==underworld && atBottom) {
teleport=nether;
} else if(world.getRegistryKey()==nether){
teleport=underworld;

}
else {
teleport=world.getRegistryKey();
}


serverWorld=world.getServer().getWorld(teleport);

//传送信息冷却
ShouldSentText.count=-100;
cir.setReturnValue(this.getOrCreateExitPortalTarget(serverWorld, entity, pos, blockPos, inNether, worldBorder));

}}
Expand Down
40 changes: 40 additions & 0 deletions src/main/java/com/equilibrium/mixin/NetherPortalMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.registry.tag.BlockTags;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.command.CommandOutput;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.*;
import net.minecraft.world.World;
Expand All @@ -20,7 +23,44 @@
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

@Mixin(NetherPortal.class)







public abstract class NetherPortalMixin {

@Shadow
private BlockPos lowerCorner;
@Shadow
private int height;
@Shadow
@Final
private int width;
@Shadow
@Final
private WorldAccess world;
@Shadow
@Final
private Direction.Axis axis;
@Shadow
@Final
private Direction negativeDir;













//
///* 测试用
// @Inject(method = "getNewPortal",at = @At("HEAD"))
Expand Down
Loading

0 comments on commit 8fd3019

Please sign in to comment.