diff --git a/minecraftcodex/database/migrations/0010_auto__add_block.py b/minecraftcodex/database/migrations/0010_auto__add_block.py new file mode 100644 index 0000000..00f23fd --- /dev/null +++ b/minecraftcodex/database/migrations/0010_auto__add_block.py @@ -0,0 +1,75 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding model 'Block' + db.create_table(u'database_block', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('internal_name', self.gf('django.db.models.fields.CharField')(max_length=128)), + ('main_texture', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['database.Texture'], null=True)), + ('data_value', self.gf('django.db.models.fields.IntegerField')()), + )) + db.send_create_signal(u'database', ['Block']) + + + def backwards(self, orm): + # Deleting model 'Block' + db.delete_table(u'database_block') + + + models = { + u'database.block': { + 'Meta': {'object_name': 'Block'}, + 'data_value': ('django.db.models.fields.IntegerField', [], {}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'internal_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'main_texture': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['database.Texture']", 'null': 'True'}) + }, + u'database.item': { + 'Meta': {'object_name': 'Item'}, + 'data_value': ('django.db.models.fields.IntegerField', [], {}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'internal_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'main_texture': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['database.Texture']", 'null': 'True'}) + }, + 'database.jarfile': { + 'Meta': {'object_name': 'JarFile'}, + 'description': ('django.db.models.fields.CharField', [], {'default': "'client'", 'max_length': '256'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'url': ('django.db.models.fields.URLField', [], {'max_length': '200'}), + 'version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['database.Version']"}) + }, + 'database.mod': { + 'Meta': {'ordering': "['name']", 'object_name': 'Mod'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}), + 'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}) + }, + u'database.texture': { + 'Meta': {'object_name': 'Texture'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'image': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '32'}), + 'type': ('django.db.models.fields.CharField', [], {'default': "'items'", 'max_length': '16'}) + }, + 'database.version': { + 'Meta': {'ordering': "['date']", 'object_name': 'Version'}, + 'changelog': ('django.db.models.fields.TextField', [], {}), + 'date': ('django.db.models.fields.DateField', [], {}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'mod': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['database.Mod']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), + 'snapshot': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "'release'", 'max_length': '10', 'blank': 'True'}), + 'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'version_number': ('django.db.models.fields.CharField', [], {'default': "'0.1.0'", 'max_length': '256'}) + } + } + + complete_apps = ['database'] \ No newline at end of file diff --git a/minecraftcodex/database/models.py b/minecraftcodex/database/models.py index cd3477d..46259a9 100644 --- a/minecraftcodex/database/models.py +++ b/minecraftcodex/database/models.py @@ -175,3 +175,30 @@ class ItemAdmin(admin.ModelAdmin): main_texture_html.allow_tags = True admin.site.register(Item, ItemAdmin) + + +### +# BLOCK +### +class Block(models.Model): + internal_name = models.CharField(max_length=128) + main_texture = models.ForeignKey('Texture', null=True) + data_value = models.IntegerField() + + +class BlockAdmin(admin.ModelAdmin): + list_display = ('internal_name', 'data_value', 'main_texture_html') + list_display_links = ('internal_name', ) + #list_filter = ('type', ) + search_fields = ('internal_name', 'data_value', ) + + def main_texture_html(self, obj): + if obj.main_texture: + return( + '' % \ + obj.main_texture.get_image(2) + ) + main_texture_html.short_description = 'Image' + main_texture_html.allow_tags = True + +admin.site.register(Block, BlockAdmin) diff --git a/minecraftcodex/database/templates/blocks.html b/minecraftcodex/database/templates/blocks.html new file mode 100644 index 0000000..f5e38c7 --- /dev/null +++ b/minecraftcodex/database/templates/blocks.html @@ -0,0 +1,43 @@ +{% extends "layout.html" %} + +{% block content %} +

Blocks

