Zurück zu Tessera
Tessera Releases

Änderungen. Version für Version.

Neue Funktionen, technische Änderungen und Fehlerbehebungen für Tessera.

Aktuelle Version 0.0.5
Channel Beta
Veröffentlicht am 13. Juli 2026
Aktuell Beta

Tessera 0.0.5

Beta-version

Erste Test-durchläufe waren alle Erfolgreich

Minecraft 26.2
TesseraFirst beta buildPaper-upstream

Geändert

  • Paper API upstream: moved to chanel beta, tessera follows.

  • Settings geändert, für eigenes versions system.

// tessera 26.2 start - change root name
rootProject.name = "tessera"
// tessera 26.2 end - change root name

// we are using the folia-api, 
//  which is the paper api, 
//  which is the spigot api,
//  which is the bukkit api.
// tessera is a fork, of a fork(folia), of a fork(paper), of a fork(spigot) which is a fork of BUKKIT
include("folia-api")

// also include server.. otherwise you know this whole project is pretty useless
include("folia-server")

gradle.lifecycle.beforeProject {
    val mcVersion = providers.gradleProperty("mcVersion").get().trim()
    // tessera 26.2 start - change build loader
    val tesseraBuildNumber = providers.gradleProperty("tesseraBuildVersion").get()
    val tesseraVersionChannel = providers.gradleProperty("tesseraBuildChannel").get()

    version = "$mcVersion.build.$tesseraBuildNumber-$tesseraVersionChannel"
    // tessera 26.2 end - change build loader
}
Alpha

Tessera 0.0.4

Neue gamerule ALLOW_EYES_OF_ENDER_USE

Erlaubt die Benutzung von Enderaugen, sowie das aktivieren den End-portals

Minecraft 26.2
TesseraGamerules

Hinzugefügt

  • Neue gamerule allow_eyes_of_ender_use

Geändert

  • Static GameRules wurden erweitert (Es gibt insgesamt 3 Einträge für die Gamerules) Der Eintrag befindet sich im GameRules kopf unter ALLOW_ENTERING_NETHER_USING_PORTALS
public class GameRules {
    public static final GameRule<Boolean> ALLOW_ENTERING_NETHER_USING_PORTALS = registerBoolean(
            "allow_entering_nether_using_portals", GameRuleCategory.MISC, true
    );
    // tessera 26.2 start - gamerule for ender_pearl_use
    public static final GameRule<Boolean> ALLOW_EYES_OF_ENDER_USE = registerBoolean(
            "allow_eyes_of_ender_use", GameRuleCategory.MISC, true
    );
    // tessera 26.2 end - gamerule for ender_pearl_use
  • Gamerule wurde in den ‘GameRule’ Registries kopf hinzugefügt
/**
 * GameRules dictate certain behavior within Minecraft itself
 * <br>
 * For more information please visit the
 * <a href="https://minecraft.wiki/w/Commands/gamerule">Minecraft
 * Wiki</a>
 *
 * @param <T> type of rule (Boolean or Integer)
 * @see GameRules
 */
@ApiStatus.NonExtendable
public abstract class GameRule<T> implements net.kyori.adventure.translation.Translatable, FeatureDependant, Keyed {
    // tessera 26.2 start - gamerule for ender_pearl_use
    /**
     * Toggles the ender eye usage in frames and as projectile,
     *  also disables traveling to the end
     *
     * @deprecated renamed to {@link GameRules#ALLOW_EYES_OF_ENDER_USE}
     */
    public static final GameRule<Boolean> ALLOW_EYES_OF_ENDER_USE = GameRules.ALLOW_EYES_OF_ENDER_USE;
    // tessera 26.2 end - gamerule for ender_pearl_use
  • Gamerule wurde in den ‘GameRules’ Registries kopf hinzugefügt <- das sind zwei verschiedene Registries.
/**
 * All the vanilla gamerules
 */
@NullMarked
public final class GameRules {
    // tessera 26.2 start - gamerule for ender_pearl_use
    public static final GameRule<Boolean> ALLOW_EYES_OF_ENDER_USE = getRule("allow_eyes_of_ender_use");
    // tessera 26.2 end - gamerule for ender_pearl_use
  • Die Enderaugen wurden angepasst, sodass sie bei inaktiver gamerule nicht geworfen oder benutzt werden können. Dazu wurden die Methoden useOn und use geändert.
// tessera 26.2 start - gamerule for ender_pearl_use
import net.minecraft.world.level.gamerules.GameRules;
// tessera 26.2 end - gamerule for ender_pearl_use

    @Override
    public InteractionResult useOn(final UseOnContext context) {
        Level level = context.getLevel();
        BlockPos pos = context.getClickedPos();
        BlockState targetState = level.getBlockState(pos);

        // tessera 26.2 start - gamerule for ender_pearl_use
        if(level instanceof ServerLevel serverLevel && !serverLevel.getGameRules()
                .get(GameRules.ALLOW_EYES_OF_ENDER_USE)) {
            return InteractionResult.FAIL;
        }
        // tessera 26.2 end - gamerule for ender_pearl_use
  • Der Endportal block wurde angepasst, sodass es nicht möglich ist ins End zu kommen falls ein schon geöffnetes Portal in der Overworld spawned und die gamerule inaktiv ist.
// tessera 26.2 start - gamerule for ender_pearl_use
import net.minecraft.world.level.gamerules.GameRules;
import net.minecraft.world.effect.MobEffectInstance;
import org.bukkit.event.player.PlayerTeleportEvent;
import java.util.concurrent.ConcurrentHashMap;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import org.bukkit.Location;
import java.util.UUID;
// tessera 26.2 end - gamerule for ender_pearl_use

public class EndPortalBlock extends BaseEntityBlock implements Portal {
    public static final MapCodec<EndPortalBlock> CODEC = simpleCodec(EndPortalBlock::new);
    private static final VoxelShape SHAPE = Block.column(16.0, 6.0, 12.0);

    // tessera 26.2 start - gamerule for ender_pearl_use
    private static final Set<UUID> END_PORTAL_PUNISHMENT = ConcurrentHashMap.newKeySet();
    // tessera 26.2 end - gamerule for ender_pearl_use
  • Die Methode portalAsync wurde angepasst um die gamerule zu respektieren.
  // Folia start - region threading
  @Override
  public boolean portalAsync(ServerLevel sourceWorld, Entity portalTarget, BlockPos portalPos) {
        if (!ca.spottedleaf.moonrise.common.util.TickThread.isTickThreadFor(portalTarget)) {
            return false;
        }
        if (!ca.spottedleaf.moonrise.common.util.TickThread.isTickThreadFor(sourceWorld, portalPos)) {
            return false;
        }

        // tessera 26.2 start check for gamerule (are we allowed to travel using portals)
        //  this needs to be after the tick threadd for entity and sourceworld
        if(!sourceWorld.getGameRules().get(GameRules.ALLOW_EYES_OF_ENDER_USE)) {
            // if this is a player fire an effect,
            //  and ******************************* <- definetly I don't wanna spoil to much
            //  if you find a lit portal let me know :) Only one way to find out what happens :)
            if (portalTarget instanceof ServerPlayer player) {
                punish(player, sourceWorld); // implementation not included. 
            }

            return false;
        }
        // tessera 26.2 end check for gamerule (are we allowed to travel using portals)

        return portalTarget.endPortalLogicAsync(portalPos);
  }
  // Folia end - region threading
Alpha

Tessera 0.0.3

Fehler in gamerule

allow_entering_nether_using_portals funktioniert nicht

Minecraft 26.2
TesseraGamerulesfix

Geändert

  • portalAsync hat die funktionsprüfung auf die Spielregel ‘allow_entering_nether_using_portals’ bekommen.

(Wenn die gamerule auf false steht, können Nether Portale aktiviert werden, aber sie teleortieren nicht den spieler.)

    @Override
    public boolean portalAsync(ServerLevel sourceWorld, Entity portalTarget, BlockPos portalPos) {
        if (!ca.spottedleaf.moonrise.common.util.TickThread.isTickThreadFor(portalTarget)) {
            return false;
        }
        if (!ca.spottedleaf.moonrise.common.util.TickThread.isTickThreadFor(sourceWorld, portalPos)) {
            return false;
        }
        // tessera 26.2 start check for gamerule (are we allowed to travel using portals)
        //  moved after the code for checking if thats for a player
        if(!sourceWorld.getGameRules().get(GameRules.ALLOW_ENTERING_NETHER_USING_PORTALS)){
            if(portalTarget instanceof Player player) 
                punish(player, sourceWorld); // implementation not included
            return false;
        }
        // tessera 26.2 end check for gamerule (are we allowed to travel using portals)
        return portalTarget.netherPortalLogicAsync(portalPos);
    } 
Alpha

Tessera 0.0.2

Paper upstream API fix

paper upstream (paper api will be updated)

Minecraft 26.2
TesseraStabilitätPaper-upstream

Hinzugefügt

  • paper upstream methode setAllowMonsterSpawning wurde hinzugefügt
    @Override
    public void setAllowMonsterSpawning(boolean allowMonsters) {
        this.world.setSpawnSettings(allowMonsters);
    }
  • paper upstream methoden createTrimMaterial und createTrimPattern wurden hinzugefügt.
    import org.bukkit.inventory.meta.trim.TrimMaterial;
    import org.bukkit.inventory.meta.trim.TrimPattern;
    
    
    @Override
    public TrimMaterial createTrimMaterial(Consumer<RegistryBuilderFactory<TrimMaterial, 
                ? extends TrimMaterialRegistryEntry.Builder>> value) {
        return Conversions.global().createApiInstanceFromBuilder(RegistryKey.TRIM_MATERIAL, value);
    }

    @Override
    public TrimPattern createTrimPattern(Consumer<RegistryBuilderFactory<TrimPattern, 
                ? extends TrimPatternRegistryEntry.Builder>> value) {
        return Conversions.global().createApiInstanceFromBuilder(RegistryKey.TRIM_PATTERN, value);
    }
  • paper upstream methode getClientBrandName() wurde hinzugefügt.
    public @Nullable String getClientBrandName() {
        if(this.packetListener.connection instanceof PlayerCommonConnection playerCommonConnection) {
            return playerCommonConnection.getClientBrandName();
        }
        return "moddedorshit";
    }
  • paper upstream methode getClientBrandName() wurde hinzugefügt, nein das kein schreibfehler.. die gibts nun zweimal :D.
    import org.jspecify.annotations.Nullable;
    
    public @Nullable String getClientBrandName() {
        if(this.packetListener.connection instanceof PlayerCommonConnection playerCommonConnection) {
            return playerCommonConnection.getClientBrandName();
        }
        return "moddedorshit";
    }
Alpha

Tessera 0.0.1

First compile

Tessera build 001 - first compile

Minecraft 26.2
TesseraFirst alpha build

Beschreibung

  • Paper API upstream class errors in folia behoben.
  • first test compile erfolgreich.