+
+ + + + + + + + + + {% for item in page.object_list %} + + + + + + {% endfor %} + +
Data value
Texture
Name
+
{{ item.data_value }}
+
+
+ {% if item.main_texture %} + + {% endif %} +
+
+ {{ item.internal_name }} +
+ +{% endblock %} diff --git a/minecraftcodex/database/templates/items.html b/minecraftcodex/database/templates/items.html index 36d6ee7..99e6a60 100644 --- a/minecraftcodex/database/templates/items.html +++ b/minecraftcodex/database/templates/items.html @@ -15,7 +15,7 @@ {% for item in page.object_list %} -
{{ item.data_value }}
+
{{ item.data_value + 256 }}
diff --git a/minecraftcodex/database/templates/layout.html b/minecraftcodex/database/templates/layout.html index 27a24b6..cd4ae7b 100644 --- a/minecraftcodex/database/templates/layout.html +++ b/minecraftcodex/database/templates/layout.html @@ -57,6 +57,9 @@ Thank you!
  • Home
  • +
  • + Blocks +
  • Items
  • diff --git a/minecraftcodex/database/views.py b/minecraftcodex/database/views.py index a5bea88..f6f9a16 100644 --- a/minecraftcodex/database/views.py +++ b/minecraftcodex/database/views.py @@ -1,5 +1,5 @@ from django.shortcuts import render_to_response -from database.models import Version, Item +from database.models import Version, Item, Block from django.core.paginator import Paginator from django.template import RequestContext @@ -68,6 +68,29 @@ def items(request): context = RequestContext(request, data) return render_to_response('items.html', context_instance=context) + +def blocks(request): + section = 'blocks' + + items = Block.objects.all().order_by('data_value') + paginator = Paginator(items, 50) + page_number = 1 + + if 'page' in request.GET: + page_number = int(request.GET['page']) + + page = paginator.page(page_number) + + data = { + 'section': section, + 'page': page, + 'page_number': page_number, + 'paginator': paginator, + } + context = RequestContext(request, data) + return render_to_response('blocks.html', context_instance=context) + + def about(request): context = RequestContext(request, {'section': 'about'}) return render_to_response('about.html', context_instance=context) diff --git a/minecraftcodex/herobrine/urls.py b/minecraftcodex/herobrine/urls.py index e951050..9ef7a94 100644 --- a/minecraftcodex/herobrine/urls.py +++ b/minecraftcodex/herobrine/urls.py @@ -38,6 +38,9 @@ urlpatterns = patterns('', # Items url(r'^items/', 'database.views.items', name='items_list'), + # Items + url(r'^blocks/', 'database.views.blocks', name='blocks_list'), + # Robots (r'^robots\.txt$', lambda r: HttpResponse("", mimetype="text/plain")), diff --git a/utils/miner/blocks.py b/utils/miner/blocks.py index 60c2844..75e52e9 100644 --- a/utils/miner/blocks.py +++ b/utils/miner/blocks.py @@ -13,7 +13,10 @@ from objects import GameBlock print("=> Phase: blocks") - +if conf.SAVE: + sys.path.append('../../minecraftcodex') + os.environ['DJANGO_SETTINGS_MODULE'] = 'local_settings' + from database.models import Block, Texture ### # GLOBALS @@ -85,6 +88,26 @@ for java_file in conf.BLOCKS_FILES: BLOCKS.append(obj) +if conf.SAVE: + for item in BLOCKS: + try: + obj = Block.objects.get( + internal_name=item.name, + data_value=item.id + ) + except Block.DoesNotExist: + obj = Block( + internal_name=item.name, + data_value=item.id + ) + try: + texture = Texture.objects.get(name__exact=obj.internal_name) + obj.main_texture = texture + except Exception as error: + print(error) + pass + obj.save() + # Print the miner summary and compile the new old data print(' => Summary') new_old_data = {} diff --git a/utils/miner/objects.py b/utils/miner/objects.py index 1bd46e9..3fce9f1 100644 --- a/utils/miner/objects.py +++ b/utils/miner/objects.py @@ -25,7 +25,7 @@ class GameItem(object): ## class GameBlock(object): def __init__(self, game_id, *args): - self.id = int(game_id) + self.id = int(game_id)# + 256 def __str__(self, *args): return "" % (